诚实的量化交易 · 1.0

量化交易入门 · 1.0

诚实的
量化交易

写给新手的第一堂课

市场几乎是有效的,赚钱很难。这本书不卖暴富梦——它教你像科学家一样,先学会不死,再谈赢。全书五部十六章,把一间量化研究实验室用真金与无数次失败换来的信条,讲给刚入门的你听。

「悲观者的工具,乐观者的心。」

卷首 · 写在最前面

前言

这本书,是写给正要开始的你

如果你翻开这本书,大概是因为你听过「量化交易」这四个字,觉得它既神秘又诱人:一群人写些程序、跑些数据,好像就能让电脑替自己赚钱。你可能完全不懂统计,没写过一行程序,甚至连「订单簿」是什么都没听过——没关系,这本书就是为此刻的你写的。

我只假设你懂一些生活常识:股票会涨会跌、买卖要付手续费、天下没有白吃的午餐。除此之外,不预设你有任何背景。每个专业名词第一次出现,我都会先用一句白话加一个生活比喻把它讲清楚,再开始用。你不必先去别处补课,跟着读就好。

为什么在一堆「暴富教学」里,还需要这一本

你只要搜索「量化交易」,大概会被一整片「月入十万」「稳定盈利」「财务自由」的课程淹没。它们的共同点是:先给你一个梦,再卖你一套方法。

这本书想做的,恰恰相反。它想当那位坐在咖啡桌对面、愿意先跟你说实话的前辈。

先说结论——这件事很难。市场几乎是有效的:明显好赚的规律,早就被更聪明、更有钱、更快的人捡走了,就像闹市区地上的百元钞票撑不过一秒。扣掉手续费和各种看不见的成本,交易更像一场「负和游戏」,多数人长期是亏的。这不是要吓退你,而是这场游戏真实的设定。

那为什么还值得学?因为市场只是「几乎」有效,不是完全有效。约束、风险、容量和执行摩擦仍可能留下研究线索,但线索不等于属于你的利润。这本书要教你的,不是怎么一夜致富,而是怎样诚实地判断一条线索有没有证据、能不能覆盖成本,以及怎样在判断错时仍活得下来。

这本书的灵魂:先学会不死,再谈赢

这本书背后,是一间真实运作的量化研究实验室,用真金白银和无数次失败换来的一些信条。我把它们浓缩成三句话,它们会像三条暗线,贯穿全书:

先学会不死,再谈赢。 一次伤筋动骨的大亏,足以抹掉很久的积累。所以本书先讲怎样限制损失、守住连续性,再谈怎样寻找优势。

负结果是知识,不是失败。 多数想法不会通过检验。只要问题问得清楚、测试做得诚实、结论留得下来,排除一个错误方向就是进展。

悲观者的工具,乐观者的心。 方法上,按坏情况估成交、成本和风险;精神上,不要因为一个想法被否定,就停止提出下一个更好的问题。后面的章节,会分别把这三句话变成可以执行的规则。

这本书不是什么

为了不辜负你的时间,我也得诚实说清楚,这本书不会给你什么:

  • 它不是快速致富指南。 这里没有「三个月翻十倍」的捷径。真要追那个,你翻错书了,而且多半会付出比书价贵得多的学费。
  • 它不给明牌。 我不会告诉你「买哪只、几点进、几点出」。这本书教的是方法与纪律,是一套你能自己用一辈子的思考方式,而不是一次性的答案。
  • 它不保证获利。 没有任何一本书、任何一套策略能保证赚钱。这本书能给你的,是大幅提高你「不早早阵亡、能持续学习」的概率——在这场游戏里,这已经是极珍贵的东西。
  • 它也不是程序书或数学课本。 我们会用到一点统计直觉,但我承诺先讲白话、再给式子,绝不让你被一堆符号淹没。

如何阅读本书

全书地图:五个部分

这本书一共十六章,分成五个部分,像盖房子一样,一层叠一层往上:

第一部|这是什么游戏(第 1–3 章)。 先看清你要玩的到底是什么:量化交易不是水晶球,而是一套下注的纪律;市场为什么难赚;以及研究工作如何形成可信结论。

第二部|市场与数据的地基(第 4–5 章)。 把地基打好:市场这台机器怎么运作(订单簿与流动性),以及为什么「数据」是整件事的命根子——地图错了,再漂亮的航线都通往礁石。

第三部|把想法变成可检验的规则(第 6–9 章)。 研究的核心手艺:把「我觉得」的模糊直觉,削成一句能被推翻的假说;用回测这台时光机检验它;用统计的严谨分辨「真本事」和「纯运气」;最后落成一条机器每天照做的规则。

第四部|先学会不死(第 10–13 章)。 全书的重心:真实成交要付多少代价;风险管理怎么让你活下去;投资组合怎么分散才算真分散;以及从纸上研究走到真钱实盘,那道不可逆的门该怎么过。

第五部|心态与长路(第 14–16 章)。 收尾,也最柔软:那些不在程序里、只在脑子里的坑(人性);怎么把负结果变成知识;以及最后,找到属于你自己的角落。

建议的阅读顺序

我把这本书当成一段循序渐进的路来写,最推荐的,就是从第 1 章一路读到第 16 章。 每一章都会用到前面铺好的观念,跳着读容易踩空。

但我也知道你可能很忙。如果真的只能先读几章,我的私心建议是:第 1 章、第 2 章、第 11 章。 前两章让你看清这场游戏的本质;第 11 章(风险管理)则是那条「先学会不死」的命根子——哪怕其他都先搁着,这一章的纪律,请先记在心里。

至于第三部那几章偏方法的内容,若第一次读觉得吃力,允许自己先读懂大意、细节之后再回来。这本书是拿来反复翻的,不是读一次就束之高阁。

每一章长什么样子

为了让你读起来省力,每一章都用同样的结构搭起来,你可以善用它:

  • 开场:用一个场景或一个常见的误解,把你勾进来。
  • 正文:把这一章的几个核心观念,一个一个用比喻和小例子讲透。
  • ⚠️ 常见误区:用小方框,点出新手在这个主题上最容易犯的错。看到这个标记请放慢——那通常是别人用学费换来的教训。
  • 🔬 来自实战的一课(部分章节有):把实验室真实踩过的坑,改写成听得懂的故事。这些往往是全书最贵的段落。
  • 📌 本章要点:几句话,帮你把重点收拢起来。读完想复习,直接看这里。
  • ✍️ 动手试试 / 想一想:一两个小练习或思考题。请务必真的停下来想一想——观念是在你自己动脑的那一刻才长进脑子里的,光用眼睛滑过去很快就忘。

给新手的三个心理准备

最后,在你正式上路前,有三件事想先跟你交代,免得你半路上被自己绊倒:

第一,慢就是快。 这本书不会让你明天就开始交易,也不鼓励你这么做。真正的第一步,是把观念和纪律想清楚。急着下场的人,通常也最快离场。

第二,你会很常「失败」,而那是对的。 你会发现自己大部分的点子都不成立。请把这件事,重新理解成「我又排除了一个错的方向」,而不是「我不行」。在这里,诚实地否定自己,是一种能力,不是挫败。

第三,把好奇心和纪律都变成习惯。 这本书最想给你的不是某一招,而是一种能陪你一辈子的姿态:对世界保持好奇,对自己保持严格。当这两件事都变成本能,你就已经走在极少数人的路上了。

安全与免责声明

最后,几句必须讲清楚的话:

本书纯属教育与知识分享性质,目的是帮助完全的新手,建立正确的观念与研究方法。书中所有内容——包括各种策略、例子与数字——都不构成任何投资、财务或交易上的建议,也不是买卖任何金融商品的推荐。

交易涉及真实的金钱风险。任何策略都可能亏损,你有可能损失部分、甚至全部的本金。 过去的表现(包括任何回测结果)都不保证未来的获利。书里的例子是为了说明观念、经过简化的,不能照抄拿去实盘。

在动用任何真钱之前,请充分了解自己承担的风险,只用你「输得起」的闲钱,并在需要时咨询有资格的专业人士。这本书能陪你把观念与纪律打好底,但最终每一个决定与它的后果,都只能由你自己负责。

好了,话先说在前头。翻开下一页,我们就从「量化交易到底是什么」开始。

第一部 · 这是什么游戏 · 第 1 章

量化交易到底是什么:不是水晶球,是一套下注的纪律

你以为的量化,和它真正的样子

先问你一个问题:提到「量化交易」,你脑中浮现的是什么画面?

我猜,大概是这样的:一个天才坐在六块屏幕前,屏幕上跑着绿色的数字瀑布;一套神秘的程序,能算出明天哪只股票会涨;或者,一台冷冰冰的机器,悄悄地、精准地、永远不会出错地,把钱从市场里搬进自己口袋。

如果你是这样想的,别担心,几乎每个新手都是。但我得先老实跟你说:这幅画,错得挺离谱的。

真正的量化交易,不是一台预测未来的水晶球。它比较像是一间开了很久的赌场——注意,我说的是「赌场」,不是「赌客」。这两者的差别,正是这整本书要教你的第一件、也是最重要的一件事。

赌客关心的是「这一把我会不会赢」;赌场关心的是「我下一万把,平均下来会不会赢」。赌客盯着单一结果,情绪随着每一把上下起伏;赌场只在乎一件事:规则设计好了,让每一把都对自己有那么一丁点的优势,然后——把那把牌发够多次。

量化交易员做的,就是后者的事。他不预测未来,他管理概率。这句话你现在可能还没感觉,但等你读完这一章,我希望它会变成你看待这门手艺的底色。

什么是量化交易:把「盘感」换成「规则+数据」

我们先把名词讲清楚。

量化交易(quantitative trading)系统化交易(systematic trading)高度重叠,但并不完全是同义词。前者强调数据、模型与计算,后者强调决策按预先写好的系统执行。本书为了让新手好读,统一用「量化交易」作宽泛称呼:用明确的规则加上数据,决定什么时候买、什么时候卖,而不是临场靠「感觉」。

我用一个生活比喻。你家巷口有个卖了三十年水果的老板,他不用任何仪器,手一掂就知道这颗西瓜甜不甜——这叫「盘感」,是老师傅用几十年经验养出来的直觉。它很厉害,但有三个麻烦:第一,你问他为什么这颗甜,他多半说不清楚;第二,他今天心情不好、或昨晚没睡好,手感可能就不准了;第三,这套本事没办法教给别人,他退休了也就没了。

量化交易,是把「掂西瓜」这件事,改成一套写得出来的规则:「重量超过 5 公斤、敲起来声音低沉、表皮纹路清晰——三个条件都满足,就判断它甜。」这套规则有什么好处?它写得出来,所以能检查;它不看心情,所以不会临场变脸;只要数据、代码与执行条件相同,换一个人或一台电脑,就能得到可复核的结果。

在市场里,这套「规则」决定的不是西瓜甜不甜,而是「现在该买、该卖、还是该按兵不动」。而喂给规则的「数据」,就是价格、成交量、时间这些市场留下的痕迹。

所以你看,量化的核心其实朴素得很:把模糊的直觉,翻译成清楚的规则;再用数据去检验这套规则到底灵不灵。

和主观交易差在哪:可回测、可复制、减少临场情绪

那它跟一般人凭感觉买卖(我们叫它「主观交易」)到底差在哪?差在三个很实在的地方。

第一,可回测。 规则写清楚之后,你就能把它放进历史数据里模拟,看看过去会发生什么。主观交易者的「当时感觉」很难原样重播;量化规则却可以被重复检验。至于回测为什么既有用又危险,第7章会完整说明。

第二,可复制。 一套写下来的规则,在数据、参数、代码版本和执行假设都相同的前提下,今天的你、明天的你、坐在地球另一端的陌生人,应当能重现同一结果。这代表成功或失败有迹可循,也可以一步步改进。

第三,它能减少情绪临场改写决定。 眼看股票下跌,人很容易把事先说好的止损改成「再等等」;刚赚一笔,也容易脑子一热、把仓位加到失控。量化并不能消灭情绪,但能把「该怎么做」尽量提前写进规则,缩小恐惧和贪婪临时夺权的空间。

很多新手以为量化的价值是「算得比别人准」。更常见、更实际的价值,是让判断可以检查、让风险边界事先写清,并减少临场冲动替你改规则。

先破三个误区

在我们往下走之前,得先拆掉三个最容易绊倒新手的地雷。这三句话你要记牢:量化,不等于高频,不等于人工智能神算,更不等于稳赚。

误区一:量化就是高频交易(那种一秒钟几千笔的)。 不是。高频交易确实是量化的一个分支,它常常需要昂贵的基础设施、极低延迟和精细的市场微观结构模型。但量化也包括一天、几天甚至几周才调整一次仓位的低频策略。速度快慢是策略特征,不是量化的定义。你不需要一台超级电脑,一台普通笔记本也能开始做研究——只是不要拿它去参加拼延迟的军备竞赛。

误区二:量化就是用最先进的 AI,算出神准的预测。 更不是。人工智能只是量化可以用的众多工具之一。真正的功夫,不在模型有多炫,而在数据是否适合问题、目标是否写清、检验是否诚实。很多失败并不是模型「不够聪明」,而是数据有坑、标签偷看了未来、成本没算,或研究者在同一份历史里试得太多。工具再新,也挡不住方法上的自欺。

误区三:量化是稳赚的印钞机。 这是最危险的一个,我要说重一点:世界上没有稳赚的策略,没有圣杯,没有财务自由的自动按钮。 任何宣称「稳赚」的产品或方法,都该被当作重大警报:它要么隐瞒了风险,要么还没有理解自己的模型。量化不会消灭风险,它做的是「认识风险、量化风险、管理风险」。一个诚实的量化交易员,不会只跟你说可能赚多少;他会先交代风险边界、压力情景和估计的不确定性。真正的尾部损失及其概率往往无法被精确知道,所以风险管理的任务不是假装算准灾难,而是让自己即使估错,也尽量活得下来。

把这三个地雷拆掉,你就已经领先市场上一大半的新手了。

⚠️ 常见误区

误区一:「我要找一套胜率 90% 的策略。」 新手最爱盯着「胜率」。但胜率高不代表会赚钱。举个极端例子:一套策略十次有九次赚 1 块,但第十次赔 20 块——胜率高达 90%,结果总共倒赔 11 块。真正决定生死的,是「赢的时候赢多少、输的时候输多少」,以及你有没有本事在连续倒霉时不出局。别再迷恋胜率了。

误区二:「这套规则过去十年都赚钱,所以它一定有效。」 历史结果漂亮,也可能只是规则被反复调整后贴住了过去的噪声。这叫过度拟合(overfitting);第8章会完整拆解。这里先记住:过去赚钱,不是未来有效的证明。

一个看得见的例子:规则化长什么样

讲了这么多,你可能还是有点抽象。我们来看一个最经典、最简单的规则,让你亲眼看看「把直觉变成规则」是什么样子。

这个例子叫均线交叉。别被名字吓到,它简单到不行。

先解释什么是「均线」。所谓「20 日均线」,就是把最近 20 天的收盘价加起来除以 20,得到一个平均价,每天算一次、连成一条线。它就像股价的「近期体温」,把每天上上下下的噪声抹平,让你看到大致的走向。同理,「60 日均线」就是最近 60 天的平均,它反映的是更长期、更慢的趋势。

好,现在规则来了,只有两句话:

  • 当「20 日均线」由下往上穿过「60 日均线」——买入。
  • 当「20 日均线」由上往下跌破「60 日均线」——卖出。

背后的直觉是:短期均线往上穿越长期均线,代表近期的动能开始强过长期的惯性,可能是一段上升趋势的起头;反过来跌破,可能是趋势要转弱了。

你看,这就是一条完整的量化规则了。它不谈「我觉得」「我猜」「盘感告诉我」,而是给出电脑能执行、你也能回测验证的进出方向。(严格说,它还缺少成交时点、仓位大小、成本和异常情况处理;这些零件会在后面逐一补上)在同一份价格数据和同一套计算约定下,任何人都应算出相同的交叉点。

我得诚实补一句:别把这两句话直接当成可交易答案。均线交叉在不同市场、时期、参数和成本假设下,结果可能完全不同;有时能捕捉趋势,有时会在震荡里反复挨打。我搬它出来,不是要你照抄,而是要让你看清楚「规则化」这件事本身长什么样。你的第一步,是先能把脑中任何一个「我觉得会涨」的模糊念头,翻译成这种一板一眼、能被检验的句子。至于怎么把这种句子打磨成一句「能被数据推翻的假说」,是第6章的功课。

那么,量化交易员到底赚的是什么钱?

如果不是靠猜对,那到底靠什么?

答案就藏在开头那个赌场的比喻里。量化交易员赚的,不是「这一把猜对了」的钱,而是「在长期、大量的下注中,占到那么一点点概率优势,同时死死管住风险」的钱。

我把数字缩到最小,你一看就懂。假设你发现了一个很微弱的优势:某种情况下买入,平均每笔能赚到 0.5%,但这只是「平均」——单看任何一笔,可能大赚、可能小赔,忽上忽下,毫无把握。这种优势小到你用肉眼、用盘感根本抓不住。

如果这 0.5% 的平均优势在扣除成本后仍然存在,样本不是全挤在同一种市场环境里,而且产生优势的机制没有迅速消失,重复执行才可能让平均结果逐渐显出那点优势。大数法则不会替坏模型变出利润,也不会保证明天仍服从昨天的分布;它只提醒你,评估微弱优势要看足够多、相对可比的试验,不能拿一两笔输赢下结论。你不需要每一把都赢,但必须让连续倒霉时的损失受得了。

看懂了吗?这里有两个关键,缺一不可:

第一,那个优势得是真的。这正是最难的部分——市场里到处是看起来像优势、其实只是运气的海市蜃楼。这本书从第7章到第10章,几乎都在教你一件事:怎么用最严格、最悲观的方法,去分辨你手上的优势是真金还是噪声。因为多数新手的「圣杯」,拆开来看都只是噪声碰巧排成了好看的样子。

第二,你得活到优势兑现的那一天。就算优势是真的,如果你在它发威之前,就因为一次贪心的重仓、一次死不认错的扛单而先出局了,那真优势跟你也没关系了。所以这本书的下半部(第11章起)会反复敲你的头:先学会不死,再谈赢。

你是科学家,不是赌徒

走到这里,量化交易的轮廓已经很清楚了:它不是预测未来的水晶球,而是一套在不确定里反复执行的规则。它关心的不是「这一笔我能不能猜中」,而是「规则能否被检验、结果能否被复核、亏损能否被限制」。

这也解释了为什么量化交易更像科学工作,不像赌博。赌徒把一次输赢当答案;研究者把一次结果当证据。规则跑得漂亮,他会追问是不是数据、成本或运气造成的;规则跑得难看,他也不会立刻编理由救它。

第3章会把这套姿态展开成一轮完整的研究循环。现在先记住本章唯一需要带走的分界线:赌徒依赖临场感觉,量化研究者依赖事先写清、事后能审计的规则。

📌 本章要点

  1. 量化交易是用「明确规则 + 数据」来决定买卖,而不是靠盘感;它管理的是概率,不是预测未来。
  2. 相较于主观交易,量化的三大优势是:可回测(能用历史数据检验)、可复制(同样输入与版本应能复现)、能减少临场情绪改写决定。
  3. 破除三大误区:量化不等于高频、不等于 AI 神算、更不等于稳赚;没有圣杯,只有对风险的认识与管理。
  4. 均线交叉是「规则化」最简单的示范——重点不是宣称它能赚钱,而是看懂「把直觉翻成可检验规则」是什么样子。
  5. 量化交易员赚的不是「猜对」,而是「长期大量下注中占到一点点真实的概率优势 + 严格管理风险,活到优势兑现」。
  6. 量化交易更像科学工作:规则要事先写清,结果要能复核,错误要能被识别;你管理的是长期概率,不是单笔预言。

✍️ 动手试试 / 想一想

  1. 把你的盘感写成规则。 回想一个你曾经「觉得会涨」或「觉得该跑」的念头,试着把它翻译成像均线交叉那样、电脑能执行的明确句子:什么条件成立时买?什么条件成立时卖?写的过程中你会发现,很多「感觉」一旦要写清楚,竟然说不出精确的条件——这正是你要跨过的第一道门槛。
  2. 想一想胜率的陷阱。 有一套策略,胜率高达 95%,听起来很诱人。你能不能自己编一个例子,让这套「95% 胜率」的策略,长期下来其实是赔钱的?(提示:去想「输的那 5% 会输掉多少」。)想通这题,你就抓到了风险管理的第一缕光。

第一部 · 这是什么游戏 · 第 2 章

市场几乎是有效的:为什么赚钱这么难

地上那张一百块

有个关于经济学家的老笑话。两位教授走在路上,年轻的那位突然低头大喊:「地上有一百块!」年长的教授看都不看,淡淡地说:「不可能。如果那真的是一百块,早就被人捡走了。」

这个笑话常被拿来调侃经济学家的死脑筋,但它藏着一个对新手至关重要的直觉。上一章的结尾,我提过那条经典的「均线交叉」规则——它曾经有效,如今却几乎赚不到钱了,因为用的人太多,那点优势早被「磨平」。这一章,我们就要正面回答:到底是谁、用什么力量,把它磨平的?

先问你一个问题:如果真有一种明显、轻松、又稳定就能从市场捞钱的方法,明显到你我随手都能发现——那它为什么还躺在地上?

市场里有一群不睡觉的清道夫

我们先给那股力量一个名字。

当一种赚钱的规律明显到人人都看得见,就会有一大群人冲上去做同一件事。他们抢着买,价格被推高;他们抢着卖,价格被压低。做的人越多,原本的价差或可预测性通常越薄,最后可能薄到连成本都盖不住。这张「一百块」就这样被竞争捡走了。

这些反应更快、成本更低或研究资源更多的参与者,常被笼统叫作聪明钱(smart money):专业基金、做市商、高频交易公司等。这个称呼不代表他们永远正确,只表示他们更有能力发现、执行并放大一条公开机会。市场里的清道夫也会犯错,只是明显的钱通常不会只等你一个人看见。

这背后的学术框架叫效率市场假说(Efficient Market Hypothesis,简称 EMH)。这里先抓住共同直觉:公开信息会被许多参与者迅速处理并反映进价格,所以仅靠人人看得见的材料,持续赚取经风险调整后的超额收益非常难。用生活比喻——这就像一家生意兴隆的超市,架上不会有一件明显标错、便宜到离谱的商品能摆上一整天,总会有人先把它扫光。

顺带介绍一个贯穿全书的关键词:阿尔法/超额收益(alpha),指的是「赢过市场平均、真正属于你本事的那部分收益」。如果你买了大盘、跟着市场一起涨,那不叫 alpha,那叫运气好搭上了顺风车;alpha 是你在「市场本来就会给你的那份」之外,靠真本事多赚到的东西。而效率市场假说要告诉你的残酷真相就是:alpha 很稀有,而且一旦露面,很容易被聪明钱捡走。

但请盯紧那两个字:「几乎」

如果故事到这里就结束,那这本书可以直接收工——反正赚不到,回家睡觉。

但真相是:市场只是几乎有效,不是完全有效。而这两个字之间的缝隙,就是所有量化交易员活动的全部空间。

为什么只是「几乎」?因为参与者也有资金、制度、风险和注意力约束。一张掉在闹市区马路正中央的百元钞,很难久留;一枚滚进水沟缝里的小硬币,却可能因为难捡、装不下大资金,或需要承担某种风险而暂时没人处理。注意:泥里不一定有钱。这里只先种下一条线索——机会若存在,往往伴随容量、数据或执行条件;第16章再讨论怎样判断它是否与你相配。

扣掉成本,主动交易更像一场负和游戏

这里要把话说精确一点:持有企业、债券或其他资产,整体回报并不等于零和;但在同一市场里争夺「跑赢别人」的主动交易者,相对收益在成本前大致此消彼长。手续费、税费、买卖价差和滑点再从中持续扣走,参与者合计的相对战果就会被压到零以下。

这些成本现在只认名字就够了。第4章会解释价差、深度和市场冲击是怎样从订单簿里长出来的;第10章再把它们放进一笔完整的成本账。这里先记住一件事:优势必须先盖过成本,才有资格叫可交易的优势。

交易越频繁,成本被收取的次数越多。所以一个看起来会赢的念头,若边际太薄、换手太高,最后仍可能是越做越亏。

那些「三个月赚三倍」的大神,是怎么冒出来的

你一定在网上看过:某人晒出对账单,三个月本金翻三倍,接着开课、卖信号、招学员。

这里我要教你一个一辈子受用的概念,叫幸存者偏差(survivorship bias):你只看得见「活下来、成功了」的那些人,而失败、爆仓、默默删账号离场的人,你根本看不到——于是你严重高估了成功的概率。

打个比方。我找来一万个人,每人抛一枚硬币、连续抛十次。纯靠运气,平均下来会有大约十个人「连续十次都是正面」。这十个人半点本事都没有,纯运气。但只要其中一个站出来开课,说「我发明了一套让硬币稳定出现正面的心法」,再秀出他那串漂亮纪录——你信不信?

市场上的「大神」,有些可能只是这一万人里剩下的幸运者。不是说世上没有真高手,而是:光看一份漂亮的对账单,你没办法分辨他到底是真有本事,还是刚好处在分布的幸运尾端。你看不到完整分母,平台和传播也更容易把赢的几笔、赢的几个月送到你眼前。

这也解释了为什么频繁主动交易对个人投资者格外不友好:成本先扣一层,追涨杀跌和赌气加码再扣一层,幸存者偏差还会让人低估前两层。即使不预设每个个人投资者都必亏,这套结构也足以说明:扣除成本后持续跑赢合适基准并不容易,一张漂亮对账单更远远不够代表整张分布。

⚠️ 常见误区

误区一:「这规律这么明显,赶快进场!」 恰恰相反——一个规律越明显、越多人看得见,越要先问它为什么还没被竞争做薄、扣完成本还剩多少,以及自己是不是只看见一段长得像规律的噪声。你一眼就看到的东西,通常别人也看到了;公开不等于无效,但它需要更强的机制解释和证据。

误区二:「他三个月赚三倍,跟着他准没错。」 你看到的是幸存者,不是全貌。在这一个赢家背后,可能站着几百上千个赔光离场、你永远不会遇到的人。一份对账单,证明不了本事,只证明了「这个人在这段时间里刚好没死」。

所以,这章是要劝退你吗?

不是。恰恰相反。

我花这么大力气讲「赚钱很难」,是要帮你把期望值调到正确的位置——因为带着错误期望上路的人,死得最快。如果你以为 alpha 遍地都是,你就会重仓、会频繁交易、会在第一次连胜后以为自己是天选之人,然后被成本和运气的回归慢慢磨死。

更可靠的期望是:可交易优势往往不厚,发现之后还要经得住数据、统计、成本和实盘执行的多道检验。即使是全职团队,研究日常也常由大量没有通过的想法组成。拒绝一个点子并不稀奇;稀奇的是一个点子经过一连串反证之后,仍留下足够清楚、足够稳定、足以覆盖成本的东西。网上那种「简单三步、月月稳赚」,恰好省略了所有最难的关卡。

难度本身不是保护,冷门也不等于有钱可赚。它只说明不同机会的竞争强度、固定成本和容量可能不一样。第16章会讨论怎样判断一个题目是否与你的资源相配;眼下先保留更朴素的结论:公开、明显的钱很难久留,任何角落都必须再过证据与成本两关。

市场几乎有效,但不是每一处、每一刻都同样有效。那个「几乎」不是发财保证,只是研究得以存在的一道窄缝。

