从 “道、法、术、器、势“ 看量化交易A 股实战指南这两年不断有人问我量化交易到底靠不靠谱、普通人能不能做、该从哪里下手。问的人多了我发现一个规律大多数人的困惑不是缺代码能力也不是缺资金而是脑子里的框架是乱的。今天想做趋势跟踪明天听人说高频套利赚钱后天又觉得价值因子才是正道最后连自己到底在赚什么钱都说不清楚。我做了几年的A股量化实盘踩过的坑比写过的策略还多。如果让我用一句话总结量化交易的本质那就是量化交易不是预测未来的水晶球而是一套把投资逻辑变成可执行规则的工程系统。它解决的核心问题不是“明天涨不涨”而是“当你有了一个想法之后如何用可重复、可验证、可控制风险的方式把它落地”。这篇文章我想用“道、法、术、器、势”这五个层面把量化交易这件事完整拆一遍。这个框架不是玄学它其实非常实用——对应到实战里“道”是你的投资哲学和收益来源“法”是策略体系和风控规则“术”是具体的因子构建和交易算法“器”是工具链和数据基础设施“势”是对市场环境的感知与应对。五层缺一不可很多人只盯着“术”和“器”结果就是把屠龙刀舞成了烧火棍。1. “道”先想清楚量化交易到底赚谁的钱1.1 多数人亏钱不是因为代码烂而是因为“道”没立住我在接触大量想做量化的朋友之后发现大家普遍有一层误解只要代码写得好、回测曲线漂亮就能稳定盈利。但实际上策略曲线好看只是一个结果背后真正起决定性作用的是你对市场的根本认知。举个例子。有人写了一个简单的双均线策略金叉买入、死叉卖出回测过去三年年化收益20%最大回撤8%。他兴奋地拿真金白银上实盘结果连续两个月亏损直接怀疑人生。问题出在哪不是策略代码有bug——回测没问题——而是他没想清楚这个策略在“道”的层面赚的是什么钱双均线的本质是捕捉趋势行情的趋势跟踪策略它赚的是市场出现持续单边走势时“动量延续”的钱。如果市场长期处于震荡状态这类策略天然会反复止损实盘跑两个月亏损是完全符合逻辑的而不是策略失效。大多数人不肯接受的现实是每种策略都有它的“不利期”没有一种策略能在所有市场环境下赚钱。如果你在“道”的层面没有想清楚自己赚的是什么钱、要承受什么样的亏损、凭什么市场愿意把这笔钱给你那你在“术”和“器”上花再多功夫也只是在给一个错误的假设做精密包装。1.2 “道”层面的三个问题赚什么钱、拿什么钱、亏得起什么我建议每个准备做量化的人动手写第一行代码之前先逼自己回答三个问题第一这个策略赚的是哪类市场参与者的钱或者哪类市场行为的钱是赚价值回归的钱股价偏离内在价值后回归、赚情绪波动的钱人群过度反应后的反向修正、赚流动性的钱为市场提供买卖对手方、还是赚趋势延续的钱动量效应在A股中的持续存在如果说不清楚说明你还没有形成投资哲学。第二你用的资金是什么性质的钱这是我在实战中见过最致命的分类错误。短期资金、随时可能要用的闲钱、长期可以锁定的资金对应的策略选择完全不同。用短线资金去做需要扛3年回撤的价值策略心理上根本扛不住拿长期资金去做高换手的日内策略手续费和滑点会把你磨死。第三你能承受的最大亏损边界在哪里这个边界不仅是金钱上的更是心理上的。回撤40%的理论收益再诱人如果你在回撤20%时就会失眠、会手动干预策略那这个策略就不属于你。量化交易的核心优势之一是让你用规则代替情绪做决策。但如果你的资金性质和心理承受力撑不住策略所需的回撤规则迟早会被情绪推翻。1.3 “道”的落地建立策略的收益来源档案当你理清了上面三个问题接下来要做一件非常具体的事为每一个策略建立一份“收益来源档案”。里面至少包含这几项策略赚的到底是什么钱一句话说明这套收益逻辑在什么市场环境下有效利好环境在什么环境下会失效恶劣环境历史上失效的最长持续时间和最大回撤底线数据失效期的典型特征是什么用来预警这份档案不需要多华丽但对实盘决策极其关键。它能帮你在策略连亏三个月时判断现在是暂时的“恶劣环境”还是策略逻辑本身被市场淘汰了。你不可能区分“坏运气”和“策略失效”除非你在入场前就写清楚判断标准。2. “法”策略体系的骨架决定了你能活多久“道”解决的是方向和认知而“法”解决的是系统性的规则构建。到这一层我们要回答的是用什么样的频率去做、选什么样的标的、配置多大的仓位、用什么规则控制风险。这四件事搞不定哪怕你的因子再灵资金曲线也走不出长期向上的趋势。2.1 频率选择先想明白你打算持有多久我常和刚入门的朋友说做量化第一件事不是跑策略而是定频率。因为频率决定了你整个工程体系的设计难度——数据精度要求、交易成本占比、服务器响应时间、滑点敏感程度全都不一样。我把自己的策略分成三档来分析低频策略持仓周期数周至数月这类策略通常是慢变量驱动的比如估值修复、净利润增速变化、行业景气度轮动等。它对数据精度的要求不高日线收盘数据基本够用交易频率低手续费和滑点占总收益的比例很低。但坏处是策略逻辑的验证周期长一个信号从触发到兑现可能需要几个月迭代反馈慢。中频策略持仓周期数天至两周这是我最喜欢的区间。它可以使用日线或60分钟线数据决策信号可以来自技术指标、资金流、龙虎榜数据等。交易频率适中换手率可控反馈周期不至于太长容错率也比高频好得多。A股T1的制度下中频策略的可行性最高。高频策略持仓周期秒级至分钟级这就是大家常说的“量化收割机”实际上对个人来说门槛极高。数据要Tick级甚至逐笔委托服务器要离交易所近交易通道要有优势资金体量要大才摊得开成本。在A股普通散户的资金体量和交易权限下我不建议个人一上来就做高频。别被媒体渲染的“量化巨头割韭菜”吓到那是另一套生存规则。2.2 标的池与选股规则锁定频率之后接下来要解决“在什么范围内做选择”的问题。A股有5000多只股票不可能全部纳入候选池——也不用因为大部分股票不具备流动性或基本面支撑。我自己的做法是给标的池设置硬性过滤条件作为所有策略的公共前置环节剔除ST和*ST类股票规避非正常的涨跌停和流动性陷阱剔除上市不足60个交易日的次新股次新股的波动规律非常不稳定剔除日均成交额低于1亿元的股票避免进得去出不来的流动性风险如果有基本面偏好叠加剔除净利润连续两年为负的公司注意标的池不是越宽越好也不是越窄越好关键是“规则一致”。如果每次换策略就重新换一批股票回测和实盘的口径不一致再漂亮的曲线都是自欺欺人。2.3 仓位管理与风险控制法则“法”这一层我认为最核心的是仓位管理和风控规则。很多人做量化只盯着“何时买何时卖”对“每次买多少”完全凭感觉这是大忌。仓位管理不是资金管理的一部分它就是策略本身。我个人常用的仓位配置思路是“风险预算制”。具体逻辑是每个策略每周初都带有一份总风险预算比如账户净值的2%如果策略当前持仓的潜在亏损已经消耗了这份预算就强制降低仓位或空仓等待。这个逻辑综合了“波动率目标”和“凯利公式”的思想但比纯理论更容易落地。举个例子我的一个中频策略每次建仓时都会估算一个“单笔最大亏损幅度”比如6%的止损那么理论上单笔投资金额上限 账户权益 × 单笔风险预算 ÷ 单笔最大亏损比例。假设账户100万单笔风险预算定为1.2%单笔止损幅度6%那么这笔交易的最高仓位 100万 × 1.2% ÷ 6% 20万元。这个方法的妙处在于它把“这笔交易亏多少我能接受”和“这笔交易买多少钱”统一到了一个公式里而不是拍脑袋决定买20万还是30万。3. “术”从想法到信号的落地技巧“法”把框架搭好之后“术”就是具体的实现技巧——这一步是把投资逻辑翻译成可执行代码的关键环节。很多人在这一层掉进了“过度优化”的坑里无法自拔也有很多人连“回测和实盘的差距为什么这么大”都没搞清楚。下面我来讲几个最关键的技术细节。3.1 一个完整的最小策略骨架为了让你对“术”有一个完整概念我用一个经典的双因子策略做例子演示一个最小可用的策略骨架。假设我们的策略逻辑是当股价站上20日均线同时成交量是5日均量的1.5倍以上时买入当股价跌破10日均线时卖出。这个逻辑不算高级但它能完整展示“信号生成—仓位计算—交易执行”的全链路。import pandas as pd import numpy as np def generate_signals(df, position_pct0.2, risk_per_trade0.012, stop_loss_pct0.06): df: 包含每日 open/high/low/close/volume 的DataFrame 返回带信号和仓位的DataFrame df df.copy() # 1. 计算均线指标 df[ma20] df[close].rolling(20).mean() df[ma10] df[close].rolling(10).mean() df[vol_ma5] df[volume].rolling(5).mean() # 2. 生成买入/卖出信号 buy_cond (df[close] df[ma20]) (df[volume] 1.5 * df[vol_ma5]) sell_cond df[close] df[ma10] df[signal] 0 df.loc[buy_cond, signal] 1 df.loc[sell_cond, signal] -1 # 3. 信号去重头寸只在状态变化时更新 df[position] df[signal].replace(0, np.nan).ffill().fillna(0) # 4. 根据风险预算计算目标仓位 equity 1000000 # 假设初始资金100万 target_value equity * risk_per_trade / stop_loss_pct df[target_position] np.where(df[position] ! 0, target_value / df[close] / equity, 0) return df上面的代码里最容易被忽略的是第3步“信号去重”。如果你每天只要满足买入条件就重复买入累积两次重复信号结果就是仓位翻倍风险失控。信号去重是回测和实盘一致性的基础细节很多新手在这里栽过跟头。3.2 回测中最容易自欺的三个地方回测的本质是用历史数据验证策略逻辑但历史数据不会说谎骗人的是回测框架本身。我见过太多人把回测做得绚烂夺目、年化90%、回撤5%结果一上实盘就现出原形。原因无非下面三个第一前视偏差。在用数据计算指标时用了当天收盘之后才能知道的信息去决策当天的买卖。比如用“当日涨停价买入了当日涨停的股票”这种回测逻辑实盘根本没机会成交。A股尤其要小心涨跌停的处理回测中买入标的当天涨停封死现实中你根本买不进。第二幸存者偏差。回测使用的是当前还在上市的股票列表而退市的股票被自动忽略了。这对于A股尤其致命——过去几年退市股票越来越多如果你只用现在的股票池做历史回测等于自动规避了“暴雷退市血本无归”的那段真实历史收益曲线自然被系统性高估。第三过拟合。把参数的每一个细节都调到历史数据上最优本质上是用20个参数拟合过去的一段行情。这种策略就像是给你一张过去的考卷答案去拿满分下一场考试完全没用。我的经验是每个参数背后必须有一个“可解释的经济逻辑”。如果连你自己都不能用大白话解释这个参数为什么要设成15而不是10那它大概率是在配合数据说话而不是在表达逻辑。3.3 参数稳健性检验对任何一个策略我都建议做一张“参数敏感性网格”选一个关键参数比如均线周期在合理范围内连续取20个值从5到50每隔5取一个跑出对应的年化收益和最大回撤做成一张表。如果相邻参数的年化收益差距在5个百分点以内回撤变化不超过1个百分点说明策略对这个参数不敏感相对稳健。如果某个参数从12调到13年化收益从15%直接跳到60%不用兴奋——那基本可以断定策略正在过拟合某个特定行情。我个人的习惯是回测参数每变化一档业绩波动越小越可信。稳健策略的特征是“参数高原”而不是“参数尖峰”。4. “器”工具链选型与数据工程实战“道、法、术”说得再天花乱坠到了“器”这一层一切都要落地到实实在在的数据、系统和工具上。A股个人量化者面临的真实挑战和公众想象的不太一样——最大的瓶颈往往不是策略灵感而是数据质量的清理、回测框架的靠谱程度、以及实盘执行的稳定性。4.1 数据量化大厦的地基也是一天到晚漏水的房顶我对数据重要性的认识是在一次真实的“事故”中建立起来的。当时我的一个中频策略里用了分红除权数据回测时没做前复权处理。恰好那段时间持仓里有只股票发生了大比例分红除权股价一天之内从30元跳到20元策略误判成“暴跌突破止损线”直接清仓错过了后面一段完整的上涨行情。回测数据一个字段没处理干净实盘账户就为它交了一笔学费。所以我把“器”这一层的数据要求列成了铁律必须做复权处理且实盘信号计算与回测口径严格一致我用前复权做回测与信号统一后复权做收益归因财务数据要注意报告期与公告期的区别A股财报有滞后披露回测时如果用到了未来才能公告的数据就是前视偏差异常数据处理除权除息日、停牌日、涨跌停日要在数据里明确标识获取数据时要检查是否有缺失值和跳空清洗完成后做一次日频校验比如每日总数据条数和交易所公布的上市股票数量对上4.2 回测与执行框架的选择逻辑工具这块我不打算罗列一堆软件清单而是告诉你选型时怎么判断。个人做A股量化市面上有几条路线各有优劣回测方式上面大致有“事件驱动回测”和“向量化回测”两种主流思路。向量化回测快、代码简洁但不容易模拟涨跌停无法成交、开盘涨停无法买入这类A股特色约束事件驱动回测慢一些但逐笔推进交易能更真实地处理涨跌停、停牌、T1等规则。如果你的策略信号不太依赖分钟级撮合细节向量化就够用如果你的策略涉及日内交易或涨跌停附近的买卖一定要用事件驱动回测框架。实盘交易环节A股个人做量化的标准路径是用券商的量化交易接口或条件单系统把策略信号转换成委托单由程序化或半自动化执行。起步阶段不一定非要全自动可以先做成“策略生成信号、人工手动下单”的半自动模式等运行稳定后再逐步提高自动化程度。我自己的第一个实盘策略就是半自动跑了两三个月一方面验证策略逻辑另一方面也验证自己心理上能不能真正按照信号执行。4.3 执行链路与运维细节在“器”的层面我要特别提醒几个日常运维细节这些是普通教程里很少提到的第一策略启动前的参数快照。每次实盘部署必须保存一份当时的参数、标的池版本、代码版本。否则三个月后你想复盘“为什么这一单操作了”很可能发现代码已经不是当时那套了。第二信号文件的持久化。我习惯每天收盘后生成一份当天所有信号的明细CSV包含信号触发时间、价格、量能数据、当时的策略状态。这个文件不是为了跑程序用的是为了事后复盘和排查“为什么没交易”用的。半年之后你再回看会发现这比任何日志都管用。第三仓位与信号同步机制。程序在极端情况下可能重启、断线、重复发送委托。实盘一定要有“幂等”设计同一根K线、同一个信号重复执行只能生效一次。最简单的方法是保存一个本地信号ID每次执行委托前检查这个ID是否已经处理过。5. “势”感知市场温度不和趋势作对最后一层“势”也是我认为最容易被纯技术流忽视的一层。量化交易看似是纯规则驱动的冷冰冰系统但市场本身是一个复杂系统同一个策略在不同市场阶段的表现可以天差地别。把“势”纳入量化体系不是要你放弃规则去预测市场而是用规则去感知“当前市场适不适合我这套打法”。5.1 量化语境下的“势”到底是什么在实战中我把“势”拆成两个可观测、可量化的信号群而不是抽象的感觉市场整体的趋势状态用主要指数比如沪深300、中证500、中证1000的均线系统、波动率水平、成交额变化来衡量当前是趋势市、震荡市还是高波动市市场风格倾向用大小盘相对强弱、行业轮动速度、涨停板晋级率等指标感知当前市场更偏好哪一类股票、哪一类策略更容易得到资金响应5.2 用市场状态指标动态调整策略权重这部分我分享一个自己用过的“策略开关”模型非常朴实但很有效。我的实盘体系里有一个“温度计”模块每日收盘后计算三组指标第一组是宽基指数趋势分各主要指数站上20/60日均线的数量占比高于70%定义为“进攻环境”低于30%定义为“防守环境”。第二组是市场成交活跃度全市场成交额近20日的分位数低于历史30%分位时整体降低所有策略的仓位权重因为流动性收缩时滑点和冲击成本都会显著上升策略收益会被交易成本侵蚀。第三组是策略自身状态分每个策略当前处于净值回撤的什么位置。如果策略从近期高点回撤超过一定阈值就把它权重减半或暂停直到净值重新创出新高。这三者合在一起形成每周的“高/中/低”三档风险预算直接作用于第二章提到的仓位管理公式。这套机制的说人话版本就是市场给机会时我多暴露一些市场不给机会时我主动收缩阵线。量化的优势不在于逆天改命而在于用规则保证“市场不好的时候你确实会减仓而不是一边恐慌一边死扛”。5.3 与“势”共处的实盘心态最后说点实在的。做量化这几年我见过太多人前三个月踌躇满志第五个月开始怀疑人生半年之后彻底删除代码。核心原因就是“利空环境下策略回撤”这个必然事件被当成了“策略失效”。你要想稳住必须在开发策略时就接受一个事实任何策略都有让你不舒服的日子成熟的量化交易者不是在寻找“从不回撤的策略”而是设计“回撤之后还能回来的体系”。我个人的体会是“势”这一层最大的价值不是帮你多赚钱而是帮你在市场的顺风期保持冷静、在逆风期保持存活。A股从来不缺机会缺的是在机会来临时你还在场、还有充足的弹药。6. 万字经验浓缩五层框架怎么落到你的第一个实盘策略文章写到这里我不打算做什么高屋建瓴的总结。更想做的是把前面五层框架浓缩成一份可直接对照的行动清单给准备开启自己第一个A股量化策略的读者一条清晰的起步路径。第一步用“道”校准预期。写一段策略逻辑说明确定你赚的是哪类钱并书面写明它失效时的典型特征。这段文字会在你最煎熬的时候救你一命。第二步用“法”圈定边界。选定一个频率区间建立标的池过滤规则写清楚单笔风险预算和总风险预算把它们变成代码里的常量约束。第三步用“术”专注核心逻辑。从最简单的1-2个因子开始保持参数可解释把前视偏差、幸存者偏差、过拟合三座大山小心翼翼地绕开。第四步用“器”夯实基础设施。确保数据口径一致、回测框架能模拟A股交易约束实盘从半自动起步做好信号持久化和参数快照。第五步用“势”感知环境。给策略配一个“温度计”用规则而不是情绪来决定什么时候加仓、什么时候收缩。这五步走完你的量化交易之路才算是刚刚开始。别急着成为“年化翻倍的传说”先努力成为一个“亏的时候知道为什么亏、赚的时候知道为什么赚”的合格交易者。这是我踩了无数坑之后最想对你说的一句话。