做知识星球的初心:以实战、盈利为导向,开发可持续的策略和平台。
市场覆盖:ETF、可转债、股票、期货和数字货币。
项目100%对星友开源,持续维护和升级。
昨天使用toml配置工程,模块化开发策略的门槛更低,我们引入了toml,对“积木式”策略开发,进一步简化为简单配置文件,为后续使用可视化向导配置打下基础。
1、动量计算函数
由于动量roc的计算比较常用,之前我们使用表达式:close/shift(close,N)-1,现在出发可以使用 roc(close,N)
def shift(se: pd.Series, N):
return se.groupby('symbol', group_keys=False).shift(N)
def roc(se: pd.Series, N):
return se.groupby('symbol', group_keys=False).apply(lambda x: x / shift(x, N) - 1)
代码在工程如下位置:
在策略配置里这么写即可:
name = '行业指数轮动_20日动量top5_周平衡' [data] start_date = '20100101' end_date = '' symbols = '29个行业指数' fields = ['roc(close,20'] names = ['roc_20']
2、20日动量-周平衡-top6的策略,比昨天等权买入持有-周平衡的策略,年化收益从5%提升至11%,且回撤也在下降。
name = '行业指数轮动_20日动量top5_周平衡' [data] start_date = '20100101' end_date = '' symbols = '29个行业指数' fields = ['roc(close,20)'] names = ['roc_20'] [[algos]] name = 'RunWeekly'# 运行周期与再平衡 [[algos]] # 选股 name = 'SelectTopK' K=6 order_by='roc_20' b_ascending= false [[algos]] name = 'WeightEqually'
回测曲线也好看了很多:
”魔改“版本一,年化提升至13.4%。
大家可以在星球群里问我,这里不多解释了。
添加benchmark基准:
name = '行业指数轮动_20日动量top6_周平衡' [data] start_date = '20100101' end_date = '' symbols = '29个行业指数' benchmarks=['000300.SH','399006.SZ'] fields = ['roc(close,20)'] names = ['roc_20']
继续改进:年化提升至14.7%,夏普比0.65,远超基准的沪深300与创业板指数。
最终的策略文件如下 :
大家运行工程里这个文件即可:
name = '行业指数轮动_20日动量top6_周平衡' [data] start_date = '20100101' end_date = '' symbols = '29个行业指数' fields = ['roc(close,20)'] names = ['roc_20'] benchmarks=['000300.SH','399006.SZ'] #bench_fields=['zscore(slope_pair(high,low,18),600)<0'] #bench_names=['rsrs'] [[algos]] name = 'RunDays'# 运行周期与再平衡 days=10 [[algos]] # 选股 name = 'SelectTopK' K=3 drop_top_n=3 order_by='roc_20' b_ascending= false #[[algos]] #name='PickTime' #benchmark='000300.SH' #signal='rsrs' [[algos]] name = 'WeightEqually'
使用name即可调用对应的配置文件,后续我会使用wxpython实现GUI可视化,到时候操作会更加方便。
if __name__ == '__main__': loader = ConfigLoader() print(loader.symbols_dict) print(loader.proj_dict) name = '行业指数轮动_买入持有_周平衡' name = '行业指数轮动_20日动量top6_周平衡' e = Toml2Env(loader.proj_dict[name]) print(e) e.backtest_loop() e.show_results()
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/104074
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!