📌 本章要点

  1. 市场「几乎有效」:明显、公开、容易复制的规律,会被竞争与价格调整迅速做薄,就像闹市区地上的百元钞很难久留。
  2. 重点在「几乎」:市场并非处处、时时完全有效;仍可能存在又小、又难做、又受容量限制的机会。
  3. 对主动交易者而言,相对优势在成本前大致此消彼长;手续费、价差与滑点再把合计战果往下压。交易越频繁,越要先证明自己盖得过成本。
  4. 多数散户长期亏钱:负和的成本结构、失控的人性,再加上过度自信,三者叠加的结果。
  5. 当心幸存者偏差:你只看得到活下来的「大神」,看不到爆仓离场的分母;一份对账单证明不了本事。
  6. 「难」是游戏的设定,不是劝退,也不是护城河。冷门只是一条待检验的线索;最后仍要看机制、证据、成本与容量。

✍️ 动手试试 / 想一想

  1. 反问那个「稳赚法」。 找一个你听过、号称稳赚的方法(朋友报的明牌也好,网上的课也好),认真问自己一个问题:如果它真的稳赚,发明它的人为什么要告诉你、甚至卖给你,而不是自己安静地闷声发大财?把你的答案写下来。
  2. 记下你的「一定会涨」。 接下来一周,每当你心里冒出一个「这个一定会涨/一定会跌」的念头,就立刻把它、连同当下的价格,记进手机备忘录。一周后回头数:你有几个念头真的准了?这个「先写下来、再回头验证」的小动作,其实就是第6章要正式教你的功夫的雏形。

第一部 · 这是什么游戏 · 第 3 章

量化交易员真正的工作:研究循环与可信结论

🔬 115 次提交,0 个实验

有一段时间,实验室看起来忙得不得了。代码每天都在改,功能一个接一个完成。摊开记录,团队一共做了 115 次代码提交。从动作量看,没有人能说我们不勤奋。

直到有人问了一个简单的问题:「这段时间,我们到底验证了几个关于市场的假说?」

答案是:零。

那 115 次提交全花在准备工作上——工具更漂亮、管线更复杂、界面更顺手,但我们对市场并没有多知道一件可信的事。那天之后,团队多了一把很不讨喜、却很诚实的尺:

很忙,不等于有进展。进展的单位,是可信的结论。

真实的量化研究员,大部分时间并不在六块屏幕前抢按按钮。他更常做的是读数据质量报告、检查一条测试为什么失败、把一个想法写成别人能复核的规格,然后接受「这次没有通过」的结论。

这一章要给你的,就是这份工作的骨架:从问题到结论,一轮研究到底经过哪些站;以及为什么每一站都要留下证据。

研究循环:一张你会反复走过的地图

先说一个最重要的观念:量化交易的核心工作,不是「交易」,而是「研究」。

真正下单、买卖、赚赔,那是整个流程最末端、最短暂、而且往往是最自动化的一小步。在那之前,有一条长长的、要反复绕圈的研究流程。我把它画成一个循环,一共六站:

第一站:提出假说。 你有一个想法。比如:「每次比特币在半夜突然大跌,接下来一小时常常会反弹。」这叫一个假说(hypothesis)——白话说,就是一句「我猜市场有这个规律」的话,但它现在还只是一个「我觉得」,还没被验证过。这一站的功夫,是把模糊的直觉,磨成一句精确、可以被检验的话。

第二站:找数据。 有了假说,你得去找历史数据来检验它。你需要过去几个月、甚至几年的价格记录、成交记录。这一站听起来最不起眼,却是最容易翻车的地方——因为交易所给你的数据,常常是脏的、有缺口的、甚至时间戳是错的。数据是命根子,第5章整章都在讲怎么不被脏数据骗。

第三站:回测。 把已经写清楚的规则放进历史数据里模拟,先看它是否连过去这一关都过不了。回测是筛选工具,不是未来保证;第7章会专门讲它的能力边界。

第四站:想办法证伪。 回测跑出漂亮曲线时,新手容易兴奋地喊「找到圣杯了」;成熟的研究者却会先问:「哪一种错误最可能制造这条线?什么证据会迫使我放弃它?」他主动攻击自己的成果。

第五站:风险管理关卡。 就算一个策略通过了前面的检验,它离真钱还隔着一道墙。这一站不再问「平均能赚多少」,而要问仓位、回撤、尾部情景和停止条件:即使估计错了,系统会不会仍把损失限制在可承受范围内?第11章专门讲风险边界。

第六站:迭代。 然后——注意,这是循环的关键——不管上一轮结果是成是败,你都回到第一站,带着这一轮学到的东西,提出下一个、更好的假说。很多时候,你是带着「这个方向被否决了」的结论回到起点。这不是失败,这是进展。为什么?这正是接下来要讲的重点。

这六站,就是量化交易员一天、一周、一整年反复绕的圈。你会发现,里面几乎没有「盯盘」「靠盘感下单」「跟着感觉走」的位置。这是一条像实验室流水线一样的、无聊而严谨的路。

为什么大部分想法都会被淘汰

市场几乎有效,所以研究流程天然是一台筛选机:多数看似有道理的想法,最后不是巧合,就是薄到盖不住成本。成熟的研究者看到漂亮曲线,第一反应不是替它庆祝,而是问:「哪一种检验最可能把它推翻?」

这里先记住研究节奏就好:提出想法很快,获得一个可信结论很慢;而可信结论常常是否定的。第6章会完整讲怎样把直觉写成可证伪的假说,第15章再讲怎样把负结果保存成知识。

所以,否定想法不是研究的意外损耗。它是研究循环正常运转时,最常见的产出。

无聊、重复、严谨,为什么是好事

现在你大概能理解,为什么真实的量化工作这么「无聊」了。

它无聊,是因为它严谨。每一个想法都要走完那六站流程;每一次回测都要小心翼翼防着各种骗局(未来函数、幸存者偏差、过度拟合——这些名词你现在不用懂,后面各章会一个一个拆);每一个结论都要问三遍「我是不是哪里搞错了」。

这种无聊,和实验室里一遍遍校准仪器的无聊是同一种。它不性感,却是所有可靠成果的地基。

这类无聊不保证你拥有优势。它的好处更朴素:让过程可以重复,让结论可以审计,让一条漂亮曲线少一点依赖记忆、运气和临场解释。 真正值得坚持的不是枯燥本身,而是枯燥换来的可靠性。

所以,如果你未来真的走进这一行,某天发现自己一整天都在读报告、调试、否定自己的假说,一个像样的实验都没「赚到钱」——别慌。那很可能不是你做错了,那正是这份工作该有的样子。

纪律不是勇气,而是每一步都有记录

研究流程的价值,不只是让电脑替你执行。更重要的是,它让每一次关键决定都能被追溯:原始想法是什么、用的是哪一版数据、改过哪些参数、哪项检查失败、最后为什么继续或停止。

没有这些记录,情绪不需要公然作弊。它只要悄悄改一个阈值、忽略一段难看的样本、把一次探索性发现说成事前预测,整个结论就会变形。流程的作用,是让这些改动无法无声发生。

所以量化研究员真正的纪律,不是「我意志力很强」,而是:重要决定必须留下可审计的痕迹。 第6章会讲怎样写清假说,第8章会讲怎样锁定检验规格,第11章和第13章再把同样的纪律带到风险和实盘。

⚠️ 常见误区

误区一:把「找到会赚的策略」当成目标。 新手总以为研究的终点是「挖到一个能赚钱的策略」。不是的。研究的真正产出,是「一个关于市场的、可信的结论」——而这个结论,常常是「这个想法不成立」。如果你只把「赚钱的结果」当成功、把「否定的结果」当失败,你会在挫败感中很快放弃,也会忍不住去美化那些其实是噪声的结果。请把负结果也当成战利品。

误区二:用「忙碌」和「动作量」来衡量自己有没有进步。 「我今天改了好多程序」「我看了一整天盘」「我试了二十个参数」——这些都是动作,不是结论。真正该问的是:今天我对市场的理解,有没有多一分可信的、经得起检验的认识?忙碌会给你虚假的安全感,别被它骗了。

📌 本章要点

  • 量化交易员的核心工作是研究,不是盯盘;下单只是研究链末端的一小步。
  • 研究循环有六站:提假说 → 找数据 → 回测 → 设法证伪 → 风险关卡 → 迭代。后续章节会逐站展开。
  • 多数想法被淘汰,是筛选流程正常运转的结果;真正的进度单位是可信结论,不是代码提交或动作数量。
  • 一条结论要能被复核,就必须留下假说、数据版本、参数变更、失败检查和裁决理由。
  • 流程纪律的价值,是让移动阈值、忽略样本和事后改口无法悄悄发生。

✍️ 动手试试 / 想一想

  1. 替一个点子画研究循环。 随便选一句市场说法,为六站各写一行:要验证什么、需要什么数据、怎样模拟、最可能在哪里失败、风险关卡问什么、无论结果如何下一步怎样记录。先不要真的跑数据,只检查这条链有没有断点。
  2. 重新设计你的进度尺。 回想最近一个很忙的工作日,把「发了多少消息、改了多少代码、开了多少会」全部删掉,只写当天增加了哪些可复核的结论。若一条也没有,你找到的不是失败,而是流程最该改的地方。

第二部 · 市场与数据的地基 · 第 4 章

市场是怎么运作的:订单簿与流动性

深夜,你盯着手机屏幕。App 上大大的数字写着:某个东西,「当前价格」100 元。你决定买一点,手指按下那个绿色的「买入」。零点几秒后,画面跳出「成交」。

恭喜。可是你有没有想过:你这笔钱,到底是「跟谁」成交的?那个「当前价格 100 元」又是谁定的?交易所里难道坐着一位老板,帮你撮合买卖、一锤定价吗?

没有。那个按钮背后,是一台安静、精密、二十四小时不打烊的机器。这一章,我们就把它拆开来看。你会发现两件颠覆新手直觉的事:第一,「市场价格」根本不是一个数字,而是一叠排队的意愿;第二,你「看到的价格」和你「真正成交的价格」,常常是两回事。

搞懂这台机器,是你日后所有研究的地基。因为如果你连自己的钱是怎么成交的都搞不清楚,那你回测算出来的漂亮获利,很可能只是一场美丽的误会。

市场不是一个价格,是一叠排队的单子

先讲一个生活场景。你在二手市场摆摊卖一台旧相机,心里想「至少卖 100 元」,于是挂牌 100。隔壁摊也有人卖同款,有人挂 101,有人挂 102。想买的人呢?有人愿意出 99,有人只肯出 98,还有人喊 97。

把这些「想卖的」和「想买的」意愿,统统按价格排整齐,就是一张订单簿(order book)。它是市场的心脏,长这样:

这是谁的单 价格(元) 数量(股) 备注
卖单 100.3 5
卖单 100.2 3
卖单 100.1 2 ← 当前最便宜的卖价
↕ 中间这道缝 = 价差 0.1 元
买单 100.0 4 ← 当前最高的买价
买单 99.9 6
买单 99.8 8

表格上半部分是卖单——想卖的人开的价、要卖多少;下半部分是买单——想买的人出的价、要买多少。每个价位后面「有多少股」,叫这个价位的深度(depth):它告诉你,在这个价格上,市场一共能吞下或吐出多少货。

现在看中间那道缝:最便宜有人肯卖是 100.1,最高有人肯买是 100.0,两者之间空空如也,没有任何成交。为什么会有这道缝?这就是下一段的主角。

那道缝叫「价差」,它是流动性的价钱

最高买价是 100.0,最低卖价是 100.1,中间那 0.1 元没人愿意让步。这道缝叫买卖价差(bid-ask spread)

价差不是交易所随手画出来的线,而是买卖双方尚未相遇的结果。愿意长期把买单和卖单挂在订单簿上的人,承担了价格变化和库存积压的风险;别人要立刻成交,就得接受他们摆出的价格。于是,价差也成了「马上就能成交」的代价。

这种随时能找到对手、用不太差的价格完成交易的能力,叫流动性(liquidity)。市场越热闹、挂单越密、彼此竞争越激烈,价差通常越窄;市场越冷清,价差越宽。

请把这个直觉刻下来:价差越宽、可成交深度越薄,你一进一出的隐形成本就越高。一只冷门到没人理的股票,屏幕上或许写着「当前价 100」,但你想买,最近的卖家开价 105;你想卖,最近的买家只出 95。光是一买一卖,你什么都还没做,就先蒸发了 10 块。

挂单方 vs 吃单方:你在提供便利,还是享受便利?

接着看两种角色。这是新手最容易忽略、却默默决定你成本高低的一件事。

挂单方(maker,也可理解为流动性提供方):一张订单没有立刻与现有挂单成交,而是留在订单簿上排队,它就在这一刻增加了流动性。比方当前最高买价是 100.0,你挂一张 99.9 的买单,它不会立刻成交,而是乖乖排进队伍。你为市场「增添」了一笔流动性,像在市场里多摆了一个摊位,让大家多一个选择。

吃单方(taker,也可理解为流动性消耗方):一张订单送进去就与现有挂单成交,它在这一刻拿走了流动性。比方你用能成交的价格买下 100.1 元的那 2 股,就是把别人已经摆好的货吃掉。

这里有个很多新手不知道的细节:很多交易所,对这两种角色收的手续费不一样。 挂单方常被收较少的手续费,有些平台甚至倒贴一点钱给你(因为你帮它把场子撑得更热闹);吃单方则被收得多一些(因为你享受了「立刻成交」的方便)。交易所这样设计,是想鼓励大家多挂单、把流动性养厚。

对做量化的人来说,这绝不是小钱。一个频繁进出的策略,光是「你每一笔是挂单还是吃单」,长期累积下来,可能就是赚与赔的分水岭。这笔账我们会在第10章〈成交没那么便宜〉里好好细算,这里你先把一个意识种进脑子:成交的方式,本身就是一种成本。

市价单 vs 限价单:你要的是成交,还是价格?

挂单、吃单是怎么来的?来自你下单时的两种选择。

限价单(limit order):你指定价格边界——「我最多只出 99.9,买不到就拉倒」。它的精神是价格边界优先,成交其次。一张买入限价单不会以高于限价的价格成交,但可能只成交一部分,甚至完全不成交。行情要是一路往上冲,你那张 99.9 就孤零零挂在原地,眼睁睁看着车开走。限价单通常让你当挂单方。

市价单(market order):你不指定成交价格,而是要求系统按当时可得的报价尽快完成。它的精神是成交第一,价格其次。好处是几乎一定成交;坏处是,你事先不知道会成交在多差的价格。市价单通常让你当吃单方。

这两者没有谁高谁低,它问的其实是:此刻的你,更怕哪一件事——更怕买不到,还是更怕买贵?而这个选择,直接牵出本章最重要的一个观念。

你「吃」得越多,价格就对你越不利

回到那张订单簿。假设你下一张市价单,要买 5 股,市场会怎么喂给你?

它会从最便宜的卖单开始,一层一层往上吃:

  • 先吃光 100.1 元的那 2 股 → 花掉 200.2 元
  • 这一层没了,接着吃 100.2 元的 3 股 → 再花 300.6 元
  • 凑满 5 股,总共付了 500.8 元

你的平均成交价 = 500.8 ÷ 5 = 100.16 元

看到了吗?你明明看到的「最佳卖价」是 100.1,真正买到的均价却是 100.16。多出来的 0.06,没有人偷你、也不是手续费——它是你自己「一口气吃太多」造成的。这种「因为你自己下单,反而把价格推向对你不利的方向」的现象,叫市场冲击(market impact)

而你选定的基准价格与实际成交价之间的不利落差,常被概括为滑点(slippage;部分地区也称滑价)。市场冲击是滑点的一种来源;指令传输期间的价格移动、订单穿过多层深度、部分成交等也会造成落差。

这个直觉,值千金:流动性是有限的。 订单簿每一层的货都是有限的,你买得越急、越多,就得吃得越深、越贵。面对一只深得像大海的标的,小单可能几乎推不动价格;面对一只浅得像水洼的标的,同样的单子却会把水花溅得到处都是。较小订单因此承受更低的市场冲击。

所以,你「看到的价格」从来不是「成交的价格」

现在,我们可以回答开场那个问题了。

App 上那个大大的「当前价 100」究竟代表什么,取决于平台:可能是上一笔成交、最佳买卖价的中间值,也可能是标记价格。无论是哪一种,它都不是对你的成交承诺。你真正面对的,是此刻订单簿里的最佳买卖价、每一层的数量,以及排在你前面的人。

这对研究有一个直接含义:历史价格若只有一条收盘线,并没有告诉你当时能成交多少、是否排得到、用市价单会吃穿几层。第10章会把这些机制转成成本与成交假设;这一章先守住底层事实:

价格从来要和数量、方向、时点放在一起看。市场不欠你一个好价格,也不保证你的限价单一定成交。

⚠️ 常见误区

误区一:「我挂的限价单,价格一到就一定成交。」 不一定。就算行情碰到你的价位,你前面可能还排着更早的订单;能不能轮到你,要看撮合规则、队列位置和实际成交量。买入限价单约束的是「不高于这个价格成交」,不是「一定买得到」。

误区二:「屏幕显示 100,我就能用 100 买到。」 那个 100 可能是上一笔成交、中间价或平台标记值。你能不能用接近的价格成交,取决于此刻的价差有多宽、深度有多厚、你一次要买多大。量小、市场深,你也许只贵一点点;量大、市场浅,你会亲手把价格一路买上去。看到的价格永远是参考,不是承诺。

🔬 来自实战的一课:那个屏幕价格,根本装不下那张单

实验室里曾经有一个策略,回测图漂亮得让人心跳加速——一条稳稳向上、几乎不回头的获利曲线。所有人都有点兴奋。

直到有人多问了一句:「这个标的平常一天到底成交多少?那个价位当时又有多少量?」把订单大小和订单簿深度放回去后,答案很难看:最优价只够成交很小一部分,剩下的数量要么继续吃向更差的价位,要么根本排不到。

曲线因此塌了下来。这个教训属于订单簿,不只是成本:一个价格旁边若没有可成交数量,它就不是你能拿走的报价。 从那以后,研究报告不能只写「在哪个价成交」,还要写「以多大数量、用什么订单、假设排队到什么程度」。

📌 本章要点

  • 市场价格不是「一个数字」,而是一叠按价格排队的买单与卖单,合称订单簿;每个价位能成交的量,叫深度
  • 最高买价与最低卖价中间那道缝,叫价差,它是流动性的价钱;价差越宽,代表越难成交、隐形成本越高。
  • 挂单方(maker)指订单留在簿上、增加流动性;吃单方(taker)指订单立即成交、消耗流动性。maker 不等于专业做市商,费率也以具体市场规则为准。
  • 限价单给出最差可接受价格,可能部分或完全不成交,也可能跨价差成为 taker;市价单优先尽快成交,却不保证价格或任何情形下都能完成。
  • 你买得越多,越会吃穿订单簿的好几层,造成市场冲击滑点,实际均价比你看到的最佳价还差。
  • 「看到的价格」不等于「可供你成交的价格」;研究时必须同时记录方向、数量、订单类型和排队假设,成本模型留到第10章。

✍️ 动手试试 / 想一想

  1. 打开任何一个免费行情或下单 App,找到某个标的的「五档」或「订单簿」画面(通常就在下单页附近)。找出当前的最佳买价和最佳卖价,两者相减,就是这一刻的价差。然后比一比:一个热门的大型标的,和一个冷门的小型标的,谁的价差宽?这个差别,告诉了你关于「流动性」的什么事?
  2. 算一笔账。 假设某标的的卖方订单簿是:50.0 元有 100 股、50.1 元有 100 股、50.2 元有 100 股。如果你下一张市价单、要一次买 250 股,你的平均成交价会是多少?(提示:一层一层往上吃。)算完后再想想:如果你只买 50 股,均价又是多少?这中间的差距,就是「一次买太多」要付的隐形代价。

第二部 · 市场与数据的地基 · 第 5 章

数据是命根子:干净数据与前视偏差

想象你要横渡一片陌生的海。你请了最厉害的领航员,备了最坚固的船,规划了一条完美的航线——避开所有暗礁、顺着洋流、每个转弯都算得精准漂亮。你信心满满地出航,结果第一天就一头撞上礁石,船沉了。

问题出在哪?不是领航员不够强,也不是船不够好。是你手上那张地图是假的。礁石的位置标错了,洋流的方向画反了。地图一旦错了,再完美的航线,都只是一封通往灾难的邀请函。

在量化交易里,数据(data)就是那张地图。你的策略再聪明、你的程序再优雅、你的统计再严谨,只要喂给它的数据是错的、脏的、或是混进了「你当时根本不可能知道的」信息,那么你辛苦算出来的漂亮回报,全都是海市蜃楼。

这一章,我们就来认识这位沉默的头号杀手。它不会大声报错,不会跳出红字,它只会安安静静地,让你以为自己找到了金矿。

垃圾进,垃圾出

工程师有一句很老的行话,叫「垃圾进,垃圾出」(garbage in, garbage out)。意思是:一台机器再精密,你丢垃圾进去,它就只能吐垃圾出来。

回想一下我们前面说的:一个策略,本质上就是一套「看到什么、就做什么」的下注规则。它像一台自动售货机——你投进「数据」这枚硬币,它吐出「买」或「卖」的决定。这台机器本身可以做得非常精巧,但它有一个致命的天真:它完全相信你投进去的硬币是真的。

你给它一个标错的价格,它不会怀疑,它会照着这个假价格,算出一个假的买点,再回报给你一笔假的获利。整条计算链上,没有任何一个环节会举手说「等等,这个数字看起来怪怪的」。它们只是忠实地把错误,一路传递、放大,最后包装成一份漂亮的成绩单交到你手上。

所以在这门手艺里,有一个顺序你要记一辈子:先怀疑你的数据,再怀疑你的策略。 新手总是急着问「我的策略对不对」,老手会先花大把时间问「我的数据干不干净」。因为策略错了,顶多是这个想法不成立;数据错了,是你所有想法的地基都在流沙上。

头号杀手:前视偏差

在所有脏数据的问题里,有一种最阴险、最难防、也最常骗倒聪明人。它叫前视偏差(lookahead bias),又叫「未来函数」。

先用一句白话说清楚它是什么:前视偏差,就是你在做决定的那一刻,偷偷用到了「当时你根本还不知道」的未来信息。

打个比方。假设有一个学生,号称自己能「预测」考试成绩,而且神准无比。你一查才发现——他是在考完、老师改完考卷、分数都贴出来之后,才「预测」的。那当然神准,因为答案早就在他眼前了。这样的预测一文不值,因为现实中,你下注的那一刻,未来还没发生。

听起来很蠢,谁会犯这种错?但在写程序做回测(backtesting,用历史数据模拟策略表现,第7章会细谈)时,这种错误比直觉里常见,而且往往不会主动报错。举一个经典的小例子:

你想测一条规则:「如果某天股价涨得特别猛,第二天就会回落,所以今天收盘前做空。」 你写程序时,却用了这一天收盘后才最终确定的「全日最高价」来判断「今天有没有涨得特别猛」。

看出问题了吗?你打算在收盘前就下单,但「当天的最高价」这个数字,要等到收盘后才会尘埃落定。你在下午两点,用了下午四点才会知道的信息。回测里,你的策略像开了天眼,自然赚翻;实盘里,你两点根本不知道今天的最高点在哪,天眼一收,策略立刻现出原形。

前视偏差之所以恐怖,是因为它常常把回测偏向更好看的一边,尤其当未来信息直接参与选点、排序或成交时。当然,错误也可能把结果弄差;关键不是方向永远固定,而是这份结果已经失去可执行含义。一个策略回测结果好到令人不敢相信时,老手的第一反应不是庆祝,而是:「我是不是哪里偷看了未来?」

当时视角:戴上「那一刻的眼镜」

那要怎么防?答案是一个听起来简单、做起来很费工的原则,叫当时视角(point-in-time)

它的意思是:当你回头模拟过去某一刻的决定时,你只能使用那一刻、真的摆在你眼前的数据;之后才出现、才修正的东西,一概不准用。

这就像你要公平地评判一个历史人物当年的选择,你得戴上「那个年代的眼镜」,只用他当时能拿到的信息来判断,而不能拿今天的后见之明去要求他。

听起来理所当然,但数据世界有一个常被忽略的真相:很多数据,是会被事后修改的。

  • 公司公布的财报,几个月后可能会「更正」,改掉当初的数字。
  • 政府公布的经济数据,常常隔月就悄悄修正一版。
  • 某些指数的成分股名单,会回头调整。

如果你的数据库只存了「这些数字现在长什么样」,而没存「在当年那一刻,它们长什么样」,那你的回测就会不知不觉用到那些「后来才改对」的版本——这又是一种前视偏差。真正严谨的数据库,存的不是「真相的最终版」,而是「在每一个时间点上,我们当时所知道的样子」。这很麻烦、很占空间、很不性感,但它是把地图画准的必要功夫。

幸存者偏差:你只看见了活下来的样本

第二个大坑,叫幸存者偏差(survivorship bias)。它藏在数据里的样子,特别隐蔽。

先讲一个经典的画面。战争时,一批批战机出任务,只有一部分飞得回来。有人想:飞回来的机身上,哪里弹孔最多,就该加强哪里。但一位聪明的统计学家反问:你只看得到「飞回来的」飞机啊。那些被击中要害的,根本没能飞回来让你检查——所以弹孔最少的地方,才是最致命、最该加强的地方。

数据里的幸存者偏差,是一模一样的逻辑。假设你想测一个选股策略,你抓了「今天还在市场上的所有股票」的历史数据来回测。听起来很合理对吧?但你漏掉了一整批人:那些这些年来已经退市、破产、被下架、消失掉的公司。

你手上这份名单,是一份「活到今天的赢家名单」。用它来回测,就好像你统计「创业能不能成功」,却只访问了那些成功上市的老板——当然人人都说能成功,因为失败的那些,早就不在你的访问名单上了。

在虚拟货币等更替很快的市场里,这个问题尤其明显。今天仍在交易所挂牌的标的,只是历史项目的一部分;归零、下架或长期失去流动性的标的,常常更难取得完整数据。若只拿「活着的」回测,结果就会系统性漏掉失败路径。

干净的数据,必须按当时可投资的集合定义样本,并尽可能保留退市、下架和失败成员。 重点不是把所有死掉的东西无差别塞进来,而是不准用今天的幸存者名单冒充过去的机会集合。

对齐、时间戳,与那些不报错的坑

前面讲的是数据「内容」的坑,接下来这一类,是数据「形状」的坑——它们更技术、更琐碎,却是实验室里让人半夜惊醒的常客。

第一个是数据对齐。你的策略常常要同时看好几份数据:这个交易所的价格、那个交易所的价格、成交量、其他指标……它们像好几条并排的时间轴。只要有一条轴没对准——哪怕只差一格——你的策略看到的就是一幅错位的世界。而错位里,最容易出事的,就是时间戳(timestamp)时区

同一个时刻,有的数据用你所在城市的时间记录,有的用格林尼治标准时间,有的干脆用一串从 1970 年算起的秒数。它们指的可能是同一秒,长相却天差地远。一旦你把两份时区不同的数据当成同一套时间轴拼在一起,你的「现在」就对不上它的「现在」,一种安静的前视偏差就这样溜了进来——你可能无意间,用了「未来 8 小时」的数据去做「现在」的决定。

这类错误最可怕的地方在于:它们通常不会报错。 程序不会崩溃,不会跳红字,不会发脾气。数据照样读进去了,数字照样算出来了,一切看起来风平浪静。这在实验室里有个名字,叫静默失败——最致命的失败,往往是那些不吭一声的失败。会报错的错,至少会拦住你;不报错的错,会微笑着放你走,一路走到你把钱投进去为止。

还有一类藏得更深的坑,来自数据接口本身。交易所或数据商的历史接口通常有分页、单次笔数、频率和可回溯区间等限制;若程序没有逐页校验,抓取可能在中途停止,却仍返回一份看似正常的文件。你以为自己抓到了两年的完整数据,实际上手里只有残缺的三个月,而它从头到尾没告诉你少了什么。你拿着这份自以为完整、其实破了个大洞的底图,信心满满地规划路线——后果可想而知。

