今天的涨跌不需要太在意,国庆节不出门的可以抽空研究一下我们的策略代码,这大把的时间就是要拿来做点正事
上次给大家分享了基金定投的量化回测代码,《分享两个简单的基金定投策略代码》,如果大家想尝试稍微复杂一点的策略,那就可以从这个轮动策略着手了。这个轮动策略是把雪球认证用户“宜昌白云飞”的算法在聚宽平台上通过Python代码实现,方便大家进一步研究和完善。代码的源文件请从这里下载:量化策略源代码。
关于代码的一些说明
1、计算结果
为了方便大家检查计算结果,我在每天的交易信号确认函数中设置了日志输出行情表格,便于大家核实计算结果,第1列是序号,第2列是对应的基金代码,第3列是涨幅百分比,第4列是11:30收盘价与均线差值。
2、轮动标的
和之前的代码类似,为了让代码可以根据大家的意愿增减标的,我还是采用的一个单独的数组设置参与轮动的指数和基金,用法不在赘述,请参考《分享两个简单的基金定投策略代码》。关于比价周期和均线周期,都是可以自行设置的,代码中有注释,一看便知。
3、信号确认时间为11:30,下单交易时间为14:40,这个可以根据需要自行修改。交易成本统一设置为万五(不再设置滑点),最低佣金5元。
4、策略逻辑
为了便于大家理解,我尽量把策略逻辑写得容易理解一些,但是完全没有代码基础可能还是看起来比较困难。如果有兴趣继续专研量化交易,可以试着学学Python。
5、持仓逻辑
这个策略的持仓逻辑基本忠实白云飞的算法,除了加入涨幅大于0这个条件,如果把87行的代码改为:
if df.iloc[0,2] > 0:
这相当于只判断11:30收盘价是否高于均线,df.iloc[0,2]方括号数字对应输出结果表格中的第1行第3列,即均线差值。df.iloc[0,1]表示第1行第2列,即涨幅。因为编号是从0开始编起,这点大家要注意。
6、回测结果
之前因为回测环境参数设置问题,导致回测收益异常,现在已经修正。如果有已经下载了代码的网友,请大家重新下载一下。下面是创业板、沪深300、中证500三个指数基金轮动的回测结果。因为我这个策略代码不包括闲置资金投资国债或者货币基金的收益,遇到不符合持仓条件时,仅仅是保持空仓状态,大家务必注意这个区别。对于单纯研究轮动策略本身的效果来说,这种处理方式更简洁一些。
7、一些可能的改进思路
以下是关于策略的一些值得探讨的改进思路,有些处理不需要编程,单纯调整参数就可以回测验证,希望大家有机会都参与一下,一起讨论交流。
不同的交易时间对结果有多大的影响?
调整比价和均线周期天数,对结果有多大的影响?
如何过滤震荡造成的反复打脸?单纯比较当日11:30收盘价和13日前收盘价,在震荡行情中会产生趋势误判。
如何过滤不必要的调仓?当排名第一的基金和持仓基金涨幅几乎相同时,是否要调仓?
是否要设置涨幅阈值,当涨幅高于一个设定值时,我们才认为这个指数处于上升趋势?
纳入爆发力更强的行业基金是不是对收益带来正面影响?
$创业板(SZ159915)$ $500ETF(SH510500)$ $300ETF(SH510300)$
今天的涨跌不需要太在意,国庆节不出门的可以抽空研究一下我们的策略代码,这大把的时间就是要拿来做点正事
哪里可以下载完整的源代码?
学习
设置上升通道打开的话,收益应该能增强很多,可以应对目前行业etf单边暴涨的情况
代码怎么改成自己喜欢的ETF
学习ing
这个好
请问一下,实盘得话,ETF得滑点一般设置成多少比较好??按固定得来算?还是百分比??set_slippage(FixedSlippage(0.00246)) PriceRelatedSlippage(0.002) 这两个哪个合理一点? 我用百分比得测,发现很多策略直接凉凉
马克
有个疑问?
用这个代码跑出来的策略收益结果比较低。有290.99%
我用Excel回测的策略收益有约390%(手续费万分之四计算)。
白云飞老师回测的策略收益也是比较高的。
到底问题出在哪里???