本文围绕量化交易中的回测优化展开,深入探讨如何通过调整交易周期、单次交易数量等参数提升策略表现,并结合实际案例分析不同设置对收益的影响。同时,文章介绍了利用AI工具(如ChatGPT)和Python脚本实现参数自动化探索的实践方法,以及回测中“非日内模式”和“持仓同步逻辑”两个关键参数的作用和应用场景。最后,文章鼓励用户分享最佳参数探索经验,共同推进量化交易策略的优化。
免责声明:本文仅供学习交流使用,不构成任何投资建议。作者非专业人士,提醒读者:量化交易存在风险,投资需谨慎,请结合个人风险承受能力做出决策。
引言
量化交易的核心目标是通过不断优化策略参数,提升回测表现并实现最大收益。在本文中,我们将结合具体回测数据,探讨如何利用回测参数进行收益优化,同时介绍如何借助AI工具如ChatGPT和Python脚本进行自动化的参数探索。
风险提示
在开始讨论之前,特别提醒读者:
- 本文展示的回测结果基于特定策略版本、特定时间段和参数设置,并不代表策略在其他时间段的表现。
- 不同的标的、市场环境和时间周期可能会对参数的最优选择产生重大影响。
- 请结合自身投资目标和风险偏好,在尝试不同参数组合时,注意控制风险。
量化交易虽然为我们提供了系统化的交易方法,但其效果依赖于市场环境和参数优化结果。因此,我们鼓励用户在尝试过程中多进行不同时间段的测试,以获得更稳定可靠的结果。
回顾量化交易策略回测步骤
以下内容均使用Moomoo的量化交易功能中的“运行策略”-“历史回测”,假定读者已经导入了我提供的量化策略,或者设计并实现了自己的量化策略。如果您还没有相关经验,可参考之前的文章进行学习。
回测设置步骤1
选择“交易策略”,(回测使用的)账户,回测区间,初始资金。
回测设置步骤2
勾选“及时行情触发运行”。
回测设置步骤3
选择“标的”,回测的交易周期。
注意周期可以有多种选择,比如日线、1小时线、15分钟线等。
回测设置步骤4
设置策略参数中的“最大持仓”,“每次(最小)购买数量”,“(单网格)仓位上限”,“非日内交易”。
回测设置步骤5
在参数预览中,回顾刚才的设置,如果是实盘运行,这些参数请务必仔细确认。
查看策略回测结果
上述步骤完成后,点击“开始运行”,经过运行就能看到回测结果。回测结果包括策略运行后的资产净值、收益率、最大回撤、夏普比率、回测耗时、股价周期及买卖情况、资产走势、订单持仓和运行日志等。
回测中的关键参数探索
在多次的回测中,通过调整网格交易策略的关键参数,如交易周期、单次交易数量,可以看到这些参数对回测收益有着巨大的影响。以下是几个典型的回测案例,其中的固定参数是:标的Mara,初始资金10000美元,回测区间2024年11月13日至2024年12月13日,最大持仓500股,网格(盈利)间距3%,网格数量10个,其余默认。注意可以将回测结果和在此期间,买入并持有策略的收益-6.54%进行对比。
1. 不同交易周期的回测表现(日线,1小时线,30分钟线)
周期 | 收益率 | 最大回撤 | 交易次数 | 持仓数量 |
---|---|---|---|---|
日线 | 2.14% | 4.27% | 30次 | 140股 |
1小时线 | 3.23% | 10.13% | 214次 | 240股 |
30分钟线 | 3.51% | 10.37% | 411次 | 380股 |
以上为三个不同回测周期的回测收益对比图,展示不同周期下的收益率和最大回撤等结果。
可以看到,交易周期越短,交易次数越多,收益有提升,但伴随更高的回撤风险。
你可以通过回测结果画面右上角的“回测记录”,查看之前的回测结果。截止目前,Moomoo并未对回测进行限制,包括开盘和盘前盘后都可以进行回测,包括回测时还可以切换至交易,也未发现回测需要付费,所以在实盘前,可以多次回测,尽量找到最佳参数组合。
风险提示:短周期交易虽然可能带来更高的收益,但也伴随更高的市场波动风险。原因一部分因为网格交易的原则为低买高卖,如果标的价格在某个周期内一直存在合适的波动,那么就会有非常多的交易机会,但交易机会多并不意味着一定盈利,相反可能在单边下跌趋势中迅速积累亏损的持仓,在单边上升趋势中不断减少盈利筹码,并且因为目前策略中同步验证持仓的逻辑,回测时间段越长,回测会非常耗时,用户需要根据自身资金规模、风险承受能力和市场环境,合理选择交易周期。
2. 调整单次交易股数对回测收益的影响
以MARA股票为例,在固定初始资金和最大持仓的前提下,通过调整单次交易的股数(如20股、50股),观察策略表现的变化。注意从单次交易股数和其它参数的约束关系来看,单次交易股数越大,达到单网格持仓上限越快,达到既定初始资金决定的总持仓限制也越快,意味着可能会错过更多的交易机会。以下为初始资金10000美元,最大持仓500股,其它默认参数的回测结果:
周期 | 单次/单格股数 | 收益率 | 最大回撤 | 交易次数 | 持仓数量 |
---|---|---|---|---|---|
日线 | 40/120 | 4.27% | 8.09% | 30次 | 280股 |
1小时 | 40/120 | 6.84% | 23.27% | 177次 | 480股 |
日线 | 50/150 | 5.34% | 9.84% | 30次 | 350股 |
1小时 | 50/150 | 7.69% | 25.86% | 143次 | 500股 |
以上为四个不同单次交易股数的回测收益对比图,展示不同单次股数下的收益率和最大回撤等结果。
可以看到,更改单次交易股数(对应也更改单网格持股上限),对收益率和最大回撤都有显著影响。在实际应用中,需要根据标的特点和市场环境,合理调整单次交易股数,以平衡收益和风险。注意达到持仓数量的限制后,策略将不再进行交易,这可能意味着错过了一些交易机会。
风险提示:以上结果仅限于特定时间段和标的,不同的网格间距在其他时间段可能表现出完全不同的收益和风险,请结合标的特点多进行测试。
3. 更换为其它标的的回测结果
在Moomoo量化交易中,用户可以选择不同的标的进行回测,比如SOXL或者TSLA,只需要合理设置总持仓和每次购买股数,以下为不同标的在11月13日-12月13日的回测结果。
标的名称 | 周期 | 单次/单格股数 | 收益率 | 最大回撤 | 交易次数 | 持仓数量 |
---|---|---|---|---|---|---|
SOXL | 日线 | 20/80 | 3.01% | 3.70% | 29次 | 60股 |
SOXL | 1小时 | 20/80 | 2.01% | 12.66% | 144次 | 40股 |
TSLA | 日线 | 2/8 | 5.18% | 1.30% | 36次 | 4股 |
TSLA | 1小时 | 2/8 | 24.68% | 9.06% | 222次 | 4股 |
以上为两个不同标的,两个不同周期的回测收益对比图,注意因为标的股价的关系,因此需要调整总持仓、每次购买股数、单网格持仓上限。
可以看到,针对不同的标的,回测的收益有非常大的区别。三倍杠杆的SOXL日线和1小时线的收益基本相同,但TSLA的1小时收益达到了近25%。
当然TSLA回测收益很高,主要是近期TSLA正处于上涨趋势,如果你长期看好并愿意一直持有,那么买入并持有策略可能会更好,但如果你也在这段时间“卖飞”了,又焦虑重新入场点位是否合适,那么从1小时的收益和持仓数来看,网格交易不失为一个不错的选择。
考虑到TSLA的股性,那么如果调整一些参数,比如更短的周期,或者单次更大的投入,是否收益会更可观呢,欢迎你在评论区分享你的回测结果。
更改单次交易股数(对应也要更改单网格持股上限),对收益率和最大回撤都有显著影响。在实际应用中,需要根据标的特点和市场环境,合理调整单次交易股数,以平衡收益和风险。注意达到持仓数量的限制后,策略将不再进行交易,这可能意味着错过了一些交易机会。
风险提示:以上结果仅限于特定时间段和标的,不同的网格间距在其他时间段可能表现出完全不同的收益和风险,请结合标的特点多进行测试。
借助AI和脚本进行参数探索
随着量化交易工具的普及,手动调整参数的效率显得不足,而且Moomoo量化功能中的自定义策略代码属于Python的子集,并不能体现出Python科学计算的强大威力。利用ChatGPT等AI工具的支持,我正在设计一套基于Windows端可以直接运行的Python的脚本,这样如果有本地的交易数据,比如之前我通过Yahoo Finance下载了部分标的的日线数据,就可以实现脱离Moomoo环境的自动化地测试参数组合并分析表现。
脚本设计思路
脚本设计的思路主要是通过在本地运行的python脚本,实现基于参数约束条件下的最佳参数探索。具体设计思路如下:
- 参数约束关系:设定参数的取值范围和约束条件,如初始资金、最大持仓、网格间距、单网格持仓限制、单次购买数量等。
- 参数组合生成:根据参数间的约束关系,生成所有可能的参数组合,用于后续回测。
- 回测执行:利用本地化的日线数据,执行回测并记录最佳参数的结果。
- 应用最佳参数:根据回测结果,将最佳参数输入Moomoo量化策略,进行更广泛的回测并指导实盘运行。
脚本功能与效果
- 参数自动化探索:
- 测试多种参数组合,如交易周期、网格间距、持仓限制等。
- 输出最佳参数的详细分析报告。
- 可视化结果:
- 生成收益曲线、持仓变化和交易点分布图表。
- 帮助用户直观理解策略表现。
- 未来扩展:
- 结合机器学习算法,优化参数搜索效率。
- 支持多标的、多周期的回测分析。
- 自动生成策略代码,缩短开发周期。
量化策略中两个关键回测参数解析
在量化交易回测中,有两个重要参数会显著影响策略的收益表现和回测效率:
启用非日内模式(enable_non_intraday_mode)
功能:限制周期内交易,比如应用到日线交易时,每天仅允许一次交易,这样就不会被标注为日内交易(PDT)。
适用场景:适合非日内交易者(注意Moomoo的日内交易需要至少25000美元的账户余额),或者希望同时获得Cash Sweep利息和实现自动交易的用户。
持仓同步逻辑(enable_position_sync_in_backtest)
功能:决定回测过程中是否严格模拟持仓同步逻辑,特别当选择短周期如5分钟线交易时,回测会非常耗时,此时将此参数设置为“False”。
适用场景:高频交易策略回测时使用,但注意没有持仓同步逻辑,可能会影响一系列其它相关参数并最终影响收益估算。
总结与互动
通过本文的探讨,我们发现合理调整回测参数可以显著提升策略表现,而借助AI和自动化脚本进一步优化参数探索过程,将成为量化交易的重要趋势。
欢迎互动:
- 试试脚本探索您标的的最佳参数,并将结果分享到评论区!
- 如果有其他关于策略优化的建议或问题,也欢迎留言讨论。
风险提示总结:量化交易并非万无一失,参数的表现可能随市场环境和时间段变化。建议从小规模资金开始,逐步验证策略稳定性,避免盲目扩大投入。
好了,今天就到这里,如果你对本文中的内容有兴趣,欢迎在评论区分享您的高见。
如果你觉得我的文章对你有帮助,可以请我喝咖啡
💬 发表评论: 本博客的评论功能由 Gitalk 提供,您需要有一个 GitHub 账号来发表评论。如果您还没有账号,请访问 GitHub 免费注册。注册后,您不仅可以在这里参与讨论,还可以在 GitHub 上发现无数精彩项目和技术交流的机会!