所以,拿到任何一份数据,先别急着用。先问它几个问题:它的时间是哪个时区?它到底涵盖了多长、有没有缺漏?那些「消失的样本」去了哪里?这几个笨问题,远比你的策略用了什么花哨算法重要得多。

⚠️ 常见误区

误区一:「回测赚翻了,我发财了!」 一个好到不真实的结果,首先该触发审计,而不是庆祝。前视偏差只是嫌疑之一,还要排查幸存者偏差、重复试验、错误成交和程序 bug。曲线越离谱,越要先找是哪一条现实约束被拿掉了。

误区二:「程序没报错,数据就没问题。」 这是新手最贵的一课。没有红字,不代表一切正常;它可能只代表错误太安静、没被抓到。时区错了不会报错,数据缺一半不会报错,拿到修正后的数字也不会报错。真正的干净,要你主动去验证,而不是被动地「等它报错」。

🔬 来自实战的一课:那份永远不会被看见的数据

我们的实验室,曾经被一个时区的 bug,结结实实上了一课。

事情是这样的。有一支程序,负责把市场数据抓下来、存进数据库,好让后面的研究拿来用。某天开始,大家隐约觉得哪里不对劲:明明程序天天都在跑,一切运作正常,从来没报过任何错,可是后面的分析,就是捞不到最新的数据。仿佛有一批数据,被写进了一个谁也看不见的角落。

查了很久才发现,罪魁祸首是一行不起眼的时间处理。程序把数据存进去的时候,时间戳算错了整整 8 个小时——差不多就是一个时区的距离。数据本身好端端地写进了数据库,一个位都没少;程序也觉得自己尽忠职守、任务完成,开开心心地报告成功。

问题是,后面负责读取的程序,是按「正确的时间」去找数据的。它跑到「现在」这个时间点去捞,而那批数据,却被贴上了「8 小时前(或后)」的错误标签,静静躺在另一个时间点上。于是这两支程序,像两个约好在同一家咖啡馆碰面、却分别记错了城市的人——一个在等,一个明明已经到了,却永远不会相遇。那份数据确实存在,却永远不会被看见。

整件事最让人背脊发凉的地方是:从头到尾,没有任何一个环节报错。 没有崩溃,没有红字,没有警告。如果那天出的是一个「大声的错」——程序当场挂掉——反而是好事,我们五分钟内就会发现、修好。但它出的是一个「安静的错」,它躲在暗处,一天、两天、一个星期地累积,不动声色。

这一课,我们用了好几天的困惑换来,而它其实只值一句话:不报错的错,远比会报错的错危险。 从那以后,实验室多了一条纪律:数据写进去,不算数;要亲眼确认它「被读得回来、而且时间对得上」,才算数。你不能等系统报错才行动,你得主动去问系统:「你确定,你真的做对了吗?」

📌 本章要点

  • 垃圾进,垃圾出。 数据是策略的底图;底图错了,计算越精确,越可能坚定地走错。先审计数据,再评价策略。
  • 前视偏差是头号杀手。 它让决策偷用了当时还不知道的未来信息,常把回测偏向更漂亮的一边,也可能以其他方式扭曲结果。
  • 坚持当时视角(point-in-time)。 只用那一刻真的拿得到的数据;小心那些会被事后修正的数字。
  • 幸存者偏差藏在名单里。 研究必须按当时可投资的集合取样,并尽可能保留后来退市、下架或失败的成员,不能拿今天的幸存者名单代替历史样本。
  • 最危险的错不报错(静默失败)。 时区、时间戳、数据对齐、分页上限——这些坑通常不会崩溃给你看,你必须主动验证,而不是被动等它出声。

✍️ 动手试试 / 想一想

  1. 抓一份免费的股价或币价数据,当个侦探。 别急着算策略,先花十分钟拷问三个问题:(一)时间戳代表区间开始、结束还是成交时刻,又属于哪个时区?(二)它从哪天开始、到哪天结束,中间有哪些缺口?(三)若是横截面数据,名单是否保存了当时已经退市或下架的成员?回答不出来,就先别让策略建立在它上面。
  2. 想一想: 假设你设计一条规则——「当一只股票被纳入某个知名指数时就买进」。这条规则要能真的执行,你必须在「哪一个时间点」就确定知道它会被纳入?如果你的数据里,某只股票从很早以前就一直被标记为「指数成分股」(即使它其实是后来才被纳入的),这会给你的回测带来什么样的错觉?(提示:回想一下「当时视角」和「戴上那一刻的眼镜」。)

第三部 · 把想法变成可检验的规则 · 第 6 章

从直觉到假说:把「我觉得」变成可以被证伪的一句话

一个下午的直觉

想象你周末下午盯着手机看行情,看到某个币一天之内跌了 15%。你心里冒出一个念头:

「跌这么多,应该要反弹了吧?」

这个念头很自然,几乎每个人都有过。它甚至可能是对的。问题不在于它对不对,而在于——你目前手上的这句话,根本没办法拿去检验

「跌这么多」是多少?一天跌 5% 算多,还是要跌 15%?「应该要反弹」是涨回来多少?涨 0.1% 也算反弹,涨 3% 也算反弹,那到底算哪个?「反弹」是多久之内的事?一小时?一天?一周?

你发现了吗,同样一句「我觉得跌多了会反弹」,可以被解读成几百种不同的意思。而只要一个想法可以被解读成几百种意思,它就有一个很危险的特性:无论最后市场怎么走,你都可以说「你看,我没说错」。 涨了,你说反弹了;跌了,你说「还没跌够嘛」;不动,你说「正在酝酿」。

一个怎样都不会错的想法,听起来很厉害,其实一文不值。这一章要教你的,就是怎么把这种模糊、舒服、怎样都对的「我觉得」,一刀一刀削成一句清清楚楚、有可能被市场打脸的话。因为在量化交易里,一个想法能不能被打脸,决定了它值不值得你花时间去研究。

假说(hypothesis),就是你把一个模糊直觉收敛之后,写下来的那一句可以被检验的话。它是一切研究的起点。没有它,你后面要学的回测、统计、成本估算,统统没有对象可以施力。所以我们得先学会怎么把它生出来、而且生对。

(假说这个词,你可以先想成「一个等着被考试的猜测」。它不是结论,是一张还没批改的考卷。)

「可证伪」:一个想法的入场券

先讲一个乍看反直觉的观念:一个好的想法,重点不是它有多可能对,而是它有没有可能错。

这个观念叫「可证伪性」(falsifiability),它源自一位叫波普尔的科学哲学家。白话讲就是:一个主张,必须存在某种「如果看到这个结果,我就得承认它是错的」的情况,它才算是一个有研究价值的主张。

用生活例子你就懂了。

「明天太阳会从东边升起」——这句话可证伪。只要观测到与定义相反的结果,它就会遭到挑战。可证伪让一句话有资格接受检验;没有被一次检验推翻,并不等于它从此被永久证明。

「宇宙中存在一种我们永远检测不到、也不与任何东西互动的神秘力量」——这句话不可证伪。你没有任何办法设计一个实验证明它不存在。它听起来很深奥,但因为它拒绝接受任何考试,它对你的交易毫无用处。

回到市场。「这个币很有潜力」是不可证伪的——潜力是什么?多久之内兑现才算有?你永远可以说「潜力还没发挥」。但「这个币在美股开盘后的第一个小时,平均收益会高于其他 23 个小时」——这句话可证伪,因为我可以预先定义样本、指标和门槛;若没有达到,这一版主张就不能通过检验。

在量化的世界里,「可能是错的」不是缺点,是入场券。一个永远不会错的想法,等于一个永远学不到东西的想法。

你会慢慢爱上这种感觉:一个想法越是把脖子伸出来、越是敢说「我赌这个,如果不是这样我就认输」,它就越有价值。因为只有敢被推翻的想法,在一轮轮检验后留下来时,你才有理由逐步提高对它的信心——而不是把它当成永恒真理。

好假说的四个零件

那么,一句话要具备哪些条件,才配叫「好假说」?我把它拆成四个零件,你可以像检查清单一样一个个对:

第一个零件:有方向。 你得说清楚是涨还是跌、是变多还是变少。「这两件事有关系」不够,要说「A 高的时候,B 倾向于变高」或「变低」。没有方向,你连对错都判断不了。

第二个零件:可测量。 句子里的每一个词,都要能翻译成数据里查得到的数字。「跌很多」不行,「一小时内跌超过 3%」可以。「之后」不行,「接下来 30 分钟内」可以。这一步最枯燥,却最关键——你等于在逼自己把脑袋里毛茸茸的感觉,压成一把有刻度的尺。

第三个零件:有机制。 这是最容易被新手跳过、却最重要的一个。你不只要说「会这样」,还要能回答「为什么会这样」。背后是什么力量在推动?是谁、因为什么原因、做了什么,才造成你预期的那个现象?这个零件我们待会儿单独用一整节来讲,因为它是区分「真研究」和「碰运气」的分水岭。

第四个零件:可被推翻。 综合前三个,你的句子最后要能导出一个明确的结果:「如果我看到 X,就代表我错了。」如果你想破头都想不出「什么结果会证明我错」,那不是因为你的想法太强,而是因为它还太模糊,回去继续削。

我们拿开场那句「我觉得跌多了会反弹」走一遍这条收敛的流水线:

  • 原始直觉:跌多了会反弹。(四个零件一个都没有)
  • 加上测量:某个币在一小时内下跌超过 3%。(有了可测量的「触发条件」)
  • 加上方向与测量:……之后的 30 分钟,平均收益为正。(有方向、可测量了)
  • 加上机制:……因为短时间的急跌常常是恐慌性卖压,卖压一旦耗尽,价格会小幅修复。(有为什么了)

最后收敛成一句话:

当某个币在一小时内下跌超过 3%(触发),接下来 30 分钟扣除成本后的平均收益会高于事先设定的最低门槛(方向+测量);我的机制解释是,其中一部分急跌来自短暂的流动性与恐慌卖压,而非可持续的信息冲击。

你看,同样一个念头,现在它变得「难看」多了——它把自己框死了,涨不够就是输。但正是这份「难看」,让它第一次变成一个你可以真的去研究、去下注、去输的东西。

证伪契约:先写下什么会证明我错

现在来到这一章最重要的一个习惯。请你把它抄在笔记本第一页:

先写下「什么结果会证明我错」,然后才去看数据。

产生点子时可以大胆;一旦准备检验,认输条件就必须收紧。这份事先写好的约定,我们叫它「证伪契约」。它至少要写清四件事:触发条件、观察期限、判断指标,以及失败门槛。

拿前面的急跌反弹假说来说,契约可以这样写:

我赌:一小时下跌超过 3% 后,接下来 30 分钟的平均净收益高于预先设定的最低经济门槛。 如果主要指标没有达到门槛,或者估计区间宽到无法区分「有用」与「没有用」,那么这条假说不能通过本次检验。后者应记作「证据不足」,不能偷换成「已经证明完全无效」。

注意「不能通过本次检验」这几个字。它防止你把一次具体裁决,夸大成对所有市场、所有时段、所有参数的永久判决;第15章会专门处理这条知识边界。

为什么必须先写?因为一旦先看到数据,成功标准就会开始漂移。涨 0.3%,你会觉得「也算反弹」;要等 60 分钟才涨,你会觉得「之后本来就包括一小时」。这未必是故意说谎,却足以让任何结果都被解释成成功。

第8章会把这个动作正式化为预注册(pre-registration),并解释当你试了很多变体时,怎样用登记记录阻止选择性汇报。这里先养成最基本的纪律:动手查数据之前,把认输条件写完整。

⚠️ 常见误区一:把「证明我对」当成研究

新手最常做的事,是兴冲冲地去数据里「找证据支持我的想法」。你随便翻,总能翻到几天「跌多了果然反弹」的漂亮案例,然后越看越兴奋。但这叫「确认偏误」——你只看见你想看见的。真正的研究方向刚好相反:你要主动找「反例」,去问「哪些时候跌多了反而继续跌」「什么数据错误会制造这幅图」。一个想法经受住一轮攻击,只代表它赢得了下一轮检验的资格,不是已经被证明为真。只找支持案例,那不是研究,是自我催眠。

机制假设 vs 曲线拟合:赚钱要有「为什么」

现在回到那个我们暂时跳过的、最重要的零件:机制。

先讲一个常见的伪相关游戏。只要把足够多的时间序列丢进电脑,总能找到某地食品产量与某个股指在一段时期里高度同步。那你要不要据此交易?

当然不能只凭这张图。两条曲线一起动,可能来自共同趋势、样本挑选或纯粹巧合;若说不出谁通过什么渠道影响了谁,它就缺少可外推的支撑。数字上很像,不等于经济上有关系。

这就带出量化研究里一组要命的对照:机制假设曲线拟合(curve fitting)。

  • 曲线拟合,是你拿着一堆历史数据,不断试不同的规则、不同的数字,直到凑出一条在过去看起来赚翻天的线。你并不知道它为什么赚,你只知道「试出来的这组数字刚好在过去很赚」。
  • 机制假设,是你能讲出一个道理——市场上有一群人,因为某个原因,会在某个时候做某件事,而这件事会可预测地推动价格——然后才去数据里验证这个道理留下的痕迹在不在。

差别在哪?差在未来

历史数据只有一份,你在上面试的次数够多,总能凑出一条漂亮的线,就像你对着一群人的背影,总能找到一件衣服「刚好」套在每个人身上——但那件衣服换到新的人身上就不合了。曲线拟合出来的策略,就是那件只合过去、不合未来的衣服。一旦拿到真实市场、拿到明天的新数据,它往往原形毕露。

有机制的假说,赌的不只是「这组数字在过去很准」,还包括「推动现象的约束、动机或制度在未来仍可能存在」。机制不能保证未来,完整的因果故事也不是所有预测模型的必要条件;但它能告诉你为什么值得外推、在哪些环境下可能失效,并帮助你设计更有针对性的反证。它是对抗纯曲线拟合的一道重要防线。

所以每次你有了一个想法,强迫自己回答一个问题:

「假设这真的能赚钱,收益由什么机制支付?是承担了某种风险、提供了流动性、满足了别人的套保需求,还是利用了受约束参与者不得不做的交易?」

如果你答得出来——例如「我为急于离场的人提供流动性,因此承担短期库存风险并获得补偿」——你手上至少有了可检验的机制。这里的对手方不一定是笨蛋;他可能在满足套保、监管、资金或时间约束。若你支支吾吾、只能说「反正数据显示它很赚」,那就还需要更强的样本外证据和压力测试。这件事会在第9章落成可执行规则;至于过度拟合为何会把历史巧合伪装成规律,第8章会正面处理。

⚠️ 常见误区二:先看到漂亮的线,才回头编故事

有一种更隐蔽的自欺:你先在数据里试出了一条赚钱的曲线,然后为了说服自己,再「倒过来」编一个听起来很合理的机制故事。这跟先有机制、再去验证,是完全相反的两件事,虽然它们最后看起来都「有故事又有数据」。分辨的方法是把时间顺序写清楚:事前机制可以进入确认性检验;看完数据后才长出来的故事,只能登记为新的探索性假说,再去新数据上接受考试。事后解释不一定错,但不能冒充事前预测。

假说从哪里来:四口井

讲了这么多「怎么把假说削干净」,你可能会问:那最开始那个念头,要去哪里挖?好消息是,灵感其实到处都是,我帮你归成四口可以反复去打水的井:

第一口井:你自己的观察。 你盯盘时、看新闻时、甚至排队买咖啡时冒出来的那些「咦,好像每次……都会……」的念头。开场那个「跌多了会反弹」就是这口井来的。它们最原始、最模糊,但也最有你个人色彩,别人不一定注意到。

第二口井:市场异象(market anomaly)。这是指一些学术界和业界反复记录到、看起来不符合最简单有效市场直觉的现象。(市场为什么很难赚,是第2章的主题,这里只借用。)这些异象是前人筛过一轮的线索,是站在巨人肩膀上的起点——但公开之后可能拥挤、衰减,也可能只在原研究的市场与时期成立。把论文当线索,不要当保修书。

第三口井:微观结构(market microstructure)。这是指市场最底层的运作机制——订单簿长什么样、买卖价差怎么形成、大单怎么冲击价格。很多最扎实的机制假说都藏在这里,因为这是「人的行为在市场这条管道里留下的物理痕迹」。订单簿与流动性这些基础,正是第4章帮你打的地基,这里先按下不表。

第四口井:别人的研究。 论文、博客、公开的策略讨论。读别人的东西不是为了把结论原封不动搬来,而是为了借它的骨架、换你的血肉:先复现 A 在原条件下是否成立,再问换市场、换数据或换机制后,A′ 是否仍有独立理由。

这四口井也会把你带到不同的战场。显眼题目通常竞争更激烈;冷门题目则可能受容量、数据或执行条件限制,也可能真的什么都没有。本章只负责一件事:无论灵感从哪里来,都先把它削成可证伪的假说,再让数据裁决。 严谨不会创造机会,但能少把空地误认成金矿。

📌 本章要点

  • 假说是一切研究的起点。 没有一句能被检验的话,后面的回测、统计、成本估算都无从施力。
  • 可证伪是入场券。 一个想法必须存在「看到什么结果就得认输」的情况,它才有研究价值;怎样都对的想法一文不值。
  • 好假说有四个零件:有方向、可测量、有机制、可被推翻。 把模糊直觉沿着这四项一刀刀削成一句话。
  • 先写证伪契约,再做确认性检验。 把触发、期限、主要指标和失败门槛写定;没达到门槛与证据不足,必须分开记录。
  • 赚钱最好有「为什么」。 机制不能保证未来,却能说明收益可能由何种风险、约束或服务支付,也能指出策略在哪些环境下会失效。
  • 灵感有四口井:自身观察、市场异象、微观结构、他人研究。 来源不同不改变裁决标准;冷门与公开题目都要接受同样的检验。

✍️ 动手试试 / 想一想

  1. 削一句话。 拿你自己相信的一个模糊市场直觉(例如「利好消息出来后股价会涨」「成交量大的股票第二天容易延续强势」),照着本章的四个零件,把它改写成一句「有方向、可测量、有机制、可被推翻」的假说。写完后大声念一遍,问自己:市场要怎么走,才算证明我错了?如果你答不出来,它就还没削好。
  2. 签一份契约。 为你上面那句假说,写下一份三行的证伪契约:第一行「我赌什么」,第二行「如果我在数据里看到什么」,第三行「那么我就承认错了、想法作废」。然后——先别急着去查数据。光是把这三行写清楚,你就把一个舒服的故事变成了可以接受裁决的研究对象。
  3. 抓一个巧合。 想一想你听过的任何一个「XX 指标很准」的说法(股市里的、生活里的都行),试着追问:它背后有没有一个说得通的机制?还是只是两件事碰巧一起动?练习分辨「机制」和「巧合」,是你未来每一天都要用到的肌肉。

下一章,我们就带着你辛苦削出来的这句假说,走进那台既是时光机、又是照妖镜的机器——回测。你会看到,同一句假说,在诚实的人手里和作弊的人手里,会跑出完全不同的结果。

第三部 · 把想法变成可检验的规则 · 第 7 章

回测:你的时光机,也是你的照妖镜

想象有人递给你一台时光机。规则很简单:你可以回到过去的任何一天,带着你今天的交易点子,看看如果当时就照这套规则买卖,现在会赚多少、赔多少。

听起来像作弊,对吧?过去的股价都摊在那里了,你只要挑对进出点,不就稳赚?

这台时光机,量化圈叫它「回测」(backtesting)——把一套已经写清的交易规则,放进历史数据中重放,估计「若当时按这套信息与执行约束行动,结果会怎样」。它是量化研究的核心工具之一。

但这一章我最想告诉你的,不是它多强大,而是:这台时光机有一个致命的毛病。它太听话了。你心里期待什么答案,只要你不小心,它就会给你什么答案。用好了,它是照见未来的时光机;用不好,它就是一面照妖镜——照出来的不是市场的真相,而是你一厢情愿的倒影。

我们先讲它能给你什么,再花大力气讲它会怎么骗你。

回测能给你什么,不能给你什么

先说能给你的。

回测最大的价值,是把多年历史压缩成一次可重复的检查。一个真人操盘手若想观察「跌破月线就卖、站上月线就买」在不同年份会遇到什么,不能真的把时间重过一遍;电脑却能快速列出交易次数、收益分布与回撤。它给你的不是多年实战经验,而是一份关于历史反事实的结构化记录。

这就是回测给你的:一个快速淘汰烂点子的筛子。许多「这招好像不错」的直觉,会在最基础的历史重放里迅速暴露问题。光是这个「先用纸面证据淘汰明显站不住的点子」的功能,就已经很有价值。

但请你把下面这句话刻在心里:

回测告诉你的,是这套规则在「过去」表现如何;它从来没有承诺过「未来」也会这样。

这不是文字游戏。过去和未来之间,隔着一条没人能跨过的河。参与者、制度、流动性与竞争都会变化;同一套关系可能衰减、反转,或只在某种市场状态下成立。回测跑出漂亮曲线,只代表在这份历史和这组假设里结果如此,不代表明天会照样重演。

所以回测不能给你的是:对未来的保证、对真实成交的保证、以及——这是最阴险的——它不能保证「跑出来的漂亮数字是真的」。很多时候,那条让你心跳加速的收益曲线,根本是你自己不小心作弊作出来的。

怎么作弊的?你甚至没察觉。这就要讲到回测世界里的头号杀手了。

前视偏差:先对齐四个时间

第5章已经完整讲过前视偏差。到了回测这一站,不要再只问「数据有没有未来值」,而要把每笔交易拆成四个时间:

  1. 信息时间: 原始数据什么时候发生、什么时候被公开?
  2. 信号时间: 规则最早什么时候能把这些信息算完?
  3. 决策时间: 系统什么时候决定下单?
  4. 成交时间: 订单最早何时进入市场、可能以什么价格成交?

这四个时间只要顺序倒了一处,回测就可能获得实盘拿不到的好处。比如用当天最终收盘价生成信号,却又假设自己成交在同一个收盘价;除非你有明确的收盘竞价流程、信息截止和成交模型,否则这是把「知道答案」和「按答案成交」挤在了同一瞬间。

财报、指数成分和宏观数据还要多看一个发布时间或版本时间。季度归属日不是公布日,今天的修订值也不是当时可见值。审计回测时,逐笔回答一句话:「这张单被送出之前,策略真的已经拿得到这项信息吗?」

⚠️ 常见误区

「只要代码没有引用下一行数据,就没有前视偏差。」 不对。发布时间、时区、聚合区间、信号计算延迟和成交时点都可能让同一行数据在当时不可用。数组没有向前索引,不代表经济时间已经对齐。

样本内与样本外:别在同一份试卷上又出题又改试卷

策略开发和策略评估,不能永远使用同一段数据。因为你每看一次结果、改一次参数,那段数据就参与了设计;再拿它给策略打分,成绩自然会偏乐观。

量化研究通常把数据分成两类:

  • 样本内(in-sample):用来探索、调试和形成规则的练习卷。
  • 样本外(out-of-sample):不参与这轮调整,用来估计规则在新时期表现的期末卷。

金融数据有时间顺序,所以不能随手随机打散,让未来样本泄漏进过去。常见做法是按时间切分,或用滚动、步进方式反复模拟「只用当时以前的数据训练,再向前检验」。

样本外也不是魔法封印。一套策略若只在样本内好看、到了未参与设计的时期就失灵,过度拟合是重要嫌疑;但一次样本外失败也可能来自市场状态变化、样本太短或执行差异。反过来,一次通过也不等于永久有效。

样本外数据还是会被消耗。你看完结果又回去改策略,它就已经参与了设计;再拿同一段数据当「全新期末卷」,名字没变,功能已经变了。

成本必须从第一次回测就进场

第4章已经讲过价差、深度、市场冲击和滑点;第10章会完整建立成本模型。回测这一章只留一条审计原则:不要先跑一个免费交易的世界,再把成本当作最后的调味料。

从第一版结果开始,就要使用可执行的买卖方向、预估手续费和滑点,并检查绩效对成本假设有多敏感。若成本稍微上调,净收益就立刻翻负,这条策略的边际并不稳健。

还要避免一个常见偷懒:所有交易都套同一个固定成本。真实成本会随标的、时段、订单大小、挂单/吃单身份和市场波动改变。模型可以先简单,但必须明确自己省略了什么,并用更差的情景做压力测试。

⚠️ 常见误区

「先看有没有 alpha,成本之后再说。」 成本会改变信号是否可交易,不是最后才扣的会计项目。忽略它,你研究的是一个不存在的免费市场。

回测只是粗筛,不是圣旨

好,假设你避开了前视偏差、切好了样本内外、也把成本放进模型,回测跑出一条还算稳健的曲线。现在可以上场了吗?

还不能。回测最适合回答的是:「这个想法是否值得进入下一关?」它不适合回答:「未来一定会不会赚钱?」历史数据再完整,也很难把排队成交、网络延迟、拒单、系统故障、流动性骤降和真实规模下的市场冲击全部复原。

所以,回测绿灯只代表这个想法没有在纸面上被淘汰。接下来仍要经过模拟盘、极小额真跑和逐步放大的验证,把模型假设一项项同现实对齐。第13章会完整讲这条上线阶梯。

把回测当成粗筛的筛子,而不是最终判官,你就对了。

🔬 来自实战的一课:那份「全部通过」的测试

我们实验室有段日子,在打磨一个回测系统。

那天,负责的人跑完全套自动测试,屏幕上一整排绿灯,漂漂亮亮,没有一个红字。所有检查都「通过」了。按照直觉,这代表系统是对的,可以用了。他差一点就这样签字放行。

但团队里有条老规矩救了我们。这条规矩说:测试全部通过,不代表程序做对了事——它可能只是根本什么都没做。

于是有人多问了一句:「这些测试,是在确认『它做对了』,还是只在确认『它没报错』?」两者天差地别。一个什么都不做的空壳程序,也可以完美地「不报错」,然后让每一个测试都亮绿灯——因为根本没有东西去触发红灯。

我们把这种现象叫「假绿」:绿灯是假的,那份平安是假的。

于是他们做了一件反直觉的事:故意去戳破它。他们喂给系统一笔「明明应该被拒绝」的脏数据——一笔时间戳错乱的、一笔缺了关键字段的——然后盯着看:它会不会在该失败的地方,真的失败?

结果一验,冷汗就下来了。有些该亮红灯的地方,居然静悄悄地放行了。数据明明有问题,系统却面不改色地照单全收。如果没有这一戳,这些脏数据会神不知鬼不觉地流进后面每一个环节,而所有的测试,依然会是一整排安详的绿灯。

这一课,我希望你比我们更早学会:

真正的验证,不是去确认「它成功时会成功」,而是去确认「它该失败时,真的会失败」。

一个永远不会对你说「不行」的系统,不是可靠,是可怕。它只是把所有的问题,都留到了用真钱的那一天,一次算总账。这类负向测试会在第13章进入正式治理:关键检查不清楚时,系统应先停、先拒绝放行,而不是把疑问带进真钱。

📌 本章要点

  • 回测是时光机,不是水晶球。 它告诉你一套规则在过去表现如何,从不承诺未来会重演。它最大的价值是帮你快速淘汰烂点子。
  • 前视偏差要靠时间审计。 信息、信号、决策、成交和发布时间必须按经济现实排序;代码没有引用下一行,也可能已经偷看未来。
  • 样本内负责开发,样本外负责估计泛化。 金融数据应尊重时间顺序;同一段样本外一旦参与修改,就不再是全新的期末卷,而一次通过也不是永久证明。
  • 成本从第一版回测就要进入。 模型可先简单,但必须写清省略项,并对更差的成本情景做压力测试。
  • 回测只是粗筛,不是放行许可。 绿灯只代表「值得进入下一关」;真实执行仍要经过模拟盘和小额真跑。
  • 当心「假绿」。 测试全过不代表做对事,可能只是什么都没做。真正的验证,是确认系统「该失败时真的会失败」。

