#!/usr/bin/env python # coding: utf-8 # In[1]: import sys sys.path.insert(0, "../../") from pyecharts import online online() # 演示必要的准备代码,使用该库时不需重复此单元格命令 # In[2]: import xalpha as xa import pandas as pd # # 基金定投探究 # 波动和成长,标的的性质如何影响定投的成绩 # In[3]: zz500 = xa.indexinfo("0000905") zz500b = xa.indexinfo("0000831") # 采用中证500和500低贝进行研究 # In[12]: zz500.bcmkset(xa.cashinfo()) zz500b.bcmkset(xa.cashinfo()) # In[6]: zz500.algorithm_volatility(), zz500b.algorithm_volatility() # 低波波动性低的也没那么明显 # In[13]: zz500.total_annualized_returns(), zz500b.total_annualized_returns() # 不过低波的收益率可是强多了 # In[15]: auto = xa.policy.scheduled( zz500, 1000, pd.date_range("2011-01-01", "2015-01-01", freq="W-THU") ) autob = xa.policy.scheduled( zz500b, 1000, pd.date_range("2011-01-01", "2015-01-01", freq="W-THU") ) # 每周四定投1000元 # In[18]: zz500t = xa.trade(zz500, auto.status) zz500bt = xa.trade(zz500b, autob.status) # In[22]: zz500t.xirrrate("2015-06-01"), zz500bt.xirrrate("2015-06-01") # 到牛市顶部时,年化收益率竟然差不多 # In[23]: zz500t.dailyreport("2015-06-01") # In[24]: zz500bt.dailyreport("2015-06-01") # 由此可见,虽然低波的一次性投入对应的年化收益很高,但最终定投下来和普通500指数的收益差不多。。。。 # In[25]: # 还是换创业板暴力一发吧,让你们领略一下15年神创的风采 cyb = xa.indexinfo("1399006") # In[26]: cyb.bcmkset(xa.cashinfo()) # In[27]: cyb.total_annualized_returns("2015-06-01"), cyb.algorithm_volatility("2015-06-01") # 令人眼红的收益率 # In[28]: autoc = xa.policy.scheduled( cyb, 1000, pd.date_range("2011-01-01", "2015-01-01", freq="W-THU") ) # In[30]: cybt = xa.trade(cyb, autoc.status) # In[31]: cybt.dailyreport("2015-06-01") # 就问你怕不怕,同样的投入现金流,收益绝对值接近翻倍 # In[32]: cybt.xirrrate("2015-06-01") # 60%多的年化 # In[34]: # 不过如果不幸没有止盈,持有到现在 cybt.xirrrate() # 让我这次定投一个大蓝筹 # In[38]: sz50 = xa.indexinfo("0000016") # In[39]: autod = xa.policy.scheduled( sz50, 1000, pd.date_range("2011-01-01", "2015-01-01", freq="W-THU") ) # In[41]: sz50t = xa.trade(sz50, autod.status) # In[42]: sz50t.dailyreport("2015-06-01") # In[43]: sz50t.xirrrate("2015-06-01") # 不愧江湖诨号大烂臭,收益在15年的牛市中远小于中小盘 # In[45]: sz50.bcmkset(xa.cashinfo(), start="2011-01-01") # In[46]: sz50.algorithm_volatility("2015-06-01") # 真点低波 # In[48]: # 持有到现在,即使这几年大盘股反杀,依旧不如创业板 sz50t.xirrrate() # ### 试一下定期不定额的加强效果 # In[4]: autoe = xa.policy.scheduled_tune( zz500, 600, times=pd.date_range("2011-01-01", "2015-01-01", freq="W-THU"), piece=[(3, 5), (3.5, 3), (4, 2), (5.5, 1)], ) # In[5]: zz500t2 = xa.trade(zz500, autoe.status) # In[10]: zz500t2.v_tradevolume() # 每周的买入情况 # In[14]: zz500t2.v_tradecost(end="2015-06-01") # 定投对于成本的平滑 # 看似收益很高,但你真的能承受住开始定投后长达两年多的浮亏么,甚至很多至暗时刻,浮亏超过20%,能坚持下来么 # In[21]: zz500t2.dailyreport("2012-11-30") # 看一下至暗时刻的投资表现 # In[11]: zz500t2.dailyreport("2015-06-01") # 收益率略有提高 # In[12]: zz500t2.xirrrate("2015-06-01") # 年化也小幅提高,不过即使对投资变额如此过优化,收益提升幅度还如此小,似乎意义不是很大 # 最后,通过改变 pd.data_range() 中 freq 的标签,比如 W-WED,或M,可以调整定投在周几定投,或是按月定投,这里就不大篇幅回测其表现对比了,结论就是:收益都差不多