搭建过程
每个交易者都应该形成一套自己的交易系统。
很多交易者也清楚知道,搭建自己交易系统的重要性。现实中,从0到1往往是最难跨越的一步。
授人鱼不如授人以渔,为了帮助大家跨出搭建量化系统的第一步,我们决定推出这个主题系列。
这个系列中,我们用Python从0开始一步步搭建出一套ETF量化交易系统(选择ETF标的是因为对于普通交易者来说,ETF相对于选强势股难度要小,而且没有退市风险)。大家可以跟随着我们的实现路径来一起学习,从过程中掌握方法。
掌握了方法之后,你可以换成期货系统、比特币系统、美股系统,然后在实战中不断去完善自己的系统了。
搭建一套ETF量化交易系统涉及多个模块和组件的协同工作,包括数据源模块、量化策略模块、可视化模块、数据库模块、回测评估模块、自动交易模块等等。
DAY1-DAY15链接如下:15天搭建ETF量化交易系统
我们对“15天搭建ETF量化交易系统”系列的学习进行升级!进阶系列链接如下:[进阶]21天搭建ETF量化交易系统Day16—用DeepSeek学习数据处理
在交易中,没有人能精准预测市场底部,买入后行情继续下跌是常态。但下跌并不一定意味着错误,反而可能是更好的入场机会——即所谓的“黄金坑”。 我们改良了马丁格尔策略形成“左侧交易补仓大法”,让“黄金坑”成为你的盈利机会。 注:该策略适合用于ETF上,不建议用于个股上。ETF符合“均值回归”假设:马丁格尔隐含“标的终将反弹”的假设。宽基ETF代表市场整体,长期大概率向上(如经济增长),但个股可能持续下跌甚至消失。
马丁格尔策略
马丁格尔(Martingale)是一种经典的资金管理策略,其核心理念是“亏损后加倍投入,靠一次盈利挽回所有损失”。 基本规则如下:
初始下注:设定一个初始仓位(如1单位资金)。
亏损后加倍:如果亏损,下一次投入前一次的2倍资金。
盈利后重置:一旦盈利,收回所有亏损并赚取初始目标利润,然后回归初始仓位。
示例(赌场轮盘赌)
假设赌红色/黑色(赔率1:1,胜率≈48.6%):
第1次下注 1元→ 亏损(余额:-1元)
第2次下注 2元→ 亏损(余额:-3元)
第3次下注 4元→ 亏损(余额:-7元)
第4次下注 8元→ 盈利8元
总盈亏:-1-2-4+8 = +1元(净赚初始目标)
理论上,只要资金无限,最终一定会盈利1单位。
马丁格尔的致命风险:连续亏损导致资金耗尽。股票可能长期阴跌,连续加仓会导致资金快速耗尽。
基于这个风险,我们改良了“马丁格尔”策略,增加了择时策略。根据择时信号买入后,当继续下跌出现亏损后再启动“马丁格尔”补仓法,避免一开始就买在最高点,从而减少补仓资金规模。
Backtrader回测
策略逻辑如下所示。
买入信号:短期均线(5日)上穿长期均线(20日) - 金叉
卖出信号:短期均线下穿长期均线 - 死叉。如果在死叉时持仓亏损,则不卖出。
补仓规则:每次亏损达到5%时,加倍补仓
止盈规则:补仓后,当整体盈利达到10%时止盈
我们的初始资金是100万,首次建仓为1万,资金非常充足。
接下来,我们在Backtrader上回测"159607"中概互联ETF从2022年至2025年3年的走势。
data = bt.feeds.PandasData(dataname=dat_feed_pandas("159607", datetime.datetime(2022, 1, 1), datetime.datetime(2025, 1, 1)), fromdate=datetime.datetime(2022, 1, 1), todate=datetime.datetime(2025, 1, 1))
回测结果如下所示:
回测的结果是100万三年赚了20多万,年华收益7%。这个还只是用了最简单的均线金叉死叉择时而已,如果用了高级的ETF红绿灯择时,那么效果会更好:
Starting Portfolio Value: 1000000.00Final Portfolio Value: 1217602.66Sharpe Ratio: 0.8590927429192461Max Drawdown: 15.43%Annual Return: 7.07%
接下来分段来看下交易日志!
这一波行情刚买了就走下跌趋势,最后在一次反弹后获利10%止盈,总共使用了80多万资金。
2022-02-14 00:00:00: 金叉 0.92元 买入 10881股BUY EXECUTED, Price: 0.91, Size: 10881.39, Cost: 9858.54, Comm: 9.862022-02-22 00:00:00: 亏损5.3% 大于 5% 补仓 22980股BUY EXECUTED, Price: 0.86, Size: 22980.28, Cost: 19717.08, Comm: 19.722022-02-24 00:00:00: 亏损5.66% 大于 5% 补仓 47856股BUY EXECUTED, Price: 0.84, Size: 47857.00, Cost: 40104.17, Comm: 40.102022-03-04 00:00:00: 亏损8.76% 大于 5% 补仓 103095股BUY EXECUTED, Price: 0.76, Size: 103095.54, Cost: 78352.61, Comm: 78.352022-03-07 00:00:00: 亏损7.61% 大于 5% 补仓 211763股BUY EXECUTED, Price: 0.73, Size: 211763.81, Cost: 155646.40, Comm: 155.652022-03-08 00:00:00: 亏损7.54% 大于 5% 补仓 439679股BUY EXECUTED, Price: 0.71, Size: 439679.11, Cost: 313930.88, Comm: 313.932022-06-07 00:00:00: 补仓后盈利达到目标,盈利10.49% 大于10% 止盈 SELL EXECUTED, Price: 0.84, Size: -836257.14, Cost: 617609.69, Comm: 701.62
第二波行情获利14%止盈,总共使用了60多万资金。
2022-08-26 00:00:00: 金叉 0.81元 买入 12422股BUY EXECUTED, Price: 0.80, Size: 12422.36, Cost: 9975.16, Comm: 9.982022-09-16 00:00:00: 亏损5.35% 大于 5% 补仓 26250股BUY EXECUTED, Price: 0.75, Size: 26250.41, Cost: 19687.81, Comm: 19.692022-09-22 00:00:00: 亏损5.87% 大于 5% 补仓 54536股BUY EXECUTED, Price: 0.72, Size: 54536.86, Cost: 39266.54, Comm: 39.272022-09-30 00:00:00: 亏损6.02% 大于 5% 补仓 112997股BUY EXECUTED, Price: 0.70, Size: 112997.24, Cost: 78872.07, Comm: 78.872022-10-11 00:00:00: 亏损6.52% 大于 5% 补仓 235439股BUY EXECUTED, Price: 0.66, Size: 235439.02, Cost: 155860.63, Comm: 155.862022-10-13 00:00:00: 亏损5.03% 大于 5% 补仓 477367股BUY EXECUTED, Price: 0.66, Size: 477367.93, Cost: 316017.57, Comm: 316.022022-12-01 00:00:00: 补仓后盈利达到目标,盈利14.19% 大于10% 止盈 SELL EXECUTED, Price: 0.77, Size: -919013.81, Cost: 619679.77, Comm: 705.80
剩下的几段行情大家可以运行源码后对照观察!
挑选的"159607"中概互联ETF已经属于比较极端的品种了,换成"512800"银行ETF就比较平滑,不会补仓很多次,但是由于初始投入资金较少,盈利较少(对于绝大多数人亏损而言已经很不错了)。
大家可以换其他的ETF继续验证!
关键代码如下所示:
总结
马丁格尔策略的核心风险在于无法实现真正的无限加仓,为此我们通过均线金叉/死叉信号作为初级交易触发条件,避免买在高位,减少补仓次数,在趋势的左侧行情中建仓,在趋势右侧行情中的盈利。
说明
此系列为连载专栏,完整代码会上传知识星球《玩转股票量化交易》!作为学员们的学习资料。
想要加入知识星球《玩转股票量化交易》的小伙伴记得先微信call我获取福利!
非星球学员需要的话,可以联系我单独购买!
知识星球介绍点击:知识星球《玩转股票量化交易》精华内容概览