如何负责任地回测平均盈亏?
将平均盈亏定义为可衡量的概念
平均盈亏是一种用于总结“盈利”规模通常相对于“亏损”规模如何的历史性方法,基于过往交易结果。在负责任的回测中,你首先需要明确定义你要衡量的具体数值,因为“盈利”和“亏损”可以通过多种方式计算。
一个常见的结构是:
- 制定一条一致的规则,用于确定什么构成交易结果(例如,每笔已完成交易的最终盈亏)。
- 将结果转换为可比较的单位(如账户货币盈亏,或价格变动单位)。
- 将“盈利交易”定义为结果为正的交易,“亏损交易”定义为结果为负的交易(或使用绝对值,但必须明确说明)。
- 计算平均值:平均盈利规模(平均盈利)和平均亏损规模(平均亏损)。
如果你使用比率(例如,平均盈利除以平均亏损),请明确定义符号约定。回测中的许多错误源于将带符号的平均值与绝对平均值混合使用。
机制:输入、假设与成本的作用
一次严谨的平均盈亏回测取决于你选择的数据模型。至少需要以下内容:
- 按时间排序的交易记录列表(入场/出场时间及相应实现的结果)。
- 处理边缘情况的规则(部分平仓、盈亏平衡交易、取消的交易以及未完成的交易)。
- 明确的执行现实性假设。
关键的“成本-特征”原则是:你的历史结果必须基于你希望评估的相同经济假设。成本和摩擦包括点差、佣金和滑点。即使你不知道确切的未来成本,仍可通过以下方式负责任地进行测试:
- 保存将价格变动转换为交易盈亏所使用的所有假设。
- 进行敏感性检查(例如,在合理范围内改变假设的滑点或成本水平),以查看结论是否依赖于某个乐观设定。
证据与示例计算(含假设)
假设你有一个已完成交易的数据集。你决定:
- 盈利为实现盈亏 > 0 的交易。
- 亏损为实现盈亏 < 0 的交易。
- 对每组使用实现盈亏的均值。
- 盈亏平衡交易从两个平均值中排除(或作为零值包含——需明确说明)。
示例(仅作说明):
- 平均盈利 = (正盈亏值之和)/(盈利交易数量)。
- 平均亏损 = (负盈亏值之和)/(亏损交易数量)。如果你之后使用“绝对平均亏损”,则使用其数值大小。
为验证回测结果,请直接从存储的交易盈亏列表中重新计算这些值。如果你计算的平均值不匹配,则问题出在定义或数据处理上,而非市场表现。
必须测试的局限性与失败模式
平均盈亏是描述性的,而非预测性的。负责任的回测将其视为一种历史总结,当市场状况、执行质量或决策时机发生变化时,其稳定性可能失效。
至少应识别一种重大局限性:
- 市场状态变化(Regime shift): 一种策略在某一市场环境中可能表现出特定的平均盈利与亏损关系,但随后可能发生变化。
- 成本不匹配: 如果历史结果忽略点差/佣金或低估滑点,则“平均盈利”与“平均亏损”的比较可能被扭曲。
- 选择偏差与幸存者偏差: 如果数据集仅包含“通过”审核流程的交易,或你无意中以与盈利能力相关的方式过滤了结果,则平均值可能产生偏差。
- 对定义的过度拟合: 尝试多种“盈利/亏损”的定义、入场/出场时间或结果衡量方式,可能产生虚假的稳健感。
偏差控制与样本外检验
为降低这些风险,请使用能检验所测关系是否具有泛化能力的程序:
- 跨时间段的一致定义: 在所有时期使用相同的盈利/亏损规则、盈亏平衡处理方式和盈亏计算方法。
- 基于时间的划分: 在较早时期估计你的测量方法,并在未用于优化定义的较晚时期进行评估。
- 样本外报告: 比较样本内与样本外的平均盈利、平均亏损(及任何比率)。
- 敏感性分析: 在不同合理成本/执行假设下重新计算指标,以检查结论是否依赖单一乐观情景。