✍️ 动手试试 / 想一想

  1. 抓自己的鬼。 找一个你听过或想过的简单交易点子(例如「连跌三天就买」)。在动手回测之前,先在纸上写下:如果我要模拟这个策略,我在「做决定的那一刻」,到底能拿到哪些信息、不能拿到哪些?把「不能拿到却很想用」的那些圈出来——那就是前视偏差最可能藏身的地方。
  2. 设计一个会失败的测试。 给你的回测系统造一笔时间戳错乱、价格缺失或不可能成交的订单,先写下它应该在哪一关被拒绝,再实际运行。若系统仍然一路亮绿灯,你抓到的不是好策略,而是一盏假绿。

第三部 · 把想法变成可检验的规则 · 第 8 章

统计严谨:为什么你的「圣杯」多半是噪声

一个能连对十次的骗子

我们先玩个游戏。

想象一个房间里坐了一万个人,每人一枚硬币。主持人说:「一起掷,猜对正面的站着,猜错的请坐下。」

第一轮,大约一半的人站着;第二轮,又淘汰一半。这样走完十轮,通常仍会有好几个人连续猜对十次。

如果镜头只对准其中一个,你会看到一个「连对十次」的天才。你会忍不住想:他一定有诀窍吧?是不是该付钱请他教你?

但你我都知道,他什么诀窍都没有。参与者够多时,出现少数极端幸运者并不奇怪。真正骗人的不是那枚硬币,而是那个只让你看见赢家、却藏起全部参与者的镜头。

这一章是整本书的核心。因为量化交易里最危险的敌人,不是市场,不是对手,而是这个房间——你自己亲手搭建、只让你看见漂亮结果的房间。你会试很多个策略,然后指着那个「连对十次」的说:找到圣杯了。

我要花整整一章,教你识破这个骗局。而且我要先告诉你一个让人泄气、但你必须接受的事实:你在屏幕上看到的那条漂亮向上的权益曲线(equity curve,就是把策略历史上的资产净值一天天画成的一条线),很可能只是噪声长出来的花。

随机也会长出漂亮的曲线

新手第一次做回测(backtesting,也就是拿历史数据模拟「如果我当年这样交易会怎样」),看到一条从左下往右上、漂漂亮亮爬升的曲线,心脏会怦怦跳。那条线太有说服力了——它看起来就是「钱在长大」。

但我要请你做一件事:打开任何一个能产生随机数的工具,让它掷 1000 次虚拟硬币,正面 +1、反面 −1,把结果一路加起来画成一条线。

你会吓一跳。这条「纯粹随机」的线,常常也有一段漂亮的上坡,有时甚至一路向上,像极了一个「会赚钱的策略」:有回撤、有反弹、有创新高,该有的戏剧性一样不缺。可它背后一分钱的道理都没有,只有硬币。

这是你要刻进骨子里的第一个警觉:一条向上的曲线,本身几乎不证明任何事。 没有真实优势的规则也能靠抽样运气长得很好看;有价值的策略也可能因为样本短、用途是对冲或恰逢不利环境而显得难看。曲线的形状必须和假说、样本、成本及比较基准一起解释。

所以真正的问题从来不是「这条线好不好看」,而是:它好看,是因为背后有真东西,还是因为我运气好、或者我作弊了? 接下来要讲的每一件事,都是在回答这个问题。

过度拟合:把答案背下来,不叫学会

先讲一个你我都经历过的场景:考试前你发现,老师会从一本旧题集里出题。于是你把每一题答案都背得滚瓜烂熟,模拟考考了 98 分,欣喜若狂,以为自己学通了。结果正式考试换了新题目,你只考了 40 分。

这就是过度拟合(overfitting):你不是学会了「解题的方法」,你只是背下了「这一份试卷的答案」。

在量化里,过度拟合长这样:你有一个策略,里面有个参数,比方说「均线用几天」。你不确定该用几天,于是你把 5 天、6 天、7 天……一路试到 200 天,看哪个在历史数据上赚最多。最后发现「用 43 天」的曲线最漂亮,于是你说:就它了,43 天。

你有没有发现问题?你不是在「设计策略」,你是在「对着历史答案调参数」。43 这个数字之所以最好,恰恰因为它最贴合这一段特定的历史——包括这段历史里所有的巧合和噪声。它把噪声也一起背下来了。等到明天市场换了张新试卷,这个 43 天大概率原形毕露。

一个粗略但好用的直觉:可自由调整的旋钮越多,模型贴住历史噪声的能力越强。 这不代表复杂模型一定差,而是复杂度必须由更多数据、正则化、稳定的样本外表现和清楚的增量价值来支付。简单不是自动正确;它只是让选择空间更小、审计更容易。

所以实验室的确认性规格有一条古板规矩:每个已登记的实验,参数必须写成确定值,不能偷藏一串候选值。 探索阶段当然可以比较 5 到 200 天,但所有尝试都要进入总账,并在新的未参与选择的数据上确认。不能跑完 196 个版本,只交最好的一张,再假装一开始就知道答案是 43。

多重检定:试一百次,总有几次「显著」

回到开头那个掷硬币的房间。现在你懂了:参与者越多,出现极端幸运者就越不稀奇。

量化研究里,「人」就是「你试过的策略」。

假设你今天很勤奋,写了 100 个不同的策略去跑回测。统计检验常见一个「5% 显著水平」:在零假设成立、检验条件也满足时,单次检验长期大约有 5% 的机会误越过门槛。——粗略地说,就是「如果这东西其实没用,它靠纯运气也能达到这么好的结果的概率,只有 5%」。听起来很严格对吧?5% 很小啊。

但你试了 100 个。就算这 100 个策略全都是废物、全都没用,单纯靠运气,平均也会有 100 × 5% = 5 个策略,漂漂亮亮地冲过那条「显著」的线,对你露出天使般的微笑。

你看着这 5 个「显著」的策略,心花怒放,完全忘了旁边还躺着 95 个失败品。你把镜头对准了赢家,又一次。

这个陷阱有个名字,叫多重检定(multiple testing);而它背后那个更广、更要命的行为,叫数据窥探(data snooping)——意思是你反复地、贪婪地翻看同一份数据,直到它「凑巧」对你说出你想听的话为止。

数据窥探的可怕之处在于,它常常不是故意的。你不会告诉自己「我要作弊」。你只是……「再试一个变体看看」「把这个条件加上去好像更好」「换一个时间段再跑跑看」。每一次「再试试看」,都是往房间里多塞一个掷硬币的人。试得够多,噪声里总会浮出一张漂亮的脸。而你,会真心诚意地相信自己找到了 alpha。

你不是被市场骗了,你是被自己骗了。 这是新手亏钱最深、也最难承认的一种方式。

条件化收益,也是一次试验

这里有个特别隐蔽的变种,很容易被误当成「只是多看一眼」,值得单独点出来。

你跑了一个策略,整体看平平无奇。但你不死心,开始「切数据」:

「只在星期一交易呢?」——好像好一点。 「只在成交量放大的时候交易呢?」——欸,又好一点。 「只在上午十点前、而且前一天收黑的时候交易呢?」——哇,曲线变超美!

你兴奋地宣布:我找到了!「周一 + 放量 + 十点前 + 昨日收黑」时,这个策略无敌!

打住。每一次「只在……的时候」都增加了一个研究者自由度,也增加了挑中偶然赢家的机会。这些切法往往高度相关,不能粗暴当成彼此独立;但相关不等于免费。你若在同一份数据上试了几十种条件,最后只报告最好的一种,统计证据仍会被选择过程污染。

所以请记住这条硬规矩:条件化收益必须进入同一研究家族的尝试记录。 记下试过哪些切法、先后顺序和选择规则;切得越细、结果越亮眼,越需要新数据和机制证据,而不是越兴奋。

先写下什么会证明我错:预注册

讲到这里,你可能会有点绝望:那我到底该怎么办?难道不能试东西吗?

当然能。研究的本质就是尝试。问题不在于「试」,而在于「试完之后,你怎么对自己诚实」。

我们实验室对付「未来的自己作弊」的核心武器,叫预注册(pre-registration)

概念简单到近乎朴素:在开始一轮确认性检验之前,先把要验证的假说、策略规格、主要指标和裁决规则写下来、登记存证。 你当然可能早已用旧数据探索过;关键是把「探索得来的新想法」如实标注,再用没有参与选择的数据确认,不能把探索结果伪装成事前预测。

为什么这么一个小动作,威力这么大?

因为它锁死了那个最爱作弊的人——未来的你

人的大脑有一种近乎本能的自我欺骗:当你看到「周一 + 放量」那条曲线特别漂亮时,大脑会立刻、真诚地替它编一个听起来很有道理的故事,还让你相信「我本来就是这么想的」。

这叫「事后诸葛」,而预注册就是它的解药。如果你事先登记的假说是「这策略在所有交易日都该有效」,事后你就不能偷偷改口成「它只在周一有效」,还假装这是原本的预测。白纸黑字摆在那里,你赖不掉。

第6章的证伪契约回答「我赌什么、怎样算输」;预注册再多做一步:给这份规格留下可核对的时间记录,并把后来产生的变体明确标成新试验。这样,探索仍然自由,汇报却不能选择性失忆。

🔬 来自实战的一课:给未来的自己上一道锁

在我们实验室,跑任何一个策略之前,有一道雷打不动的手续:先把这个策略的完整规格——它赌的是什么、参数是多少、什么结果算成功、什么结果算失败——写成一份文件,然后「上链登记」。

「上链」不是重点。任何能可靠留下内容哈希、版本和时间戳的只追加记录,都可以达到相似目的。你只要理解它的效果:像把一封信投进一个贴了时间戳、事后改动会留下痕迹的保险箱。

很多新手觉得这是官僚、是浪费时间——「我自己知道我在测什么,干嘛搞这套?」

直到他们亲身经历过一次「事后诸葛」的自我欺骗,才会懂。你会清清楚楚地记得,自己「原本」测的是策略 A;可是当策略 A 平平无奇、而你顺手多切的那个变体 A' 曲线惊为天人时,你的记忆会被大脑悄悄窜改,让你真心相信「我本来就是要测 A' 的」。人骗自己的时候,是不会脸红的,因为他自己都信了。

那道锁防的不是同事,不是老板,不是审计。它防的是三小时后、被漂亮曲线冲昏头、正准备窜改自己记忆的那个你。 它把「事前的你」和「事后的你」隔开,让诚实的那个你,替糊涂的那个你把好关。

这就是为什么我们说:预注册防的,是未来的自己。

用「你试了几次」给绩效打折:DSR 的直觉

好,有了预注册,我们能防止「假装没试过」。但还有一个问题:就算我诚实地记下「我试了 100 次」,那我最后挑出来的那个最好的策略,它的绩效到底该怎么看?这就要请出本章最后、也最能体现「统计严谨」的一件工具。

先讲一个常见成绩单:夏普比率(Sharpe ratio)。简化地说,它用平均超额收益除以收益波动,衡量每一份波动对应多少平均回报。它越高,代表历史上收益相对波动更有利;但序列相关、非正态尾部、样本短和事后挑选都会把它吹胖,所以不能单独裁决策略。

问题来了:如果一个策略的夏普比率是 2.0,听起来很漂亮。但如果我告诉你,这是我从 1000 个策略里挑出来的最好的那一个呢?

你应该立刻警觉:又是那个掷硬币的房间! 1000 个策略里「最好的那个」,它的高夏普,有多少来自真本事,有多少来自「1000 个里总会有个运气爆棚的」?

于是聪明的统计学家做了一件很符合本书精神的事:他们发明了一个修正,叫去膨胀夏普比率(Deflated Sharpe Ratio,简称 DSR)

它的公式这里不展开,但直觉一定要懂:

同样一个夏普比率,若是从更多尝试里挑出来,证据就更弱。

DSR 不是简单拿「试验次数」去除夏普;它还会考虑样本长度、收益分布的偏度与峰度,以及一组尝试之间的相关性所对应的有效独立尝试数,再问:这个夏普是否仍高过数据挖掘本来就可能制造出的最好成绩?

因此,条件化收益、参数变体和后来补做的筛选,都必须记进同一研究家族的总账。漏报尝试,任何校正都会过于乐观。我们宁可让漂亮数字早点瘦下来,也不要让它带着选择偏差走进实盘。

为什么这套纪律值得保留

读到这里,你可能觉得:做量化怎么这么绑手绑脚?又是预注册,又是记录尝试,又是给最好成绩降温。我好不容易找到条漂亮曲线,你却逼我先拆它。

这套纪律的价值,不在于让你显得比谁高明。它只做一件更基础的事:把探索产生的自由度暴露出来,不让同一份证据被反复包装成多个发现。

预注册、研究家族和 DSR 都不会替你创造信号。它们减少的是假阳性,并帮助你区分事前预测、事后探索和独立确认。

本书不展开 DSR 的公式与软件实现。对新手更重要的,是把每一次尝试记进同一份研究总账,别让选择性汇报替噪声化妆。这一章你只要牢牢记住一件事:

在你欢呼「找到圣杯」之前,先冷冷地问一句——这,会不会只是噪声?

⚠️ 常见误区

误区一:「曲线这么漂亮,一定是好策略。」 纯随机的硬币,也能掷出漂亮的上坡。曲线好看至多是一条线索,不是通行证。真正该问的是「它凭什么好看」,而不是「它多好看」。

误区二:「我又没作弊,我只是多试了几个变体、多切了几刀条件而已。」 这正是最温柔、也最致命的自欺。你不是在作弊,你是在数据窥探——每一次「再试试看」,都是往房间里多塞一个掷硬币的人。不故意,不代表没发生;不脸红,不代表没骗自己。

📌 本章要点

  • 随机也能长出漂亮曲线。 向上曲线只是线索,不是证明;它可能来自真实优势,也可能来自抽样运气、选择偏差或漏算约束。
  • 过度拟合就是背答案。 可调自由度越多,越需要更多数据、正则化和独立验证。探索可以比较参数,但确认性规格必须固定,全部尝试必须记账。
  • 试一百次总有几次「显著」。 这是多重检定与数据窥探的陷阱;你试得越多,漂亮结果就越可能纯属运气。
  • 条件化收益也消耗证据。 各种切法未必独立,却都增加选择自由度;必须纳入同一研究家族并在新数据上确认。
  • 预注册让事前承诺可核对。 原规格、后来变体和试验次数分开记录,就不能只汇报最好看的版本。
  • DSR 校正被挑出来的夏普。 尝试越多、样本越短、收益分布越不理想,对最好成绩就应越谨慎。

✍️ 动手试试 / 想一想

  1. 亲手掷出一个「圣杯」。 找任何可以产生随机数的工具(手机计算器、电子表格都行),模拟掷 200 次硬币:正面记 +1,反面记 −1,把数字一路累加画成一条线。多画几条。看看你多快能「碰巧」画出一条像模像样、会让外行人以为是「赚钱策略」的漂亮曲线。画出来以后,对着它说一句:你只是硬币。
  2. 算一算你自己的房间。 在彼此独立、零假设都成立的简化情形下,你检验 50 个策略,每个使用 5% 显著水平,平均会出现几个误过门槛的结果?算完后再想:你该怎样记录试验家族,才不会把其中一个假赢家当成发现?

第三部 · 把想法变成可检验的规则 · 第 9 章

信号与因子:一个想法如何变成一条可交易的规则

在第6章,我们学会把「我觉得跌多了会反弹」这种模糊的直觉,磨成一句可以被证伪的话。那是一个很大的进步——但它终究还只是一句话。一句话不会自己去下单。

想象你要出远门一个月,想请一位助理帮你顾着账户。你不能只丢给他一句「看到便宜就买」,他会一脸茫然:多便宜算便宜?买多少?什么时候卖?什么时候该收手?你得把那句话,拆成他就算闭着眼睛也能一步步照做的步骤。

这一章,讲的就是怎么把「一句假说」翻译成「一台机器每天照着做的规则」。中间那段翻译,是这门手艺最核心、也最容易出事的地方。我们会看到,魔鬼几乎全藏在细节里——尤其藏在那些你随手多转一下的旋钮里。

信号:一盏只会亮三种颜色的灯

先讲最关键的一个词:信号(signal)

最简单的信号,可以回答三种动作:做多(赌它涨)、做空(赌它跌)、或不动。但信号也可以是连续分数——例如从 −1 到 +1 的方向强度,或给一篮子股票排出相对名次——再由仓位规则把它翻译成动作。

红绿灯是个好比喻,绿灯走、红灯停、黄灯等一下,只是有些灯还带亮度。信号把一大堆价格、成交量或基本面数据,压缩成机器能使用的判断;策略再结合仓位、风险和执行规则,决定到底按哪个键。

因子:喂给那盏灯的数字

那这盏灯看什么?广义上看的是特征(feature),有时也叫因子:任何在决策时点可观察、可计算的输入,例如过去五天收益、相对成交量或买卖价差。

因子(factor)在金融里常有更具体的含义:它可能是解释一组资产共同收益与风险的系统性驱动,也可能是用于排序选股的风格指标。日常讨论里两词经常混用,本书后文仍以「因子」作易读主词,但要知道:不是每个模型输入都自动构成一个经过验证的金融因子。

借医生看诊来想:体温、血压、心跳都是输入;医生把它们组合成判断。因子或特征提供证据,信号负责把证据压成方向或分数。

从一句假说,到一条长着旋钮的规则

我们拿一个具体的假说,完整走一遍。假说是:「一样东西如果最近跌得很凶,接下来短期内会反弹一点点。」

要把它变成机器能执行的规则,我们得逐一回答这几个问题:

  • 「最近」是多近?——就说,过去 5 天。
  • 「跌得很凶」是多凶?——就说,跌超过 10%。
  • 反弹「一点点」要抱多久?——就说,买进后抱 3 天。

于是先写出一版规则:若某标的在收盘后确认过去 5 个交易日累计下跌超过 10%,就在下一个可交易时点按预定订单方式进场,持有 3 个交易日后退出。

现在请你回头数一数,这条看似简单的规则里,至少藏了几个旋钮:5 天、10%、3 天,还包括交易时点与订单方式。这些可预先设定的数字和选项,叫参数(parameter)。真正能实盘的策略还要补齐标的范围、仓位、成本、信号冲突和异常处理;这里先盯住参数选择。

每多一个旋钮,就多一份自由度

第8章已经讲过过度拟合。来到规则设计这一站,我们只看它最具体的来源:自由度

5 天、10%、持有 3 天,每一个参数都给研究者多一个选择。参数本身不是罪;问题是你有没有在看完结果后,从许多候选值里挑一个最好看的,却只汇报最后那个数字。自由度越多,可尝试的组合增长越快,统计总账也就越重。

所以新增参数之前,先问两句:它对应什么机制?没有它,策略会损失哪一项必要能力?答不出来的旋钮,先别装上去。

稳健性检查:好参数的邻居也站得住

那要怎么分辨一个旋钮转到的位置,是真有道理,还是刚好蒙对?有个很好用的检查:看它的「邻居」站不站得住。

好食谱是这样的:盐多一撮、少一撮,菜还是好吃。这才配叫食谱。如果有一份「食谱」规定盐必须「精准到 3.7 克」,3.6 克或 3.8 克煮出来就难吃到不行——那你手上拿的根本不是食谱,是一次刚好的巧合。

参数也一样。如果你的规则在「过去 5 天」有效,而 4 天和 6 天惨不忍睹,这是一个很强的警报:你可能精准踩中了历史噪声。邻域平滑不是自然定律——某些制度阈值或到期日确实会产生陡峭边界——但若机制没有给出这种不连续性,孤零零的尖峰就格外可疑。这种一动就崩的参数,我们说它很脆弱。做研究时,我们宁可要一个「差一点也还过得去」的钝规则,也不要一个「必须分毫不差」的神规则。这道检查,就叫稳健性检查(robustness check)——不只看那盏灯亮的那一刻,还要看它左右的邻居撑不撑得住。

消融与对照:赚钱的到底是机制,还是运气?

还有一种更狠的自我拷问,叫消融实验(ablation)

名字听起来吓人,做的事很朴素:把策略的某一个零件拿掉,看它会不会垮。这跟厨师想确认「到底是不是那味秘方让汤变好喝」一模一样——最直接的办法,就是煮一锅不加秘方的汤来对比。

假设策略有三个条件:跌幅、成交量、时段。消融可以分别拿掉一个,并在可比的风险、交易次数和样本上重跑。若拿掉成交量后表现与行为几乎不变,它可能只是装饰;但也要检查交互作用——有些零件单独贡献不大,组合在一起才有用。消融是诊断,不是见到数字变小就机械删件。

跟消融搭配的,是对照组(control)基准(benchmark)。基准不应随便挑一个最好欺负的对象,而要尽量匹配市场暴露、风险、换手率或持有期。例如趋势策略可比较同风险的买入持有和简单趋势规则;选股因子可比较市场、行业和风格暴露调整后的组合。消融和对照共同追问:新增复杂度到底贡献了什么,还是只把原本的市场顺风包装成聪明。

为什么「简单优先」是一种美德

讲到这里,你大概能体会,为什么老手总把「简单优先」挂在嘴边了。

简单不是因为懒,而是它通常更容易审计、解释和维护。旋钮少,选择空间小;规则短,失效时更容易定位原因。但简单不自动胜过复杂:复杂模型若在严格样本外、成本和压力测试中持续提供增量价值,也有存在理由。正确的原则不是「黑箱一律不用」,而是每一份复杂度都要交代它买来了什么,并配上相应的监控与失效边界。

⚠️ 常见误区

误区一:把参数「调到最佳」听起来很专业,其实多半是在对着过去的噪声微调。 那个在历史上表现最好的数字,常常正是最危险的陷阱——因为它最贴合过去,也就最可能只是贴合了过去的运气,而不是任何能延续到未来的道理。

误区二:以为多加几个条件、多塞几个因子,策略就会更强。 条件越多,组合数越快膨胀。除非每个条件都有事前机制、独立贡献和样本外证据,否则复杂度首先增加的是选择偏差,不是优势。

🔬 来自实战的一课:那个只准填一个数字的字段

在我们的实验室里,有一条看起来很小气的规定:任何人交上来的策略,每一个参数字段,只准填一个数字。

为什么要这么龟毛?因为曾经有一次,一位研究员交来一份策略,「持有天数」那一栏写着:「3、5、7、10 天都可以。」他一脸贴心,觉得自己很周到——留了弹性嘛,你们挑顺眼的用。

「都可以」其实不是一个规格,而是四个候选版本。若四个都跑过,就必须把它们作为四次尝试记账;若只准备验证一个,就要在运行前填定一个数字。

于是规定变成:填 3,就是 3。想研究 5 天没有问题,但它必须作为新的变体登记、重新检验,不能事后把原规格悄悄改名。一个看似小气的字段,守住的是试验边界。

📌 本章要点

  • 信号把信息压成方向、排名或连续分数;特征是模型输入,因子则常指具有经济含义或共同风险解释的特征,两者不能完全画等号。
  • 每增加一个可调参数,选择空间就扩大;参数不是罪,但必须有机制、试验记账和样本外证据。
  • 好参数的「邻居」也站得住:一动就崩的神规则,多半只是刚好踩中了一个幸运点。
  • 消融与对照用来测新增零件的增量价值;比较时要匹配风险和暴露,并留意零件之间的交互作用。
  • 确认性规格要填定单一数值;探索多个候选没有问题,但每个变体都要进入研究总账,不能只报告赢家。
  • 简单优先是一种审计原则,不是教条。复杂度若不能用独立证据和实际增量支付,就不该留下。

✍️ 动手试试 / 想一想

  1. 挑一个你听过的买卖口诀(例如「黄金交叉就买进」),把它偷偷藏着的旋钮全找出来:用哪两条均线?各算几天?交叉之后多久进场?进场后抱多久、什么时候出场?数完你多半会吓一跳——原来连一句这么简单的口诀,都藏了不只一个参数。
  2. 假设有人拿一份回测漂亮的策略来找你合伙,而你只能问三个问题,来判断它是真本事还是只是背了答案,你会问哪三个?(小提示:可以往「参数的邻居稳不稳」「拿掉某个零件会不会垮」「这些参数当初到底是怎么选出来的」这三个方向去想。)

第7章已经讲过回测会怎样误导你;下一章则会把成交成本单独算清。这一章先收住一个结论:每一个旋钮,都是一个你可能骗到自己的地方。

第四部 · 先学会不死 · 第 10 章

成交没那么便宜:交易成本与悲观成交

一位研究员把屏幕转过来。曲线从左下角一路爬到右上角,五年翻了三倍,回撤也不大。他已经准备拿小额真钱试跑。

我只问了一个问题:「这条策略一天进出几次?」

答案是五、六趟。把每一趟该付的手续费、价差和滑点补进去后,原本漂亮的净值不仅没翻倍,反而落到本金以下。

信号未必完全没有预测力;更可能的真相是,它的毛优势太薄,薄到不够支付成交。第4章解释了这些摩擦怎样从订单簿里产生;这一章要把它们算成一张不能逃的账单。

成本三兄弟:你看得到的,和你看不到的

很多新手以为交易成本只有手续费。真正的账至少有三部分。

老大:手续费。 券商、交易所或清算环节按固定金额、成交金额比例或分层费率收费。某些市场还区分挂单方(maker)和吃单方(taker),费率不同。它通常最容易查清,却不能因此被当成全部成本。

老二:买卖价差。 你去银行换外币就懂:同一个柜台,卖给你的价格高,从你手里买回的价格低。市场里也一样。你若要求立即成交,买入通常碰卖价,卖出通常碰买价;价格即使纹丝不动,一买一卖也可能先损失一段价差。

老三:滑点,其中一部分来自市场冲击。 滑点是相对于事先选定的基准价格,实际成交出现了多少不利偏差。网络延迟、行情跳动、部分成交和订单簿深度不足都可能造成它;若订单本身吃穿多层报价、推动价格,那一部分才叫市场冲击。限价单排不到而完全没成交,更准确地说是未成交与机会成本,要另行记录。

三者里,手续费会开收据;价差和滑点常藏在成交价里。不同市场还可能有税费、融券费、资金费率、融资成本和基础设施费用。成本模型可以分层建立,但不能把容易看见的三项误当成全部世界。

换手率:成本跟着交易规模累积

现在来讲一个关键词:换手率(turnover)。它不是单纯数「下了几张单」,而是衡量一段时期内交易金额相对于组合规模有多大。一天做十笔很小的调整,换手可能低于一次把全部仓位翻掉;真正决定成本的,是交易了多少数量、在什么市场、用什么方式成交。

成本因此更像按「交易金额与流动性消耗」收费。换手越高,价差、手续费和冲击被反复支付得越多;策略边际越薄,越经不起这种摩擦。

我们来算一笔看得懂的账。假设策略每次都用同样一笔交易金额,以中间价为共同基准,毛优势约 0.10%。一趟买卖中,手续费合计 0.05%,跨过价差的成本 0.06%,价差之外的额外滑点估 0.04%,总成本就是 0.15%。这里特意把基准写清,是为了避免把价差同时算进滑点、重复扣两次。

0.10% 的毛优势对上 0.15% 的同口径成本,净结果约为 −0.05%。若每次交易的名义金额不同,就不能只数「做了几趟」,而要按每笔实际交易金额加权。这条策略在回测图上可能涨得很漂亮,因为那张图画的是「还没扣成本的世界」;一碰真钱,它就开始默默漏血。

这就是开场那条策略的问题。它的信号也许真有一点优势,但薄到撑不起一天五、六趟的勤快。成本不需要打败你的眼光,它只要比你那点微薄的优势厚一点点,就够了。

