1、前视偏差
前视偏差是指使用交易完成之后的信息。例如,“在日最低价的1%之内买入现货”的交易规则,就有前视偏差,因为在当日市场收盘前,是不可能知道日最低价的。又如,使用全部数据回归得来的系数,来产生一个基于前后两段价格序列的线性回归模型的交易信号,同样有前视偏差。
量化交易之避免常见的回测陷阱
如何避免前视偏差呢?使用“滞后”的历史数据来计算策略信号,可以避免前视偏差。滞后数据系列意味着,在计算移动平均值、最高价、最低价、成交量等指标时,只使用“上一”交易期限的收盘数据。(当然,如果策略只在交易期限结束时触发,那就无需使用滞后数据。)使用Excel等“所见即所得”的程序比MATLAB更容易避免前视偏差。因为在Excel中很容易将不同列的数据对齐,并确保每个单元格里的公式只使用当前行之前的数据。Excel的单元格高亮显示功能,可以让们直接査看使用当日数据所产生交易信号的情况。(双击带公式的单元格,该公式所使用数据所在的单元格会高亮显示。)
2、数据迁就偏差
根据经验,在计算移动平均值时不会超过5个参数,包括如建仓清仓阀值、持有期限、回溯期限等定量指标。此外,并非所有的数据迁就偏差都是由参数优化造成的。用相同数据集重复做回测时,还会影响模型的定性决策选择,如在开盘还是收盘时建仓、是否隔夜持仓、交易大盘股还是中盘股等。通常,这些可以优化回测业绩的定性选择,对未来未必是最优的。构建数据驱动模型时,几乎不可能完全消除数据迁就偏差,但有几种方法可以降低这种偏差。