OptiNod 学院
事先承诺与通过标准:在判断固化之前把规则定死
在判断固化之前固定入场、出场、仓位规则和淘汰条件,执行时的自由裁量就会消失,其代价以遵守率来衡量。
前向测试时如果只盯着“赚不赚钱”,样本不足的情况下堆积起来的只有确认偏误。在判断固化之前固定入场、出场、仓位规则和淘汰条件,偏误就没有插手的空间。
事先承诺(pre-commitment)是经济学家Thomas Schelling在1970年代梳理出的概念,指的是:当你无法相信未来的自己在压力下会做出什么选择时,就现在先把那个选项去掉。执行的瞬间盈亏已经在变动,判断会动摇。所以要在盈亏为0的时点把决定预先做好。
心理学里有一个讲同一原理的概念,叫实施意图(implementation intentions)。它由Peter Gollwitzer在1999年整理,内容是:先把“情境X出现时就做行动Y”固定成一句话,到时就跳过当下的判断,直接执行定好的行动。入场信号出现的瞬间,或价格触及止损线的瞬间,人不会重新判断,而是执行事先定好的规则。
大众把纪律理解为“在那一刻忍住的意志力”。只靠意志力的话,守住止损的办法只剩“再狠一点下决心”,而这个办法在下一次亏损时又会动摇。本系列前面讨论的偏误,全部出现在执行的瞬间。损失厌恶、处置效应、追涨都是在盈亏变动之后扰乱判断的力量,而意志力是每次都去和这些力量对抗的办法。事先承诺则把判断时点提前,让你不必对抗。
代价可以在样本中确认。没有规则、只看“赚不赚”的话,盈利的交易会被算作依据,亏损的交易会被当作例外放过。这就是确认偏误在没有交易日志的情况下不断累积的过程。把规则事先定死,就能把遵守规则的交易和违反规则的交易分开,各自计算期望值。两个期望值的差就是自由裁量造成的代价。用遵守规则交易的期望值减去违反规则交易的期望值,这个差就是执行差距的具体数值。
判断固化之前定好,规则才不会动摇
事先承诺要起作用,条件只有一个:必须在持仓出现之前固定规则。入场时点盈亏为0,风险厌恶和风险寻求都没有可依附的参照点。这个时点定下的止损和目标,是没有情绪介入的判断。
持仓一旦建立,参照点就移到自己的入场价上,盈亏开始变动,前面讲过的那些偏误就出现了。盈利区间想躲避风险、急着平仓,亏损区间想把本金捞回来、拖着不止损。这时制定的规则已经带上了这种情绪。“看着价格再决定止损”这种计划,不过是把亏损区间的风险寻求换上规则的外衣。
所以入场、出场、仓位的所有数值,都必须在按下入场按钮之前确定。入场后才定的规则只是具备了规则的形式,挡不住偏误。事先承诺的第一个条件,就是制定规则的时点本身。
事先定死入场、出场、仓位,执行时的自由裁量就消失了
执行瞬间被偏误左右的决定有三个:何时入场、何时出场、投入多少。把这三个决定各自事先固定成一个数值,那一刻就没有重新判断的余地。
- 入场条件:事先用限价单挂好信号K线和入场价格。信号出现后追着价格以市价入场的追涨行为,用规则挡住。
- 出场条件:入场的同时,把止损和第一目标以OCO订单挂出。止损按波动率与结构来定,不以入场价为基准。
- 仓位:单笔交易的风险定为账户的固定比例(例如1R),不因前面的连胜或连败而加大或缩小。根据结果改变下注的赌徒谬误,用固定比例来阻断。
- 淘汰信号:把取消入场的条件(信号失效价格、超过等待的K线数)一并写下来。
这三条规则的共同点是,数值在入场前就已确定。入场价格、止损价格、风险比例以数字写好之后,执行时不重新判断,照写好的做即可。正如讨论处置效应时确认过的,把出场拉到入场的那一刻,不对称的情绪就没有介入的余地。仓位也用同样的方式固定,亏损之后加大下注的过度自信也被阻断了。
三项中有任何一项无法用数值写出来的入场,就是事先承诺尚未完成的入场。