所以你会发现,一条低换手、专抓大波段的策略,和一条高换手、赚薄利价差的策略,对成本的敏感度是天差地别的。后者必须把成本这一关算到骨子里,否则账面上的每一分「赚」,都可能只是幻觉。

毛收益与净收益:只有一个会进你口袋

这里要分清楚两个词,它们之间的差别,就是梦想和现实的差别。

毛收益(gross return),是还没扣成本、假装交易不用花钱时,策略「账面上」赚到的。

净收益(net return),是把手续费、价差、滑点统统扣干净之后,真正留在你口袋里的。

新手最容易犯的错,就是拿毛收益当成自己的战绩,对着它傻笑。回测软件如果没仔细设置,画出来的那条漂亮曲线,往往就是毛收益。而毛收益和净收益之间的那道缝隙,正是无数「纸上圣杯」摔死的地方。

记住一句话:能不能吃饭,只看净收益。毛收益再高,都只是还没付账的那张餐厅菜单价。

悲观成交:先假设自己运气很差

那么,回测的时候,到底该假设自己用什么价格成交?

乐观的人会说:就用当下的中间价(买价和卖价的正中间)、或收盘价吧。但这正是最危险的自我欺骗。真实的市场,不会体贴地在你想买时给你最低价、想卖时给你最高价。它更像一个冷淡的对手:你急着买,它就让你买贵一点;你急着卖,它就让你卖便宜一点。

所以实验室采用保守成交模型:基准情景先用当时可观察的价差、订单方向、挂单或吃单身份、预计规模和历史成交分布估计;再额外设置不利情景与压力情景。买入不能默认拿到只对卖方开放的好价,卖出也不能默认总在高点成交。

这不是把一个固定百分比随手调大,更不是选一个物理上几乎不可能的「宇宙最差价格」来折磨策略。过度悲观也会制造错误结论。关键是每一层假设都能解释、能校准,并与真实小额成交持续对账。

接着做敏感度分析:成本从基准、不利到压力情景逐级上调,净收益怎样变化?若稍微变差就翻负,边际脆弱;若只有在极端、缺乏依据的惩罚下才失败,也不能据此草率判死刑。

能在预先规定、现实可解释的不利情景下仍站得住,才值得进入下一关。

🔬 来自实战的一课

有一次,我们手上有一个看起来平平无奇的信号。第一次回测,用宽松一点的成交假设,它收益还不错,团队里已经有人开始兴奋。

但我们没有急着庆祝,反而按事前写好的阶梯把成交假设收紧:从历史中位成本,上调到较差分位,再进入压力情景;买卖两端都使用与订单方向一致的报价,滑点也按规模与波动提高。它不是随手挑最坏的一笔,而是一个能被数据解释的保守区间。

很多信号经不起这样折腾,数字一收紧,原本的正收益瞬间就被压成负的——那代表它原本的「赚」,赚的其实是我们对成本的乐观,而不是真本事。

但这个信号不一样。在预先规定、由历史成交分布支持的压力情景下,它在当时那套内部评分里仍留下一个小小的正数:+0.66。这个数字不是通用门槛,也不保证未来收益;它只说明那次压力测试还没有把结果压成负值,因此值得继续验证。

那个缩水后仍为正的内部评分,比第一次回测那个漂亮却脆弱的大数字更值得继续调查。真正的希望,不是最好情况下的美梦,而是在预设的不利情景里仍没断的那口气。

⚠️ 常见误区

误区一:把收盘价或中间价直接当成免费成交承诺。 中间价可以是衡量执行偏差的基准,收盘价也可能通过收盘竞价成为真实成交基准;问题在于策略是否在截止时间前已有信号、是否参加了相应竞价,以及成交量是否容得下你。没有执行路径却直接按基准价满额成交,才是那个不存在的客气市场。

误区二:只算手续费,忽略价差和滑点。 手续费是三兄弟里最老实、最好算的一个,所以新手往往只算它,就以为成本算完了。但真正掏空高换手策略的,常常是那两个账单上看不到的兄弟。看不见,不代表不存在;它只是不开收据给你而已。

📌 本章要点

  • 交易成本至少有三部分:手续费、买卖价差与滑点;市场冲击是由自身订单造成的那部分滑点。
  • 成本跟着交易金额和流动性消耗累积:换手率越高,价差、手续费和冲击越容易反复吃掉薄薄的优势。
  • 只有净收益(扣完成本)才会进你口袋;毛收益只是还没付账的菜单价。
  • 保守成交模型要有可解释基准,再设置不利与压力情景;既不能默认拿到好价,也不能用毫无依据的极端惩罚代替建模。
  • 成本模型要避免重复计价,并与小额实盘持续校准;在预设压力下仍未翻负,才值得进入下一关,但仍不是实盘保证。

✍️ 动手试试 / 想一想

  1. 找一条你「听说很赚」的策略,估算它一年的单边换手率。例如全年累计买卖金额相当于平均本金的 40 倍,每一元交易金额的单边综合成本若为 0.05%,粗略成本拖累约为 40 × 0.05% = 2%。先写清成本是单边还是来回、以什么价格为基准,再计算;只拿交易次数相乘,很容易算错。
  2. 想一想:如果有人跟你炫耀一条回测收益惊人的策略,你该问他哪三个问题,才能判断他报的是毛收益还是净收益、他的成交价格假设又有多乐观?把这三个问题写下来,它们以后会帮你挡掉很多美丽的陷阱。

第四部 · 先学会不死 · 第 11 章

风险管理:先想怎么不死,再想怎么赢

假设有一位朋友,我们叫他老陈。今年一到六月,他把十万本金滚成了二十万,整整翻倍,请你吃饭时眉飞色舞地讲他的心得。

然后七月来了。老陈押了一把「很有把握」的大单,方向错了;他不甘心,又加码想摊平一点,市场却没有回头。等他终于认赔出场,二十万只剩四万。

现在陪老陈算一笔残忍的账:他从四万要爬回二十万,需要赚回的不是刚亏掉的 80%,而是 400%。前面六个月每一笔都做对的成果,被七月的一个晚上,连本带利地按了重来键。

这一章,我们先不谈怎么赢,谈一件更根本的事:怎样降低一次错误结束整场游戏的概率。预测能力再强,若风险边界允许账户被一次尾部事件摧毁,那份能力也没有时间兑现。

一、复利很美,归零很痛:一堂不对称的算术课

先把老陈那笔账讲透,因为它是这整章的地基。

复利(compound interest)这个词你一定听过,就是「利滚利」——赚到的钱再投进去继续赚,像滚雪球,滚得越久球越大。但很少人提它的背面:它是一台需要「连续性」才能发威的机器。只要中途撞上一块大石头,雪球就碎了,你得从一小撮雪重新堆起。一次归零,前面所有复利成果,全部作废。

而赚与亏,在数学上是不对称的。你亏掉一半,不是再赚一半就能回本。假设十万亏成五万,你要回到十万,得把手上的五万再翻一倍,也就是赚 100%,不是 50%。为什么?因为百分比是踩在「当下的钱」上算的:亏损时你的本金变小了,同样一个百分比能赚回的绝对金额也跟着缩水。亏得越深,陷阱越可怕:

你亏掉了 要回本,你得赚回
10% 11.1%
20% 25%
50% 100%
80% 400%
90% 900%

亏损越深,回本所需收益按公式 亏损率 ÷ (1 − 亏损率) 加速上升。表格不是说 20% 以下就「轻松」,而是提醒你:损失的路径不对称,越晚控制,后续所需回报越陡。

因此,风险管理既防一次伤筋动骨的大亏,也防许多相关的小亏在同一环境里连续累积。少赚会降低终值;深度回撤会同时缩小本金、放大回本难度,还可能迫使你在最差时点退出。

二、仓位大小:别让任何一颗子弹能要你的命

既然大亏这么致命,第一道防线就是从源头上限制它。这道防线叫仓位大小(position sizing)

「仓位(position)」白话讲,就是你在某一笔交易上放了多少钱。仓位大小要回答的,不是「这一把看起来多诱人」,而是一个更冷静的问题:如果判断错了,这笔交易最多可以伤我多深?

新手常把顺序倒过来。他们先想「这笔很有把握,押多少才能赚得多」;老手先定一笔交易能使用多少风险预算,再由退出条件反推仓位。这个视角翻转,是业余和专业之间的分水岭。

用一个纯粹为了说明算法的例子。假设账户有十万元,你为某笔交易预先分配一千元风险预算;进场价到认错价之间相差 5%。忽略手续费、跳空和滑点时,仓位金额大致是:

风险预算 ÷ 止损距离 = 1,000 ÷ 5% = 20,000 元

如果价格能在计划位置附近退出,账面损失约为一千元。注意这里有两个重要的限定:第一,1% 只是算例,不是给所有人的通用处方;真正的上限要看策略波动、杠杆、流动性、持有期、组合相关性和你能承担的风险。第二,止损价不是成交保证。跳空、流动性枯竭或系统故障,都可能让实际亏损超过预算,所以仓位还要给这些误差留余地。

这套算法最珍贵的地方,是把「你有多看好」和「你该押多少」分开。信心可以影响你是否继续研究,却不该越过已经核准的风险边界。记住这道防线的核心:不要让任何一笔交易,拥有重创整个账户的权力。

三、止损与熔断:两道尽量自动化的闸门

上一节提到「认错出场」。这件事说来简单,做起来却很难,因为它要跟你的人性正面对抗。我们需要两道事先写好的闸门,并尽量让系统执行、让监控确认,不要把最后一刻的决定全交给那个心慌意乱的你。

第一道闸门:止损(stop loss)。 就是「事先写好的退出条件」。它不一定只能是一条固定价格线;也可以是持有时间到期、波动超限,或支撑原假说的条件已经消失。共同点是:你在进场之前就说明,什么变化代表这笔交易不再值得继续。

把止损预先写进规则,是为了防止临场移动球门。但还要多记一层现实:止损能约束你的决定,不能保证你的成交价。 触发之后,订单仍可能遇到跳空、拒单、价差扩大或流动性不足。因此,止损必须和保守仓位、异常监控一起使用,不能把它当成一堵绝不会漏风的墙。

第二道闸门:日内损失熔断(circuit breaker)。 止损管一笔交易,熔断管一段交易时段或整个账户。一旦累计损失、异常订单数或其他风险指标碰到事先核准的边界,系统就停止新增风险,取消能取消的挂单,并通知负责的人复核。

我们的实验室曾把某类账户的单日损失线设在 5%。这个数字是特定资金规模、策略和风险承受能力下的内部选择。真正不可谈判的,不是「一定要 5%」,而是边界必须在冷静时确定,上线后不得因为一句「这次不一样」临时放宽。

⚠️ 常见误区

误区一:「止损就是承认自己菜,高手都是拿得住的。」 止损承认的不是「我很菜」,而是「我不可能每次都对」。真正专业的做法,是先定义判断失效的条件,再把单笔损失限制在组合承受得起的范围内。

误区二:「止损设在心里就好,到时候手动砍。」 只放在脑中的退出条件,最容易在亏损时被重新解释。把它写进规则、尽量自动触发,并检查订单是否真的送出和成交,才算一道完整的闸门。

四、绝不临时扛单:亏损不能替你改大风险预算

这里所说的扛单,不是所有「价格下跌后继续买入」的统称。预先写进策略、总风险上限不变的分批建仓,或按固定规则进行的再平衡,可以是正常设计。真正危险的是另一种动作:仓位已经亏损,原规则没有要求加码,你却为了摊低成本临时把仓位做大,同时把原本的退出条件往后挪。

这种临时加码看起来很有道理。「价格更便宜了」「只要弹一点就能解套」——每一句都像分析,其实常常只是在替不愿认错找理由。它同时做了两件坏事:让风险在证据变差时变大,又让事先写好的止损失去效力。

它之所以特别会骗人,是因为许多小幅回撤确实会反弹。你可能连续几次靠扛单脱身,于是学到一个危险的教训:只要不认错,市场迟早会回来。可一旦遇到持续趋势、跳空或流动性枯竭,累积起来的大仓位会让一次亏损吞掉前面许多次小赢。

所以实验室真正禁止的,是未预先登记、因亏损而临时扩大的风险。要分批买,就在进场前写清每一档的条件、总仓位上限和最终退出线;不能等亏损发生后,再把冲动包装成策略。

五、马丁格尔:把罕见巨亏藏在一串小赢后面

扛单有个更极端、更系统化的亲戚,叫马丁格尔(martingale)。它常被包装成高胜率机器人:每次输了,下一次就把赌注加倍;只要之后赢一把,就能覆盖前面的亏损,还多赚最初那一小份。

数字确实会这样长:1、2、4、8、16……连续输十次后,前面已经亏了 1,023,下一次必须押 1,024,只为了净赚最初的 1。单看某一轮,十连败也许不常见;但你反复开很多轮,总会越来越接近那一次本金、保证金或交易所限额再也接不住的长连败。

更关键的是,加倍下注不会把一场负期望的游戏变成正期望。在有手续费、价差或庄家优势的环境里,每一笔下注原本的劣势仍然存在;马丁格尔只是在改造损益的外形——把许多次小赢,换成少数几次非常大的亏损。它让曲线在很长一段时间里显得平滑、胜率显得惊人,却把真正的风险压到尾部,等一个普通的坏日子一次结算。

在有限本金、有限信用和有限成交能力下,持续使用马丁格尔会累积不可接受的破产风险;交易成本还会让这件事更糟。 这已经足够让它从一套负责任的风险管理系统里出局。

🔬 来自实战的一课:三条写在墙上、不准讨论的规则

在我们实验室的墙上,有三条规则。它们不是「最佳实践建议」,而是被明确标记为「不可谈判」的铁律:

一、碰到前文那条已核准的日内损失线,熔断,收手。 二、禁止未预先登记的亏损加码。 三、禁止马丁格尔式递增仓位。

为什么用这么强硬、甚至有点不近人情的措辞?因为我们吃过亏,也太了解人性了。我们发现:只要一条风险管理规则里留了「特殊情况可以例外」的缝,那个缝迟早会被「上头的你」撑成一扇大门。

你可以想象那个画面:某天市场剧烈波动,一笔单子亏到接近熔断线,一个声音会非常有说服力地说:「这次不一样,这是难得的机会,今天先破例,把熔断关掉。」——它每一次都会说「这次不一样」。而风险管理规则存在的全部意义,恰恰是在这个瞬间,替那个已被贪婪和恐惧绑架的你,做出清醒的决定。

所以我们把这些规则从「建议」升级成「铁律」,写进系统和治理流程。机器负责在核准的边界内不心软;人负责批准上线、资金划拨、风险上限和放大规模这些边界动作。第13章会把这条分工讲清楚。

这听起来很麻烦?确实麻烦。但我们宁可麻烦,也不要某天早上醒来,发现昨晚那个「就破例一次」的自己,把雪球砸碎了。纪律的意义从来不是在你冷静时约束你——冷静的你根本不需要约束。纪律的全部意义,是在你疯狂时拦住你。

六、换个脑袋:把风险当成要先花的预算

最后,我想请你做一次思维翻转,这也是这一章我最想留给你的东西。

大多数新手是这样想的:先找一个很棒的机会,想着它能让我赚多少,然后——如果还记得的话——最后才补一句「哦对了,设个止损吧」。在这个顺序里,风险是事后才想起的附加题。专业的做法,顺序是倒过来的:先分配风险,再去找机会。

打个比方。你每月有固定薪水,懂理财的人会先把预算定下来——房租多少、伙食多少、娱乐多少——再在框框里生活;他不会先疯狂购物,月底才惊恐地看账单问「我到底花了多少」。风险,就是交易世界里的这份预算。你要先根据策略与账户的承受能力,决定单笔、单日和组合层次各能使用多少风险;这些边界在还没有情绪、还没有一笔真钱下场之前就核准,之后所有交易都必须待在框框里。

这个翻转威力惊人。当风险是「事后补的」,它总输给贪婪——在诱人的机会面前,「多押一点」永远比「小心一点」更大声。但当风险是「事先分配好的预算」,它就成了一条所有行动都必须遵守的边界:机会再诱人,也不能超出预算,就像再喜欢的东西,超出这个月的预算就是不能买。

这里正是这本书副标题最具体的落点。悲观者的工具,是先问「这会怎么亏」「实际成交会不会更差」「几道防线同时失效时会怎样」,再把仓位和边界按坏情况设计。乐观者的心,不是相信每一笔都会赢,而是相信只要没有被一次错误赶出场,你就还有下一次学习、修正和等待优势兑现的机会。

风险管理并不负责把坏策略变好。它负责更基础的事:尽量不让任何一个判断,轻易替你结束整场游戏。

📌 本章要点

  • 一次大亏会破坏复利的连续性。 亏 50% 要赚 100% 才回本,亏 90% 要赚 900%;先限制大亏,比追求单次暴利重要。
  • 仓位由风险预算反推。 先定这笔交易最多能伤多深,再结合退出距离、流动性、杠杆和跳空风险计算仓位;书中的百分比只是算例,不是通用处方。
  • 止损约束决定,不保证价格。 退出条件和日内熔断应事先核准、尽量自动化并接受监控;真实成交仍可能比计划更差。
  • 禁止的是临时扛单。 预先设计、总风险不变的分批建仓,不同于亏损后为了摊平成本而擅自扩大仓位。
  • 马丁格尔把尾部风险藏在高胜率后面。 加倍不会把负期望变正;有限本金和交易限制会让长连败最终变得不可承受。
  • 先分配风险,再去找机会。 风险管理不能救活坏策略,但能降低一笔错误结束整场游戏的概率。

✍️ 动手试试 / 想一想

  1. 算一算你的「回本代价」。 假设你有十万本金,分别算算:亏掉 30%、60%、85% 之后,各自要在剩下的钱上赚回百分之几才能回到十万?把这三个数字写下来、盯着看三十秒。这种对不对称的体感,比任何说教都更能保护你。
  2. 替一个假想策略写风险预算。 写下四项内容:(a) 单笔风险上限;(b) 组合与单日上限;(c) 止损触发后可能出现的滑点或跳空余量;(d) 是否允许分批建仓,若允许,总仓位何时封顶。数字必须来自策略波动和你能承受的损失,不能照抄书里的算例。

第四部 · 先学会不死 · 第 12 章

投资组合:别把鸡蛋放在同一个相关性里

一、「我买了十档币,很分散了吧?」

先讲一个场景。

小林是个认真的新手。他读过那句老话:「不要把所有鸡蛋放在同一个篮子里。」于是他很听话,把资金分成十份,买了十档不同的加密货币。他心想:「这下够分散了吧?就算一档出事,我还有另外九档顶着。」

然后,某个周末的深夜,市场出事了。

他打开手机,看见的不是「一档跌、九档撑」的画面。而是——十档,全部一起往下坠。跌幅还都差不多。他那十个「篮子」,在最需要它们各自独立的那一刻,像被同一根绳子绑着的十颗气球,一起泄了气。

小林犯的错,是几乎每个新手都会犯的错:他以为「分散」是一个数数字的游戏。买得够多,就叫分散。

但真相是这样的:如果你的十档币,平常就手牵手一起涨、一起跌,那你买的其实不是十颗蛋。你只是把同一颗蛋,拍照拍了十张,分别放进十个篮子而已。 蛋还是那一颗。它破,十个篮子一起沾满蛋液。

这一章,我们就来把「分散」这件事,从「数量」讲回它真正的核心:相关性

二、分散的真义:重点是相关性,不是数量

先解释一个这章会反复用到的词:相关性(correlation)

相关性描述的是两组收益在一段样本里线性同向或反向变化的程度。用最白话讲:就是「两样东西,有多常一起动」。它看的是共同变化,不只是「有几天方向相同」;而且结果会随频率、窗口和市场状态改变。

  • 如果 A 涨的时候 B 几乎总是跟着涨,A 跌 B 也跟着跌——它们高度正相关。像两个绑在一起走路的人,你走我就走。
  • 如果 A 涨的时候 B 常常反而跌——它们负相关。像跷跷板,一边上去,另一边就下来。
  • 如果 A 的线性变化很难由 B 的变化解释——它们的相关性接近 0。这不等于完全没有关系,更不等于极端时刻不会一起跌。

量化交易圈习惯用一个从 -1 到 +1 的数字来描述它,叫「相关系数」。你不用会算,只要记住三个锚点就好:

+1 = 完全手牵手同步(一模一样地一起动) 0 = 没有明显的线性同步(但不等于彼此完全独立) -1 = 完全反着走(一个上、另一个必定下)

现在,分散化的真义就能一句话讲清楚了:

分散化的威力,不来自你「买了几档」,而来自这些东西彼此之间「有多不一起动」。

我们拿小林的例子把这件事讲透。假设每一档资产,单独看都有一定的波动风险——我们把这个风险想象成「它自己会乱晃的幅度」。

  • 情况 A(小林的情况): 十档币,彼此相关性接近 +1。它们几乎同步。这时候你把十档加在一起,整体的晃动幅度几乎不会变小。因为它们同时往同一个方向晃,力气是叠加的,不是抵消的。你以为分散了,其实整个组合的风险跟你只买一档,差不了多少。
  • 情况 B(更有效的分散): 十档东西的相关性较低,权重也没有让某一档独占风险。这时,一部分涨跌会互相抵消,组合波动通常会低于把资金集中在某个代表性的高风险成员上。

分散化因此常被称为最接近「免费午餐」的工具:它不保证收益不受影响,却能减少组合对单一风险来源的依赖。 真正的好处不是凭空多赚,而是让一项意外不再决定全部结果。

注意那句话里的关键——彼此不太相关。分散的力量藏在「不相关」这四个字里,不藏在「十档」这个数字里。

打个生活比方。你想组一支能应付各种状况的团队。你不会找十个一模一样的人——十个都擅长冲刺、都害怕同一种困难的人。那样的团队,遇到那个困难时会十个一起垮。你会找专长互补的人:有人擅长进攻,有人擅长防守,有人在别人慌乱时特别冷静。互补,才是分散;复制,不是。

所以,下次你听到有人说「我很分散,我买了二十档」,你心里要浮现的第一个问题不是「哇好多」,而是:「这二十档,它们平常是不是一起涨一起跌?」 如果是,那他买的可能只是一档,买了二十遍。

三、为什么危机一来,分散会变弱?

看到这里,你可能会有个很合理的疑问:

「好,我只要挑一堆平常不相关的资产,不就安全了吗?」

问题在于,相关性不是写死的常数。 它会随市场状态、估计窗口和参与者行为改变。平静时期看起来各走各的资产,在流动性紧张或全市场去杠杆时,可能同时被抛售,彼此的相关性显著上升;有些资产之间甚至会短暂接近同涨同跌。

为什么?危机里,许多人卖的不是某一个故事,而是资产负债表上的「风险」:保证金不足要补钱、基金遭遇赎回要变现、交易者只想先换回现金。不同资产于是被同一股资金压力推向同一个方向。

但要说精确一点:不是所有相关性都会在每次危机里自动变成 +1,也不是所有分散都会完全失效。更可靠的结论是:依赖历史低相关性的保护,往往会在压力期缩水。 如果你的组合只有在平静样本里才显得分散,那份安全感就太薄。

因此,做组合不能只看一个全时期平均相关系数。还要看滚动相关性、压力时期、共同流动性来源,以及几项资产是否其实都押在同一个隐藏风险上。分散负责降低日常集中度;上一章的仓位与损失边界,负责在分散变弱时控制伤害。两者互补,谁也替不了谁。

四、多策略、多标的,如何互相补位?

前面讲的多半是「多买几档标的(不同资产)」。但真正老练的做法,还有一层更深的分散:多策略

先解释一下。前面几章我们谈过,一个「策略」就是一条写死的交易规则——在什么条件下买、什么条件下卖。不同的策略,赚的是市场里不同的钱:

  • 有的策略赚「顺势」的钱:涨的时候追进去,赌它继续涨。
  • 有的策略赚「回归」的钱:跌太凶了进场捡,赌它会弹回来。
  • 有的策略赚「价差」的钱:在两个地方之间的微小差价里来回搬砖。

这里有个值得利用的可能性:不同机制的策略,可能在不同的市场天气里发威。

顺势策略在「明显有大趋势」的市场里赚得笑呵呵,但在「上上下下没方向、来回洗盘」的市场里会被反复巴掌,一直亏小钱。而回归策略正好相反——它在来回震荡的盘里如鱼得水,却会在单边狂奔的大趋势里被碾压。

你发现了吗?这两种策略的痛苦时刻有机会错开。 但这不能只靠故事判断,必须用同一时期、同一成本口径下的收益序列去验证。若它们确实低相关,组合才真正得到补位。把它们放在一起,就能互相补位:趋势盘里顺势策略顶上,震荡盘里回归策略顶上,整条组合的资金曲线,会比任何单一策略都平稳。

我想请你把整个实验室多年下来悟到的一句话记在心上:

不要把每一条策略当成一个孤儿单独看待,要把它们当成「一个家族」一起看待。

这是什么意思?意思是:当你手上有好几条策略,你真正该盯着看的,不是每一条各自赚多少,而是它们加起来的那条总曲线,长什么样子

家族里可以有一个成员这个月表现平平,只要在它低潮的时候,有别的成员顶上来、把整个家族撑住,那它就是一个好成员。反过来,如果家族里每个成员都在同一个时间点一起发财、又在同一个时间点一起遭殃——那你其实没有一个家族,你只有一个人,分身成了好几个。回到我们的核心:那又是「同一颗蛋」了,只是这次分身的不是标的,是策略。

所以评估一条新策略时,一个老练的问题不是只问「它自己赚不赚钱?」,而是要多问一句:

「把它加进我现有的这个家族里,整个家族会变得更稳,还是只是又多了一个跟大家一起涨跌的复制品?」

一条净期望仍为正、或具有明确对冲目的,但单独看并不耀眼的策略,若能在别的成员低潮时补位,对组合的贡献可能高于一条只会同步锦上添花的明星策略。

五、钱要怎么分?从「等权」到「风险平价」

好,假设你已经挑好了几个彼此不太相关的成员——不管是标的还是策略。下一个很实际的问题是:

我的钱,要怎么分给它们?

我们从最直觉、最诚实的做法讲起。

做法一:等权(平均分)

最简单的做法,就是每个成员分一样多的钱。有五个成员,每个给 20%。这就叫「等权」。

别小看这个笨方法。它有一个巨大的好处:它不需要你去「预测」谁会表现比较好。 你不用猜、不用算命,就是老老实实地平均分。作为研究基准,等权很有价值:它不需要预测谁会最好,也让复杂分配方法有一个必须打赢的朴素对照。它不是面向所有账户的投资处方,尤其当成员波动与流动性差异很大时,等权仍可能高度集中风险。

等权的盲点:钱平均了,风险没平均

假设你有两个成员,钱对半分,各 50%:

  • 成员 A 是一档温吞的资产,一天顶多晃个 1%。
  • 成员 B 是一档狂野的资产,一天可以晃 10%。

钱是分得很平均没错,一人一半。但风险呢? 你的组合每天的心跳,几乎完全是 B 一个人在主宰——它晃 10%,A 才晃 1%,B 的震荡把 A 彻底淹没了。你以为你「五五分」,实际上组合的大部分波动风险都来自那个狂野的 B。

你分的是钱,但真正决定你晚上睡不睡得着的,是风险。而风险,你根本没分平均。

这就带出第二种思路。

做法二:风险平价(让风险贡献更均衡)

风险平价(risk parity),名字听起来很高级,但它的核心思想朴素到你一定秒懂:

不要只让每个成员分一样多的「钱」,而要设法让它们对组合风险的贡献更均衡。

