python量化分析教程 | 最近几年A股养老基金整体盈亏情况分析
这几年A股股市走势有目共睹。跌的让人头晕目眩。
不仅是散户被深套,很多基金也都大幅亏损。甚至前阵子看到证券时报报道,养老目标基金都出现不是清盘的现象。
于是笔者好奇心驱使,想看看这些养老基金最近几年的盈利情况,会不会把长辈老人们的下半辈子养老金都亏空了。
作为一名授人以渔的公众号博主,不仅仅贴个收益率图出来这么简单的啦。如果只是想看数据,直接跳过前面的操作即可。
笔者手把手教大家做数据分析,学会后不仅仅只对养老基金这一类别的基金做分析,还可以对不同类型的基金做分析。
前提:电脑按照了python已经相关库(jupyter notebook,pandas,akshare)
数据源:天天基金网
打开东财的天天基金网(https://fund.eastmoney.com/),在基金搜索页面输入:养老
总共有515个与养老相关的公募基金。如果没显示全,点击下图里面的“点击展开更多”按钮
抓包就找到对应的URL地址了,如下:https://fundsuggest.eastmoney.com/FundSearch/api/FundSearchPageAPI.ashx?callback=jQuery18306906210160165065_1721823304653&m=1&key=养老&pageindex=0&pagesize=515&_=1721823360126
如果你想分析其他类型的主题基金,只需要把上面的url里面的key=养老,换成其他的就可以了,比如 key=芯片
浏览器输入上面的URL就可以拿到数据了。
简单起见,我就不写爬取数据的代码,直接复制粘贴浏览器返回的内容就好了。
然后把前面起始的jQuery18306906210160165065_1721823304653( 和最后的括号去掉,就得到一个json数据了。
(文末提供这个数据文件的获取方式)
接着写一个函数获取某个基金的当前收益率:目前就获取最近3年的收益率。
可以改动period='5年', ’10年‘,’成立以来',从而获取不同区间的收益率
接着把500多个基金遍历一遍就OK了。
然后去倒杯茶,慢慢等它跑完。
数据分析
把数据转为dataframe,按照收益率排名
也可以导出到excel
亏损最多的鹏华养老产业股票,最近3年亏损了-53%,不过它应该也不属于养老基金范畴,只是买的养老产业的股票。
而华夏养老2055五年持有混合(FOF)A 011745,这种才是标准的养老基金,这些养老基金大部分是FOF(它们持有标的是基金,而不是股票)
2021年成立,买入后还要锁定5年,期间不可卖出,老人们被套牢了也无法割肉了。成立以来亏损了-34%,近3年亏损了-41%。
于是笔者继续过滤一下,找出里面的全部FOF基金
得到下面的养老基金FOF全部数据
然后使用describe函数看看大体的涨跌幅情况:
总共有484个数据,平均涨幅为-8.38%
中位数是-6.13%。
涨幅最大的是4.85%,中欧预见平衡养老三年持有混合发起(FOF)Y
打开详情一看,原来是得益于成立得晚的缘故,而该基金是今年2月成立的。
最近3年沪深300指数跌了32%,而这个跌幅可以在485只养老基金里面排到了477名。聊以慰藉的是,绝大部分的养老基金在下跌行情下是跑赢了沪深300的。
绘制直方图
直方图可以一览数据得养老基金涨跌幅分布情况:
从图可以看到,大部分养老基金的涨跌幅落在-20到0之间。
亏损达到-30%以上的其实也不是很多。
整体来说,养老基金FOF比买入主流宽基波动要小一些,但并非保本的理财工具,对于风险接受能力低的老一辈朋友,需要慎重考虑的。
原文数据可在公众号:
可转债量化分析
获取
不仅是散户被深套,很多基金也都大幅亏损。甚至前阵子看到证券时报报道,养老目标基金都出现不是清盘的现象。
于是笔者好奇心驱使,想看看这些养老基金最近几年的盈利情况,会不会把长辈老人们的下半辈子养老金都亏空了。
作为一名授人以渔的公众号博主,不仅仅贴个收益率图出来这么简单的啦。如果只是想看数据,直接跳过前面的操作即可。
笔者手把手教大家做数据分析,学会后不仅仅只对养老基金这一类别的基金做分析,还可以对不同类型的基金做分析。
前提:电脑按照了python已经相关库(jupyter notebook,pandas,akshare)
数据源:天天基金网
打开东财的天天基金网(https://fund.eastmoney.com/),在基金搜索页面输入:养老
总共有515个与养老相关的公募基金。如果没显示全,点击下图里面的“点击展开更多”按钮
抓包就找到对应的URL地址了,如下:https://fundsuggest.eastmoney.com/FundSearch/api/FundSearchPageAPI.ashx?callback=jQuery18306906210160165065_1721823304653&m=1&key=养老&pageindex=0&pagesize=515&_=1721823360126
如果你想分析其他类型的主题基金,只需要把上面的url里面的key=养老,换成其他的就可以了,比如 key=芯片
浏览器输入上面的URL就可以拿到数据了。
简单起见,我就不写爬取数据的代码,直接复制粘贴浏览器返回的内容就好了。
然后把前面起始的jQuery18306906210160165065_1721823304653( 和最后的括号去掉,就得到一个json数据了。
js_data = {
"ErrCode": 0,
"ErrMsg": "0",
"Datas": [
{
"_id": "001171",
"CODE": "001171",
"NAME": "工银养老产业股票A",
"STOCKMARKET": "",
"NEWTEXCH": ""
},
......... # 省略若干
]
}
(文末提供这个数据文件的获取方式)
接着写一个函数获取某个基金的当前收益率:目前就获取最近3年的收益率。
import akshare as ak
def get_fund_info(code,name):
fund_open_fund_info_em_df = ak.fund_open_fund_info_em(symbol=code, indicator="累计收益率走势",period="3年")
latest_perf = fund_open_fund_info_em_df.iloc[-1]['累计收益率']
return {'code':code,'profit':latest_perf,'name':name}
可以改动period='5年', ’10年‘,’成立以来',从而获取不同区间的收益率
接着把500多个基金遍历一遍就OK了。
fund_perf_list = []
for item in js_data['Datas']:
print('processing code {}'.format(item['CODE']))
try:
fund_perf_list.append(get_fund_info(item['CODE'],item['NAME']))
time.sleep(0.5)
except Exception as e:
print('error in processing code {}'.format(item['CODE']))
print(e)
然后去倒杯茶,慢慢等它跑完。
数据分析
把数据转为dataframe,按照收益率排名
import pandas as pd
df = pd.DataFrame(fund_perf_list)
rank_df = df.sort_values(by='profit')
也可以导出到excel
rank_df.to_excel('亏麻的养老基金.xlsx')
亏损最多的鹏华养老产业股票,最近3年亏损了-53%,不过它应该也不属于养老基金范畴,只是买的养老产业的股票。
而华夏养老2055五年持有混合(FOF)A 011745,这种才是标准的养老基金,这些养老基金大部分是FOF(它们持有标的是基金,而不是股票)
2021年成立,买入后还要锁定5年,期间不可卖出,老人们被套牢了也无法割肉了。成立以来亏损了-34%,近3年亏损了-41%。
于是笔者继续过滤一下,找出里面的全部FOF基金
fof_fund_df = rank_df[rank_df['name'].str.contains('FOF')]
得到下面的养老基金FOF全部数据
然后使用describe函数看看大体的涨跌幅情况:
总共有484个数据,平均涨幅为-8.38%
中位数是-6.13%。
涨幅最大的是4.85%,中欧预见平衡养老三年持有混合发起(FOF)Y
打开详情一看,原来是得益于成立得晚的缘故,而该基金是今年2月成立的。
最近3年沪深300指数跌了32%,而这个跌幅可以在485只养老基金里面排到了477名。聊以慰藉的是,绝大部分的养老基金在下跌行情下是跑赢了沪深300的。
绘制直方图
直方图可以一览数据得养老基金涨跌幅分布情况:
fof_fund_df.plot(kind='hist',bins=20,y='profit',width=2,grid=True)
从图可以看到,大部分养老基金的涨跌幅落在-20到0之间。
亏损达到-30%以上的其实也不是很多。
整体来说,养老基金FOF比买入主流宽基波动要小一些,但并非保本的理财工具,对于风险接受能力低的老一辈朋友,需要慎重考虑的。
原文数据可在公众号:
可转债量化分析
获取