
很多人第一次接触量化交易的时候心里想的基本都是同一件事写一套 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 能被写进全自动代码”我的答案依然是不相信。你只能把它放在一个更靠谱的地方——你的判断力里然后用最扎实的代码把它稳稳地执行出来。