怎么做?很直觉:对那些晃得凶的成员,少放一点钱;对那些晃得温吞的成员,多放一点钱。 这样调完之后,每个成员对整个组合「制造的震荡」才有机会更接近,也能减少某一个成员独自绑架整条资金曲线的风险。

回到刚刚的例子:狂野的 B 一天晃 10%,温吞的 A 一天晃 1%。若暂时忽略两者相关性,按反波动率的直觉,B 的资金大约只放 A 的十分之一,两者贡献的波动才会接近。这只是入门版直觉,还不是真正完整的风险平价。 正式计算要把相关性放进协方差矩阵,估计每个成员对组合波动的边际贡献。把更多资金分给低波动资产还可能需要杠杆才能达到目标收益或波动,于是融资、保证金和尾部风险也会进入账本。

我用一个生活比方收尾这个概念。想象你在一艘小船上,要安排几位乘客坐哪。你不会让大家随便乱坐,你会让船左右平衡。 一个大块头(高波动资产)你会请他往中间坐、别靠边;几个瘦小的(低波动资产)可以坐外侧一点。你在乎的不是「每个人占的座位面积一样」(那是等权),而是「船不会因为谁一个人而翻」(那是风险平价)。

一句话总结两者的差别:

  • 等权: 每个人分一样大的座位。简单、诚实、不容易自作聪明。
  • 风险平价: 设法让每个人对「船会不会翻」的风险贡献更均衡。它更贴近风险的本质,但需要估计波动与相关性。

务实的研究顺序是:先把等权当基准,再检验更复杂的配置。 若要采用风险平价,还要检查协方差估计是否稳定、再平衡成本是否吃掉好处,以及是否因低波动资产加杠杆而引入新的尾部风险。任何复杂分配法,都该在样本外、扣除成本后证明自己比简单基准更有用。

六、组合层次的风险:单看一条,永远不够

这一章最后,我想把一个贯穿全书的观念,放到「投资组合」这个场景里再敲一次。

新手最容易犯的思考错误,是「零件式」地看待自己的系统:一条策略一条策略地看,一档标的一档标的地看,每一个单独看都不错,于是安心了。

但风险,是一个组合层次(portfolio-level)的东西。它不住在任何单独一个零件里,它住在「所有零件加起来的那个整体」里。

我再说一次前面那个致命场景,因为它值得说两次:你有十条策略,每一条单独回测都漂亮,夏普比率(衡量一块钱风险换回多少收益的分数,第8章详谈)都很好看。你很满意。但如果这十条策略,会在同一种市场天气里一起赚、也一起赔,那么当那种坏天气来临,你面对的不是「十条策略里有几条受伤」,而是「十条策略一起躺平」。你以为自己有十道防线,其实你只有一道,被你抄写了十遍。

所以,判断一个组合健不健康,你不能只读十份漂亮的单独成绩单。你必须把它们叠在一起,去看那条合成的总曲线:

  • 它整体晃得多凶?
  • 在这段样本里,它从历史高点最多跌了多深?(这叫「最大回撤」。它是路径依赖的历史统计,不等于未来最坏损失,却常比平均收益更接近真实的持有压力。)
  • 这些成员,是不是全都挤在同一种「市场天气」上下注?

组合审计不能满足于「每个零件单独看都没问题」。还要做共同冲击、流动性枯竭和相关性上升的压力测试,追问:当几个看似独立的风险同时发作,损失会不会超过账户边界?

分散化不承诺暴富,也挡不住所有系统性冲击。它做的是减少对单一成员和单一机制的依赖,让一次局部意外更不容易决定全部结果。

而「活得够久」这四个字,正是上一章风险管理的出发点;下一章,我们要把这套边界带进真实的上线流程。

⚠️ 常见误区

误区一:「我买得够多,就叫分散。」 错。分散的力量来自成员之间「有多不一起动」(低相关性),不来自你数得出几个名字。十档手牵手一起涨跌的资产,本质上只是一颗蛋分身十次。买之前先问:它们平常是不是同进同退?

误区二:「全时期相关性很低,所以危机时也会保护我。」 不一定。相关性会随市场状态改变,压力期还可能因为共同去杠杆而上升。除了看平均值,还要单独检查滚动窗口和压力样本,并用第11章的组合风险边界承受相关性失灵。

📌 本章要点

  • 分散看的是共同风险,不只是名称数量。 相关系数为 0 只表示线性同步不明显,也不等于完全独立。
  • 分散最接近「免费午餐」,却不是收益保证。 它的价值是减少组合对单一风险来源的依赖,不是凭空增加回报。
  • 相关性会随状态改变。 压力期的共同去杠杆常使低相关保护缩水;要检查滚动相关性和压力样本,不能只看全时期平均值。
  • 多策略要看合成曲线。 一条单独不耀眼、却能在别的策略低潮时补位的成员,可能比同步上涨的明星策略更有价值。
  • 等权是诚实的基准,风险平价关注风险贡献。 反波动率只是直觉版;完整风险贡献还取决于成员之间的协方差。
  • 风险住在组合层次。 把所有仓位叠起来看波动、最大回撤和隐藏的共同暴露,才能知道自己究竟押了几次同一个赌注。

✍️ 动手试试 / 想一想

  1. 翻出你自己(或想象中)的一篮子标的,列出五到十档。用同一频率的收益数据,分别计算普通时期与至少一个压力窗口的相关性,再检查最大共同跌幅和共同流动性来源。不要只凭记忆问「上次是不是一起跌」;把正常样本与压力样本并排,才看得见分散保护是否缩水。
  2. 做一个小小的思想实验: 假设两个成员的日波动分别约为 2% 和 8%。先忽略相关性,用反波动率的直觉估一估该怎么分,才能让两者贡献的波动接近。然后再问一步:如果它们总在同一天同方向大涨大跌,为什么这个粗算仍不够?

第四部 · 先学会不死 · 第 13 章

从研究到实盘:治理、纪律与那道不可逆的门

想象一个画面。

屏幕上,一条回测的权益曲线从左下角一路爬到右上角,漂亮得像教科书的插图。你花了几个星期,清理干净数据、写好信号、算过成本、做过样本外检验,连夏普比率都对得起良心。现在,鼠标光标停在一个按钮上。

这个按钮,和你按过几百次的「执行回测」按钮,长得几乎一模一样。可是这一次,它上面写的是「开始实盘」。

你按过的每一次回测,都可以重来。跑坏了?改个参数,再跑一次;历史还是那段历史,昨天的价格不会因为你赔了钱就变。但「开始实盘」这个按钮不一样。按下去的那一刻,你的程序会对着真正的交易所,用你真正的钱,送出一张真正的单。它成交在哪个价格,就是哪个价格。你不能按 Ctrl+Z。

这就是本章要讲的那道门:纸上谈兵和真金白银之间,隔着一道不可逆的门。 这一部叫「活下去」,前面两章我们谈了怎么做风险管理、怎么分散鸡蛋,这一章要谈的是——当你终于要把研究成果推过这道门、推向真钱,该用什么样的纪律,才不会在门的另一头把自己弄死。

一、纸面通过,不等于现实可执行

第7章已经讲过,回测能帮你淘汰明显站不住脚的想法,却不能替现实成交作保证。走到这一章,我们不再重讲回测是什么,只盯住它和实盘之间那道最容易被忽略的缝。

纸面模型里,行情是整齐的数据;真实市场里,订单要排队、网络会延迟、交易所会拒单,流动性也可能在你最需要时突然变薄。你的程序还可能藏着一个只在实时运行时才出现的 bug。更重要的是,仓位一旦变大,你的订单本身就会改变成交价格。

因此,纸面通过只能换来「进入受控验证」的资格。成交假设、系统稳定性和规模容量,必须在严格限额下逐项测量。目的不是尽快证明策略会赚,而是用最小代价查清纸面世界离现实到底有多远。

这就带出了本章的骨干:分阶段上线。

二、分阶段上线:一阶一阶地下水

没有人第一次学游泳,就直接跳进大海。你会先在浅水区把头泡进水里吐泡泡,再到及腰的地方练打水,确定不会沉,才慢慢往深水区走。把一个策略推向实盘,道理完全一样——分阶段,一阶一阶地放。

第一阶:模拟盘(paper trading)。 用假钱连接实时或近实时行情,先验证接线与状态机:下单、改单、撤单会不会出错?时间戳和仓位能不能对上?行情剧烈跳动时程序会不会崩溃?但模拟成交往往不真实——它可能忽略排队、部分成交和盘口被你吃掉的过程。所以这一阶证明的是「工程流程大致能跑」,不是「实盘也会按同样价格成交」。

第二阶:最小可执行规模真跑。 模拟盘跑顺了,才使用真钱,而且只用交易所允许、又足以产生真实成交摩擦的最小合理规模。金额要小到即使验证失败也不会伤筋动骨。这里第一次测到真实的排队、部分成交、滑点、手续费和拒单。每一笔实盘成交都要与回测假设对齐,而且不能只看平均值:尾部最差的几笔、未成交比例和异常重试,往往比均值更能暴露问题。

第三阶:逐步放大。 小额真跑站得住了,才开始加码。注意,是「逐步」,像上楼梯,一阶一阶,不是搭电梯直达顶楼。为什么不能一次放大?因为小钱赚得到的,大钱未必赚得到。当你的单子变大,你自己就会开始推动价格——你要买,价格就被你买高;你要卖,价格就被你压低。这个「因为自己下单而使价格变差」的现象,叫市场冲击(第10章谈过)。很多策略在小额时漂亮得不得了,一放大就原形毕露,因为它赚的那一点点,还不够付放大后多出来的成本。所以每加码一步,都要重新确认:这个规模下,它还活着吗?站稳了,再上一阶。

你有没有发现,这三阶之间,每一道门槛都有一个「毕业条件」?模拟盘要让预先列出的工程测试通过,不是宣称系统从此无 bug;小额真跑要把现实偏差量出来并落在容许范围;每一次放大,都要重新确认规模没有明显杀死优势。这些「不达标就不准过」的检查站,就是我们接下来要讲的——关卡。

三、治理链:一连串不肯轻易放行的关卡

把上面那些检查站串起来,就是一条治理链(governance)

「治理」这个词听起来很硬,其实意思很生活:就是「这件事该由谁、按什么规矩、在哪个环节说了算」。一条治理链,就是从研究到实盘这一路上,一连串的关卡(gate)——每一关都要「盖章放行」,你的策略才能往前走一步。回测结果诚实吗?盖章。风险管理参数设好了吗?盖章。监控就位了吗?盖章。少一个章,门就不开。

这里有一个很重要的预设,叫 fail-closed,直白翻译是「出事就关」。它主要针对风险关键状态:数据不新鲜、仓位对不上、权限不明、关键检查没通过时,系统默认停止新增风险、拒绝扩容或切换实盘,而不是「先跑了再说」。非关键告警可以降级处理,但哪些属于关键状态必须事先写清。

这跟很多人的直觉相反。我们平常写东西,总希望「不要卡住,能动就好」。但在碰真钱这件事上,方向要反过来:门的预设状态是「关着的」,要有人、有凭有据地把它打开,它才开;一旦有疑虑,它自己就会关回去。宁可错过,不可做错——因为错过一个机会,你顶多扼腕;做错一笔真单,你赔的是真金。

这一整套东西,不是官僚,不是找自己麻烦。它是你在头脑最清醒的时候,替那个未来某天可能会头脑发热、想抄捷径的自己,预先设下的护栏。

四、不可逆的边界:人批准边界,机器在边界内执行

「人在回路中(human-in-the-loop)」常被误解成每一张实盘订单都要有人手动点击。那会把系统化交易重新变成人工交易,也不适合需要及时执行的策略。

更合理的分工是:人批准风险边界,机器在边界内执行。 切换到实盘、发出第一笔真单、增加资金、提高杠杆或仓位上限、扩大交易品种、修改核心策略、开放新的 API 权限——这些会改变损失上限或系统行为的动作,必须有人复核并留下责任记录。通过批准后,日常订单可以在预先规定的标的、规模、频率和损失边界内自动运行。

为什么边界动作要故意保留摩擦?因为它们改变的是系统「最多能伤多深」。机器可以高速执行已核准的规则,却不能替账户所有者决定该承担多少风险。把人工检查放在边界上,既保留自动化的纪律,又避免一套程序在无人察觉时自行扩大权限。

一条成熟的治理链因此要能回答三件事:谁有权打开哪道门?他批准时看了哪些证据?出了问题,能否追溯到那次决定?没有这些记录,所谓「有人负责」就只是一句口号。

五、钥匙不能乱放:凭证与安全

要让程序替你自动交易,你得给它一把钥匙,好让它能替你登录交易所、下单。这把钥匙,叫 API 密钥(API key)——你可以把它想成你家的门禁卡。谁拿到它,谁就能用你的账户做事。

正因为它就是钥匙,有几条纪律,再怎么强调都不为过:

  • 绝不把密钥贴进聊天窗口,也绝不写死在代码里。 更不能上传到公开仓库。应把它放进专门的密钥管理工具或受保护的环境变量,限制谁能读取,并保留轮换和撤销办法。公开泄露的凭证可能被自动化扫描迅速利用,不要指望「删掉就没人看见」。
  • 真钱的密钥和模拟盘的密钥,分开放。 第一阶模拟盘(demo)有一把玩具钥匙,第二阶之后的实盘(live)有一把真钥匙。这两把绝对不要放在同一个抽屉、用同一个名字。因为总有一天你会手忙脚乱,而手忙脚乱的时候最容易拿错钥匙——你以为在模拟盘上测试,其实正在用真钱下单。live 和 demo 从密钥开始就彻底分开,是在替未来某个慌乱的你止血。
  • 给程序的权限,能少就少。 只开放策略确实需要的交易权限,关闭提现;平台支持时,再加 IP 白名单、子账户和额度限制。关闭提现只能减少一种损害,并不能让泄露变得安全——攻击者仍可能用恶意交易制造严重亏损。

这些听起来很基本,但每一条背后,都是有人真的赔过钱换来的。安全措施平常看不出收益,却能把一次凭证错误限制在更小的范围内。它不是唯一的墙,而是多层防线中的一层。

六、上线前,先把仪表板和红色按钮装好

真钱跑起来之前,还有两样东西必须「先」就位——注意是「先」,不是「等出事了再装」。

第一样是监控,你的仪表板和告警系统。它至少要按策略的风险时钟及时显示:当前仓位、已实现与未实现损益、挂单和拒单、数据是否新鲜、与风险上限还有多远。低频策略未必需要人整天盯屏幕,但任何异常都必须在还能采取行动的时间内被发现并升级给负责人。

这里藏着一个特别阴险的坑,值得专门提醒你:最可怕的错,不是会喷一堆红字的错,而是安安静静、不吭一声的错。 程序没报错、画面一切正常,但它其实早就做错了事——也许是某个数字算歪了,也许是它其实一张单都没送出去,你却以为一切照常。这种「不报错的错」往往比显式崩溃更难发现,因为它会让系统在看似正常的状态下持续偏离预期。好的监控要主动确认「它现在做的,真的是我要它做的吗?」除了看程序存活,还要把内部仓位、订单和成交同券商或交易所记录定期对账;重试下单时使用唯一订单标识,避免网络抖动把一张意图重复送成两张真单。

第二样是熔断,你的紧急刹车(kill switch)。触发后,系统首先停止新增风险,取消尚未成交的订单,再按预案尝试减仓或平仓并通知负责人。这里必须诚实说明:熔断不保证能在任何市场里瞬间全平。 交易所宕机、盘口枯竭或价格跳空时,命令也可能失败。因此,自动熔断和手动开关都要定期演练,而仓位上限仍是更前面的第一道防线。

这两样必须在真钱之前装好。出事时才临时找日志、写平仓脚本,通常已经太迟。监控负责尽早发现,熔断负责把继续扩大的风险截住;两者都不能替代事前限额。

⚠️ 常见误区

误区一:「回测赚翻了,我直接上大钱,慢慢来太浪费机会。」 这是一种昂贵的急躁。跳过模拟盘和小额真跑,等于还没量过纸面世界与现实的偏差,就先用本金替它买单。分阶段不是胆小,而是把未知风险拆小。

误区二:「都自动化了,设置好就可以不管了吧?」 自动交易可以无人逐单点击,却不能无人负责。系统需要告警、值守安排、升级路径和明确的所有者;自动化减少手工动作,不取消责任。

🔬 来自实战的一课:凌晨三点,那个停下来的机器

有一间量化研究室,养了一群不眠不休的自动化程序。它们日夜轮班:自己找假说、自己跑回测、自己写程序、自己把结果整理归档。从外面看,像一座没有人的工厂,灯火通明地自己运转。

但这座工厂里有一条谁都不能碰的规矩:任何会改变真钱风险边界的那一下,机器只能准备材料,不能自行批准。

有一夜,一个策略通过了前面所有的关卡,终于准备好要送出它的第一笔真单。你猜系统怎么做?它没有自动成交。它把所有该看的数字——这笔要下多少、预期成交在哪、最坏会赔多少、风险管理上限有没有设好——整整齐齐排好,然后,停在那里。

停在那里,等一个人。

于是凌晨三点,一个睡眼惺忪的人被叫醒,揉着眼睛,一项一项看过那些数字,最后用自己的手指,按下那个确认键。

这个设计很不方便。可这是一笔策略从纸面跨入实盘的第一单,也是风险边界第一次被打开。人核准的不是未来每一张日常订单,而是这一整套自动执行可以活动的范围。范围一旦批准,机器在其中执行;要扩大范围,就重新过门。

这条规矩从来没有因为「太麻烦」而被拿掉。因为每一个做这行够久的人都知道:真正让你活下来的,往往就是这些看起来多余的、不方便的、慢半拍的关卡。

📌 本章要点

  • 纸面通过只换来受控验证资格。 模拟盘验工程,最小可执行规模真跑验成交,逐步放大验容量。
  • 每一阶段都要有预先写好的毕业条件。 不达标就停在原地,不能把「再跑大一点看看」当成验证。
  • 治理链默认 fail-closed。 数据不新鲜、检查不通过或状态说不清楚时,默认停止新增风险,而不是先跑再解释。
  • 人批准边界,机器在边界内执行。 上线、资金划拨、权限、风险上限和扩容需要人工核准;日常订单可以按已批准规则自动运行。
  • 凭证采用最小权限和分层隔离。 关闭提现、使用子账户或白名单能减少损害,却不能消除泄露风险。
  • 监控与熔断必须先于真钱。 熔断可以停新单、撤单并尝试减仓,但无法保证任何市场状态下瞬间全平,所以事前仓位上限仍不可替代。

✍️ 动手试试 / 想一想

  1. 拿出纸笔,替一个假想策略写三阶段毕业条件:模拟盘要通过哪些工程测试?最小规模真跑至少积累多少笔有效成交,其中位滑点、尾部滑点和拒单率要落在哪个预写范围?扩容后哪些指标一旦恶化就退回上一阶?别写「感觉不错就好」。
  2. 想一想:如果有一个工具跟你说「帮你全自动交易,绑定账户、一键开跑、完全不用你管」,听完这一章,你会反问它哪三个问题?(提示:那把密钥有哪些权限?熔断在哪、怎么按?出事的时候,谁负责?)

第五部 · 心态与长路 · 第 14 章

常见的坑与人性:确认偏误、报复性交易与沉没成本

你修得好程序,修得好自己吗?

前面几章,我们花了很多力气谈工具:怎么做回测、怎么算夏普比率、怎么把交易成本算进去。你可能已经隐约觉得,量化交易的难处在于「技术」——写对程序、找对数据、算对统计。

我要老实跟你说一件有点扫兴的事:这门手艺里最难修的 bug,不在你的程序里,在你的脑子里。

程序里的错误至少还有机会被测试、日志或对账暴露。心理偏误更棘手:它不一定让系统报错,反而会替你的决定生成一套顺耳的解释——把该砍掉的策略说成「只是暂时失灵」,把运气说成本事,把该收手的时刻说成难得机会。

这一章,我们不谈程序,谈人。谈那些连最聪明的量化交易员都会掉进去的坑——因为这些坑不是知识问题,是人性问题。而人性,是不会因为你数学好就放过你的。

我们会一个一个拆:为什么你会爱上自己的策略(确认偏误)、为什么亏钱之后会想马上扳回来(报复性交易)、为什么舍不得砍掉烂策略(沉没成本),以及为什么连亏会让你相信下一笔「该赢」、一次好运又会被你穿上本事的外套(赌徒谬误与自利性归因)。最后,我们把这些弱点改写成可以被系统和同伴拦住的路径。

确认偏误:我们天生就会偏心自己的孩子

先讲第一个,也是最根深蒂固的一个:确认偏误(confirmation bias)

一句大白话:确认偏误,就是我们会不自觉地去找「支持自己想法」的证据,而自动忽略「反对自己想法」的证据。

打个生活的比方。你先认定某个品牌特别可靠,之后会主动收藏称赞它的评价;碰到差评,却很快解释成「那个人不会用」或「只是个例」。证据并没有被同一把尺处理——支持你的被留下,反对你的被重新命名。

在量化交易里,这个偏心会变得非常危险。想象你熬了三个周末,好不容易做出一个策略,回测曲线漂漂亮亮往右上爬。这时候你的大脑已经偷偷把它当成「自己的孩子」了。接下来会发生什么?

  • 它表现好的那几个月,你会截图、会反复看,心里想「你看,我就说吧」。
  • 它表现烂的那几个月,你会找理由:「那段时间市场太反常」「那是黑天鹅,不算」。
  • 别人指出它的问题,你会急着辩护,而不是急着查证。

你看,你已经不是在「检验」这个策略了,你是在「维护」它。你把科学家的角色,悄悄换成了律师的角色——律师的工作是替当事人辩护,科学家的工作是找出真相。这两者天差地别。

那实验室是怎么对付确认偏误的?靠一个听起来很反直觉的习惯:先写下什么结果会证明我错,再去看数据。

第6章的证伪契约、第8章的预注册,已经给出技术上的防线。这里要看的是心理层面:一旦你爱上自己的策略,就会本能地替例外找理由、把失败门槛重新解释。白纸黑字的契约不能消灭偏见,却能让偏见留下痕迹;再加上一位没有参与建模的人复核,你才不容易同时当选手、裁判和辩护律师。

⚠️ 常见误区

「我对这个策略很有信心。」——信心可以让你愿意继续查证,却不能替证据加分。你越舍不得它失败,越要提前写下反例、变更理由和反方意见。健康的说法不是「我相信它会成」,而是「我列出了会让它失去支持的条件,到目前为止证据怎样」。

报复性交易:那个想「马上扳回来」的冲动

接下来这个坑,几乎每个碰过真钱的人都掉过:报复性交易(revenge trading)

早上一笔交易亏了,那笔损失像一根刺卡在心里。脑子里冒出一个声音:「不行,我要马上把它赚回来。」于是你放大下一笔仓位,或者去做一笔规则根本没要求的交易——目标不再是执行优势,而是把账户数字恢复到某个让自己舒服的位置。

市场并不知道你早上亏了钱,也不欠你。上一笔损失和下一笔机会之间,必须靠新的机制与证据连接;「我不甘心」不是机制。报复性交易最危险的地方,正是让你在情绪最乱的时候,给自己最大的自由度。

第11章已经讲过日内损失边界,第13章讲过怎样让系统执行。这里补上心理层的原因:边界触发后,人会本能地把停手理解成「认输」,把继续交易理解成「有机会翻身」。因此,真正有效的熔断不仅要停新单,还要制造足够的摩擦——撤销权限、锁住界面、通知同伴——让上头的你不能只靠一次点击把规则关掉。

沉没成本:你舍不得的,其实是那三个周末

第三个坑,和确认偏误是亲戚,但更隐蔽,叫沉没成本谬误(sunk cost fallacy)

一句大白话:沉没成本,就是那些你已经花掉、再也拿不回来的时间、金钱、心力。而「谬误」在于——我们会因为舍不得已经花掉的,而继续往一个烂选择里投更多。

最经典的生活例子:你买了一张电影票,进场十分钟发现这片子烂透了。理性的选择是走人,把剩下的一个半小时拿去做别的。但很多人会想「票都买了,浪费多可惜」,硬是把自己按在椅子上受两小时的罪。那张票的钱,你坐着看或起身走,都一样拿不回来了——它是「沉没」的。可是你为了它,又白白搭进去一个半小时。

在研究里,这个坑长这样:你花了整整三个周末调一个策略,改了几十个版本,它就是不太行。这时候理性的做法是承认「这条路走不通,砍了它」。可是你会想:「我投入了三个周末耶,现在放弃,那三个周末不就白费了吗?」于是你又花了第四个、第五个周末,去抢救一个本来就该放生的东西。

这里藏着一个要命的思考陷阱:你以为你在保护那三个周末,其实你正在赔掉第四个周末。 那三个周末已经花掉了,砍或不砍都拿不回来了;但第四个还在你手上,你正亲手把它扔进同一个坑。

这就要讲到实验室一句我很喜欢的信条了:「否决不是失败。」

新手常有个错觉,觉得砍掉一个策略、承认它不行,就等于三个周末全部打了水漂。更准确的做法,是把过去投入和未来决策分开:那三个周末能否形成知识,取决于你有没有留下可复核的结论;而第四个周末要不要继续,只取决于下一步的预期信息价值,不取决于你已经花了多少。

⚠️ 常见误区

「都做到这里了,再撑一下说不定就成了。」——请你分清楚两件事:一个项目该不该继续,只取决于它从现在往后的预期价值——下一步能增加多少信息、要付多少成本、还有哪些替代项目——跟过去投入了多少没有直接关系。每次你想用「我都花这么多了」当作继续的理由时,警报就该响了。

赌徒谬误与自利性归因:别把运气穿上本事的外套

再来两个孪生的坑,都跟「我们很不会分辨运气和实力」有关。

