OptiNod 学院

近因偏误:把正常范围内的连续亏损误判为系统失效

经过验证的系统出现连续亏损,大多仍在正常波动范围内。近因偏误可以用预期连亏长度和系统更换频率来衡量。

经过验证、期望值为正的系统,也会正常地出现很长的连续亏损。只记得最近的五次、六次,就会把这个正常波动的幅度误判为系统失效。


近因偏误(Recency Bias)是指对最近经历的结果赋予超过其实际分量的认知倾向。这种偏误源于Amos Tversky和Daniel Kahneman在1973年整理的可得性启发。人们判断事件概率时,并不去统计实际频率,而是拿这个事件有多容易想起来作为替代。刚刚经历的五次亏损记忆清晰,半年前的二十次盈利却很模糊。于是最近的样本左右了判断。


对交易者而言,这种偏误朝两个方向起作用。连续几次亏损后,就判断“这个系统坏了”并停止交易。反过来,看到最近几次表现好的参数,就判断“现在这组设置是对的”并换成那组设置。两种判断都把最近几笔交易当作系统的当前状态,但这个样本实在太小。


经过验证、期望值为正的系统,也会正常地出现很长的连亏区间。胜率为p的系统重复N次时,自然预期的最长连亏长度大约是log_{1/q}(N·p),其中q是亏损概率(1−p)。胜率45%的系统重复200次,这个值约为8。连续亏损八次,系统也没有失效。只要样本足够,这样的正常区间至少会出现一次。如果只记得最近五六次,就会把这个正常波动的幅度误判为失效。


长期曲线与近期下跌的对比
长期曲线与近期下跌的对比

可得性启发会给最近的样本过大的权重


近因偏误归根结底是记忆有多容易浮现的问题。要计算概率,应当把过去的全部结果作为样本,但人的判断用的不是整体样本,而是容易想起的案例。刚经历的亏损连同情绪一起被清晰地记录,久远的盈利则细节模糊。结果是最近五笔交易成了判断的基准,过去100笔交易没有进入计算。


此外还有对样本大小的错觉。用五笔、十笔交易估计系统胜率,样本远远不够,但人们仍然期待小样本也能给出稳定的比例。Tversky和Kahneman在1971年把这种倾向称为小数定律,即期待小样本原样呈现总体性质的错觉。即使是胜率55%的系统,五笔交易里出现4连亏也很常见。把这段短区间当作系统当前的胜率,就会把实际为55%的系统误认为20%。


一旦给最近的样本过大的权重,正常波动就会看起来像异常信号。


期望值为正的系统也会正常地出现连亏


连续亏损是正常还是失效,可以通过计算来确认。在胜率为p、亏损概率为1−p的独立试验中交易N次,预期的最长连亏长度大约是log_{1/q}(N·p)(q为亏损概率)。


以胜率45%的趋势跟踪系统为例。重复200次,预期最长连亏约为8次。胜率50%、交易100笔时约为6次。如果是胜率降到40%的系统,在150笔交易中,连续亏损约8~9次也在预期之内。亏损比盈利更频繁的系统,正常经历的连亏也更长。


不仅是连亏的长度,出现的频率也可以计算。用胜率45%的系统交易100笔,5连亏区间平均会出现两次以上。胜率50%的系统平均也会出现一两次5连亏。5连亏不是罕见的意外。样本积累到一定程度,它会按预期出现,是正常区间。


这个计算的结论很明确。知道系统的胜率和交易笔数,就能预先确定正常情况下会经历的最长连亏长度。在这个长度之内出现的连亏,并不表示系统失效。


把连亏当作失效,会在大趋势之前关掉系统


在真实市场中,这种误判的代价很大。2024年夏天,比特币从6月到10月约五个月里,在大约49,000美元到74,000美元的宽幅区间内起伏。8月5日跌到49,000美元后又回升到60,000美元以上,方向不明的横盘区间一直持续。


趋势跟踪和突破系统在这种横盘区间里会反复出现小额亏损。突破入场后被拉回,再次入场又被拉回,小额亏损不断累积。五个月里这类亏损持续不断,受近因偏误影响,很容易得出“这个系统现在不适用了”的结论。


10月关掉系统的交易者,错过了接下来的行情。11月初,比特币从约69,000美元开始上涨,到12月17日涨至108,353美元,涨幅约57%。在五个月的横盘中承受小额亏损,就是为了抓住这样一次趋势,而近因偏误让人恰好在这之前关掉了系统。


