做量化这几年,我见过太多人一上来就问“有没有稳赚的策略代码”,好像某个参数一调,净值曲线就能永远向右上角画。结果往往是亏完学费才明白:策略本身只是冰山一角,真正决定你能不能长期活下来的,是背后那一整套认知框架。后来我越来越觉得,老祖宗讲的“道、法、术、器、势”五个字,用来拆解量化交易尤其是A股实战,特别贴切。这五个维度不是五个并列的技巧,而是一个从抽象到具体、再从具体回到宏观的完整闭环。
这篇文章我想把这套框架完整讲透,结合A股的实际特征与实战中踩过的坑,给正在研究量化交易的朋友一份可以反复对照的路线图。不管你是刚接触Python量化策略代码的新手,还是已经会用Qlib、Backtrader搭框架的进阶玩家,都应该能从中找到自己缺失的那一块拼图。
1. 先定“道”:想清楚自己到底靠什么在市场里活下来
“道”看起来最虚,其实最要命。技术可以学,工具可以换,但如果你对市场的底层认知是错的,后面所有环节都是在错误的地基上盖楼。
1.1 A股有哪些“钱”是量化真正赚得到的
做量化有一个容易被忽略的前提:你得先想明白,市场上那么多钱,你究竟要赚哪一种。
简单拆分一下,我们能接触到的收益来源大概有四类:
| 收益来源 | 背后的逻辑 | 典型策略谱系 |
|---|---|---|
| 企业成长与价值回归 | 基本面定价错误,低估修复 | 基本面多因子、价值/质量选股 |
| 市场情绪与行为惯性 | 人类决策偏差导致的动量、反转、羊群效应 | 趋势跟踪、动量因子、事件驱动 |
| 资产间的相对错误定价 | 相关资产价格偏离后回归 | 统计套利、配对交易、ETF套利 |
| 流动性与交易服务 | 为市场提供买卖盘,赚取买卖价差 | 高频做市、盘口交易 |
A股有个很典型的特点:散户交易占比较高,这种结构让行为金融学里的那些异象——短期动量、过度反应、处置效应——表现得比成熟市场更明显。换句话说,A股量化赚的第二类钱,也就是“行为钱”,长期看是相对丰厚的。这不是什么玄学,而是由市场参与者结构决定的统计规律。
但你要反过来想:正因为人人都知道散户容易追涨杀跌,这类策略的超额收益也在被越来越多的量化机构摊薄,拥挤度逐年上升。2019年的时候一个简单的中证500成分股动量因子回测效果非常好,但到2023年同类策略的夏普已经大幅下降。核心原因不是因子失效,而是因子拥挤。
我个人的看法是,对普通个人量化交易者来说,最容易上手的钱不是去跟机构拼高频、拼速度,而是利用A股散户占比高、机构覆盖不足这两件事,把行为类和事件类的低频策略吃透。这类策略资金容量大,对执行速度要求低,普通人在家里用日线数据就能做研究,刚好是大家能力边界内的机会。
1.2 A股制度特征决定了策略的物理边界
许多人在海外市场做量化做习惯了,把美股那套逻辑直接照搬回A股,结果被市场教训得很惨。A股有三条制度特征,每一条都在物理层面改变策略的设计空间。
首先是 T+1交易制度。当天买入的股票次日才能卖出,这意味着所有日内开平仓的策略天然不成立。美股常见的那种日内多次进出、尾盘平仓的高频模式,在A股的正股上根本没法做。量化交易策略代码里,所有出场信号在买入当天都是“未生效”状态,你必须把持有周期拉到至少一天以上。这直接影响了策略的调仓频率和风控判断。
其次是 涨跌停价格限制。涨跌停不只是把价格波动限制在某个区间,更重要的是它在极端行情中会扭曲流动性。跌停板上的股票不是不想卖,而是买单跑光了,你想止损根本出不去。很多策略在回测中把跌停日按“无法成交”处理,但实盘中问题远比这复杂:跌停打开时能不能卖出去,取决于封单量、排队位置和你自己的挂单速度,这些细节很难精确建模。所以任何在A股做趋势或短线交易的策略,都要在设计阶段就问自己:如果持仓第二天直接低开5%,我的止损逻辑还能执行吗?
第三是 做空工具严重受限。股指期货有入金门槛,融券券源不稳定,个股期权覆盖范围有限。这导致很多中性策略想靠做空获取绝对收益,实际上只是在“裸多+对冲”之间来回摇摆。做空缺失还带来一个衍生后果:A股的定价错误修正速度往往比成熟市场慢,错误可以持续很久,追涨杀跌的趋势惯性更强。
1.3 业绩基准与预期管理:把预期写下来
“道”落到操作层面,第一件事其实是管理预期。我见过不少朋友刚开始做量化回测时,看到年化80%、最大回撤6%的曲线,兴奋得睡不着,觉得马上就要财务自由了。冷静三个月,实盘打了五折再打五折,心态直接崩了。
所以我会建议每个想做量化的人,先给自己写一份“投资预期说明书”,包括四件事:年化收益预期区间,能接受的最大回撤,资金的时间属性,量化策略与手工交易在资金分配上的比例。这份说明书的参数不用很精确,但必须写下来,因为人在面对回撤时会本能地修改自己的记忆和判断,白纸黑字是你当时理性思考的唯一锚点。
想清楚这层“道”,再去碰“法”和“术”才有意义。不然很容易变成拿着锤子找钉子,最后被市场用锤子敲了脑袋。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 再立“法”:策略谱系、组合构建与风控框架
“法”是介于理念和具体信号之间的中间层。在量化里,我把它理解成一套完整的策略体系与工程规范,包括选什么策略流派、策略之间怎么搭配、事前需要校验哪些标准。
2.1 四类策略的流派选择与A股适配度
对应上面说的四类钱,量化策略大致可以分成四个流派:多因子选股、趋势/动量策略、统计套利、高频交易。不同流派天然有不同的资金容量、交易频率、可复制性和对基础设施的要求。
多因子选股可能是A股个人投资者最友好的流派。它的核心是用PB/PE/ROE/换手率/波动率等特征构建股票池的横截面排序,每个月或每两周调一次仓,靠一篮子股票的平均表现赚钱。这个策略对交易速度的要求很低,研究工具也成熟,Python生态里从单因子测试到组合优化都有现成框架。缺点是它在单边下跌行情里也会亏钱,除非配合股指期货对冲。
趋势/动量策略的逻辑是追逐价格惯性。A股因为散户占比较高,价格对信息的反应经常过度,这给了趋势策略生存的土壤。但趋势策略的bug是震荡市里会被反复左右打脸,止损亏损累积起来可能比趋势行情的利润还多。用ATR动态止损、加入趋势强度过滤器,是这个流派永恒的话题。
统计套利依赖资产间的稳定统计关系,比如同行业的股票价差、ETF与成分股间的折溢价。A股散户情绪导致的定价错误既多又持久,理论上配对交易机会不少。但实际操作中,价差偏离均值后可能持续偏离更久,你以为是回归,结果被碾压,这就是经典的老鼠仓陷阱。做这类策略需要更严格的控制仓位和更宽的容忍带,不能用教科书里那种固定2倍标准差就开仓的机械规则。
高频交易在A股普通个人投资者基本上是做不了的。不仅因为做市权限、极速柜台、交易所托管等硬门槛,更因为T+1制度已经把很多高频策略的空间压缩没了。如果有人在社区里向你推销“个人高频稳赚策略”,基本可以判断是骗子。
2.2 多策略组合的资金分配逻辑
单一策略再厉害也有周期性。A股市场风格切换极其剧烈——连续大涨的小盘股可能在一个季度内直接崩塌,价值因子也可能连年跑输成长因子。如果把全部资金放在一个策略里,跟单吊一只股票没有本质区别,风险没有分散。
合理的做法是构建 多策略组合,让不同策略之间的收益来源相关性尽量低。多因子和趋势策略的相关性通常不高,一个有公司基本面逻辑,一个偏价格行为逻辑;低频基本面套利和高频趋势之间也天然隔离。老话说“东方不亮西方亮”,在量化里不是指分散买很多股票,而是分散在逻辑上互不依赖的策略上。
在组合层面,我会用一个非常简单的分配原则:按策略的最大历史回撤和资金容量来分配风险预算。假设策略A最大回撤10%,策略B最大回撤20%,两者相关性很低,那么给A分配两倍于B的资金,能让组合的理论回撤相对平滑。这不是精确的最优化,但比单纯凭感觉分配仓位靠谱太多。
2.3 事前清单:数据口径、策略容量与回撤预算
在写第一行业务代码之前,还有几件事要先在“法”的层面确认。
**第一是数据口径一致性。**量化交易策略代码跑出来的历史绩效是漂亮还是难看,很多时候不是策略决定的,而是数据决定的。前复权、后复权、不复权,三种口径在A股分红除权频繁的环境下差别非常大。日内分钟线还要额外处理涨跌停、停牌、集合竞价时段的口径差异。
**第二是策略容量估计。**一个日频交易的小市值策略,在有100只股票且小票成交额极低时,你的资金量从50万加到5000万,冲击成本会显著抬升,绩效衰减也许超过一半。容量测算不需要多精确,但至少要知道你的资金量级在这个策略里处于什么位置。
**第三是回撤预算前置。**把“能忍受的最大回撤”作为策略开发的硬约束。如果一个策略的历史最大回撤超过了你的心理底线,再赚钱也不该上,因为你在回撤途中大概率会手动干涉,最后既偏离了策略又丢了纪律。回撤预算是用来保护执行人的,不是用来保护钱的。
3. 细究“术”:从因子挖掘到执行细节的落地路径
“术”是最容易被大家理解成“核心干货”的部分,但它其实只是把“道”和“法”翻译成机器可执行的规则。这里以多因子策略和趋势策略为例,讲讲落地时真正需要较真的细节。
3.1 以多因子为例:从单因子测试到因子合成
做多因子选股,标准流程大致是:构造因子 → 单因子检验 → 相关性筛选与正交化 → 因子合成 → 分层回测 → 组合构建。每一步都有不少暗坑。
单因子检验时,我们常用 IC值(信息系数)衡量因子预测能力,也就是因子值与股票未来收益的截面相关系数。行业里有一条经验线:IC均值超过0.03,ICIR(IC的均值除以标准差)超过0.3,这个因子才初步值得关注。但IC只是相关性,相关性不等于可交易性,所以还要看分层回测结果:把股票按因子值分成10组,看每组下期收益是否单调递增。如果第1组和第10组收益差异很大,但中间组乱七八糟,说明因子关系非线性,直接用它排序选股会踩到中间组的雷。
单因子测试通过之后,别急着把所有好因子堆在一起。很多因子彼此高度相关,比如“换手率”和“波动率”在A股里通常负相关很强,都放进模型相当于同一个信号被重复下注。处理方式是先看因子相关矩阵,把相关系数绝对值超过0.7的因子做正交化,把重复信息拆掉,再考虑合成。
因子合成有两种主流方式:等权打分和IC加权。等权打分简单稳健,不容易过拟合;IC加权理论上更优,但IC本身不稳定,权重会随样本期变化而漂移。个人经验是,因子数量少于10个时,用等权打分往往比花哨的加权更抗造。机器学习做因子合成是近年的热点,Neural Network、XGBoost在非线性拟合上确实强,但也更脆弱——A股有效样本本身就不多,很容易把噪声当成规律学进去。
机器学习不是不能用,而是必须有严格的时间序列交叉验证。随机打乱样本的训练方式在量化领域是致命的,你不能用未来的信息训练模型,再让它去预测同一个时间段,那等于考试时把答案放在桌上。用时间序列前推式训练,每次只用t时刻之前的数据训练,预测t+1时刻,这种walk-forward验证方式虽然慢,却是防止机器学习“作弊”的底线。
3.2 趋势策略中噪声与假信号的处理
趋势策略看起来简单——价格上穿均线就买,跌破就卖——但放到真实行情里,没有过滤器的纯粹均线系统会死得很惨。震荡行情里价格反复穿越均线,每一次穿越都是一次亏损交易,磨损到你不自信为止。
我的做法是在信号系统外加两道过滤器。
第一道是 趋势强度过滤器。用ADX(平均趋向指数)判断当前市场是否处于有方向的趋势中,ADX低于20时默认市场是震荡状态,不开趋势单。等ADX从低位向上突破阈值,说明趋势可能正在启动,此时均线信号才真正有效。这道过滤器的意义不是预测涨跌,而是只在你擅长的环境中交易,避开不适合自己的行情,听起来理所应当,能坚持执行的人却很少。
第二道是 动态止损替代固定止损。用ATR(平均真实波幅)刻画当前品种的波动水平,止损幅度设为入场价减去2倍或3倍ATR。一个刚经历过大涨的高波动股票和一个长期横盘的低波动股票,同样30%的固定止损,前者太紧后者太松,完全不匹配。ATR止损的妙处在于它能自动适应标的的波动属性,把止损距离和该品种的“脾气”绑定在一起,而不是用一个拍脑袋的百分比去硬套所有场景。
还有一个容易被忽视的点:A股的主力喜欢在趋势启动前洗盘。刚突破一个平台,第二天立刻回踩跌破突破位,这种假突破在A股出现频率远高于海外市场。应对方式有两种,要么把突破确认周期拉长,等收盘价连续两天站在突破位上方才入场,牺牲一部分初始利润换取更高的胜率;要么在突破时就进场,但把仓位减半,确认趋势有效后再加仓。两种方案没有绝对对错,关键是事前想清楚自己能承受哪种疼痛。
3.3 回测与实盘的摩擦成本校准
回测看着赚钱,实盘不赚钱,九成问题出在摩擦成本被低估。A股交易摩擦包含四块:佣金、印花税、滑点和冲击成本。
目前A股常规佣金水平已经降到万分之一到万分之二点五,部分券商能谈到更低,还有免五政策。印花税在2023年8月减半后,当前是卖出单边征收千分之零点五。滑点取决于你的策略类型和调仓时使用的限价单还是市价单。我用日线级策略时,回测里通常按单边千分之一到千分之二计提滑点,看起来不多,但按年化换手率20倍算,0.1%的滑点一年就能吃掉2%,这还没算冲击成本。
冲击成本是资金量变大后才真正显形的东西。当你的单笔调仓金额占个股日均成交额超过2%时,你的市价单会把价格直接推离自己的理想成交价。对资金在百万级别以下的朋友,冲击成本可以先忽略,专注把滑点参数设准确就好。
回测系统里还有一个细节容易被忽略:涨跌停无法成交。股票涨停时你作为买方排单可能排不上,跌停时作为卖方想卖卖不掉。回测如果不做这个限制,策略会在最极端、最优美的价格上完美成交,收益会被严重高估。成熟的回测框架至少要对涨跌停日的成交做“下一日开盘才能成交”或“当日直接标记为未成交”的处理,两种处理方式会带来完全不同的绩效评估。
4. 善用“器”:数据、工具与合规边界
“器”是量化的生产工具,包括数据源、研究框架、回测引擎、执行系统。很多人在“器”的层面有个误区——喜欢追求最贵最全的工具,好像有了机构级数据自己就能成机构。事实恰恰相反,对个人量化来说,工具不在多,而在顺手和可靠。
4.1 数据层的统一与复权处理
数据是量化研究的地基。一段行情代码走到回测阶段才发现前复权价格与实盘行情接口价格对不上,这种问题排查起来极其痛苦,因为策略逻辑看起来完全没问题,绩效却怎么都对不上。
A股的分红送转极其频繁,一家公司一年内除权除息两次也不罕见。如果不做复权处理,直接用原始价格算收益率,除权当天会产生一个根本不是来自市场波动的价格跳空,所有技术指标都会被污染。这里有两种复权方式:前复权是把历史价格向下调整,让当前价格保持真实市场价;后复权是保持历史价格不变,把最新价调整上去。研究阶段的主力资金进出场判断,我习惯用前复权数据;而在计算持仓收益和制作历史净值曲线时,后复权数据更可靠,因为它不会因为新一次除权而改变历史价格,历史信号不会被事后重写。同一个策略,两种复权方式在收益率时间序列上推导出的信号会有肉眼可见的差异,首次做A股量化的人往往要到实盘被坑过一次才能真正理解这件事。
4.2 研究、回测、模拟盘、实盘的分层验证节奏
“器”的第二个层面是研究工具链的节奏设计。
研究阶段,我最常用的组合是 Python + 开源量化数据库/回测框架。如果你的研究目标是严肃、可复现地构建策略,可以考虑Qlib这类面向量化研究的开源平台,它内置了数据处理、模型训练和回测的完整闭环;如果只是想快速验证一个简单策略想法,Backtrader这类轻量框架上手更快。两个框架没有谁绝对更好,取决于你处在策略研发的哪个阶段。
不管用什么框架,有一点必须坚持:回测结果不能直接作为实盘依据。一套合理的验证节奏是——日频/周频策略先在历史数据上做样本内回测,再做样本外测试(比如用前面70%的数据做训练,后面30%做验证),然后跑一段时间的模拟盘(paper trading),最后才拿少量真金白银验证实盘执行与绩效的差异。模拟盘的价值在于验证“策略信号能否被正确执行”,而不是验证收益。
实盘环节,国内普通个人投资者做A股自动交易,主要通过券商提供的官方接口或量化交易平台接入,存在相应的准入门槛与合规要求。个人必须使用券商官方支持或通过持牌机构授权的合规方式接入系统,绝对不能使用任何未经授权的非官方私有接口去抓取数据或直连柜台。合规不是给我们添麻烦的,恰恰相反——它是保护个人本金和账号安全的底线。
4.3 模型管理:每个干净策略版本都该记录什么
研发过程中一个很容易被忽略的“器”,是模型和策略的版本管理。
写量化交易策略代码时,我们会反复调整参数、因子、止盈止损规则,但如果不做版本管理,一个月后你可能完全记不清当前这个版本的策略性能到底是被哪个改动提升的。我的习惯是每个策略版本用表格记录五个要素:核心逻辑变更描述,回测时间段,参数组合,绩效摘要(年化、回撤、夏普),以及这次改动的动机。策略出问题时,这份记录能帮你快速定位是哪次改动的锅,而不是在几十个参数之间反复横跳。
执行端还有个常见问题容易被忽视:策略运行环境依赖一堆Python包,版本升级可能在某个不起眼的共享库里破坏核心算法的数值逻辑,导致盘中信号和回测不一致。个人量化的环境依赖管理建议用虚拟环境固定版本,任何依赖升级都要主动重跑一遍历史回测做对比验证。
5. 看清“势”:超额衰减、拥挤交易与个人应对
“势”是最后一个维度,也是很多人完全忽略的维度。策略不是活在一个真空环境里,它会随着市场参与者结构、监管规则、交易工具的变化而不断过气。
5.1 量化超额收益的起落与拥挤信号
过去几年A股量化行业经历了一轮快速扩张。早期简单的多因子策略就能获得很高的超额收益,但随着做量化的资金越来越多,同类因子的超额不可避免地被稀释。行业中流传着一句话:“你赚的每一个BP,都是别人亏掉的钱。”你用的因子和万家同行一致,本质上就是在赚自己人割自己人的钱,超额收益只会越摊越薄。
识别某个策略或因子是否已经从“早期红利”进入“高度拥挤”,有几个信号可以参考:同类策略产品发行数量猛增且业绩宣传曲线相似,相关风格因子表现与主流宽基指数走势出现明显脱节,策略的实盘绩效相比回测衰减速度加快,市场上开始出现擅长“收割同类策略”的反向策略。
2024年初A股小微盘流动性冲击是一个教科书级的拥挤交易案例。此前大量量化产品通过持有微盘股来获取亮眼的超额收益,小微盘策略成了整个行业公开的秘密。但当市场环境突变,许多带杠杆或被动卖出的产品需要集中减仓时,小微盘股票本身的流动性不足以承接卖盘,价格出现罕见剧烈下跌。那些事前没有做压力测试、没有为流动性风险留余地的策略,在几天之内回吐了数月的超额收益。这个案例说明,一个策略可能长期有效,但“长期有效”本身正是它的风险——当所有人都在一条船上时,船一摇晃就是灾难。
5.2 制度变化与市场微观结构带来的新边界
量化策略的生命周期与市场制度紧密相关。A股的涨跌停制度、印花税政策、融资融券范围、转融通业务、程序化交易管理规定,每一项细微变化都可能改写一批策略的底层假设。
举个直观的例子:早年A股有一种靠追涨停板次日高开溢价的策略,在特定期限内效果很好。但之后随着涨停板规则、交易者结构、监管环境的变化,这类策略的有效性大打折扣。如果开发策略的人没有持续跟踪制度变化,他会以为是自己的执行出了问题,实际上策略赖以存在的底层生态已经被改变。量化研究者要有一种“产业观察者”的敏感度,定期梳理策略与制度环境之间的耦合点。
5.3 把“策略失效”当成常态,把“迭代”当成基本功
我见过太多人开发出一个回测漂亮的策略后,把它当成传家宝,从不主动质疑,直到亏损把自己打醒。策略研究和产品运营应该是同一个岗位的两件事,你永远需要有一只眼睛盯着窗外:市场风格是不是切换了,流动性环境是不是变了,自己的因子绩效是否触及了预警线。
定期给策略做“体检”是一个好习惯。每个季度回看持仓策略的滚动超额收益、换手率变化、因子暴露与归因,设定明确的“策略失效触发线”。比如滚动12个月超额收益跌破零,或者最大回撤超过历史最大回撤的1.5倍,就启动复盘流程。复盘结论不一定是策略报废,也可能是市场风格暂时不适配需要降低仓位,但不管结论如何,这个流程本身能防止你在一种“温水煮青蛙”的状态里被动挨打。
“势”对于个人量化者还有一个更现实的含义:建立自己的差异化壁垒。机构可以用更快的行情、更低的佣金、更强大的算力碾压你,你唯一能长期仰仗的,是寻找机构因规模和合规限制无法覆盖的小众领域,比如极度低频的另类数据策略、高人工成本的深度事件跟踪、机构资金容量看不上但个人资金量正合适的细分策略。小不是问题,小而灵活、边际成本低、敢于触碰机构碰不了的角落,才是个人在量化之路上真正的不对称优势。
6. 用五年时间换来的三条实操原则
如果上面的长篇大论看完已经有点晕,最后我分享三条自己用了五年时间换来的原则,每一句背后都是真金白银的学费。
原则一:先解决不亏钱,再考虑赚钱。 大部分人研究量化时的第一反应是找高收益策略,我的第一反应永远是找“什么情况下这个策略会死”。提前为最坏情况设计好仓位与止损的人,才有资格享受策略有效时的复利。古人讲“先为不可胜,以待敌之可胜”,在量化里就是先确保自己不会出局,再等待市场给出你能力圈范围内的机会。
原则二:回测最大的用处不是让你相信策略,而是让你怀疑策略。 一次漂亮的回测结果不值得兴奋,值得兴奋的是你能在多次压力测试、参数扰动、不同时间段切片之后,依然找不到轻易击垮它的理由。真正的稳健不是某个参数组合下绩效最优,而是很多参数组合下绩效都还不差。
原则三:量化到最后,拼的不是策略,是执行者的定力。 代码可以写得很漂亮,机器学习模型可以训得很复杂,但只要你在连续亏损后手动干预一次、在情绪亢奋时违背规则加一次仓,整个系统的统计意义就被破坏了。A股市场里真正稀缺的不是聪明,而是能在规则内管住自己的手、坚持执行系统信号的那份纪律。
做量化这几年最大的体会是,它不是在股市里找圣杯,而是一场自己和自己的长期和解——与自己的贪婪和解,与自己的恐惧和解,与自己对不确定性的不耐受和解。道法术器势这五个字我常年在案头放着,每次研发新策略或实盘遭遇回撤时都会重新对照一遍,看看自己到底是在哪个维度上出了问题。希望这篇实战指南也能帮你找到自己的坐标系。
