如何负责任地回测 RSI 区间策略?
定义 RSI 区间及可回测的规则
RSI 区间是一种描述 RSI 数值在特定区间内波动的方式(例如“区间高位”和“区间低位”区域),而不是将该指标视为单一的是/否信号。在开始回测之前,需用通俗语言明确定义其机制:
- RSI 的计算方式(回看周期长度,是否使用平滑方法)。
- “区间”的含义(确切的区间边界,以及这些边界是固定的还是动态计算的)。
- 测量的内容(例如,是否追踪触及次数、在区间内停留的时间、反转行为或持续性)。
负责任的回测始于将每个概念转化为可复现的确定性规则。如果两个人根据同一描述编写出不同的区间定义代码,则测试结果无法验证。
设定假设并选择数据规则
回测的可靠性取决于其数据规则。使用清晰的假设,并在计算任何结果前明确说明:
- K线或逐笔数据粒度:你使用的是K线数据(开盘价/最高价/最低价/收盘价)吗?时间周期是什么?RSI 对采样方式敏感。
- 避免前视偏差:确保用于决策的数值在决策时刻是可获得的。
- 时间处理:若使用日线数据,则不能假设日内顺序。保持执行假设与数据一致。
- 数据清洗:决定如何处理缺失K线、节假日和异常值。
一个实用的方法是创建“数据契约”:一份简短的检查清单,明确定义所用数据集、时间周期、时间戳以及任何过滤规则。没有这个,两次回测无法进行有意义的比较。
将成本和执行纳入假设建模
许多回测失败是因为将交易视为无摩擦过程。即使目标是教育而非实际交易决策,建模成本也有助于避免误导性结论。
应包含可能显著影响结果的组件:
- 点差或买卖价差影响(即使简化为常数)。
- 滑点模型(例如,每次执行固定不利偏移,或偏移范围)。
- 下单时机:假设入场发生在下一根K线开盘、当前K线收盘,还是包含 RSI 区间条件的K线内?
- 持仓时间或退出逻辑:与入场一样,以确定性方式明确定义。
然后进行敏感性检查。如果结果仅在狭窄且乐观的成本假设下成立,则是一个警示信号。
使用稳健验证控制偏差
负责任的回测需要防止“设计结果”的防护措施。常见的偏差控制包括:
- 前向滚动验证:仅使用历史数据拟合参数,然后在后续未见数据上测试。
- 样本外评估:保留一段从不用于调整定义(如区间宽度、阈值、RSI 长度)的独立时期。
- 多次划分:在多个时间段重复该过程,以降低某一市场阶段主导结果的可能性。
- 参数纪律:限制调优的自由度数量。若为追逐特定模式而调整多个阈值,则可能过拟合。
一个有用的验证标准是:同事在给定相同数据集和假设的情况下,能否复现你的完整流程并看到相同的指标趋势?
认识至少一个重大局限性
RSI 区间回测可能因多种原因失效,应主动识别失败模式:
- 市场状态变化:当波动结构或市场参与方式改变时,RSI 的“区间行为”可能发生变化。
- 非平稳性:收益和振荡的统计特性可能漂移,因此历史区间在未来可能表现不同。
- 对定义的过拟合:若在看到结果后才选择区间边界,则可能编码了噪声。
- 执行不匹配:若决策使用了K线内信息,但回测假设按K线级别成交,则模拟表现可能不切实际地一致。
负责任的文章或笔记本应指出其设置中最相关的局限性,并说明验证如何尝试检测它。
使用清晰独立的检查清单进行验证
若要独立验证事实,请使用聚焦可验证性的检查清单,而非预测能力:
- 定义检查:RSI 和区间规则能否被精确复现?
- 数据检查:回测是否避免了前视偏差,并与声明的时间周期匹配?
- 成本检查:点差/滑点是否透明建模,并进行了敏感性测试?
- 偏差检查:是否存在前向滚动或样本外验证,且调优有限?
- 失败模式检查:是否测试了至少一种干扰情景(改变成本、不同时间划分或调整执行时机)?