趋势跟踪系统的期望值来自这类少数大趋势,横盘区间的小额亏损是等待这些趋势的成本。在连亏区间关掉系统,只付出了这笔成本,却错过了真正的大趋势。


关掉系统之后紧接着开始的趋势
关掉系统之后紧接着开始的趋势

近因偏误可以用两个数字来衡量


如果只把近因偏误看作情绪问题,诊断就会含糊不清。看两个数字,就能确认这种偏误是否真的在起作用。


第一个是预期连亏长度与实际连亏的比较。把系统的胜率和交易笔数代入前面的公式,就得到正常情况下会出现的最长连亏长度。当前经历的连亏在这个长度之内,就是正常波动;明显超出这个长度时,再重新检视系统。在胜率45%、200笔交易的系统中,6连亏落在预期值(约8次)之内,因此仅凭6连亏就关掉系统,依据不足。


第二个是系统更换频率。在交易记录中标出关闭系统或更改参数的时点,并同时写下此前的连亏长度。如果更换大多集中在较短的连亏(正常波动之内)之后,就是近因偏误导致过早放弃系统的量化证据。把更换之后的表现,与保持原系统不变时的表现并排计算,这次更换是赚是亏,用数字就能确认。


  • 计算预期连亏:用系统胜率和预计交易笔数,预先算出预期最长连亏长度并记下来。
  • 标记连亏时点:每次停止交易或更改参数时,记录此前的连亏长度。
  • 比较更换前后:把更换之后的表现,与保持原系统时的表现并排计算。
  • 正常范围基准线:把预期连亏长度作为放弃系统的基准线,在这一范围内的连亏,继续保持系统。

正常连亏与警戒阈值线
正常连亏与警戒阈值线

事先知道正常波动的幅度,连亏时也能坚持系统


连亏之所以动摇判断,是因为不知道正常波动的幅度。事先知道这个幅度,只要连亏落在其中,判断就没有理由动摇。OptiNod的验证工具会在交易前计算这个幅度。


滚动前推分析把优化区间和验证区间分开滚动,显示每个验证区间的表现如何变化。观察多个验证区间的表现分布,就能得到这个系统正常情况下会经历的低迷区间的幅度。稳健性三项指标和分段(按季度)测量,则把同一系统的表现分成多个区间来衡量。某个季度表现低迷,但其他季度能够弥补,这样的结构说明这段低迷仍在正常波动之内。


把交易结果随机重新排列、生成回撤分布的蒙特卡洛重采样,目的也相同。把同样的交易只改变顺序,重新排列数千次,就得到正常情况下可能出现的最大连亏和最大回撤的分布。知道当前的回撤位于这个分布的什么位置,就能判断它是正常范围还是异常信号。


用数字掌握了正常波动的幅度,最近五次亏损就不足以动摇判断。


两个陷阱


优化时换成最近表现好的参数。近因偏误的反向做法,是追逐最近表现好的参数。换成上个月收益最好的那组设置,这组设置很可能是针对最近区间的过拟合。根据最近的表现更换参数,实质上是把曲线拟合到最近的区间,到了下一个区间,这组设置又会表现低迷。


只在亏损区间引入的新规则。连亏期间,有时会基于“这次应该再加一个过滤条件”的判断来增加规则。这条规则是为了避开刚刚经历的亏损而调整的,样本只有那几次亏损。事后只看亏损区间添加的条件,能消除那个区间的亏损,但在整个期间内往往反而会降低期望值。新的过滤条件始终应当用整个期间的回测来验证。


连亏的正常范围来自计算


近因偏误的特点是,在系统完好时作用最大。经过验证、期望值为正的系统,越是正常地产生很长的连亏,这些连亏在只看最近样本的眼中就越像失效。避免这种误判,靠的不是调整心态,而是在开始交易之前,用系统的胜率和交易笔数计算出预期最长连亏长度,并把这个长度定为保持系统的基准线。只要当前的连亏落在其中,最近五次亏损就不构成关掉系统的理由。连亏是正常还是失效,不能凭记忆判断,要靠计算得出。

用你自己的交易记录来确认

上传 MT5 交易历史报告或 TradingView 策略的交易列表(CSV),即可计算盈亏分布和连续亏损区间。无需登录即可分析。

分析我的交易记录 查看分析示例