在开始前固定通过与淘汰条件,样本才能成为判断依据
开始前向测试时常见的错误是“先跑一阵,赚钱了就上实盘”。这种做法没有结束条件。看起来盈利的时候就会停下,而那一刻的样本通常是不足的。通过条件和淘汰条件必须在开始前用数字固定,什么时候停才与结果无关。
通过条件里要同时包含最少样本数和行情区间条件。只经历过上涨区间的样本会夸大做多策略的表现。2025年4月7日从74,508美元的低点到8月14日的124,474美元,比特币上涨约67%,在这期间无视回调、只管反复买入的策略,无论是什么都赚了钱。用这一区间的20笔交易宣布“通过”,并不能证明策略有优势。被验证的只是上涨行情这个背景。
把同一个策略放进下跌区间,结果就不同了。2025年10月6日从126,200美元的高点到11月21日的80,600美元,下跌约36%,同样的买入规则连续出现亏损。如果在通过条件里写入“同时包含上涨和下跌区间的至少N笔交易”,就能防止只凭经历上涨行情的样本过早上实盘。这个条件是把滚动前推分析和稳健性在回测中做的验证,在实盘样本上再做一遍的办法。
淘汰条件更重要。如果不在开始前写下“最大回撤超过X%就中止”“N笔交易后期望值为负就废弃”这类数值,亏损持续时就会以“样本还少”为由一直跑下去。没有淘汰线的验证,是确认偏误无休止累积的过程。只有开始前写下的淘汰线,才能终结这个过程。
没有先写下通过与淘汰数字的前向测试,到头来只是假借验证之名收集确认。

自动化消除执行瞬间的自由裁量
事先承诺即使写成了文字,执行最终还是要经人手。止损线被触及的瞬间,如果鼠标没有移向止损而是移向撤单,规则就失效了。进一步减少自由裁量的办法,是把执行本身从人的自由裁量中分离出来。
把TradingView警报设在条件上,即使不盯盘,入场和出场信号也会弹出。再把警报通过webhook连接到前向测试或交易所机器人,从信号到下单就没有人的判断可以介入的环节了。正如在信号与执行之间中确认的,执行环节中人的自由裁量越少,行为造成的差距就越小。
自动化并不能消除所有问题。减少人的自由裁量的同时,会产生滑点与手续费这类机械成本。两种成本性质不同:行为成本在测量之前不知道有多大,机械成本在回测中可以提前算出来。是否把自由裁量交给自动化,要比较这两种成本之后再定。
自动化的目的不在于提高业绩,而在于用结构消除执行瞬间的自由裁量。
遵守率与违规交易期望值把自由裁量的代价变成数字
事先承诺有没有被遵守,凭感觉是看不出来的。在交易日志里加一列规则遵守情况,就会得到两个数字。
第一个是遵守率。即全部交易中,入场、出场、仓位规则全部遵守的交易所占比例。遵守率100%不是目标,但这个比例低,就说明规则在实盘中没有被遵守。
第二个是两组交易的期望值之差。把规则全部遵守的交易和至少违反一条的交易分开,分别计算平均R。例如50笔交易中,遵守规则的40笔平均为 +0.25R,违反规则的10笔平均为 −0.9R,那么违规把整体期望值拉低了多少,就能用数字算出来。这个差就是执行差距的具体数值,也是自由裁量造成的代价。
违规交易要按原因分类,才能确定该改哪里。分成违反限价追涨的入场、把止损向亏损方向移动的出场、连败后加大的下注、没有信号就入场的交易,就能看出哪种偏误造成的代价最大。比较各违规原因的期望值,就能确定下一条要定死的规则的优先顺序。
定期计算遵守率和违规交易期望值,“必须遵守规则”这种决心就会变成要遵守的规则的优先顺序。

两个陷阱
规则越多越好的想法。 事先承诺的目的在于减少自由裁量,不在于增加条件。入场条件里不断加指标,确认偏误就会以规则的形式堆积,迎合过去数据的条件在实盘中表现会下降。规则只需具体到足以消除执行瞬间的判断即可。
自动化之后就不需要心理建设的想法。 即使机器人代为执行入场和出场,开关机器人的决定仍由人来做。连败持续时,“先关一会儿”的念头就会出现,这种干预本身会被记为违规。自动化减少了执行的自由裁量,但中止和重启系统的自由裁量仍然保留。这个决定也需要淘汰条件这种事先承诺。
事先承诺是否成功,以遵守率来确认
本系列讨论的偏误,全部出现在执行的瞬间。盈亏变动之后再判断,损失厌恶、处置效应和过度自信就会介入那个判断。事先承诺把判断时点提前到盈亏为0的入场之前,让偏误介入的那一刻本身消失。把入场、出场、仓位用数字定死,在开始前固定通过与淘汰条件,再用警报和机器人把执行自动化,这三个步骤就是它的做法。
这个方法是否有效,不能靠决心来确认,而要靠遵守率和违规交易期望值来确认。遵守规则的交易与违反规则的交易之间的期望值之差,就是自由裁量造成的代价,各违规原因的期望值则决定下一条要定死的规则。战胜偏误的最后一步,不在于下决心遵守规则,而在于用数字衡量规则有没有被遵守,并计算违规交易的代价。