策略回测实战:从想法到验证
回测实战|搭建一个简单的动量轮动策略
这节课学什么
本节从明确规则开始,搭建可复现的动量轮动回测。课程覆盖股票池、信号、调仓、仓位、成交、费用和绩效,不把一条收益曲线当作完整回测。完成后你应能解释每一笔持仓为什么产生。
策略规则
示例策略每月最后一个交易日计算过去60日动量,剔除上市不足120日、停牌、风险警示及成交额过低股票,选择排名前20只等权持有。信号在收盘后生成,因此最早按下一交易日可成交价格执行。
MOM60(i,t) = P_adj(i,t) / P_adj(i,t-60) - 1
TargetWeight(i,t) = 1/N, if rank(MOM60) ≤ N; otherwise 0
NetReturn(t) = GrossReturn(t) - Turnover(t)·CostRate
回测循环
按交易日推进:更新当日可见数据;在调仓日生成信号;检查涨跌停和停牌;计算目标仓位与当前仓位差;模拟下一可成交时点的委托;扣除费用;更新现金、持仓与净值。保存信号表、订单表、成交表和每日资产表,避免只留下最终净值。
结果如何判断
至少输出累计收益、年化波动、最大回撤、夏普、换手率、月度胜率和年度收益。然后把成本提高一倍、信号延迟一天、持仓数改为10和30,观察结论是否稳定。如果策略只在精确参数和零成本下有效,说明它还不能进入下一阶段。
实操任务
先完成无费用基线,再依次加入手续费、印花税、滑点和涨跌停约束。逐层记录收益变化,找出“理论收益到可执行收益”的损耗来源。最后选择一个回撤区间,逐日解释信号、持仓和成交,确认系统没有使用未来数据。
本节学习方法
建议先完整阅读概念和公式,再按照实操步骤独立完成一次。不要直接复制最终结果:先记录数据范围、字段口径和预期现象,运行后对照检查。若结果不同,应从复权方式、交易日对齐、缺失值、可交易状态和费用假设逐项排查。每次练习保存代码版本、参数、运行日期和结果截图,形成可以复现的研究记录。
课后检查
- 能否用自己的话解释本节核心概念,而不是只背公式;
- 能否指出输入数据的主键、时间字段和单位;
- 能否让同一份代码在相同数据上得到一致结果;
- 能否解释结果的局限性,以及哪些变化会让结论失效;
- 能否区分研究结果、模拟结果与真实交易结果。
本课程用于量化研究方法学习,不构成个股推荐、收益承诺或投资建议。示例参数用于演示计算过程,不代表适合任何真实账户。