python抓取货币基金数据及基金收益数据分析

本文探讨了货币基金的选择,提出选择原则包括散户比例和基金规模,并建议选择规模在100-400亿之间的基金。通过数据分析,揭示了基金规模与收益的关系,以及避免直接用当前收益率排序。数据来源包括东方财富网和网易财经,提供了相关代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

货币基金

货币基金是大众参与银行间市场的创新,具有近似活期的流动性,收益还是活期的N倍。有点流动资金当然是选个货币基金放着比较实惠啦。
余额宝炒火了货币基金,但如今已经不再是好时候,可以看到最近货币基金的收益已经是5年来最低
5年来货币基金平均收益率变化
计算方法:取规模最大的100支货币基金90分位点(去掉极大值)以内的平均。

货币基金如何选择

虽然货币基金属于低风险产品,除了T+1/T+2,另注意收益结算周期之外,万分收益本身也可以比较一下,总是希望收益能够大一些。
而余额宝这种“明星”宝宝类产品,比货币基金大盘还是要差些的,分析了近五年来余额宝和货币基金大盘的对比,可以看到在2016-2017年初那段时间余额宝确实强劲,比大盘收益率高10%左右,但近来,余额宝比货币基金大盘市场大约低20%-30%
余额宝和货币基金大盘收益对比
所以,还是来自己选个货币基金吧:)

最近在听“香帅的北大金融学课”,正好也讲到货币基金的选择原则。
她的团队给出两个维度的选择标准:散户比例和基金规模
1)散户比例,其实就是个人持有者比例。
她的建议在60%+会更安全,原理是说机构都是量化交易,一般市场有风吹草动,作为个人投资者相对跑的太慢,会有风险。
但是,作为货币基金风险比较小,出这种事情的概率比较低。
算了下个人持有比例和收益的相关性,相关系数在-0.2,虽然不算很强的弱相关吧…
这一条在靠谱的基金持有标的上,我觉得其实可以忽略。

2)基金规模,香帅团队的建议是100-400亿之间
这个我倒是验证了差不多,在这个区间里规模和收益呈现正相关。
基金规模与万分收益的关系
可以看到基金规模在100亿以下的占75%+,在基金规模400亿范围内,基金规模与万分收益的相关系数是0.3,而在基金规模大于400亿外,相关系数变成了-0.3,收益随着规模增加而下降。

物理意义上的解释是,当基金规模太小,议价权也小,难以谈到好的收益;而基金规模过大,也不够灵活,大量资金注入也会压低收益。

所以,这里建议的100-400亿之间的建议是十分中肯的。

排序原则

满足以上两个条件的选择其实就已经不算多了,大概也就小30个了,然后按照近期收益排序选出来的在手动滤一下也就差不多了。
只是注意:不要用当前收益率直接排序,这就很可能把极端值的CASE选出来了,效果并不好。
比如当时没写CODE的时候,用银行APP自带的功能,选出来的就是3.23的那个高点了。。。
实际上建议用去除outlier后的平均收益。
按单日收益选很可能选出BADCASE
其他的维度,我也算了alpha/beta系数,用来做参考,还没有进行进一步的数据分析。

货币基金的数据获取

数据来源:
1.货币基金列表及基金基本信息来自东方财富网。
2.基金的万分收益历史数据来自163网易。

从以下地址可以获取所有的货币基金列表:
http://fund.eastmoney.com/HBJJ_pjsyl.html

不过可能不全,余额宝以及微信的余额、招商银行的朝朝盈都不在其中,可以手动补上这些作为BASE。

基金属性信息的获取:
http://fund.eastmoney.com/000713.html
可以把那个ID换掉就是对应的基金信息了,可以在相关页面进一步抓取到持有人结构等其他感兴趣的信息。

基金历史数据的获取:
网易财经的页面爬取,分页抓,可以指定日期范围:

url='http://quotes.money.163.com/fund/lssy_'+code+'_'+str(pagen)+'.html?start='+start_date+'&end='+latest_date+'&sort=TDATE&order=desc'

数据

本次分析和每支货币基金的信息都放在网盘的EXCEL表里啦,感兴趣的同学可以一起来交流:)
链接:https://pan.baidu.com/s/1EB9K16MPdAwLas0UyRFVmA
提取码:pjj5

抓取相关代码

1.从eastmoney东方财富网抓取所有可选货币基金列表
http://fund.eastmoney.com/HBJJ_pjsyl.html

 #获取货币基金列表
 
    #moeny fund url
    url='http://fund.eastmoney.com/HBJJ_pjsyl.html'
    #抓取URL并返回HTML
    htm = get_html_page(url)
    if len(htm) == 0:
        print("err get page", url)
        return -1
    sub_soup = BeautifulSoup(htm, "html.parser")
    divs = sub_soup.find_all(name='table', attrs={
   "id": "oTable"})
    if len(divs) == 0:
        print("err paser page:", url)
        return -1
    trs = divs[0].find_all(name='tr', attrs={
   "bgcolor": "#F5FFFF"})
    for k in range(0, len(trs)):
        tds=trs[k].find_all('td')
        code = tds[3].get_text()
        if len(code) == 0:
            print("err get code format len"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值