如何负责任地回测RSI策略?
定义RSI策略回测的机制
回测是将基于规则的策略应用于历史价格数据,以查看其在特定假设下的表现。对于RSI策略,核心机制是相对强弱指数(RSI),它根据选定回看周期内的价格变化计算得出。
要负责任地进行回测,首先应将稳定逻辑与可变条件区分开:
- 稳定机制:RSI的计算方式(回看周期长度)、阈值的定义方式(例如穿越某一水平)以及进出规则的具体操作。
- 可变条件:历史数据集、假设的市场微观结构(成交如何发生)以及交易成本。
明确每一项计算假设。例如,说明你使用的价格序列(通常使用收盘价作为指标输入)、如何处理RSI尚未完全定义的初始值,以及是否在K线收盘时或盘中评估信号。即使是微小的选择也可能改变策略的交易次数和时机。
明确数据和执行假设
历史结果的可信度取决于数据管道和执行模型的可靠性。在所有步骤中使用相同的数据,以确保比较具有意义。
需要记录的关键数据选择包括:
- 数据分辨率:使用何种K线周期(例如分钟、小时、日线)来计算RSI并应用策略规则。
- 缺失数据处理:如何填补或避免数据缺口。
- 公司事件调整(如适用):确保时间序列在时间上保持一致。
然后选择一个执行假设模型。负责任的方法不应忽略交易摩擦。至少应包含以下内容:
- 点差或等效的交易成本模型。
- 佣金(如适用)。
- 滑点假设(假设成交价比报价差多少,以及滑点是否随波动性变化)。
如果没有这些因素,回测结果往往比实际交易条件下的表现更好。
使用样本外测试和参数纪律控制偏差
许多“良好”的回测结果失败,是因为存在偏差。常见的偏差来源包括过拟合(将参数调优至历史数据)和前视偏差(意外使用了信号时间点不可用的信息)。
使用以下偏差控制方法:
- 前向滚动验证(Walk-forward validation):在较早的时间窗口中拟合或选择参数,然后在下一个时间段中评估,随时间重复此过程。
- 样本外检验:至少保留一个时间段或数据集完全不用于训练,仅用于最终评估。
- 参数纪律:避免在看到结果后反复更改规则;如果需要迭代,应将每次迭代视为一个假设并重新验证。
还应验证你的实现是否符合预期规则。例如,确认策略是在RSI条件满足后的第一个K线入场,还是在同一K线收盘时入场。同时确认持仓管理规则(单仓还是多仓、信号重叠、多个条件同时触发时如何优先处理出场)。
考虑局限性和可能的失败模式
即使仔细的回测也无法证明未来表现。当市场状态变化、波动性动态改变或执行条件不同时,历史关系可能会破裂。
需要计划应对的重大局限包括:
- 市场状态敏感性:基于RSI的逻辑通常假设均值回归或动量行为会持续。如果市场状态转变,信号表现可能减弱。
- 过拟合风险:策略看似稳健,可能只是因为参数被调优至特定历史条件。
- 执行不匹配:历史K线数据无法完全代表盘中价格路径;成交、滑点和点差变化可能有显著差异。
- 数据和编码错误:索引偏移、RSI计算步骤错误或时间对齐不一致都可能导致误导性结果。
因此,负责任的回测应报告不确定性并进行压力测试,而不是呈现单一且看似确定的结果。
验证可独立检查的主张
为了使回测可验证,应关注可审计的内容。
一个实用的检查清单:
- 用通俗语言发布策略规则:RSI周期长度、阈值逻辑、进出时机和持仓管理。
- 记录所有用于成本和执行时机的假设。
- 至少使用一个样本外周期和一种前向滚动方法,并报告结果是否在这些条件下持续有效。
- 运行基本的合理性测试:策略是否在RSI未定义时交易?在边界处行为是否异常?当微小实现细节改变时,结果是否剧烈变化?
最后,在得出结论前提出下一个问题:“如果市场行为或成本在合理范围内发生变化,这些规则是否仍表现出稳定行为,还是结果会崩溃?”