去年开始带团队做A股量化策略,陆陆续续跑了整整一年实盘。身边很多朋友一开始觉得量化很玄乎,问我是不是要懂一堆高深的数学,或者要有超级计算机才能玩。其实真不是这样。
在这个行业摸爬滚打久了,我慢慢发现,量化交易与其说是一门“硬核技术”,不如说是一套完整的思维方式。它从底层理念到具体代码,再到一颗能扛住回撤的心,层层分明。后来我索性用“道、法、术、器、势”这五个字来梳理整件事,带新人上手的时候也特别顺。这篇文章就当是我这一年多的实战复盘,从这五个维度把A股量化从头到尾拆一遍,干货为主,希望能给你一些真正能落地的启发。
1. 道:别急着写代码,先把量化交易的底层逻辑想清楚
“道”这个词听起来虚,但放在量化交易里一点都不虚。它决定了一个量化策略的“世界观”。如果道没想明白,代码写得再漂亮,最后大概率还是亏钱的。
1.1 量化交易到底是什么:从“拍脑袋”到“可证伪”
用大白话说,量化交易就是把投资逻辑从“我觉得会涨”变成“当A和B同时满足时,历史统计上有C概率会涨”。它不是靠某一瞬间的盘感,而是靠一批可重复、可验证的规则在市场上“找规律”。
我以前带过一个朋友,他炒了十几年股,总觉得自己“盘感很好”,但让他说清楚为什么买、为什么卖,他只能说出“感觉主力要拉”这种话。这其实就是典型的“不可证伪”逻辑——涨了是因为盘感准,跌了是因为主力太坏。
量化反过来了。一个策略必须能用历史数据回测,能算胜率、赔率、最大回撤,能清楚地说出它赚的是哪部分钱。这种“可证伪、可重复”的特性,正是量化和主观交易最本质的区别。
从“道”的角度来看,我认为一个合格量化投资者应该先接受一个前提:市场里没有百分之百确定的赚钱公式,只有概率优势和纪律执行。哪怕你的模型有60%的胜率,如果资金管理和心态跟不上,照样能把本金亏光。所以道的第一个层次,是建立起“概率思维”。
在A股市场,这个概率思维尤其重要。因为散户占比较高、消息面波动大,短期价格的随机性非常强。如果一个策略不能通过大样本历史数据的检验,那它大概率只是在拟合噪音,而不是在捕捉规律。
1.2 市场五大底层规律:你的策略到底赚的谁的钱
入行久了之后,你会发现市面上五花八门的量化策略——双均线、动量、龙虎榜打板、ETF套利——归根结底赚的都是下面这五类钱:
- 趋势延续的钱:市场有惯性,涨的股票短期更容易继续涨,跌的更容易继续跌。追涨杀跌被无数人骂,但它是趋势策略的核心逻辑。
- 均值回归的钱:价格短期偏离价值太远,终究会往回走。超跌反弹、网格交易都属于这一类。
- 事件驱动的钱:业绩预告、分红、回购、指数调仓等事件,会在特定时间窗口前后产生规律性的价格波动。
- 套利对冲的钱:同一公司不同市场、同一指数不同合约之间出现价差时,买入低估、卖出高估,赚取价差收敛的收益。
- 流动性溢价的资金:在某些特殊时点(比如季度末、年末)提供流动性,也能获得额外收益。
我个人的体会是,一个策略能不能长期赚钱,取决于它是否把某一类规律“吃透”了。最怕的是那种“什么都想要”的策略——既想赚趋势的钱,又想赚回归的钱,结果两边的钱都没赚到,反而被反复打脸。
拿A股最常见的“双均线策略”举例。它赚的就是趋势延续的钱:当短期均线上穿长期均线时买入,当短期均线下穿长期均线时卖出。逻辑简单,但在震荡行情里会被反复止损。所以做量化的人常说“策略要纯粹”,就是说道要先定清楚。
1.3 自我认知:你是哪种量化学派
说到道,最后必须聊聊“人”。同一个策略给不同的人用,结果完全可能不一样,因为每个人的风险承受能力、资金规模、性格都不一样。
- 你如果是上班族,没有太多盯盘时间,那中低频的周级、月级策略可能更适合你。
- 你如果是职业交易者,能承受较大的日内回撤,那日内高频或分钟级策略可以做,但对执行系统要求非常高。
- 你的资金量如果到了几千万级别,很多小市值的策略就做不了了,因为冲击成本太大。
这里我有一个特别深的教训:去年我刚开始做量化时,总想追求“高胜率、低回撤、高收益”三者兼备的策略,结果反复优化参数,最后回测曲线好看得一塌糊涂,实盘一跑就打脸。
后来我才明白,道层面的问题没解决:我们做量化的目的不是“证明自己厉害”,而是“稳定地执行一套有正期望值的规则”。宁可接受胜率只有四成、最大回撤20%的策略,只要赔率够大、逻辑够硬、能长期坚持,最终收益一定是正的。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 法:把“道”翻译成策略蓝图
“道”想清楚了,就开始进入“法”的阶段。如果说“道”是世界观,“法”就是方法论。它是介于理念和代码之间的那一层——把抽象的投资理念翻译成具体的策略框架和交易规则。
2.1 完整策略的四个模块:信号、仓位、执行、风控
我自己搭策略的时候,习惯把任何策略都拆成四个模块,缺一不可:
- 信号模块:什么时候买、什么时候卖。这个信号必须来自可量化的数据,比如均线、MACD、RSI、成交量、基本面因子等。
- 仓位模块:每次交易投入多少资金。常见有等权、凯利公式、固定比例、波动率目标等。
- 执行模块:以什么价格下单,是市价还是限价,拆单还是整单,开盘抢跑还是收盘前执行。
- 风控模块:单笔最大亏损、单日最大回撤、策略暂停条件、极端行情熔断机制。
很多新手容易陷入“信号建模”一个模块里出不来。整天研究什么指标,但仓位管理乱来,或者下单的时候滑点损失巨大。我记得自己有一次写策略,信号模型看着很漂亮,但下单方式是市价单,结果碰到一只流动性很差的股票,直接买在了当天最高点,那一笔就亏掉好几天赚的收益。
所以“法”的第一条准则就是:信号、仓位、执行、风控必须均衡发展。任何一个模块出问题,整个策略都会翻车。
2.2 策略家族的对比:趋势、反转、事件驱动怎么选
做量化的第一件事往往是“选赛道”,也就是选策略类型。我把目前A股市场比较主流的几大类做了一张对比表,方便你结合自己的情况选:
| 策略类型 | 核心逻辑 | 持仓周期 | 适合人群 | 典型风险 |
|---|---|---|---|---|
| 趋势跟踪(CTA类) | 顺势而为 | 几天到几周 | 不能时刻盯盘的人 | 震荡市反复止损 |
| 均值回归 | 价格终将回归 | 1-5天 | 喜欢“捡便宜”的人 | 单边大趋势中不断逆势加仓爆仓 |
| 事件驱动 | 事件带来定价偏差 | 几天到几个月 | 喜欢看公告和新闻的人 | 事件不及预期 |
| 统计套利 | 资产间相关性稳定 | 分钟级到天级 | 有较强编程和统计功底的人 | 相关性突变(黑天鹅) |
| 高频做市 | 提供流动性赚价差 | 秒级以下 | 机构/专业团队 | 技术门槛极高,边际竞争激烈 |
我自己实盘跑得最多的还是“趋势跟踪+均值回归”的组合:主策略用趋势策略吃大波段,副策略用均值回归在震荡区间内做高抛低吸,形成互补。但这里有个前提——两者的信号必须做隔离,资金分配要单独管理,否则当趋势策略说要买、均值回归策略说要卖的时候,你根本不知道听谁的。
我从一个朋友那里学到一个很好的思路:先各跑各的,把每个策略当成一个独立的“基金经理”,给它们分配不同的资金额度,定期复盘每个“基金经理”的表现,再动态调整资金比例。这比把所有信号混在一个模型里要清晰得多。
2.3 策略逻辑要能“讲出故事”
“法”这个层面,我特别想强调一件事:策略逻辑必须能“讲出故事”。也就是你之所以做这个策略,是因为你相信某个市场规律存在,而不是因为你发现某组参数在回测里表现特别好。
这是量化交易里最容易踩的坑,叫“过拟合”。你拿历史数据反复调参,把止损线、持仓周期调到刚好能躲过过去几次大跌,回测曲线自然好看。但历史不会简单重复,那些参数其实就是为“过去”定制的,到了未来就会失效。
我给团队定了一条规矩:任何策略在立项时,必须先写一段“逻辑说明”,要求用一两段话讲清楚“我赚的是什么钱、这个钱为什么存在、什么情况下我会亏钱”。
有一次,团队一个小伙子提了个策略,说“我们发现周四下午买入、周五卖出胜率很高,可能是周末情结效应”。这个说法逻辑上太弱了——它没有解释为什么周末情结会导致周四买入、周五卖出赚钱,更接近纯粹的统计套利。我们让它回测了十年数据,发现这个效应只存在于某几年,换一个时间段就消失了,典型的“数据挖掘陷阱”。后来这个策略被我们毙掉了。
3. 术:策略代码到底怎么落地
“术”是战术层面,也是大家最感兴趣的一层——怎么写代码、怎么跑回测、怎么调优。我一直觉得,术是最好学的,因为它有标准答案;但也是最容易让人走火入魔的,因为你会误以为“代码写得好=量化做得好”。
3.1 数据清洗:量化策略的“隐形地基”
算法模型再厉害,喂给它脏数据,结果一定是“垃圾进,垃圾出”。A股数据有不少坑,我罗列几个最常见的:
- 前复权与后复权:股票分红送股后,价格会断崖式下跌,如果不复权,均线、动量指标通通失真。选前复权还是后复权要结合策略场景,趋势策略通常建议用后复权,因为前复权数据到了最新一天历史价格会不断变动。
- 停牌与涨跌停:停牌股票的价格一动不动,不适合参与;涨跌停位置你可能根本买不进或卖不出,回测时要过滤掉。
- ST股与退市股:大量策略在ST股上会有异常表现,因为它们已经脱离了正常基本面定价逻辑,建议默认剔除。
- 财报数据滞后性:财报披露日期和截止日期之间天然有时间差,直接用当期财报数据做因子会引入“未来函数”(也叫前视偏差),导致回测虚高。
我记得第一次用Qlib时,直接拿原始数据跑单因子测试,IC值高得惊人,差点以为自己发现了圣杯。后来才发现,是数据里包含了未来的价格信息,导致因子天然“预测”了未来。这个教训让我把“数据清洗”的优先级提到了“模型调优”前面。
3.2 用Python写一个可运行的量化策略原型
我不打算给你展示一个复杂的机器学习模型,那对一个刚入门的读者来说太劝退了。下面这个例子是我经常带新人跑的“入门第一课”——双均线策略,它麻雀虽小但五脏俱全,涵盖了数据获取、信号计算、回测统计三个核心环节。
python复制import pandas as pd
import numpy as np
import akshare as ak
import matplotlib.pyplot as plt
# 1. 获取数据(这里用akshare拉取贵州茅台的日线数据,前复权)
df = ak.stock_zh_a_hist(symbol="600519", period="daily",
start_date="20190101", end_date="20231231", adjust="qfq")
df.columns = ["date", "open", "close", "high", "low", "volume",
"amount", "amplitude", "pct_change", "change", "turnover"]
df = df[["date", "open", "close", "high", "low", "volume"]]
df["date"] = pd.to_datetime(df["date"])
df = df.set_index("date")
# 2. 计算双均线信号:快线5日均线,慢线20日均线
df["ma_fast"] = df["close"].rolling(window=5).mean()
df["ma_slow"] = df["close"].rolling(window=20).mean()
# 3. 生成交易信号:金叉买入(1),死叉卖出(0)
df["signal"] = 0
df.loc[df["ma_fast"] > df["ma_slow"], "signal"] = 1
# 利用diff找出信号发生变化的日期,只在这些日期调仓
df["position"] = df["signal"].diff().fillna(0)
# 4. 回测逻辑:不卖空,当日收盘价成交,按信号持有
df["strategy_return"] = df["position"].shift(1) * df["close"].pct_change()
df["strategy_return"].fillna(0, inplace=True)
df["strategy_equity"] = (1 + df["strategy_return"]).cumprod()
df["benchmark_equity"] = (1 + df["close"].pct_change()).cumprod()
# 5. 评估指标
total_return = df["strategy_equity"].iloc[-1] - 1
annualized_return = (1 + total_return) ** (252 / len(df)) - 1
daily_std = df["strategy_return"].std()
annualized_vol = daily_std * np.sqrt(252)
sharpe = annualized_return / annualized_vol
max_drawdown = (df["strategy_equity"] / df["strategy_equity"].cummax() - 1).min()
print(f"累计收益: {total_return:.2%}")
print(f"年化收益: {annualized_return:.2%}")
print(f"年化波动: {annualized_vol:.2%}")
print(f"夏普比率: {sharpe:.2f}")
print(f"最大回撤: {max_drawdown:.2%}")
这段代码的逻辑很清晰:当5日均线上穿20日均线时,在次日开盘(示例里简化为次日开盘价,但pct_change用的是当日收盘,实际严谨做法是用次日开盘价成交,这里为了演示简化)持有股票,死叉时卖出。回测结果会打印出累计收益、年化收益、夏普比率和最大回撤四个核心指标。
很多人会问:为什么position要shift(1)?这其实是量化回测里最容易犯的错——偷价(look-ahead bias)。如果不shift,你当天收盘看到金叉信号、当天就用收盘价买入,现实中根本做不到,因为形成信号的那一刻收盘价还没出来。所以正确的做法是信号产生后,下一个交易日再执行交易。
代码跑通之后,你可以试着调整两个参数:快线窗口和慢线窗口。你会发现,参数不同、区间不同,结果差异会非常大。这时候你就需要开始研究“参数敏感度”和“过拟合”了——这正好呼应了前面“法”里提到的内容。
3.3 用Qlib搭建一套更完整的策略流程
上面那个手写版本适合理解底层原理,但到了真正的科研和生产阶段,手写就显得力不从心了。这个领域现在比较成熟的开源框架是微软开源的Qlib,我对它的评价是:数据层、研究层、回测层一体覆盖,少写很多底层代码。
Qlib的核心优势有:
- 内置数据清洗流程:自动处理涨跌停、停牌、复权等A股特殊问题。
- 标准化的因子表达:支持截面因子、时间序列因子,并且内置了大量基础因子库。
- 模块化的策略开发架构:你只需要实现
generate_trade_decision之类的接口,框架帮你完成调度、成交撮合、风控、仓位管理。 - 高性能回测引擎:对分钟级、日级数据都能支持,且内置了滑点、手续费模型。
下面是一个用Qlib初始化环境、获取数据并做简单因子分析的示例,方便你感受一下它的接口风格:
python复制import qlib
from qlib.config import REG_CN
from qlib.data import D
from qlib.data.dataset import DatasetH
from qlib.data.dataset.handler import DataHandlerLP
# 初始化Qlib并下载中国A股数据
provider_uri = "~/.qlib/qlib_data/cn_data"
qlib.init(provider_uri=provider_uri, region=REG_CN)
# 定义基础行情字段
fields = ["$open", "$high", "$low", "$close", "$volume", "$factor"]
# 构建数据集
handler = DataHandlerLP(
instruments="csi300", # 用沪深300成分股
start_time="2015-01-01",
end_time="2023-12-31",
freq="day",
infer_processors=[
{"class": "DropnaLP"},
{"class": "CSZScoreNorm", "kwargs": {"fields_group": "feature"}},
],
learn_processors=[
{"class": "DropnaLP"},
{"class": "CSZScoreNorm", "kwargs": {"fields_group": "feature"}},
],
process_type=DataHandlerLP.PTYPE_A
)
dataset = DatasetH(handler)
# 至此,你已经拥有了一个可以直接喂给机器学习模型的标准数据集
Qlib把这个领域很多“脏活累活”都干完了。但是,想用Qlib跑得出彩,说实话还是需要一定的机器学习和统计学基础,否则它只是一个“更漂亮的回测工具”。Qlib官网有详细的文档和示例,从examples目录下的基准模型开始跑一遍,是最快的上手路径。
3.4 调参与优化:别把“过拟合”当成“超额收益”
到了“术”这个层面的高级阶段,必然要面对“调参”。我在这里要给大家泼一盆冷水:回测里那串看起来完美的参数组合,往往是过拟合的产物。
怎么应对?我的经验是:
- 把数据分成训练集和测试集,训练集上调整参数,测试集上仅做一次验证。如果训练集表现好、测试集崩了,说明过拟合。
- 做参数敏感度分析:把参数在±10%范围内微调,如果策略表现剧烈变化,说明模型稳定性差。
- 做多重市场环境测试:把你的策略放到2015年杠杆牛、2018年单边熊、2021年结构牛去跑,看看是否都能存活。
这里我有过特别刻骨铭心的教训。有一次我设计了一个“非常完美”的选股策略,回测年化收益40%,最大回撤才8%,简直像捡到了聚宝盆。结果上实盘跑了三个月,亏损了15%。原因就是我的参数完全是在某一波特定行情里优化的,那段行情里有几只大牛股拉高了组合收益,但那种行情在样本外没有复现。
所以我现在给团队的规矩是:调参只允许调“业务逻辑上有依据”的参数,比如均线窗口对应基本面景气的短中期轮动周期、止损线对应账户可承受的最大亏损比例等。如果某个参数你讲不出业务上的道理,那大概率就是在过拟合。
4. 器:工欲善其事,必先利其器
“器”是量化交易的军火库。前面聊了那么多,真正动手的时候,你面对的第一个问题就是:用什么工具、什么数据源、什么框架来干活?这一章我分享一些实战中的选型经验。
4.1 数据源:免费与付费的取舍之道
A股量化最基础的数据包括行情数据、基本面数据、资金流数据、龙虎榜数据等。数据源选得好不好,直接影响策略开发的效率和准确性。
我用过几个主流选择,总结如下:
| 数据源 | 类型 | 优点 | 缺点 | 适合场景 |
|---|---|---|---|---|
| Tushare(社区版/Pro) | Python接口 | 覆盖面广、社区成熟 | 部分高频或深度数据要积分或付费 | 个人起步、中低频策略 |
| akshare | Python接口 | 免费、接口多 | 数据稳定性一般、字段格式常变 | 原型验证、临时拉数据 |
| 聚宽/米筐 | 在线平台 | 数据、回测、实盘一体 | 数据不能导出到外部使用 | 想快速验证想法、不写太多底层代码 |
| Wind/Choice | 专业终端 | 数据最全最稳 | 贵,个人用不起 | 机构用户 |
| Qlib自带数据 | 开源 | 免费、规范、本地化 | 需要自己下载更新 | 学术研究、本地化批量实验 |
我的建议是:如果只是刚入门学习,首选Tushare Pro或akshare,一个接口简单稳定,一个开源免费。做研究到一定程度,想建立自己的数据仓库,可以搭一个PostgreSQL或ClickHouse数据库,用定时任务往库里灌数据,形成你自己的“数据资产”。
4.2 回测与交易框架:别让“器”绑架了“术”
目前市面上主流的Python回测框架和交易平台有好几个,我一个个聊一下实际体感:
- Backtrader:老牌开源回测框架,功能全面。但它的设计风格比较“重”,继承关系复杂。如果你只是想快速验证一个简单策略,会有种杀鸡用牛刀的感觉。
- Qlib:微软开源的AI量化平台,对机器学习因子挖掘的支持非常出色。适合有一定算法功底、想往“AI量化”方向走的人。
- vn.py:侧重实盘交易,带有完整的交易接口体系(CTP等),在做期货和股票程序化交易方面很强。
- 聚宽/米筐:在线研究平台,对新手极其友好。不需要配置环境,打开浏览器就能写策略、跑回测,甚至可以直接对接券商模拟实盘。我强烈建议零基础的朋友从这类平台入手。
这里我想特别提醒一个误区:很多人喜欢过度关注框架本身,花大量时间去研究Backtrader的内部机制、Qlib的底层源码,反而忽略了对市场的理解和对策略的开发。我的看法是,“器”永远只是工具,不要让工具绑架了你的重心。如果你花了一周还没跑通一个简单的回测,那就果断换个更傻瓜的平台,把精力放在策略本身上。
4.3 硬件与执行:个人量化的最低配置
聊完软件,聊聊硬件。很多朋友会担心:做量化是不是得买几块A100,或者至少要一台双路服务器?以我看,个人做A股日线级中低频策略,一台普通的多核CPU笔记本就够了,内存16G以上,硬盘SSD 512G以上,因为你要存的行情数据其实不大,沪深两市所有A股十年日K线数据加起来也就几个GB。
真正吃硬件的是两种情况:一是你要做日内分钟级甚至tick级的高频回测,二是你要训练深度学习模型(比如LSTM、Transformer这类)。
如果你只是用Qlib跑传统机器学习模型(LightGBM、XGBoost),普通CPU也能胜任。但如果你想尝试深度学习选股,建议至少配一张消费级显卡(RTX 4060或以上),或者租云服务器,比如国内的AutoDL、百度飞桨平台,按小时计费,性价比很高。
还有很多人忽略的执行环境。个人量化交易者,最常用的是通过券商提供的API(比如中泰XTP、华鑫奇点等)实现程序化交易,也可以用QMT(MiniQMT)这类软件实现“半自动”交易。我建议从模拟盘开始,用聚宽或券商的模拟柜台跑一到两个月,确认策略稳定、没有程序bug之后,再拿小资金上实盘。
4.4 关于Kronos这类量化助手的看法
最近看很多人讨论量化交易助手Kronos这类产品。我的理解是,它本质上是一个把经验、数据、工具链集中在一起的“提高效率”的产品。对新手来说,有个助手引导你搭框架、调参数、避坑,确实能少走很多弯路。
但我的态度很明确:你可以用任何工具来提高效率,但核心的交易逻辑必须是你自己理解和掌握的。如果哪天你发现一个“买了就能躺赚”的量化工具,请相信我,那100%是骗局。
5. 势:A股实战,顺势与逆势的生存艺术
“势”这个字有两层意思:一是市场的大势、风格;二是时代和环境的趋势。放在量化交易里,就是“在什么环境里、用什么策略、适不适合当前A股市场”。同一套策略,在美股、港股和A股,表现可能天差地别,因为市场微观结构和参与者特征完全不一样。
5.1 A股市场的四个“特殊规则”,每个都是实战暗礁
A股和欧美成熟市场相比,有很多“独有规则”,你在回测时一定要注意:
- T+1交易制度:当天买入的股票,当天不能卖出。这意味着你做日内交易时必须隔夜持有,隔夜风险会让策略模拟和实盘产生巨大偏差。
- 涨跌停板限制:沪深主板10%,创业板和科创板20%。当一只股票连续涨停时,你根本买不进去;连续跌停时,也卖不出去。回测如果不考虑涨跌停约束,会高估策略收益。
- 交易成本不算低:虽然现在佣金普遍降到万1到万3,但卖出时要交0.1%的印花税(目前有减免政策但本质还有),叠加滑点,做超短线策略的成本压力很大。
- 散户占比高,情绪效应强:A股散户交易占比较高,导致市场经常出现“题材炒作”“抱团”现象,价格对基本面的偏离会比成熟市场更大、更持久。
这些规则不是回测代码里加几行if判断就完事的,它会影响整个策略逻辑。比如在做趋势跟踪时,因为涨跌停和T+1,你的止损单可能根本执行不了;在做套利时,因为印花税,原本微薄的价差空间会被吞噬。
5.2 跟随市场风格动态调“势”
A股的行业轮动和风格切换非常剧烈。2021年核心资产抱团,2023年小盘微盘强势,2024年红利低波独领风骚。一个策略如果在三年里适应了某种风格,一旦切换,就容易遭遇较大回撤。
面对这种情况,我自己的做法是给策略加一层“环境判官”:
- 用市场宽度指标(比如全市场涨停家数、连板高度、两融余额)判断目前是“进攻环境”还是“防守环境”。
- 在进攻环境下,运行趋势策略和事件驱动策略;在防守环境下,切换到低波、高股息或保持低仓位。
- 每季度做一次风格分析,看当前市场对于“市值、估值、成长、动量”等风格因子的偏好,及时调整组合的风格暴露。
这一步就是“顺势而为”。你可以不懂“势”的玄学,但一定要懂“市场风格切换时,你的策略可能会阶段性失效”这个常识。量化不是一劳永逸地挂机赚钱,它也讲究适应环境,否则连量化鼻祖长期资本管理公司也会在特定市场上栽跟头。
5.3 常见实盘问题与排查技巧实录
这一年多实盘下来,我踩过不少坑。下面把最常见的问题整理成一个速查表,希望能帮你少交一点学费:
| 问题现象 | 可能原因 | 排查方向 |
|---|---|---|
| 回测很赚钱,实盘亏钱 | 手续费/滑点没估准,或存在未来函数 | 在回测中加入滑点模型、手续费模型,检查信号是否用到了当日收盘价 |
| 策略突然连续亏损 | 市场风格切换或策略失效 | 先停盘观察,不回测,检查是否进入了该策略不适应的环境 |
| 实际成交价格比信号价格差很多 | 流动性不足、买卖盘深度不够 | 筛选日均成交额,限制单笔下单不超过日成交量的1% |
| 交易系统频繁掉线 | 网络不稳定或券商API不够健壮 | 使用专线或低延迟云服务器,增加程序异常自动重连和告警机制 |
| 仓位控制失灵 | 风控模块没有严格纳入自动化流程 | 把单日最大亏损、最大持仓集中度等风控硬指标写死在交易程序里 |
| 数据更新不及时 | 数据源接口失效或权限到期 | 写一个数据健康监控脚本,每天检查数据的最新日期与完整性 |
这里我想重点展开第一个问题:回测很赚钱、实盘亏钱。这几乎是所有量化新手都会遇到的“成人礼”。我排查这个问题的固定路径是:
- 先核算交易成本。你现在回测里设的佣金、印花税、滑点,是否和实盘一致?尤其要注意小市值股票的滑点,成交100万市值的动量策略,冲击成本可能高达1%以上。
- 再检查是否偷价。用当天收盘信息生成信号,又在当天收盘价成交,这在实盘中根本不可能实现。检查所有信号是否都shift了一天或更久。
- 最后看成交可行性。回测里下单是否过滤了停牌、涨停、跌停、上市不足60天的新股?如果没有,那实盘会一直被“买不进、卖不出”的现实打脸。
5.4 量化交易的未来之“势”:AI大模型能改变什么
最后聊一点点展望。最近AI大模型火得不行,很多人也在问,能不能用大模型做量化交易?我自己用下来,觉得现阶段大模型在量化里能发挥的价值主要在三个方向:
- 因子挖掘的广度:让大模型帮你从海量文本、公告、研报里提炼情绪因子和主题因子。
- 代码编写和策略回放的效率:你只需要用自然语言描述策略,AI帮你生成80%的代码框架。
- 组合管理和归因分析的辅助:帮你解读复杂风险指标,生成通俗易懂的归因报告。
但我不建议把买卖决策全交给大模型。原因很简单:大模型不理解A股市场的很多“潜在规则”,而且它的输出本质上是概率生成,容易出现幻觉。如果你把真金白银交给一个“幻觉”,那风险就太大了。
在我看来,未来比较合理的方式是“人+AI”:人负责交易逻辑和风控,AI负责信息处理、因子搜索和效率提升。这种模式,才更符合“势”的方向。
6. 写在最后:我的几条朴素建议
说一千道一万,量化交易不是一个“一招鲜吃遍天”的银弹。这东西听着高级,实际上是一连串笨功夫的累积:搞数据、写代码、做回测、复盘、调策略、再复盘、再调整。坚持下来,你才能在某个领域形成一点点的正期望优势。
根据我个人的实际经验,最后分享几个朴素但重要的建议:
- 从简单的策略开始。千万别一上来就做多因子深度学习模型。先用双均线、布林带、均值回归这类经典策略跑通全流程,理解“策略开发→数据准备→回测→风控→实盘”的完整链路,再去追求复杂度。
- 永远假设自己是错的。回测曲线越漂亮,越要警惕。每看到一个“完美”的结果,都要想办法证明它是错的,这是做量化最健康的心理状态。
- 风控永远放在第一位。你可以错过很多赚钱的机会,但绝对不能让自己亏到底。单笔止损和账户总回撤是两条生命线,必须死死守住。
- 保持复盘的习惯。我每周花一下午做策略归因分析,看看本轮收益来自哪些因子、哪些行业,哪些仓位是躺赢的、哪些仓位是拖后腿的。时间一长,你对市场的理解会完全不一样。
- 用闲钱交易。这是最后一条,也是我反复对自己和朋友说的一条。量化交易不是提款机,别把生活费、房贷钱丢进策略里,心态一旦崩了,再好的策略也执行不好。
量化这条路上没有捷径,但也不像很多人想的那样高不可攀。抱着敬畏之心学习,拿真金白银的教训换成长,用时间和纪律去积累复利——这条路,朴素但真实。希望这篇文章能帮你在“道法术器势”五个维度上都找到自己的位置,少踩几个坑,稳稳地走下去。
