如何负责任地回测斐波那契回撤?
在回测前先明确定义概念
斐波那契回撤是一种在图表上两个选定点之间(通常为一波段的起点和终点)标记潜在价格水平的方法。该方法通常在两点之间距离的特定比例位置绘制水平线(例如,常用斐波那契比率标注的水平)。它最好被理解为一种在历史价格数据上的可重复测量程序,而不是一种保证盈利的交易规则。
负责任的回测始于使“可重复测量程序”明确化:你使用的图表数据、如何选择两个波段点、哪些回撤水平被纳入考量,以及当价格达到(或未达到)某一水平时应用的决策规则。
区分稳定机制与可变条件
如果将可变条件混合在一起,回测很容易产生误导。应将以下两类条件分开处理:
- 稳定机制(你定义的流程)
- 数据定义:时间周期(例如,分钟、小时、日线)、使用的价格字段(开盘/最高/最低/收盘),以及是否进行重采样。
- 波段点选择规则:如何确定所测量波段的起点和终点(例如,基于固定回溯窗口内的局部极值)。
- 水平定义:包含哪些回撤比率,以及如何处理“触及”与“收盘穿过”。
- 评估规则:什么构成一次“命中”,价格在命中后需移动多远,以及测量窗口的长度。
- 可变条件(市场与执行现实)
- 成本:点差、佣金和费用。
- 执行:当价格快速变动时订单如何成交,以及你是否假设在K线收盘价或盘中水平成交。
- 市场状态变化:波动率和流动性可能随时间变化。
负责任的方法是在所有测试周期中使用相同的机制,同时允许成本和执行假设在合理范围内变化。
明确假设并选择一致的数据设置
回测质量取决于清晰且明确的假设。即使你使用相同的指标逻辑,不同的假设也可能导致不同的结果。
需要记录的关键项目包括:
- 波段识别:如果在回测中手动选择波段点,测试将面临后视偏差风险。应优先采用基于规则的方法。
- 防止前瞻性偏差:确保波段点的判定仅使用波段结束时(或评估开始时)可获得的信息。
- K线处理:决定如何在OHLC K线上检测回撤“触及”。例如,使用最高/最低价是否意味着即使收盘价未达水平,盘中触及也算数?
- 仓位规模和持仓逻辑:如果你模拟结果,应以可从历史数据计算的方式定义持仓时长或退出条件。
如果没有这些定义,任何绩效数据都难以解释,且容易导致过拟合。
将成本和执行假设作为首要输入项
许多回测失败是因为忽略了可能吞噬微小优势的经济摩擦。即使你不推荐具体交易,仍可在现实假设下评估该指标的行为表现。
应考虑建模以下内容:
- 交易成本:每笔往返交易或每次操作的点差/佣金/费用。
- 滑点:预期进出价与实际成交价之间差异的规则。
- 成交约定:你是否假设订单在水平价格成交、在K线开盘成交、在K线收盘成交,或使用盘中近似值。
如果你的回测无法说明这些输入项,则无法被负责任地解读。一种良好做法是,在多种成本/滑点情景下重复运行相同逻辑,并观察结论是否保持稳定。
通过稳健性检查控制偏差和过拟合
当规则被不断调整直至在某一段历史数据上“看起来不错”时,偏差常常出现。使用偏差控制可降低此类风险。
实用的控制措施包括:
- 参数敏感性测试:如果你的波段检测使用回溯长度,应在合理范围内变化该值,而非仅使用单一选定值。
- 向前滚动测试(Walk-forward testing):在较早周期上训练/调优,然后在后续周期上评估,且不再重新调优。
- 排除/禁用思路(概念上):避免测试与定义事件所用数据高度重叠的周期,以防信息泄露。
- 盲测评估:在看到未来表现前确定所有规则,然后应用这些规则。
这些检查不能保证正确性,但能有效防止偶然结构伪装成真实优势。