import sys
sys.path.insert(0, "../../")
from pyecharts import online
online()
# 演示必要的准备代码,使用该库时不需重复此单元格命令
import xalpha as xa
import pandas as pd
波动和成长,标的的性质如何影响定投的成绩
zz500 = xa.indexinfo("0000905")
zz500b = xa.indexinfo("0000831")
# 采用中证500和500低贝进行研究
zz500.bcmkset(xa.cashinfo())
zz500b.bcmkset(xa.cashinfo())
zz500.algorithm_volatility(), zz500b.algorithm_volatility()
# 低波波动性低的也没那么明显
(0.31811907574774867, 0.29669632893344722)
zz500.total_annualized_returns(), zz500b.total_annualized_returns()
# 不过低波的收益率可是强多了
(0.12470000000000001, 0.1726)
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元
zz500t = xa.trade(zz500, auto.status)
zz500bt = xa.trade(zz500b, autob.status)
zz500t.xirrrate("2015-06-01"), zz500bt.xirrrate("2015-06-01")
# 到牛市顶部时,年化收益率竟然差不多
(0.45607187160394663, 0.46458845644291197)
zz500t.dailyreport("2015-06-01")
基金名称 | 基金代码 | 当日净值 | 单位成本 | 持有份额 | 基金现值 | 基金总申购 | 历史最大占用 | 基金持有成本 | 基金分红与赎回 | 换手率 | 基金收益总额 | 投资收益率 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 中证500 | 0000905 | 10.627208 | 3.9089 | 53211.76 | 565492.42 | 208000.0 | 208000.0 | 208000.0 | 0.0 | 0.113566 | 357492.42 | 171.8714 |
zz500bt.dailyreport("2015-06-01")
基金名称 | 基金代码 | 当日净值 | 单位成本 | 持有份额 | 基金现值 | 基金总申购 | 历史最大占用 | 基金持有成本 | 基金分红与赎回 | 换手率 | 基金收益总额 | 投资收益率 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 500µÍ±´ | 0000831 | 14.630401 | 5.2911 | 39311.42 | 575141.83 | 208000.0 | 208000.0 | 208000.0 | 0.0 | 0.113566 | 367141.83 | 176.5105 |
由此可见,虽然低波的一次性投入对应的年化收益很高,但最终定投下来和普通500指数的收益差不多。。。。
# 还是换创业板暴力一发吧,让你们领略一下15年神创的风采
cyb = xa.indexinfo("1399006")
cyb.bcmkset(xa.cashinfo())
cyb.total_annualized_returns("2015-06-01"), cyb.algorithm_volatility("2015-06-01")
# 令人眼红的收益率
(0.30730000000000002, 0.30155185277351393)
autoc = xa.policy.scheduled(
cyb, 1000, pd.date_range("2011-01-01", "2015-01-01", freq="W-THU")
)
cybt = xa.trade(cyb, autoc.status)
cybt.dailyreport("2015-06-01")
# 就问你怕不怕,同样的投入现金流,收益绝对值接近翻倍
基金名称 | 基金代码 | 当日净值 | 单位成本 | 持有份额 | 基金现值 | 基金总申购 | 历史最大占用 | 基金持有成本 | 基金分红与赎回 | 换手率 | 基金收益总额 | 投资收益率 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 创业板指 | 1399006 | 3.821031 | 0.9779 | 212690.33 | 812696.24 | 208000.0 | 208000.0 | 208000.0 | 0.0 | 0.113566 | 604696.24 | 290.7193 |
cybt.xirrrate("2015-06-01") # 60%多的年化
0.6452718352308852
# 不过如果不幸没有止盈,持有到现在
cybt.xirrrate()
0.07698746449319872
让我这次定投一个大蓝筹
sz50 = xa.indexinfo("0000016")
autod = xa.policy.scheduled(
sz50, 1000, pd.date_range("2011-01-01", "2015-01-01", freq="W-THU")
)
sz50t = xa.trade(sz50, autod.status)
sz50t.dailyreport("2015-06-01")
基金名称 | 基金代码 | 当日净值 | 单位成本 | 持有份额 | 基金现值 | 基金总申购 | 历史最大占用 | 基金持有成本 | 基金分红与赎回 | 换手率 | 基金收益总额 | 投资收益率 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 上证50 | 0000016 | 3.207919 | 1.6901 | 123070.13 | 394798.98 | 208000.0 | 208000.0 | 208000.0 | 0.0 | 0.113566 | 186798.98 | 89.8072 |
sz50t.xirrrate("2015-06-01")
# 不愧江湖诨号大烂臭,收益在15年的牛市中远小于中小盘
0.28189135734500326
sz50.bcmkset(xa.cashinfo(), start="2011-01-01")
sz50.algorithm_volatility("2015-06-01")
# 真点低波
0.2333094161336661
# 持有到现在,即使这几年大盘股反杀,依旧不如创业板
sz50t.xirrrate()
0.06558331152460622
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)],
)
zz500t2 = xa.trade(zz500, autoe.status)
zz500t2.v_tradevolume() # 每周的买入情况
zz500t2.v_tradecost(end="2015-06-01") # 定投对于成本的平滑
# 看似收益很高,但你真的能承受住开始定投后长达两年多的浮亏么,甚至很多至暗时刻,浮亏超过20%,能坚持下来么
zz500t2.dailyreport("2012-11-30") # 看一下至暗时刻的投资表现
基金名称 | 基金代码 | 当日净值 | 单位成本 | 持有份额 | 基金现值 | 基金总申购 | 历史最大占用 | 基金持有成本 | 基金分红与赎回 | 换手率 | 基金收益总额 | 投资收益率 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 中证500 | 0000905 | 2.853925 | 3.6405 | 31643.62 | 90308.51 | 115200.0 | 115200.0 | 115200.0 | 0.0 | 0.262968 | -24891.49 | -21.6072 |
zz500t2.dailyreport("2015-06-01") # 收益率略有提高
基金名称 | 基金代码 | 当日净值 | 单位成本 | 持有份额 | 基金现值 | 基金总申购 | 历史最大占用 | 基金持有成本 | 基金分红与赎回 | 换手率 | 基金收益总额 | 投资收益率 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 中证500 | 0000905 | 10.627208 | 3.6838 | 63684.82 | 676791.8 | 234600.0 | 234600.0 | 234600.0 | 0.0 | 0.113566 | 442191.8 | 188.4876 |
zz500t2.xirrrate("2015-06-01") # 年化也小幅提高,不过即使对投资变额如此过优化,收益提升幅度还如此小,似乎意义不是很大
0.49963825079451923
最后,通过改变 pd.data_range() 中 freq 的标签,比如 W-WED,或M,可以调整定投在周几定投,或是按月定投,这里就不大篇幅回测其表现对比了,结论就是:收益都差不多