第一个叫赌徒谬误(gambler's fallacy)

一句大白话:赌徒谬误,就是在没有机制证据时,认定一串结果「该被补回来」——连续开了五次红,就觉得下一把理应开黑。

在每轮独立、概率不变的轮盘里,前五次不会改变第六次。市场当然未必独立同分布,趋势和状态转换都可能存在;但一串连亏本身,不能证明下一笔胜率提高。要加大仓位,你得拿出新的机制和数据,不能拿「总该轮到我了」当理由。

第二个更微妙,是自利性归因偏差(self-serving attribution bias)——我们对好结果和坏结果使用两套解释:赚了,是我厉害;亏了,是运气不好、市场反常。

这套双重标准,会让你系统性地高估自己。想象一个新手,靠着运气重仓押中了一波暴涨,账户翻倍。他很容易把这归功于自己的「眼光」和「胆识」,而不愿认真估计这次结果里有多少运气。于是他学到了一个完全错误的教训:重仓、赌方向、凭感觉,是会赚钱的。然后他会用越来越大的注,去重复这个「成功经验」,直到市场把运气连本带利收回去。

对付这件事,不能只在亏损时查错、盈利时就开香槟。输赢都要过同一套归因审计:事前写下预期,事后拆开市场暴露、成本、执行偏差、异常事件和抽样不确定性;还要问一个反事实——若换一个相近时期或相同风险的基准,这份「本事」还剩多少?

一次盈利当然可能包含真本事,也可能同时含有顺风、杠杆和运气。统一的审计标准不是为了把所有成功都说成偶然,而是防止你只在结果难看时才想起不确定性。

纪律:别要求上头的自己临场变聪明

这些偏误的共同点,不是「人不够懂道理」,而是情绪会改变你怎样解释同一条规则。确认偏误想移动成功标准;报复性交易想绕过损失边界;沉没成本想为旧项目争取无限续命;赌徒谬误想把一串坏结果改写成下一笔加码的理由。

因此,心理纪律不该只写成一句「保持冷静」,而要变成可观察的控制:

  • 研究结果由没有参与建模的人做一次反方复核,防止你同时当选手和裁判。
  • 损失边界触发后,系统撤销新增风险的权限,而不是只弹出一个可以随手关掉的提醒。
  • 项目是否继续,按预先约定的证据和下一步信息价值评审,不按已经投入的工时投票。
  • 任何因连胜、连亏而提高仓位的动作,都必须有独立于这串结果的新证据。

第11章提供风险规则,第13章提供系统与治理实现;这一章提供的是攻击模型——提前知道人会在哪些地方试图破坏它们。纪律真正成熟的标志,不是你从此没有冲动,而是冲动出现时,它拿不到改规则的权限。

📌 本章要点

  • 心理偏误最危险之处,是它不报错,还会替你生成一套听起来很合理的解释。
  • 确认偏误会让研究者只收集支持证据;用事前契约、反方复核和变更记录,让移动球门留下痕迹。
  • 报复性交易把「恢复账户数字」误当成交易目标;损失触发后必须撤销新增风险的权限,不能只靠提醒。
  • 沉没成本让过去投入绑架未来资源;项目是否继续,只看下一步的证据价值,不看已经花了多久。
  • 赌徒谬误把连胜连亏当成下一笔该反转的证明;一串结果只有配上机制与数据,才可能改变概率判断。
  • 自利性归因偏差让人把盈利归功于本事、把亏损推给环境;输赢使用同一套事前标准和归因审计,比自我感觉可靠。

✍️ 动手试试 / 想一想

  1. 替自己的策略写一份反方意见。 不许重复支持它的理由,只写三条最可能让它失效的机制,再标出哪一条证据最容易被你故意忽略。若你一句反方都写不出来,往往不是策略太完美,而是确认偏误已经接管了笔。
  2. 设计一道不靠意志力的摩擦。 假设你在亏损后最容易立刻加仓。请写出一条具体控制:谁或什么系统撤销下单权限、多久后才能恢复、恢复前要看哪些记录。重点不是选一个神奇百分比,而是让冲动出现时没有直接改规则的通道。

第五部 · 心态与长路 · 第 15 章

负结果是知识:像科学家一样持续精进

被划掉的那片海,是怎么赚来的

前面几章已经多次说过:一个想法没有通过,不等于研究没有产出。到这一章,我们把这句话完整展开。

想象一位航海家,手上有一张还没画完的海图。他往西南航行了三个星期,满心期待传说中的岛屿,结果只看见一片空海。他当然可以把海图揉掉,骂自己白费了时间;也可以在正确的位置写下:「在本次航线、季节与观测范围内,没有发现岛。」

第二种写法看起来不够痛快,却更像可靠的研究。它没有把「这次没看见」夸大成「永远不存在」,也没有假装三个星期毫无价值。它精确记录了自己究竟排除了什么,又留下了哪些边界。

量化研究也是这样。你花两个星期清数据、写规则、跑检验,最后发现这个想法不成立。真正决定这两个星期是否白费的,不是结果正负,而是你能不能留下一个别人看得懂、未来的你也不会误解的裁决。

一个你敢信的「不行」,胜过一个你不敢信的「行」

在第8章我们谈过一件残忍的事:你试过的策略越多,其中总会有几个「看起来很赚」纯粹是运气。一条漂亮的正收益曲线,常常只是噪声(noise)穿上了阿尔法(alpha,也就是相对合适基准、考虑相关风险后仍剩下的超额表现)的外套。

所以有经验的研究者,对漂亮的正结果会先保留一层戒心:它可能来自选择偏差、成本漏算或偶然波动。一个做得扎实的负结果同样不能被夸大,但它至少能清楚告诉你,哪一组规格和条件没有得到支持。

这就是「负结果是知识,不是失败」的准确含义。它不是说负结果天然比正结果高贵,而是说:只要检验有足够功效、仪器可靠、裁决边界写得清楚,一个「在这些条件下不成立」就是可以复用的知识。许多这样的边界叠在一起,才会慢慢把研究空间画清楚。

这不是精神胜利法,它有实实在在的现金价值:你这辈子能拿去做研究的时间是有限的,而把时间继续砸在「已知没用」的方向上,才是真正的、会痛的亏损。负结果帮你省下的,正是这种亏损。

贴个「失败」标签,不算完成任务

不过这里有个陷阱,新手特别容易掉进去:把「否决一个想法」当成「完成了一件工作」。

想象你手上有个假说(hypothesis):「比特币在半夜大跌之后,接下来一小时通常会反弹。」你跑了回测,发现不赚钱。于是你在笔记本上写下三个字:「没用。」翻页,下一个。

这样做,你其实几乎什么都没学到。

我们有另一句话,专门对付这种偷懒:否决不是完成任务的捷径;精确定位知识的边界,才算完成任务。 杀掉一个想法的时候,你至少要能回答三个问题:

  • 被证伪的,到底是哪一句话?是「大跌后会反弹」整件事都不成立?还是只有「半夜这个时段」不成立,而白天你根本还没测?
  • 还活着的是哪一句?也许「大跌后反弹」在币种 A 上死透了,但你连币种 B 都还没看一眼。
  • 有没有更便宜的下一步?既然这条路堵死了,最省力的那条岔路在哪里?

你看,同样是「这个策略不赚钱」,草率的人翻页就走,严谨的人却能从中榨出一张地图:哪扇门关了、哪扇门还没推、下一步最该推哪一扇。前者两个星期换来一个「没用」;后者两个星期换来三个有方向的新问题。差别不在聪不聪明,在有没有纪律。

四种「其实你还没证伪」

在你大笔一挥写下「证伪」两个字之前,务必先停一下。很多时候,你以为你证明了想法是错的,其实你只是……没测好。这里有四种最常见的「假证伪」,请把它们刻进骨子里。

未检验 ≠ 证伪。 你光是「瞄了一眼觉得不对」就把想法丢了,这不叫负结果,这叫没有结果。就像你站在湖边斩钉截铁说「这湖里肯定没有鱼」,可是你连钓竿都没放下去。没撒过网,就没有资格说海里没有鱼。

统计功效不足 ≠ 无效。 这里要教你一个新词:统计功效(statistical power)。白话说,它是在某个真实效应大小、噪声水平和检验设计下,测试把效应识别出来的能力。它不是一个脱离问题的固定分数:你想找的效应越小、样本越少、噪声越大,手电筒就越暗。照不到东西,不代表房间里是空的;样本很少却大声宣布「无效」,是新手常见的误判。

仪器失败 ≠ 机制失败。 你的数据里藏了一个 bug、你的程序不小心偷看到了未来(这叫未来函数 / lookahead bias,见第5章)、交易所返回给你的历史数据其实被偷偷截断了……这些统统是「仪器坏了」,不是「想法错了」。天文学家的望远镜镜片脏了、看不见星星,他不会下结论说「宇宙里没有星星」——他会先去擦镜片。你的第一反应也该是这样:先怀疑工具,再怀疑想法。

执行不可行 ≠ 统计效应不存在。 这是最微妙的一种。数据里也许存在一个可重复的价格效应,但把价差、滑点和容量算进去后,净收益仍为负。此时准确的结论是:「在当前市场、规模与执行方式下不可交易。」它不能被包装成可赚钱的信号,也不等于那个统计效应从未出现。将来若市场结构或执行条件改变,可以按新规格重新检验。

这四句话有一个共同的灵魂:未获检验,不等于证伪;统计功效不足,不等于无效;仪器失败,不等于机制失败;执行不可行,不等于统计效应不存在。把它们分清楚,你才不会手一抖,把一片其实有宝藏的海,错画成一片死海。

反题,是下一轮的原料

当你扎扎实实地证伪了一个想法,一件很妙的事会发生:那个「为什么会失败」的原因,常常直接指向下一个更好的想法。这就是我最想送给你的一句心法——反题,就是下一轮的原料。

回到刚刚那个「大跌后反弹」的例子。假设你认真测完,整体确实不赚钱;但你多看了一眼,注意到亏损似乎集中在「大跌同时爆出巨量」的时刻。这个观察可以变成下一轮原料——也许该研究「大跌但没爆量时是否更容易修复」。

但请立刻给它贴上探索性发现的标签。这个条件是看完结果后才长出来的,不能倒过来假装原假说已经预测过它;它必须进入试验总账,重新写机制与裁决条件,再用未参与这次观察的数据验证。否则,所谓「从失败中找到新方向」很容易退化成第8章的数据窥探。

负结果的价值,不在于它会自动吐出真答案,而在于它把下一问缩得更精确。一个懂得把反题登记成新假说的研究者,会逐步积累可检验的问题;一个只会盖「没用」章、或事后把切片说成先见的人,都没有真正往前走。

把这一切,变成一本日志

那要怎么确保负结果真的留下知识?答案朴实到有点扫兴:写日志。

给自己准备一本研究日志(research log),它可以只是一个纯文本文件。若这轮是确认性检验,动手前锁定假说、预注册版本、数据范围和一组完整规格;若这轮是探索,就先写清允许搜索的范围,并把试过的每个变体都记账。测试完成后,再补上四件事:实际结果、没有得到支持的命题、仍未被检验的边界,以及下一个最便宜的试验。

预注册负责锁住事前承诺,研究日志负责保存事后裁决。两者不是同一份文件的重复说明:前者回答「我原本赌什么」,后者回答「证据最后改变了什么」。

日积月累,这本日志就长成了你私人的航海图。半年后回头翻,你会知道哪些海域已经认真探过、当时为何停手,也不会因为忘记而重新烧掉同一段时间。

真实的研究生活,是在一大片负结果之间,偶尔冒出一个站得住脚的正结果。把注意力放在「地图今天清楚了哪一点」,而不是「今天有没有挖到圣杯」,你才走得远。

⚠️ 常见误区

「这策略没用,删掉!」 一个负结果,如果没有记下「被证伪的是哪一句、还活着的是哪一句」,它的知识就跟着程序代码一起被你删光了。你不但没往前走,还很可能三个月后又灵光一闪想到同一个点子,再白白烧掉一次两个星期。

「我测了,没效,所以这想法是错的。」 先回头对照那四种假证伪:你是真的测了,还是只瞄了一眼(未检验)?你的样本大到足以看出效应吗(统计功效)?会不会是数据或程序坏了(仪器)?会不会存在统计效应、但在当前成本与规模下不可交易(执行)?在排除这四种可能之前,你手上的还不是「证伪」,只是「这一次没看到」。

🔬 来自实战的一课:停手,但不判死刑

我们实验室曾经追到一个看起来很有戏的信号。数据干净、逻辑讲得通,小规模的初步测试也给了正面的迹象。团队很兴奋,几乎就要往前推了。

但有一个风险,我们当下怎么样都排除不掉——姑且说,是「这个现象会不会只在某种特殊的市场状态下才成立,一换环境就消失」的疑虑。我们手上的数据,还不足以回答这个问题。

这时候,两条路摆在面前。

第一条路,是很多人会直觉选的:既然有个没解决的问题卡在那,干脆就当它是死的,在笔记上打个大叉,「此路不通」,然后永远不再回头。

第二条路,是我们选的,也是这一章的灵魂:我们把「钱」的决定和「知识」的决定,狠狠切开。就钱而言,我们喊停——一分钱都不投,因为带着一个未解的风险上场,违反第11章已经定下的风险纪律。但就知识而言,我们拒绝替这个洞见判死刑。我们没有写「这想法是错的」,也没有写「信号已经成立」。我们写下:「初步证据仍值得保留;资金停手,是因为风险 X 尚未排除。若将来拿到 Y 数据,就预先登记一轮能够区分这两种解释的检验。」

几个月后,我们真的等到了那种数据。而那个洞见,还好端端地躺在日志里等着我们——没有被当初草率的一个大叉,活埋掉。

这一课可以浓缩成一句话:资金可以因为一项未解的风险而停下,但研究线索不该仅因一个未解问题就被草率判死。 停止承担风险,和停止保存问题,是两种不同的决定。把它们分清楚,你才不会一边守住本金,一边把未来可验证的线索也删掉。

📌 本章要点

  • 负结果是知识,不是失败。 但它必须写成有边界的裁决:在什么规格、样本与功效下没有得到支持,不能从一次没看见跳到「永远不存在」。
  • 否决不是完成任务;能精确说出「被证伪的是哪句、还活着的是哪句、下一个最便宜的试验是什么」,才算完成。
  • 四个千万别搞混:未检验 ≠ 证伪、统计功效不足 ≠ 无效、仪器失败 ≠ 机制失败、执行不可行 ≠ 统计效应不存在。
  • 反题可以成为下一轮原料,但事后长出的条件只能算探索性新假说,必须重新登记并用新证据检验。
  • 钱的决定和知识的决定要分开:资金可因未解风险而停手,研究线索不应仅因未解问题被草率判死。
  • 写研究日志:动手前记录假说与预注册版本,做完后记下裁决边界和下一步。

✍️ 动手试试 / 想一想

  1. 替一个「失败」补写结案报告。 找一个你曾经放弃的想法(哪怕只是「我觉得某条均线很准,但试了没用」),试着替它补写三行:我当初到底证伪了哪句话?还有哪一句其实根本没测?如果重来,最便宜的下一步是什么?你会发现,光是逼自己回答这三道题,那个「失败」就悄悄变回了原料。
  2. 当一次「四种假证伪」侦探。 想象你朋友兴冲冲跑来说:「我测过了,XX 策略根本没用。」你要当那个扫兴但可靠的朋友,针对四种假证伪各问他一个问题。把这四个问题写下来——然后记住:这张清单,以后请务必先拿来问你自己,再拿去问别人。

第五部 · 心态与长路 · 第 16 章

找到你的角落:规模匹配、容量与真正的护城河

读到这里,你可能有点泄气。

我们在第2章说过,市场几乎是有效的;明显的钱很难长久躺在原地。这一路上,我又不停地泼你冷水:回测会骗人、漂亮的夏普比率可能只是噪声、成交没那么便宜,许多想法会在验证中被淘汰。你大概会忍不住想:那些管理巨额资金、拥有专业团队和更快系统的机构都在场上了,一个新手、一台笔记本、有限本金,到底还有什么位置?

我想先诚实地说:如果你打算跟他们在同一片海域、用同一种方式、抢同一群鱼——那你确实没什么机会。

但你不必那样做。这最后一章要讨论的,不是一个「机构绝不会来」的神秘角落,而是怎样选择与你的规模、时间、数据和执行条件相匹配的问题

别去大船的猎场撒网

想象一片海。最肥美的深海渔场上,停着一整排工业拖网渔船。它们有声呐、有几公里长的渔网、有能在海上待三个月的冷冻舱。那是聪明钱的猎场。你划着一艘小舢板进去,跟它们抢同一群金枪鱼,结果只有一个:被碾过去,连水花都看不见。

可是,这片海不是只有深海渔场。

海岸边有无数个小小的潮池、礁石缝、退潮后才露出来的洼地。那里也有鱼、有虾、有蟹——只是量很小。小到什么程度?小到那些拖网船根本不屑一顾:开过去的柴油钱都不够、大网子伸不进石缝、就算把这一洼全捞光,也填不满冷冻舱的一个角落,不值得船长多看一眼。

这些角落并不专属于你,也不保证有鱼。它们只是可能因为容量、固定运营成本或组织流程而不适合大型资金。对小体量研究者而言,这是一条值得检查的线索。

这里有个关键词,我们得好好认识——容量。

容量:一个机会装得下多少钱

容量(capacity),白话说就是「一个策略能放进多少资金,而预期净收益不会因为市场冲击、流动性和拥挤而明显恶化」。它不是一个永久不变的上限;行情、对手和执行方式一变,容量也会变。

打个比方。巷口那家小面馆,一碗招牌牛肉面真好吃、真赚钱。但它一天只有二十张桌子、老板娘一个人煮。你今天给她投一千万,叫她明天服务一万个客人,她做得到吗?做不到。硬要冲量,汤头就垮了、品质全毁——那个「好吃又赚钱」的优势,会被你自己灌进去的钱撑爆。

市场里的机会也一样。有些信号在小规模时还能覆盖成本,资金一放大,自己的订单就推高买价、压低卖价,第10章讲过的市场冲击会把边际优势吃掉。

对大型基金来说,一个容量只占其资产极小比例的机会,即使收益率不错,也未必足以覆盖研究、合规、接入和运维的固定成本;对小账户来说,同一容量却可能具有实际意义。这只是一个规模匹配问题,不是说机构看不见。

因此,小体量有时会成为结构性优势。 你的订单更不容易惊动市场,也能研究绝对利润不够大的题目。但小体量同时意味着数据、基础设施、议价能力和分散能力较弱;它是一项可利用的条件,不是超能力。

冷门和艰深:可能的错位,不是护身符

除了容量,有些题目还会因为数据脏、接入麻烦、持有期不合组织考核,或固定成本相对利润太高而被放在一边。

真正可能形成错位的,是难度与容量的组合:清洗三周数据只换来一个装不下太多资金的机会,对大团队未必划算;对愿意做细活的小团队,也许值得。反过来,热门市场不一定完全没有机会,冷门市场也不一定有可交易价值。

实验室因此会优先筛选与自身资源匹配的题目:机制说得通,数据拿得到,容量虽小但足够,执行成本也有机会被覆盖。不是因为石缝天然有宝,而是因为在那里,你的约束可能没那么吃亏。

严谨:护城河的地基

好,就算你找到一个冷门的小角落,你凭什么守得住?这就要讲这一章、也是这整本书最想留给你的一个词:护城河。

护城河(moat),借自城堡外面那圈水:它是一种「别人很难抄走、能让你的优势撑得久一点」的东西。一个真正的优势,不能只是「我今天比较幸运」,得是「就算别人看到了,也不容易复制」。

新手最容易误会的是:以为护城河一定来自「更聪明的点子」「更快的机器」「更神的公式」。这些,你确实比不过大机构。

但还有一层你能亲手搭建的基础——严谨。

回想这本书一路教你的功课:确认性检验先锁定规格;探索过多少变体就如实记账;漂亮夏普要接受选择偏差与分布形态的审计;成交模型要用可校准的不利情景;样本外证据没有出现前,结论不能升级。

这些功课不性感。它们慢、无聊,还常常亲手把漂亮结果降级。许多人会跳过它们,于是同一个假阳性反复消耗时间和本金。

严谨的价值是减少假阳性、保存可复用知识、让执行与风险不背叛研究。真正的护城河往往是数据或接入、机制理解、容量错位、执行细节和纪律的组合。

能力先于机会:先把本事练好,机会才接得住

你可能会问:那我现在就得马上找到那个赚钱的角落吗?

不。我想给你一个听起来有点违反直觉、却很重要的顺序:先把能力建好,再等机会上门。

消防队在没有火警的时候做什么?他们擦车、保养水管、反复演练。渔夫在休渔期做什么?补网。他们都不是闲着,而是在机会还没出现的时候,先把执行能力准备好——这样真的失火了、鱼汛真的来了,他们才接得住。

做研究也一样。真正值得继续验证的信号并不常见,而且有些会随竞争和市场状态衰减。如果等它出现了,你才手忙脚乱地去搭回测环境、补风险管理规则、学怎么清数据——等你弄好,机会早跑了,或者你仓促上阵,反而把本金赔进去。

所以,趁你还没有动用重要本金时,先去建那套本事:一个诚实的回测流程、一组经过核准且不能临时放宽的风险边界、一套处理干净数据和对账的习惯。这些东西不会因为本周没有收益就白费——它们是你的网和水管,是机会出现时能否安全验证的重要条件。

能力先于机会。先把流程练到可信,机会出现时才不会用仓促替自己制造风险。

把好奇心和纪律,都变成习惯

走到这里,你手上一直有两具引擎。

好奇心负责生问题,带你去看别人嫌小、嫌脏、嫌麻烦的角落;纪律负责决定哪些问题值得继续、哪些结果只能判作噪声、哪些风险绝不进入真钱账户。只靠好奇心,你会不停追亮点;只靠纪律,你可能严谨到什么都不敢试。

两者都不能只靠当天的心情。纪律要落实为第11章和第13章的风险边界、审批与监控;好奇心则要有固定的研究节奏——定期收集问题、每次只推进一个可裁决的试验、把结果写进日志。这样,负结果不会把你赶出研究,漂亮结果也不能让你跳过关卡。

真正可持续的状态,不是永远兴奋,而是无论这轮结果好不好,你都知道下一步该做什么、又知道哪一步绝不能做。

临别的路线图:接下来的三步

这是最后一章了,我不想用漂亮话收尾,想给你一张真的能照着走的地图。就三步,别急,慢慢来。

第一步:先学会不死。

别急着赚。先在模拟环境里练接线、监控和熔断,再按第13章的治理链进入最小可执行规模。仓位、损失边界和扩容条件都沿用第11章已经核准的规则。这一步的目标不是证明系统永远安全,而是用故障注入和对账确认:在已预见的坏情景里,它会停、会报,不会擅自放大风险。

第二步:挑一个与你匹配的问题,诚实地做完一次研究。

选一个你真心好奇、机制说得通,而且数据、时间尺度、容量与执行条件都和你的资源匹配的小题目。只选一个,按第6到第10章的顺序走完整个循环:写下假说与裁决条件,锁定确认性规格,回测,做统计检查,再把成本算进去。重点不是第一次就赢,而是得到一份经得起复核的裁决。

第三步:把它变成习惯,慢慢画出你自己的地图。

然后,再来一次。把每一次裁决写进研究日志:什么被否定、什么仍未检验、下一个最便宜的试验是什么。你积累的不是一串「试过很多」的履历,而是一套不会反复踩回同一个坑的判断记录。

这三步,没有一步要求你先变得比机构更聪明、更快或更有钱。它们要求的是另一种更可控的优势:题目选得合身,检验做得诚实,风险边界守得住。

你不需要证明自己能征服整个市场。先找到一个值得认真回答的小问题,把它做完,把结论留下。然后再做下一个。

⚠️ 常见误区

误区一:以为要赢,就得在速度和规模上正面击败大机构。 不必把战场选在自己结构性吃亏的地方。更务实的做法是找与自身规模、周期、数据和执行能力匹配的问题。但不要据此想象机构完全缺席;任何正结果仍要接受竞争、容量和成本检验。

误区二:一看到「冷门」就以为是机会。 冷门既不是必要条件,也不是充分条件。热门市场里可能存在风险溢价或不同周期的机会;冷门角落也可能只是没有流动性、没有机制。冷门最多是一条线索,真正决定是否值得继续的,仍是机制、证据、净收益和容量。

📌 本章要点

  • 不要在速度与规模上选择自己结构性吃亏的战场;优先找与自身资金、周期、数据和执行能力匹配的问题。
  • 小体量有时能减少市场冲击、容纳低容量题目,但也伴随基础设施和分散能力较弱的限制。
  • 严谨不会制造阿尔法;它负责减少假阳性、保存知识,并让数据、执行与风险不背叛研究。
  • 真正的护城河通常来自机制、数据或接入、容量错位、执行细节与纪律的组合。
  • 能力先于机会:先把数据、回测、风险边界和上线治理练成可靠流程。
  • 接下来三步:先学会不死 → 挑一个匹配的问题诚实做完研究 → 变成习惯,累积你的方向地图。

✍️ 动手试试 / 想一想

  1. 画出三个候选问题。拿张纸,写下三个与你的规模和能力可能匹配的题目。对每一个都回答五问:谁可能在付这笔钱?机制为何持续?数据能否按当时视角取得?扣完成本还剩什么?容量对你够不够、又会在多大规模下衰减?答不出其中两三项,它还不是角落,只是一个名字。
  2. 诊断你的两具引擎。好奇心和纪律,哪一具是你天生的强项,哪一具比较弱?(爱乱试的人通常纪律弱,想很多却不敢动手的人通常把好奇心绑住了。)针对比较弱的那一具,替自己设计一条具体的规矩——比如「每个点子动手前,先写下一句证伪条件」,或「每个月至少认真检验一个允许失败的新问题」。把它写下来,贴在看得到的地方。

卷末

结语:悲观者的工具,乐观者的心

还记得你翻开第一页时,心里期待的是什么吗?

我猜,多少带着一点「也许这本书里,藏着一条能让我赚到钱的路」的念头。如果是这样,我大概得先跟你说声抱歉——因为读到这里你已经发现,这本书从头到尾,没有给你任何一条可以照抄的策略、任何一个保证有效的指标、任何一组「买在这、卖在那」的明牌。

这本书真正想留下的,是一种做事的姿态:悲观者的工具,乐观者的心。

把悲观用在方法上。数据可能有错,回测可能偷看未来,漂亮成绩可能只是你试得够多,成交也可能比模型更差。把这些怀疑写进流程,让结论经得起反方攻击,让真钱只能在事先批准的边界里活动。

把乐观留给继续研究这件事。一个想法被否定,不等于你不适合做研究;它只说明这次规格没有得到支持。把边界记清楚,问出下一个更便宜、更精确的问题,你就没有原地踏步。

但别只靠「我想通了」。风险边界要写进系统,研究裁决要写进日志。前者防你在兴奋时跳级,后者防你在失望时把知识一起删掉。

合上书以后,今天就做一件小事:找一个本子,写下日期、一个你真心好奇的假说,再写一句「看到什么结果,我就承认这次没有得到支持」。先别看数据。这个动作不赚钱,却会改变你以后怎样判断自己有没有骗自己。

我们的咖啡就喝到这里。前面没有水晶球,也没有圣杯;只有一张会被你用证据一点点改准的地图。

愿你把悲观留给方法,把乐观留给继续走下去的心。

卷末

附录A:量化术语小词典

本词典收录正文中的核心术语,按主题分成七组。每条先给一个适合新手的白话定义,再补上最容易被讲错的边界。它是全书的术语权威:正文若出现简称或比喻,以这里的主词与含义为准。

定义为了入门做过压缩,不等于完整的法律、交易所或统计规范。遇到具体市场时,仍要以该市场的合约、费率和规则为准。

一、市场与交易

交易方式与风险暴露

  • 量化交易(quantitative trading) — 以数据、统计或数学模型辅助研究和决策的交易方式。它常常是系统化的,但两者不完全同义:量化流程也可能保留人工判断。
  • 系统化交易(systematic trading) — 把进场、出场、仓位和执行写成可重复规则的交易方式。规则可以很简单,不一定使用复杂模型。
  • 主观交易(discretionary trading) — 由交易者根据经验与当下信息作出判断。它不等于随意交易,但若规则没有充分写清,就更难回测、复制和审计。
  • 策略(strategy) — 一整套可执行设计,至少包括交易对象、信号、仓位、退出、成本假设和风险边界。信号只是其中一个零件。
  • 做多 / 多头(long) — 建立价格上涨时受益的风险暴露。现货里通常是先买后卖;衍生品也能形成多头。
  • 做空 / 空头(short) — 建立价格下跌时受益的风险暴露。可以通过借入后卖出,也可以通过期货、期权等衍生品实现;不同工具的成本与风险不同。
  • 杠杆(leverage) — 让经济风险暴露大于实际投入资本。它可能来自借款或衍生品,会同时放大盈利、亏损和强制平仓风险。
  • 保证金(margin) — 为维持杠杆仓位而抵押的资金或资产。市场不利时可能需要追加;不足时,平台可按规则减仓或强制平仓。
  • 爆仓 / 强制平仓(liquidation) — 保证金不足或触发平台风险规则后,仓位被强制关闭。成交价可能很差,也不保证剩余本金完整。

行情与常用指标

  • K线 / 开高低收(candlestick / OHLC) — 用开盘、最高、最低、收盘四个价格概括一段时间的行情。它是压缩后的摘要,不包含这一段内所有成交顺序。
  • 成交量(volume) — 一段时间内实际成交的数量或金额。量大不自动等于流动性好;价差、深度和可成交规模仍要单独检查。
  • 波动率(volatility) — 收益上下变化的幅度。它是风险的一种尺度,不是风险的全部;跳空、流动性和尾部损失可能没有被充分反映。
  • 收益率 / 年化收益(return / annualized return) — 赚赔相对本金或价格的比例;年化是按约定方法换算到一年。不同频率、复利方式和样本长度会影响可比性。
  • 均线(moving average) — 最近若干期价格的移动平均,用来平滑短期波动。它是描述工具,不是天然的预测器。
  • 均线交叉(moving average crossover) — 以短、长均线交叉产生信号的一类规则。正文用它示范规则化,不是把某组天数当成有效策略推荐。

订单簿与微观结构

  • 订单簿(order book) — 按价格排列的可见限价买单与卖单。隐藏订单、场外意图和随时可能撤掉的挂单未必都在其中。
  • 深度(depth) — 各价格档位上可见的挂单数量。可见深度会变化、会撤单,不能被当成保证能成交的库存。
  • 买卖价差 / 价差(bid-ask spread) — 最佳卖价与最佳买价之间的差。要求立即成交时,通常要付出跨越价差的成本。
  • 流动性(liquidity) — 在有限时间内交易一定规模、又不造成过大成本的能力。它同时涉及价差、深度、成交速度、韧性和市场状态。
  • 限价单(limit order) — 设定最差可接受价格的订单。它保证价格边界,不保证成交;若价格穿过盘口,限价单也可能立即成交并成为吃单。
  • 市价单(market order) — 优先追求尽快成交、但不设价格上限或下限的订单。它可能部分成交、被拒绝或在极端行情中拿到很差的价格,因此不是无条件成交保证。
  • 挂单方(maker) — 按交易所判定规则,订单先进入订单簿并增加流动性的一方。maker 是费率与撮合身份,不等于专业做市商。
  • 吃单方(taker) — 订单立即与现有挂单成交、移除流动性的一方。市价单通常是 taker,可立即成交的限价单也可能是 taker。
  • 市场冲击(market impact) — 自己的订单改变了可成交价格或后续报价。它随规模、速度、深度和市场状态变化,是滑点的一种来源。
  • 滑点(slippage) — 实际成交价相对事先选定基准价格的偏差。基准必须写清;网络延迟、行情变化、部分成交和市场冲击都可能造成滑点。完全没成交应另记为未成交与机会成本。
  • 微观结构(market microstructure) — 研究订单怎样进入、排队、撮合、撤销和形成价格的领域。它解释「屏幕价格」为何不等于你的实际成交。

交易成本

  • 交易成本(transaction cost) — 为建立、调整和退出仓位付出的全部摩擦,包括手续费、价差、滑点,以及视市场而定的税费、融券费、资金费率、融资和基础设施费用。
  • 手续费(commission / fee) — 券商、交易所、清算或平台收取的费用。它可能按固定金额、成交金额、层级或 maker/taker 身份计算。
  • 换手率(turnover) — 一段时间内交易金额相对组合规模的比例。它衡量的是交易了多少风险暴露,不是简单数订单笔数。
  • 毛收益(gross return) — 尚未扣除交易和融资等成本的策略收益。
  • 净收益(net return) — 按同一口径扣除相关成本后的收益。研究策略能否交易,主要看净结果而非毛结果。
  • 负和游戏(negative-sum game) — 在一个主要由参与者之间转移损益的封闭交易比较里,成本会使参与者合计结果低于成本前水平。它不等于说所有长期投资、企业创造价值或市场整体回报都必然为负。

市场效率与机会

  • 效率市场假说(EMH) — 关于价格在多大程度上反映可得信息的一组假说。它不声称价格永远正确,而是提醒你:公开、明显、低成本的超额收益很难长期保留。
  • 阿尔法 / 超额收益(alpha) — 相对明确基准、并控制相关风险暴露后剩余的收益。观测到正 alpha 不自动证明来自技能;估计误差、选择偏差和成本仍要审计。
  • 聪明钱(smart money) — 对专业、信息充分或执行能力较强参与者的口语称呼。这个标签不保证他们总是正确,也不能替代对具体机制的分析。
  • 套利(arbitrage) — 通过相互抵消的头寸锁定或近似锁定价格差,理想定义要求扣除成本后几乎无风险。市场口语中许多「套利」其实是相对价值交易,仍有基差、融资、执行和尾部风险。
  • 市场异象(market anomaly) — 与某个基准模型或简单效率解释不一致、并在数据中反复出现的现象。异象可能来自风险补偿、行为、制度、数据问题或竞争后衰减,不是自动可交易的 alpha。

二、数据

  • 垃圾进,垃圾出(garbage in, garbage out) — 输入数据有错,再精密的模型也会把错误加工成更像答案的结果。
  • 时间戳(timestamp) — 记录事件发生、发布、接收或入库时间的标签。不同时间含义不能混用;时区也必须统一。
  • 当时视角(point-in-time) — 回到历史某一决策时刻,只使用当时已经可获得的版本与名单。后来修订的数据不能倒灌进过去。
  • 前视偏差 / 未来函数(lookahead bias) — 决策使用了当时尚不可知的信息,或让信号、订单和成交的时间顺序倒置。它常把回测变得虚假地好看。
  • 幸存者偏差(survivorship bias) — 样本只保留后来仍存在的标的、基金或账户,遗漏退市、关闭和失败者,因而系统性美化历史结果。
  • 静默失败(silent failure) — 系统没有显式报错,却已停止更新、错位、漏数或偏离预期。它需要对账、覆盖率和新鲜度检查主动发现。

三、研究方法

  • 假说(hypothesis) — 可以被数据或观察检验的命题,例如「条件 A 出现后,未来收益分布会怎样变化」。
  • 假设(assumption) — 模型、机制或计算所依赖的前提,例如「成交成本在这一规模下近似稳定」。假设不等于待检验的主命题,但假设错了会改变结论。
  • 可证伪性(falsifiability) — 一个命题在原则上存在与之冲突的观察结果。怎样都能解释成正确的说法,无法形成清楚的研究裁决。
  • 证伪(falsification) — 用预先说明的证据标准发现某个精确命题没有得到支持。它不会自动证明相反命题,也不能把未检验的变体一起判死。
  • 证伪契约 — 查看结果前写下的裁决条件:测什么、什么算不支持、哪些边界不在本轮范围。它用来防止事后移动球门。
  • 机制假说(mechanism hypothesis) — 对现象为何存在的经济、行为或制度解释。机制能提高外推可信度、帮助设计反证,但说得通不等于已经被证明。
  • 研究循环(research loop) — 提出问题、准备数据、定义规格、回测、统计审计、成本与风险检查、形成裁决,再把新问题登记进下一轮的过程。
  • 回测(backtesting) — 用历史数据按可执行时间顺序模拟策略。它适合粗筛和比较,不保证未来表现或真实成交。
  • 悲观成交 / 保守成交模型(pessimistic or conservative fill model) — 先建立可解释的基准成交,再用有数据依据的不利与压力情景检查结果。它不是随手把成本调到极端,也不能重复计算价差和滑点。
  • 样本内(in-sample) — 用于探索、建模和选择规格的数据。这里可以试错,但所有尝试都要记账。
  • 样本外(out-of-sample) — 未参与当前模型选择、用来检验外推的数据。反复根据它改规则会使其逐渐失去样本外身份;它不是一张永远有效的魔法试卷。
  • 信号(signal) — 策略对未来方向或相对强弱的数值表达。它可以是做多/做空/不动,也可以是连续分数、概率或排序。
  • 因子(factor) — 用于解释或预测一组资产共同收益差异的系统性变量或暴露。因子常可形成组合并接受跨标的检验。
  • 特征(feature) — 输入模型的可观察变量。特征可能只是工程输入,不一定具有因子的经济含义、横截面结构或可交易暴露。
  • 参数(parameter) — 规则或模型中需要设定或估计的数值。确认性检验应冻结完整规格;探索多个参数可以,但每个变体必须进入试验总账。
  • 稳健性检查(robustness check) — 改变合理邻域、样本、定义或实现后,结论是否仍大致成立。稳健不是证明,单点最优也不是自动造假。
  • 消融实验(ablation) — 删除或替换一个组件,观察它的增量贡献。组件之间可能相互作用,所以「拿掉没差」也要结合联合测试解释。
  • 对照组 / 基准(control / benchmark) — 与策略比较的参照。好的基准应匹配主要风险、持有期和成本,而不是故意挑一个必输的笨对手。
  • 曲线拟合(curve fitting) — 为贴合已见数据不断增加自由度。拟合本身是建模工具;问题在于把样本噪声当成可外推规律。
  • 研究日志(research log) — 保存事前规格、所有探索变体、数据版本、代码版本、结果、裁决边界和下一步问题的记录。它让负结果能被复用,也让事后改口留下痕迹。

四、统计严谨

  • 过度拟合(overfitting) — 模型过度学习样本中的偶然细节,导致样本内漂亮、换数据后失效。自由度、选择次数和样本信息量共同决定风险,不是「复杂模型必然有罪」。
  • 多重检定(multiple testing) — 同一研究家族里做很多检验时,至少出现一个偶然好结果的机会会上升。相关检验不等于彼此独立,但仍需统一记账与校正。
  • 数据窥探(data snooping) — 反复查看同一数据、据结果改条件,最后只报告最好看的版本。探索本身没有错;把探索结果冒充事前确认才是问题。
  • 条件收益 / 条件切片(conditional return / subgroup analysis) — 只在某个时段、状态或子样本计算的结果。每一次数据驱动切片都会增加选择自由度,应纳入同一研究家族;它们通常不是相互独立的试验。
  • 统计功效(statistical power) — 在给定真实效应大小、噪声、样本和检验方法时,测试识别该效应的能力。功效低时,「没显著」不能被直接翻译成「没有效应」。
  • 显著水平(significance level) — 在零假设与检验条件成立时,允许单次检验误报的长期比例。5% 不表示「结果有 95% 概率是真的」,也不表示可赚钱。
  • 权益曲线(equity curve) — 把账户或策略净值随时间画成的路径。好看的曲线是描述,不是独立证据;随机过程也能产生平滑上坡。
  • 假绿(false green) — 测试显示全部通过,实际却没有覆盖关键行为,甚至程序什么都没做。验证必须包含会故意触发失败的负向测试。
  • 预注册(pre-registration) — 在确认性检验前锁定假说、规格、主要指标和裁决规则。它不禁止探索,而是要求把探索与确认清楚分开。
  • 夏普比率(Sharpe ratio) — 一般以超额平均收益除以收益波动,常按年化表达。它不完整描述偏度、尾部、流动性和最大回撤,也会受样本长度与序列相关影响。
  • 去膨胀夏普比率 / DSR(Deflated Sharpe Ratio) — 在解释观测夏普时,考虑策略选择、多重尝试以及收益分布偏度和峰度等因素的统计修正。它不是把夏普按试验次数做简单除法,也不能替代独立验证。

五、风险、资金与组合

  • 仓位(position) — 对某个标的或策略的方向性风险暴露,可用数量、名义金额或风险单位表示,不只是「花了多少钱」。
  • 仓位大小(position sizing) — 把风险预算、退出距离、波动、流动性、杠杆和组合暴露转成实际仓位的过程。
  • 风险预算(risk budget) — 事先分配给单笔、策略、资产或整个组合的可承受风险。它是边界,不是盈利目标。
  • 止损(stop loss) — 事先定义的退出或降险条件,可以是价格、时间、波动或假说失效。它约束决策,不保证实际成交在触发价。
  • 最大回撤(maximum drawdown) — 在给定净值路径中,从历史高点到随后低点的最大跌幅。它依赖样本与路径,不是未来最坏损失上限。
  • 损失熔断(circuit breaker) — 损失、异常或其他风险指标触及核准边界后,停止新增风险并进入复核的规则。具体阈值应按策略与账户确定,书中的百分比仅是案例。
  • 临时扛单 / 亏损后加码(ad hoc averaging down) — 原规格没有要求,却因亏损和不甘心临时扩大风险、后移退出条件。它不同于事前登记、总风险封顶的分批建仓或再平衡。
  • 马丁格尔(martingale betting) — 亏损后按递增序列放大下注,试图用下一次盈利覆盖过去亏损。它不会把负期望变正,会把风险压进少数巨大尾部损失;有限本金与交易限制使其不可持续。
  • 复利(compounding) — 收益继续参与后续投资,使资金按乘法路径变化。深度亏损会缩小基数,因此回本所需收益高于原亏损率。
  • 相关性(correlation) — 两组收益在线性意义上共同变化的程度,通常在 -1 到 +1 之间。0 不等于独立,相关性也会随频率、窗口和市场状态改变。
  • 协方差(covariance) — 同时结合两项收益共同变化方向与各自尺度的量。组合风险与风险贡献计算通常依赖协方差矩阵。
  • 分散化(diversification) — 组合不同风险来源,减少对单一成员或机制的依赖。它不能保证不亏,压力期保护也可能缩水。
  • 等权(equal weight) — 给每个成员相同资金权重的配置。它是有价值的简单基准,但不保证风险均衡或适合所有账户。
  • 风险平价(risk parity) — 设法让成员对组合风险的贡献更均衡。完整计算需考虑协方差,并检查再平衡成本、杠杆、融资和尾部风险。
  • 组合层次(portfolio-level) — 从所有仓位合起来看风险、成本和限制。单个策略安全,不代表多个相关策略叠加后仍安全。
  • 容量(capacity) — 策略在预期净收益被市场冲击、流动性和拥挤明显侵蚀前,能部署的资金规模。容量会随市场与执行变化。

六、心态与研究行为

  • 确认偏误(confirmation bias) — 对支持自己观点的证据更宽容,对反对证据更苛刻,从而让同一命题永远逃过裁决。
  • 报复性交易(revenge trading) — 为尽快把亏损「赚回来」而偏离原规则、扩大自由度或仓位。账户过去的损失不是下一笔的新机制。
  • 沉没成本谬误(sunk cost fallacy) — 因为舍不得已经无法收回的投入,继续把未来资源放进低价值项目。继续与否应看未来预期价值。
  • 赌徒谬误(gambler's fallacy) — 在没有新机制证据时,认定连胜或连亏必须被下一次结果补偿。市场可能有依赖结构,但个人亏损序列本身不提高下一笔胜率。
  • 自利性归因偏差(self-serving attribution bias) — 把好结果归功于能力、坏结果归因于环境或运气。输赢应接受同一套事前标准和归因审计。
  • 护城河(moat) — 能让优势较难被复制或侵蚀的组合条件,可能来自数据、接入、机制、容量、执行和组织纪律。严谨是地基,不会单独制造 alpha。

七、治理与实盘执行

  • 治理链 / 治理(governance) — 从研究到实盘规定谁能批准什么、需要哪些证据、何时必须停止或升级复核的一套责任与控制。
  • 关卡(gate) — 只有达到事先写明的毕业条件,策略才可进入下一阶段。关卡应留下版本、证据和批准记录。
  • 模拟盘 / 纸上交易(paper trading) — 用实时行情模拟订单但不承担真实损益。它适合验证接线和流程,不能完整复制排队、市场冲击和心理压力。
  • fail-closed(风险关键状态下默认关闭) — 数据不新鲜、仓位对不上、权限不明等关键条件异常时,系统默认停止新增风险或拒绝扩容。非关键告警可降级处理,关键状态必须事先定义。
  • 人在回路中(human-in-the-loop) — 人负责批准实盘切换、资金、风险上限、权限和核心策略变更;机器可以在已批准边界内自动执行日常订单。它不等于每一笔自动订单都必须人工点击。
  • 监控与对账(monitoring and reconciliation) — 按策略风险时钟检查数据、仓位、订单、成交和损益,并把内部记录与券商或交易所记录核对。只看程序「还活着」不够。
  • 紧急停止(kill switch) — 触发后停止新增风险、取消可取消订单,并按预案尝试减仓或平仓。它不保证在宕机、跳空或流动性枯竭时瞬间全平。
  • API 密钥(API key) — 程序访问交易账户的凭证。应使用秘密管理、最小权限、live/demo 隔离、轮换和撤销机制;交易程序通常不应拥有提现权限。

卷末

附录B:新手上路检查清单与延伸阅读

这份附录保留的是有意重复。正文负责解释为什么,清单只负责在你兴奋、疲惫或赶时间时,把最容易漏掉的动作重新摆到眼前。

每一项都不是「打勾就安全」的保证。它更像起飞前检查:不能替你判断天气,却能避免因为忘了关舱门而出事。任何一项没有答案,默认动作不是硬填一个「是」,而是停下来补证据。

清单一:开始一项研究之前(对应第5、6、8章)

A. 先说明这轮到底在做什么

  • [ ] 我已经标明这轮是探索还是确认。探索可以找方向;确认才用于检验已经锁定的命题。
  • [ ] 假说能用一句话写清:什么信息在何时可见、触发什么条件、预测哪个未来区间、方向与衡量指标是什么?
  • [ ] 我写出了至少一个说得通的机制,也写出了两个可能产生同样现象的替代解释?
  • [ ] 裁决条件在看结果前已经写好:什么算没有得到支持,哪些边界本轮根本没检验?
  • [ ] 若是确认性检验,完整规格、主要指标和判断规则已预注册;若是探索,允许搜索的范围和每个变体都会进入日志?
  • [ ] 我区分了「统计上看得见」和「经济上值得交易」:即使效应存在,它是否大到足以覆盖成本与风险?

B. 再拷问数据

  • [ ] 每个字段的事件时间、发布时间、我实际可获得的时间都分得清,没有把后来公布的数字塞回过去?
  • [ ] 标的池、指数成分、财报修订和退市样本都按当时视角保存,没有只留下后来活着的成员?
  • [ ] 时区、交易日、夏令时、时间戳含义和数据频率已经统一?
  • [ ] 缺口、重复值、异常值、分页上限、回溯上限和接口截断都主动检查过,不是只看程序有没有报错?
  • [ ] 数据写入后做过读回与覆盖率验证,确认后续流程真的能按正确时间取到它?
  • [ ] 我能说清这份数据没有覆盖什么。不知道缺失边界,就还不能把它叫完整样本。

清单二:回测与统计审计时(对应第7、8、9、10章)

A. 时间顺序与研究规格

  • [ ] 观察、信号、下单、成交四个时间点逐项审过;没有同一根 K 线里先看完结果、再假装早已成交?
  • [ ] 探索过的参数、筛选条件、时间窗口和标的子集全部进入同一研究总账,没有只留下赢家?
  • [ ] 确认性规格已经冻结;任何看完结果后的修改都被标成新版本,不回写成原计划?
  • [ ] 样本内外按时间顺序切分,并记录样本外数据是否已被反复查看。被用来改规则的数据不再假装纯样本外?
  • [ ] 参数邻域、不同市场状态和合理定义变化下,结果没有只靠一个尖锐单点存活?
  • [ ] 消融与对照使用匹配的风险、持有期和成本口径;复杂策略确实比简单基准增加了可复核价值?

B. 统计诚实

  • [ ] 我事先定义了研究家族:哪些策略、参数和条件切片属于同一批尝试?
  • [ ] 条件收益和事后分组没有被当成免费发现;相关切片虽不独立,仍计入选择过程?
  • [ ] 我报告的不只是「显著/不显著」,还包括效应大小、样本不确定性和在当前功效下能排除多大的效应?
  • [ ] 夏普比率的样本长度、序列相关、偏度和尾部风险有交代,没有把一个数字当成完整风险画像?
  • [ ] 若从许多候选中挑出最好成绩,已用合适的多重检定、DSR 或新数据确认来降低选择偏差?
  • [ ] 一条漂亮曲线只被当成描述,没有被当成独立证据?

C. 成本、成交与容量

  • [ ] 成交基准写清楚了:中间价、到达价、开盘/收盘竞价或其他基准,策略当时真的有路径拿到它?
  • [ ] 手续费、价差、滑点、融资、融券、资金费率和税费按市场需要纳入,也检查过有没有重复计价?
  • [ ] 换手率按交易金额相对组合规模计算,不是只数订单或「来回几次」?
  • [ ] 基准、不利和压力成本情景都有历史成交或市场结构依据,没有用乐观许愿,也没有用不可能的极端惩罚替代建模?
  • [ ] 未成交、部分成交和机会成本单独记录,没有全部塞进一个模糊的「滑点」数字?
  • [ ] 规模放大后重新估过市场冲击和容量,没有假设小额结果可以线性复制到大额?

D. 防止「假绿」

  • [ ] 我故意喂过错误时间戳、缺字段、重复订单和越界仓位,确认系统会在该失败的地方失败?
  • [ ] 测试不仅检查「没报错」,还检查交易数、仓位、损益、拒单和风险状态是否符合预期?
  • [ ] 关键计算有独立实现、手算样例或不变量交叉验证,不是整条链都相信同一份可能有错的代码?
  • [ ] 回测绿灯只换来进入受控验证的资格,没有被当成实盘许可证?

清单三:碰真钱与扩容之前(对应第11、12、13、14章)

A. 风险边界先于机会

  • [ ] 单笔、策略、资产、单日和组合层风险上限都来自账户承受力与策略分布,不是照抄书中的 1% 或 5% 算例?
  • [ ] 仓位计算已给跳空、价差扩大、拒单、杠杆和相关仓位同时受伤留出余量?
  • [ ] 退出条件写清楚,也写了触发后无法按计划价格成交时怎么办?我没有把止损当成成交保证?
  • [ ] 任何分批建仓都在进场前登记,总风险封顶;亏损后不得为了摊平成本临时扩仓或后移退出线?
  • [ ] 马丁格尔式递增仓位被明确禁止,不会用一串高胜率掩盖尾部破产风险?
  • [ ] 组合已做共同冲击、相关性上升和流动性枯竭的压力测试,不是只看每个策略单独安全?

B. 分阶段上线

  • [ ] 模拟盘先验证行情、时钟、订单状态、拒单、重连、监控和风险规则,而不是用假成交证明会赚钱?
  • [ ] 真钱从最小可执行规模开始:足够产生真实摩擦,又小到验证失败不会伤筋动骨?
  • [ ] 小额实盘逐笔对齐回测:成交偏差、部分成交、未成交、费用和异常重试都在记录?
  • [ ] 每次扩容都有量化毕业条件;规模、标的、杠杆或频率改变后重新估成本、容量和风险?

C. 治理与变更控制

  • [ ] 哪些状态属于风险关键状态已经写明;数据不新鲜、仓位对不上、权限不明时默认停止新增风险或拒绝扩容?
  • [ ] 人负责批准实盘切换、资金、风险上限、权限、核心策略和扩容;日常订单只在已批准边界内自动执行?
  • [ ] 每次上线都有版本、批准人、证据包和回滚方案,没有在生产环境里临时改参数又不留痕?
  • [ ] 触发边界后,恢复交易需要独立复核,不能由刚刚触发熔断的同一个冲动决定一键解除?

D. 监控、安全与紧急停止

  • [ ] 监控按策略风险时钟显示数据新鲜度、仓位、订单、成交、损益和离风险边界的距离,异常能及时升级到负责人?
  • [ ] 内部仓位、订单与成交会同券商或交易所定期对账;重试订单使用唯一标识,避免同一意图被重复执行?
  • [ ] 紧急停止已演练:它会停止新增风险、取消可取消订单并按预案降险;我也清楚它不保证任何市场里瞬间全平?
  • [ ] API 密钥进入秘密管理系统,live 与 demo 隔离,采用最小权限、轮换和撤销;交易程序没有不必要的提现权限?
  • [ ] 交易所宕机、网络中断、行情源停止和本地系统失联时,各自的降级与人工接管步骤都写在运行手册里?

新手最容易犯的十个错(速记)

  1. 先看数据,后写假说。 结果出来才决定自己原本想测什么,等于把探索伪装成预测。(第6、8章)
  2. 时间穿越。 信号、订单和成交顺序倒置,或使用当时尚未公布、后来才修订的数据。(第5、7章)
  3. 只留下幸存者。 用今天仍在交易的名单回看过去,把退市、关闭和失败样本从分母里删掉。(第2、5章)
  4. 探索不记账。 试了许多参数与条件,只交最好的一张成绩单,再把它叫作「原始策略」。(第8、9章)
  5. 把显著当成真实与可交易。 忽略多重检定、统计功效、效应大小和净收益。(第8、10、15章)
  6. 成本口径混乱。 漏算融资与滑点,或把价差同时塞进滑点再扣一遍;只数交易次数、不算换手金额。(第4、10章)
  7. 相信假绿。 测试全过,却没有故意触发失败,也没确认系统真的下了该下的单、拒了该拒的风险。(第7、13章)
  8. 把止损当保证,把例外当勇气。 忽略跳空和流动性,触发后又用「这次不一样」放宽边界。(第11、14章)
  9. 亏损后临时扩大风险。 未预先登记的摊平、后移退出线和马丁格尔,会把尾部损失藏在一串小赢后面。(第11章)
  10. 从回测直接跳到大额自动化。 跳过最小规模真跑、对账、权限隔离和紧急停止演练,把工程问题留给本金发现。(第13章)

还有一个不列号、却最隐形的错:把「很忙」当成「有进展」。 115 次代码提交、0 个真正实验的故事提醒你:动作量不是知识增量。每天该问的是「多了几个能复核的结论」,不是「做了多少事」。(第3章)

延伸阅读:按问题往下走

下面列的是主题入口,不是「读完就能赚钱」的书单。优先读与你当前问题直接相关的一两本,并核对你实际拿到的版本与译名。

一、随机性、判断与尾部风险

  • Nassim Nicholas Taleb, Fooled by RandomnessThe Black Swan
  • Daniel Kahneman, Thinking, Fast and Slow

为什么读:帮助你分辨运气、样本选择、过度自信与尾部事件,对应第2、8、14章。

二、系统化交易的完整流程

  • Ernest P. Chan, Quantitative TradingAlgorithmic Trading
  • Robert Carver, Systematic Trading
  • Andreas F. Clenow, Following the Trend
  • Perry J. Kaufman, Trading Systems and Methods

为什么读:从规则、仓位、成本到执行,看一套系统怎样被写完整,对应第1、3、9、11、13章。

三、回测过拟合与统计检验

  • David Aronson, Evidence-Based Technical Analysis
  • David H. Bailey、Jonathan Borwein、Marcos López de Prado 等关于回测过拟合概率与去膨胀夏普比率的论文。
  • Marcos López de Prado, Advances in Financial Machine Learning

为什么读:深入理解多重检定、策略选择偏差、DSR 与金融数据的特殊统计问题,对应第7、8、15章。

四、市场微观结构与交易成本

  • Larry Harris, Trading and Exchanges: Market Microstructure for Practitioners

为什么读:把订单簿、流动性、价差、市场冲击和执行基准连成一套完整语言,对应第4、10章。

五、仓位、杠杆与风险预算

  • Kelly 准则及 Edward O. Thorp 关于其投资应用的相关著作与论文。
  • Van K. Tharp, Trade Your Way to Financial Freedom 中关于仓位大小的部分。
  • Robert Carver 关于风险目标、杠杆和组合配置的著作。

为什么读:把「先想怎么不死」转成可计算的仓位与组合边界。Kelly 对优势估计误差极敏感,实务研究通常会考虑分数 Kelly,而不是把公式当成满仓指令。

六、科学方法与研究诚实

  • Karl Popper, The Logic of Scientific Discovery
  • Richard Feynman, “Cargo Cult Science”。

为什么读:理解可证伪性、辅助假设和形式正确却缺乏诚实检验的研究,对应第6、15章。

七、投资组合与预期收益

  • Antti Ilmanen, Expected Returns
  • Richard Grinold 与 Ronald Kahn, Active Portfolio Management

为什么读:进一步学习风险暴露、相关性、组合构建和预期收益,对应第12章。先把前面的数据与统计纪律练熟,再读这一组会更有收获。

这份附录到此结束。需要理论时回正文,需要行动时逐项检查。清单真正有用的时刻,往往不是你精神最好、最冷静的时候,而是你最想跳过它的时候。