大家好,我
大概花了一周时间写了这篇文章,篇幅较长,读完会花 5-10 分钟。
读完本篇文章,你可能会收获以下几点:
鉴于本篇文章的整体基调是围绕基金所做的分析,所以对于基金是什么有必要做一个简单的介绍。
当然,也只是止步于简单的介绍,毕竟对于基金,我也是刚入门的小白。
本篇更多的是在对
近几年发行的基金收益、持仓等数据进行爬取,做一个简单的分析和预测
目前各基金公司披露的持仓数据都是截止 2020年第四季度,在 21 年第二季度初也会披露第一节度的持仓数据。
2021 年初的几个交易日,基金频繁登上热搜榜,新发行的几个基金也是直接在发行当日就售罄,基金发行市场一片火热。
投资固然没错,但是跟风的背后自己会不会成为一棵嫩韭菜,文中你可能会找到部分答案。
对于基金,我涉猎不广,大多是自己做的功课,不过也足够了。
首先,对于基金,大致可以分为:货币型基金、债券型基金、混合型基金、股票型基金等等
主要说一下这几个各自是什么,后面我们针对性的用数据去分析。
货币型基金
只投资于货币市场,例如像银行存款,国家或者企业发行的短期债券等,因为波动性较小、风险较低,所以可以等同于储蓄产品一样。
类似的像余额宝就是货币型基金,评价这种货币型基金主要看:
七日年化收益率和万份收益。
这个比较容易理解,风险也很低,个人要选择货币型基金就直接余额宝完事,T+0,简简单单。
债券型基金
相比货币型基金,债券型基金
投资的债券期限比较长
,除了债券,也可以投资股票。
债券基金相对于货币基金有一定的风险,但从长期来看,收益也会更高点。
混合型基金
相比债券型基金,混合型基金除了债券,还可以投资不同风格的股票。
混合型基金根据股票和债券的占比,又细分为 偏股型基金 和配置型基金等等。
相比前两者,混合型基金
实现投资的多元化
,无需去分别购买风格不同的股票型基金、债券型基金和货币基金。
股票型基金
股票型基金是指投资于股票市场的基金,其中股票仓位不能低于80%。
股票型基金可以细分为主动型和被动型(指数型基金)等,相比主动型,指数型会更稳健些,紧跟大盘指数波动
相比前三者,股票基金属于
高风险高收益类
的基金。
真要细说基金的区别,几千字可能都写不完,后面有空再说吧
爬虫部分的核心代码比较简单,今天主要说一下流程就行。
可以看到,对于基金类型:偏股、股票、混合、债券和指数都分的一清二楚,采集字段的时候将每个基金所有的收益率情况拿下来。
ok,那就直接用官网定的标签去爬,采集上图圈出的数据字段。
主要包括基金的成立时间、规模、基金经理以及每个季度的详细持仓情况。
爬虫大致思路
-
-
-
需要说明一下,第 2 步和第 3 步的数据不在一个页面下,第 2 步的数据通过页面解析可以拿到,第 3 步的数据是动态加载后呈现在页面上的,可以通过接口拿到数据。
# 爬取每个基金的数据
rank_detail_data = []
position_data = []
error_funds_list = []
for row_index, data_row in data_rank.iterrows():
fund_code = str(data_row['基金代码'])
try:
'''爬取页面,获得该基金的详细数据'''
position_title_url = "http://fundf10.eastmoney.com/ccmx_" + str(fund_code[1:]) + ".html"
print('正在爬取第 {0}/{1} 个基金 {2} 的详细数据中...'.format(row_index+1, len(data_rank), fund_code[1:]))
response_title = requests.get(url=position_title_url, headers={'User-Agent': get_ua()}, timeout=10)
# 解析基金的详细数据
rank_detail_info = resolve_rank_detail_info(fund_code[1:], response_title)
"""爬取页面,获取该基金的持仓数据"""
position_data_url = "http://fundf10.eastmoney.com/FundArchivesDatas.aspx?type=jjcc&code=" + \
str(fund_code[1:]) + "&topline=10&year=&month=&rt=" + str(random.uniform(0, 1))
print('正在爬取第 {0}/{1} 个基金 {2} 的持仓情况中...'.format(row_index + 1, len(data_rank), fund_code[1:]))
# 解析基金的持仓情况
response_data = requests.get(url=position_data_url, headers={'User-Agent': get_ua()}, timeout=10)
fund_positions_data = resolve_position_info(fund_code[1:], response_data.text)
# 保存数据
rank_detail_data.append(rank_detail_info)
position_data.extend(fund_position_data for fund_position_data in fund_positions_data)
except:
error_funds_list.append(fund_code)
print("{0} 数据爬取失败,稍后会进行重试,请注意!".format(str(fund_code[1:])))
# 随机休眠2-4 秒
time.sleep(random.randint(2, 4))
对于五种类型的基金数据,下面主要对 股票型基金 和 混合型基金 做对比分析
首先,股票型基金共 1459 个,混合型基金共 4208 个
后面分析和排序的依据均是针对 近一年收益率 这个指标进行的,大家注意下
1. 收益率分布
1459 个股票型基金中 1160 个近一年收益率不为空;4208 个混合型基金中 3060 个近一年收益率不为空,针对其进行分析:
股票型基金近一年 收益率>0 的有 1119 个,占比 96.5%;整体近一年平均收益率为 47.8%
混合型基金近一年 收益率>0 的有 3047 个,占比 99.6%;整体近一年平均收益率为 48.9%
股票型基金的收益率主要分布在 20%-70% 之间,30%-60% 的居多。
混合型基金的收益率主要分布在 10%-80% 之间,除 10%-20% 之外,其他主要区间分布较均匀。
混合型基金的收益率较稳定,99.6% 的基金近一年都是盈利的,且整体平均收益率为 48.9%
2. 资产规模分布
对于资产规模,我是这样理解的:大资产的基金在收益稳定的同时也会出现船大难掉头的情况,小规模的资金收益波动会较大,但也可以及时规避风险。
因为基金较多,本节只选取近一年收益率的 Top300 的基金分析其资产规模。
另外,资产规模均是截止到 2020-12-31 日的资金资产规模。