很多人第一次接触量化交易的时候,心里想的基本都是同一件事:写一套 python 量化交易策略代码,回测跑出漂亮曲线,挂到服务器上全自动运行,然后自己躺在沙滩上等钱进账。我在量化团队里待了这些年,见过太多抱着这个想法进来的人,也见过太多策略从回测惊艳到实盘失语的全过程。今天想聊一个不太舒服、但每一位做量化的人都迟早要面对的事实:真正的 Alpha,恰恰是你永远无法写进“全自动代码”里的那部分。
这篇文章不会教你如何写一个具体的策略,它更想帮你建立一个关于量化的底层认知。适合三类人:打算进入量化交易领域的新手、已经有策略但在实盘中反复受挫的进阶者,以及那些迷信“AI自动炒股”“全自动交易躺赚”的朋友。读完你会明白,全自动代码能封装的永远是纪律和执行,而不是超额收益本身。
1. Alpha是什么,以及它为什么天生“活不久”
1.1 Alpha的三个来源:信息、认知与执行
在量化语境里,Alpha 指的是剥离市场整体涨跌(Beta)之后,策略真正跑赢基准的那部分收益。很多人把这个词挂在嘴边,却很少认真拆解它的来源。按我在行业里的观察,Alpha 主要来自三个方向:
- 信息优势:你比别人更早、更准地知道某些事情。比如产业链数据、卫星图像、电商销售流水、专利变更记录。信息优势的典型特征是“你有别人没有”,或者“你比别人早”。
- 认知优势:大家看到的是同一份数据,但你能更快、更正确地解读它。比如同一条财报消息,有人看到的是利润增长,有人看到的是应收账款异常膨胀,后者的解读更接近真相,就能形成认知差。
- 执行优势:下单速度更快、交易成本更低、风控更严格。这类优势能让你的想法不打折扣地变成成交,但它本身不创造新信息,只是减少损耗。
请注意,前两类 Alpha 才是真正的超额收益来源,而它们恰好都和“人”有关,而不是和“代码”有关。信息优势依赖你去挖掘不为人知的数据源,认知优势依赖你对某个行业、某种商业模式的理解深度。这是代码无法凭空生成的。
1.2 套利者的行为决定了Alpha必然衰减
很多新手最不理解的一件事是:为什么一个明明很赚钱的策略,做着做着就不赚钱了?答案很简单,因为 Alpha 不是一个永恒存在于某个角落的宝藏,而是一个会被市场参与者的行为不断侵蚀的“鱼塘”。
打个比方:假设一个鱼塘里有一群鱼,只有一个渔夫知道这个位置,他可以每天安静地捞鱼,收益非常丰厚。这就是 Alpha 的早期阶段。但鱼塘的消息总有一天会传出去,哪怕不是你泄露的,也会因为你的持续交易行为被其他聪明人察觉到。于是第二个渔夫来了,第三个也来了,鱼塘边很快站满了人。鱼还是那些鱼,但捕捞者的数量翻了十倍,每个人分到的自然就少了,最后甚至有人开始亏钱。
量化行业一模一样。一个有效的因子被发现后,会有越来越多的资金涌入,直到该因子暴露的定价错误被填平。策略的衰减速度取决于两个变量:一是策略的资金容量,容量越小的策略死得越快;二是信息的公开程度,越容易被复制的逻辑,被套利吞噬的速度就越快。这不是偶然事件,而是必然规律。
1.3 代码擅长封装“已知规律”,Alpha天然排斥“已知”
理解了衰减规律之后,再回头看“全自动代码”这件事,就会发现一个根本性的矛盾:代码的本质,是把已有的认知固化为流程——你知道某类信号出现后价格大概率上涨,就把这个规则写进 if 条件里,自动化执行。但当你把认知固化下来的那一刻,市场就已经开始“投票”了:这个规律正在被更多人使用,它的有效性正在被消耗。
我见过很多策略研究员面对这个事实时的痛苦:花两三个月挖出来的因子,上生产之后可能只有几个月的相对优势期,然后就开始衰减。这不是策略写得不好,也不是代码有 bug,而是因为“可被代码化的规律”本质上就是“已经被市场吸收的规律”。真正的 Alpha 一定是尚未被广泛认知、尚未被代码化的东西,它天然排斥“已知”。
所以,当你把一个 Alpha 策略写成了全自动代码,你做的事情其实是:把一个曾经是 Alpha 的东西变成了一个现在只是 Beta 或 Beta+ 的东西。代码固化得越完美,这个转化的速度就越快。
2. 全自动代码真正擅长的是纪律,不是智慧
2.1 自动化能做到的:纪律、速度与情绪隔离
先给全自动代码一个公平的评价。在量化交易里,自动化确实解决了很多实践问题,而且解决得非常出色。但解决的都是“执行”层面的问题,不是“认知”层面的问题。
- 止损纪律:人最大的毛病是亏钱时舍不得割肉,总想着“再拿一拿就回本了”。代码不会犹豫,止损线到了就执行,这就是纪律。
- 仓位控制:人容易在连续盈利后加注上头,代码不会,它只按模块里写好的规则分配资金。
- 交易速度:人工下单以秒计,程序化交易以毫秒甚至微秒计,尤其在日内高频场景里,速度本身就是执行优势。
- 情绪隔离:人看到净值回撤容易失眠、手抖、乱改参数,代码不会恐慌。它能保证策略在一个相对稳定的状态下运行。
这些都很重要,但请务必想清楚:它们不是 Alpha,它们是防止 Alpha 被消耗的“基础设施”。我甚至见过一些散户,策略本身很平庸,但因为用了自动化,终于克服了“手痒、扛单、追涨杀跌”的老毛病,反而开始稳定盈利。这说明自动化最大的价值,往往是把你从一个糟糕的交易者变成一个守规矩的交易者,而不是把你变成一个天才。
2.2 回测里的未来信息:一个制造伪Alpha的重灾区
说到全自动代码,就绕不开回测,而回测是全自动交易里最容易自欺欺人的环节。网上有一个搜索热词叫“量化泄露未来信息”,说的正是这个问题,它在专业领域有个更正式的名字:前视偏差(Look-ahead Bias)。
前视偏差的实现方式非常多,而且每一个用代码写起来都“丝滑顺畅”:
- 用了未来数据回填:比如用当天的收盘数据去计算开盘时的信号,这在代码里可能只是顺序写错了一行的问题,但回测曲线会好看到让你怀疑人生。
- 幸存者样本偏差:回测时用的股票池是今天还活着的股票,那些退市的、暴跌的股票被被剔除掉了,曲线自然漂亮。
- 用同一段数据既训练又测试:部分参数是看完整段历史后选出来的最优值,等于拿着答案去考试。回测成绩当然好,但实盘是真正的开卷考,题还全变了。
这些问题的共同特征是什么?它们都藏在代码逻辑的细节里,肉眼很难发现,机器也不会报错。你跑回测,得到一条惊艳的收益曲线,以为自己找到了 Alpha,但实际上你只是做了一个非常高明的数据幻觉。等到实盘资金进去,市场会用最诚实的方式告诉你:这份 Alpha 从来就不存在。
2.3 信号可以自动生成,但信号能不能信,不能
还有一层更隐蔽的边界,我把它放在这一小节单独说:一套全自动代码,可以做到每天定时扫描行情、计算因子、生成买卖信号、自动下单、自动风控,但这套流水线里有一个环节永远无法被真正自动化——“当前这个信号,在当下的市场环境里,是否还值得被信赖?”
你可能会说:我可以把判断规则写进代码啊,比如“当波动率超过某个阈值时暂停开仓”“当指数跌破年线时全部清仓”。确实可以,而且这也是一套风控逻辑。但问题是,新出现的市场环境往往会绕过你所有的预设规则。你预设了波动率阈值,结果市场出现了你从未见过的流动性危机;你预设了政策冲击的处理方式,结果来了一个完全不同类型的政策冲击。
这里的本质是:规则只能覆盖已经发生的事情,而市场永远在创造新的事情。代码可以帮你执行一个你已经想清楚的决策,但它无法替你想清楚那个决策本身是否还成立。这是我在量化行业里反复观察到的、也是很多纯技术背景的开发者最容易低估的一个问题。
3. 一次真实的策略生命周期:从漂亮回测到悄无声息
3.1 一个朴素策略的回测:人人都想复制的好看曲线
光讲道理太抽象,我讲一个相对典型的案例吧。之前团队里一位同事,用一套逻辑比较简单的中小市值策略,回测了将近十年,年化收益率相当可观,夏普比率做到了 2.3 左右。什么是夏普比率 2.3 的概念?简单说,就是“每承担一单位波动,能换回来 2.3 个单位的超额回报”。对大多数公募基金来说,夏普比率能到 1 以上就是非常优秀的水平,2.3 基本上属于“圣杯候选”级别。
当时团队开会,所有人都盯着那条净值曲线:十年里几乎稳定向上,最大回撤也在可接受范围内。同事把 python 量化交易策略代码整理得干干净净,模块化结构,参数注释齐全,回测报告做得非常漂亮。那一刻,我们确实都产生了“这次大概真的找到了”的感觉。但我在这个行业待得越久,就越对漂亮曲线有一种本能的警惕:曲线越完美,越要追问它中间的假设是什么。
3.2 实盘首月:滑点、容量与成本把收益拉回地面
这个策略随后进入了模拟盘,开始了实盘环境的测试。第一个打击来自交易成本。回测里我们只扣了一个固定比例的手续费,但实盘里滑点远比想象中大。尤其是中小市值股票,流动性差,买一卖一的挂单量很薄,一开仓就冲击价格,成交价总比预期差那么一点点。别小看这一点点,高频交易下它会持续侵蚀收益。
第二个打击来自策略容量。回测时资金量是固定的,但实盘中资金量一旦放大,你会发现你的订单本身就是市场的一部分。你想买一万股,可能直接推高股价几个百分点;你想卖的时候,又把价格砸下来。相当于你用自己的钱,为自己的策略制造了额外的交易成本。最后算下来,这个策略的实盘收益比回测收益打了六折。这不是策略失效了,只是之前被低估的成本在实盘中露出了本来面目。
更让团队警觉的是第三件事:策略在某些市场阶段会出现明显的“连续小亏”。回测时这些阶段也存在,但因为整体曲线向上,很容易被忽略。实盘里它们却变成了非常真实、非常磨人的资金回撤。此前回测中那些不起眼的细节,在实盘中全都被放大了。
3.3 拥挤交易与Alpha的消逝:当所有人都拿到了同样代码
这个策略并没有立刻失效,它在实盘中继续运行了相当长一段时间,收益逐渐趋于稳定。但接下来发生的事情才是真正的“残酷真相”:随着这类策略在市场上的普及——别的团队也在做类似的中小市值因子,甚至有些量化比赛的获奖策略用的都是差不多的逻辑——这条赛道上的人越来越多,策略的超额收益开始肉眼可见地下滑。
最明显的信号是换手率变得很高,但每笔交易的盈利空间变薄了。过去开一个仓位可以赚到可观的差价,现在开仓后很快就会被其他资金把价格拉到位,利润变薄,甚至要靠降低交易频率来勉强维持。到后来,这个策略的收益已经和指数基金相差无几,相当于 Alpha 彻底消失了,只剩下一堆交易成本和风险管理负担。
回看整个过程,代码一行都没改过,因子逻辑也没有变化,变的是什么?是市场里参与者的结构。当所有人都拿到了同样的代码、同样的逻辑、同样的数据,策略就会从“超额收益工具”变成一个“拥挤交易机器”。这就是为什么我一直强调:代码本身没有生命,有生命的是策略逻辑背后的市场环境。
3.4 这段经历说明了一个什么道理
这个策略的生命周期,不是失败案例,而是量化行业里最标准的剧本。从发现规律、回测验证、实盘上线、收益衰减,到最终失效,每一个环节都正常得不能再正常。但绝大多数刚开始接触量化的人,只看到了第一阶段——回测里那条漂亮的曲线,误以为那就是终点。他们不知道后面还有成本、容量、拥挤度和衰减在等着。
所以,当你听到有人说“我有一个全自动交易系统,回测年化翻倍”,我劝你先别急着羡慕。你要问的问题不是“它赚了多少”,而是“它上线多久了”“它的实盘和回测偏差有多大”“它的策略容量是多少”“它怎么应对拥挤”。这些问题的答案,才真正决定了一个自动化策略的价值。
4. 真正Alpha藏在哪:人的判断与机器的验证
4.1 在真实团队里,Alpha的起点通常是“异常”
聊完了 Alpha 为什么无法被写进代码,再来看一个更积极的问题:既然真正的 Alpha 不在代码里,那它到底在哪里?我自己的经验是,它通常始于一种“异常感”。你盯着数据,突然发现某个板块的定价方式和你的认知出现了偏差;你读一份产业报告,发现某个成本项正在快速变化,而市场还没有完全消化;你翻看交易所数据,发现某类订单的挂撤行为出现了不寻常的模式。
这种“异常感”无法通过自动化扫描产生。它可以被数据报表、可视化工具辅助放大,但最初的火花,来自一个人对某个行业、某个机制、某类交易者的深刻理解。换句话说,Alpha 的第一步永远是“人觉得哪里不对劲”,而不是“程序发现哪里不对劲”。
也正因为如此,很多量化比赛里拿奖的策略,放到实盘里一跑就失效——比赛数据是静态的、截断的,场景是限定的,参赛者只需要在给定的数据里找出规律,这本质上是一个拟合任务。而实盘市场是动态的、开放的,参与者会学习、会博弈、会进化。静态环境下的“最优策略”,放到动态环境里往往是最脆弱的策略。
4.2 人的假设与机器的证伪,构成唯一可行的闭环
那么机器在 Alpha 生成过程中究竟扮演什么角色?答案是“验证器”和“放大器”,而不是“创造者”。一套可持续运转的量化研究流程,通常是这样一条闭环:
- 人提出一个假设:比如“某类公司回购股票后,三个月内的超额收益可能显著偏高”,这个假设可能来自产业经验、学术论文、或者干脆就是看了一眼数据后的直觉。
- 机器快速验证:用历史数据检验这个假设是否成立,样本外表现如何,是否只是少数几个极端值撑起来的假象。
- 验证通过后写进代码:变成可执行的策略模块,自动化生成信号、管理仓位。
- 持续跟踪与再判断:定期检查策略收益是否衰减,市场环境是否发生了结构变化,如果衰减了,回到第 1 步重新提出新的假设。
在这个闭环里,机器负责把人的假设快速试错、反复检验,并忠实执行被验证为有效的部分。人的角色是提出假设、解读验证结果、判断环境变化。两者缺一不可。如果非要给一个比例,我认为在成熟团队里,人的贡献占六成,机器的贡献占四成。但讽刺的是,人的六成贡献恰恰是最难复制、最难标准化、最难被写进代码的部分。
4.3 “全自动”是一个危险的叙事:无人值守的模型会持续犯错
这几年有一类叙事特别流行,叫做“全自动交易系统”“AI 量化机器人”“躺着赚钱”。这种叙事非常危险,因为它给人传递了一个错误的心智模型:只要代码写得好,就可以让策略代替你思考。
事实恰恰相反。模型漂移是量化系统里最隐蔽、最致命的敌人:市场结构变了,策略的假设基础崩塌了,但代码不会主动告诉你“我不再有效了”。它只会继续忠实地执行原有逻辑,一天一天地亏钱。如果没有人盯着,这个亏损可能持续很久,直到净值曲线跌到让你无法直视,你才发现问题已经存在了几个月。
这就是我为什么始终强调“人在回路”的重要性。全自动代码可以负责 95% 的交易执行,但那剩下 5% 的宏观判断和异常响应,必须留给人。自动化程度越高,对“人”的要求反而越高——因为你需要更敏锐地识别,系统什么时候开始与市场逻辑脱节。
5. 把“全自动”的执念放下之后,我学到的几件事
5.1 把自动化的目标从“制造Alpha”改写成“执行决策”
如果你现在正准备开始做量化交易,我给你的第一个建议是:重新定义自动化在你系统中的位置。不要试图让代码帮你思考“买什么”“什么时候买”,这种问题连最资深的基金经理都经常答错,你凭什么觉得代码能答对?代码最擅长的事情,是把你经过深思熟虑的规则、逻辑和阈值,转化为不打折扣的执行。
简单说,自动化应该是放大器,不是发电机。它能放大一个正确决策的收益,也能以同样的效率放大一个错误决策的亏损。把目标从“制造 Alpha”改成“执行决策”,你的整个策略架构都会变得更健康。
5.2 给策略建立生命周期台账
另一个非常实用的习惯是给每个策略建立一份“生命周期台账”。在这份台账里记录这些信息:策略的基本逻辑是什么,它赚的是什么钱,它在什么市场环境下有效,什么信号暗示它开始失效,失效的触发条件怎么定义。这份台账存在的意义,是避免你在策略收益下滑时陷入“手动优化参数、反复折腾代码”的常见陷阱。
很多交易者策略一亏钱就开始改参数,今天把均线周期从 20 改成 30,明天把止损从 5% 改成 8%,越改越乱,最后连自己都不知道这个策略到底在做什么。台账能让你清楚地看到:策略的收益下滑是因为参数变差了,还是因为它赖以成立的市场环境已经不存在了。如果是后者,改参数等于给一具尸体化妆。
5.3 每天十五分钟的人机对质
最后分享一个我长期坚持的小习惯:每天留出固定的十五分钟,和你的策略“对质”。打开当天的信号清单,问三个问题:今天开仓的信号是什么原因触发的?这个信号对应的市场逻辑目前还在不在?有没有出现回测数据里没见过的异常情况?
这三个问题不需要你做出多么高深的判断,只是强迫你保持对系统的敏感度。很多时候,策略的衰败不是突然发生的,而是一点点渗漏的。如果你每天都能看一眼系统,你很快就会注意到“最近开仓频率变高了”或者“连续几天都在止损线附近徘徊”,这些微小的变化,往往比一条大阴线更早地告诉你:环境变了。
我自己做量化这些年,最深的体会是:量化交易本质上是一场你和市场之间的对话。代码让你有了更长的胳膊、更快的腿、更稳的手,但真正决定对话质量的,仍然是你对市场理解的深度和广度。量化模型可以让你的执行力超越人性弱点,却无法替代你去洞察人性本身。如果你问我现在是否相信“真正的 Alpha 能被写进全自动代码”,我的答案依然是不相信。你只能把它放在一个更靠谱的地方——你的判断力里,然后用最扎实的代码,把它稳稳地执行出来。