
搭建过程

每个交易者都应该形成一套自己的交易系统。
很多交易者也清楚知道,搭建自己交易系统的重要性。现实中,从0到1往往是最难跨越的一步。
授人鱼不如授人以渔,为了帮助大家跨出搭建量化系统的第一步,我们决定推出这个主题系列。
这个系列中,我们用Python从0开始一步步搭建出一套ETF量化交易系统(选择ETF标的是因为对于普通交易者来说,ETF相对于选强势股难度要小,而且没有退市风险)。大家可以跟随着我们的实现路径来一起学习,从过程中掌握方法。
掌握了方法之后,你可以换成期货系统、比特币系统、美股系统,然后在实战中不断去完善自己的系统了。
搭建一套ETF量化交易系统涉及多个模块和组件的协同工作,包括数据源模块、量化策略模块、可视化模块、数据库模块、回测评估模块、自动交易模块等等。
DAY1链接如下:15天搭建ETF量化交易系统Day1—数据源模块
DAY2链接如下:15天搭建ETF量化交易系统Day2—图形显示模块
DAY3链接如下:15天搭建ETF量化交易系统Day3—上手经典回测框架
DAY4链接如下:15天搭建ETF量化交易系统Day4—玩转海龟交易策略
DAY5链接如下:15天搭建ETF量化交易系统Day5—打造实盘量化机器人
DAY6链接如下:15天搭建ETF量化交易系统Day6—打通同花顺自动交易
DAY7链接如下:15天搭建ETF量化交易系统Day7—全自动化交易系统
DAY8链接如下:15天搭建ETF量化交易系统Day8—强化自动交易模块
DAY9链接如下:15天搭建ETF量化交易系统Day9—玩大A必学网格策略
DAY10链接如下:15天搭建ETF量化交易系统Day10—借用网格思想做仓位管理
DAY11链接如下:15天搭建ETF量化交易系统Day11—miniQMT自动交易真香!
DAY12链接如下:15天搭建ETF量化交易系统Day12—雏形系统关键代码讲解!
DAY13链接如下:15天搭建ETF量化交易系统Day13—入手MySQL搭建数据库
DAY14链接如下:15天搭建ETF量化交易系统Day14—MySQL回测数据管理指南
DAY12我们把各个功能模块整合成了一个ETF量化系统雏形。
不过我们扫描的ETF池是事先输入的品种,在实战中应该不断调整ETF池,保留强势品种,剔除弱势品种。
本期我们介绍一种ETF择强的思路——走势叠加分析。顾名思义,就是把不同ETF的走势放在一个坐标轴上进行比对。

如何实现

为了更好地比较各个ETF走势的好坏,我们把ETF行情走势起点设定为相同,从而可以看出在一段时间内,哪个ETF涨得更好,本质上是用ETF的涨跌幅来对比!
比如我们选取了以下这些ETF来对比分析。
"上证50ETF": "510050", "深成ETF": "159903", "沪深300ETF": "159919", "中小100ETF": "159902",
"国企共赢ETF": "159719", "央企能源ETF": "562850", "央企ETF": "510060",
"黄金ETF": "518860", "中证1000ETF": "159845", "中证2000ETF": "159531", "创业板指": "159915",
"汽车零部件ETF": "159565", "储能电池ETF": "159566", "黄金股ETF": "159562", "港股创新药ETF": "159567",
"芯片50ETF": "159560", "消费龙头ETF": "159520", "通信ETF基金": "159511",
"有色50ETF": "159652", "数字经济ETF": "159658", "消费电子50ETF": "159779", "大数据ETF": "515400",
"锂电池ETF": "159840", "新能源ETF": "159875", "创新药50ETF": "159835", "光伏ETF": "159857",
"机器人ETF": "159770", "半导体产业ETF":"159582", "人工智能ETF": "159819", "纳指科技ETF": "159509",
"美国50ETF": "513850", "法国ETF":"513080", "亚太精选":"159687", "纳指生物ETF": "513290",
"日经225ETF": "513000", "德国ETF": "513030", "法国CAC40ETF": "513080"
接下来把每一个ETF的涨跌幅使用cumprod() 函数累积乘积起来。
Pct_Chg[name] = (etf_hist_data['涨跌幅'] / 100 + 1).cumprod()
最后使用 Pyecharts 库来创建多个折线图(Line chart),并将它们堆叠(overlap)在一起。
for name, data in Pct_Chg.items():
c_ = (
Line()
.add_xaxis(xaxis_data=dates.tolist())
.add_yaxis(
series_name=name,
y_axis=data.tolist(),
is_smooth=True,
label_opts=opts.LabelOpts(is_show=False),
)
)
c.overlap(c_) # 堆叠
return c
最后的显示效果如下所示:

如果要单独对比某几个ETF,可以点击图表上方ETF的名称把它们隐藏。
比如对比近一个月“美国50ETF”和“上证50ETF”,我们选更强的“上证50ETF”。

比如对比近一个月“上证50ETF”和“创业板ETF”,我们选更强的“创业板ETF”。

比如对比近一个月“锂电池ETF”和“芯片50ETF”,我们选更强的“芯片50ETF”。
我们把近期比较强的ETF添加到量化系统的品种池中,再使用择时策略、仓位管理策略进行交易,定期去增添、筛选这个品种池。

总结

通过走势叠加分析这个思路去选择强势品种进行交易,主要是基于强者恒强的原理。这个思路在一轮行情的发展初中期会比较有效,但是当行情接近尾声时,会出现物极必反的情况,大家要注意系统性的风险。
说明
此系列为连载专栏,完整代码会上传知识星球《玩转股票量化交易》!作为会员们的学习资料。
想要加入知识星球《玩转股票量化交易》的小伙伴记得先微信call我获取福利!
非星球会员需要的话,需要单独联系我购买!
知识星球介绍点击:知识星球《玩转股票量化交易》精华内容概览

5万+



被折叠的 条评论
为什么被折叠?



