追着自己尾巴跑的机器人
我曾经给我的实盘交易机器人赋予了一种在当时看来颇具灵性的能力:自我适应。在一连串亏损之后,它会变得更加谨慎;在一连串盈利之后,则更加激进。它显得反应灵敏,几乎像是活的——一个会留意自己表现如何并据此做出调整的系统。
而我实际上造出来的,是一台对噪声做出反应、却把这称为学习的机器。它根据那些大多只是小样本噪声的东西时而收紧、时而放松,而由于每一次调整都塑造了接下来发生的事,它把时间都花在焦虑地追着自己的尾巴跑上了。
那个看似聪明的功能
这个想法以其合理性诱惑着人。如果机器人刚刚连续亏损了好几次,那条件想必是不利的,它就应该在冒更大风险之前提高自己的标准。如果它正处在连胜之中,那条件就是好的,它便可以放手一搏。适应环境。响应反馈。还有什么能比一个会根据自己表现做出调整的系统更合情合理呢?
我记得自己对它颇为得意。它让这个机器人感觉不那么像一套固定的规则,而更像是某种有判断力的东西。
它实际上在适应的是什么
问题出在什么算作”反馈”上。机器人是根据极少数最近的结果来调整的——区区几笔交易而已。而几笔交易所携带的证据,通常太过单薄,撑不起对接下来会发生什么的可靠推断。
连续几次亏损,是任何一连串不确定的下注当中最为寻常不过的事情之一。这就是随机性在近处看上去的样子。但机器人分辨不出条件发生了有意义的变化和运气完全正常的聚集这两者之间的区别,于是它把每一段短暂的连续序列都当成一条讯息,并尽职尽责地据此改变自己的行为。
对噪声做出反应,感觉起来和学习一模一样
从内部看,过度反应很难与适应区分开来。在某种狭义上,机器人确实在”响应市场”。但它真正响应的是方差——在任何带有偶然成分的过程中都会出现的、盈亏的随机扎堆——并把这种方差重新贴上了洞见的标签。
这正是许多交易机制——无论人为还是自动——核心处的陷阱:一串最近的结果感觉上信息量巨大,实则大多是噪声。一个系统越是迅速地依据这些结果采取行动,它就越是忠实地追踪着噪声,而非任何真实的东西。
自我强化的那一部分
情况变得更糟,因为这些调整反过来又喂养了正被衡量的那个东西。亏损之后变得谨慎意味着交易更少,这意味着接下来那几笔结果的样本更小、更不稳定,这意味着机器人所反应的信号摆动更大,这又意味着调整更为剧烈。这个系统在响应一个由它自己扭曲出来的数字——一个外部几乎没有任何东西能将其锚定的循环。
一个反馈循环的稳定程度,取决于它所锚定之物的稳定程度。我那个循环主要锚定在它自己近期的运气上,也就是说,几乎没有锚定在任何东西上。于是它来回振荡:谨慎,然后大胆,然后又谨慎,每一次摆动都是对前一次摆动的反应,而非对世界的反应。
为什么小样本会撒谎
这一切的底下,是一个朴实无华的统计学事实:小样本不会被平均掉,它们会摆动。“数字会告诉我答案”这整套安慰,靠的是拥有足够多的数字,好让运气相互抵消。区区几笔交易则属于相反的情形——深受偶然左右,几个好的或坏的结果几乎可以把平均值拖向任何地方。
任何对一个短暂的近期窗口做出快速反应的规则——在背后没有一个经独立验证的信号、或某种真正的变化检测的情况下——大多是在对偶然做出反应。响应迅速,正是那个让这个功能显得聪明的东西,却也在很大程度上是它在这里出错的原因。那种反应越快,它就越接近迷信。
修正之道:反应慢一点,或者干脆不反应
在那个原型里,修复的办法是拿掉机器人的反射神经——根本不再让一段短暂的结果序列改变它的行为。我所保留下来的更宽泛的教训则更为简单:对那些由短序列结果所驱动的适应保持不信任。如果一个系统终究要调整,那么调整的依据就应该足够庞大、收集得足够缓慢,从而有可能意味着某种东西,而不是去追踪运气最近翻出的那几面。
让一个系统对反应更迟钝反而能让它变得更好,这有点违反直觉。但反应速度只有在确实有真实信号可供反应时才算一种美德。当短期输入大多是噪声时,你所添加的响应能力中有很大一部分,只不过是一种更快被愚弄的方式罢了。
并非所有适应都是智能
我从中得到的最深刻的一点,是我如今紧紧抓住的一个区分:反应和学习并非同一种行为,尽管它们可以戴着同一张面孔。学习从大量证据中提取出一个稳定的模式。反应则只是映照出最近发生的那件事。一个对自己最近那几次结果即刻做出调整的系统,未必就变得智能了。它也许变得迷信了——对巧合做出种种小小的仪式性反应,深信自己注意到了什么。
“它会适应条件”听起来像是一个功能。有些时候,那不过是对一个追着自己尾巴跑的系统的一种客气说法。问题从来都不只是某个东西是否会适应。问题在于,它所适应的那个东西,是否曾经真实存在过。
—— 无信号,无回报,非投资建议。