QUANTITATIVE INVESTMENT GUIDE

量化投资全景
从数据到决策

一份系统、详实的量化投资学习指南。覆盖核心概念、经典策略模板与代码实战、风控技巧、国内监管注意事项,以及从入门到进阶的完整学习路径。

0万亿
国内量化规模
0
百亿量化私募
0
经典策略模板
0
策略流派解析
SCROLL ↓ 探索指南
01 / 基础知识

什么是量化投资?

量化投资是通过数学模型、统计分析和计算机技术进行投资决策的现代方法。核心公式:数据 + 模型 + 程序 + 交易。将投资逻辑写成可计算的规则,让程序客观、可重复地决定何时买、何时卖、风险如何控制。

量化投资 vs 传统投资

对比维度量化投资传统(主观)投资
决策依据历史数据、统计规律、数学模型经验、研报、消息、直觉
投资广度广度优先(全市场多品种扫描)深度优先(少数股票/品种)
执行方式程序执行,纪律性强人工下单,易受情绪影响
风险管理基于模型的科学风险管理基于经验的风险管理
情绪影响无情绪影响易受恐惧贪婪干扰
可验证性历史回测可验证策略有效性难复现,说不清为何赚
收益来源统计套利、趋势、因子溢价选股能力、择时眼光

发展历程

1950s - 1970s

理论奠基

马科维茨投资组合理论、CAPM资本资产定价模型相继提出,为量化投资奠定理论基础。

1989 - 2007

大奖章传奇

詹姆斯·西蒙斯管理的大奖章基金年均收益率高达35%(考虑44%提成后超60%),远超巴菲特同期约20%的年复合回报。

2004

国内起步

国内发行第一只量化产品,标志着中国量化投资起步。

2010 - 2012

对冲时代开启

沪深300股指期货上市,2012年被业内视为中国对冲基金元年。

2025 - 2026

量化超越主观

量化策略首度超越主观策略成为行业主导,百亿级量化私募数量首超传统主观多头私募,公私募量化合计规模接近2万亿元。AI正深刻改变因子挖掘与策略优化各环节。

四大核心要素

数据层

行情数据(OHLCV)、财务数据、资金流数据、另类数据(舆情、卫星图像等)。预处理含缺失值填充、复权处理、剔除ST/停牌股。

策略层

因子研究、信号生成、模型构建、回测验证。头部机构采用三层架构:因子挖掘 → 模型合成 → 执行管理。

执行层

订单管理、成本控制(手续费、滑点、冲击成本)、券商API对接(QMT/PTrade)、速度优化(FPGA、托管机房)。

风控层

仓位管理(单笔最大亏损2%)、止损机制(ATR止损)、黑名单机制、熔断机制、极端行情压力测试。

十大策略流派

统计套利

中高门槛

利用资产间协整性,做多低估、做空高估,赌价差回归。70-80%交易在1-3天内完成价差收敛,收益与大盘涨跌无关。

趋势跟踪

适合入门

相信"趋势是朋友",顺势交易。典型模型:双均线交叉、布林带突破、唐奇安通道。单边行情表现突出,盈亏比可达3:1。

均值回归

适合入门

押注价格围绕均值波动,过度偏离时反向操作。典型模型:RSI超买超卖、KDJ、配对交易、Z-Score模型。适合震荡市。

高频交易

极高门槛

微秒级速度捕捉极短期价差,依靠硬件优势获利。需投入千万级资金建设机房、FPGA芯片。仅限顶级量化私募和券商自营。

多因子模型

机构主流

从海量数据中挖掘价值、成长、动量、质量、低波等因子打分选股。基于Transformer的深度学习模型可构建年化超额收益超19%的选股组合。

市场中性

中低频

多空头寸使组合Beta约等于0,剥离市场波动,纯粹获取选股Alpha。2022年中性策略平均收益9.6%,年化波动率通常低于10%。

CTA策略

危机Alpha

投资期货市场,核心是趋势跟踪。2020年3月股灾中CTA平均收益12%。与其他策略相关性低,适合配置10-20%仓位作为"保险"。

机器学习策略

前沿方向

使用神经网络、强化学习挖掘非线性市场规律。典型应用:NLP情绪分析、Transformer深度选股、强化学习组合优化。过拟合风险高。

常用量化平台对比

平台定位费用核心特点适合人群
聚宽 JoinQuant国内最大在线量化平台免费/200-500元月用户超80万;200+因子库;Tick级回测;A股数据全个人投资者、A股新手
米筐 RiceQuant专业级量化平台免费/1999元年支持期货/期权回测;可对接实盘;完善风控评估期货散户、职业交易员
优矿 Uqer专业研究平台—400+量化因子库;风险模型与组合优化;Jupyter环境有量化基础的研究者
迅投 QMT券商系实盘终端50万-300万门槛本地+云部署;Python/VBA;Tick级回测;全内存交易有实盘需求的进阶者
恒生 PTrade云端自动交易10万-50万门槛云端7x24运行;零代码拖拽+Python模板;分钟级回测无代码基础新手
Backtrader开源回测框架免费多资产事件驱动;支持动态策略加载;Walk Forward优化有编程基础的开发者
vn.py全功能量化框架免费支持股票/期货/期权;从策略到实盘全流程;模块化自主搭建系统的团队
QuantConnect全球开源量化平台免费/99美元月支持美股/加密货币/外汇;开源社区活跃做美股/加密货币的爱好者

Python 量化技术栈

数据处理核心

pandas 表格型金融数据
numpy 高性能数值计算
polars 大数据集高性能替代

技术指标库

TA-Lib 150+专业金融指标
Pandas-TA 基于pandas的指标库
MACD、RSI、布林带一键生成

数据获取

tushare A股行情/财务数据
akshare 全球市场免费数据
yfinance 美股数据

回测框架

backtrader 经典事件驱动框架
zipline Quantopian开源
rqalpha 国产开源框架

可视化

matplotlib K线图/绩效曲线
plotly 交互式图表
mplfinance 金融K线专用

机器学习

scikit-learn 传统ML模型
xgboost/lightgbm 梯度提升树
QLib/FinRL AI量化前沿平台

必须掌握的关键指标

S
夏普比率 Sharpe Ratio
(年化收益 - 无风险利率) / 年化波动率

衡量每单位总风险的超额收益。>1.0优秀,>2.0顶级,>3需警惕过度优化

M
最大回撤 Max Drawdown
(峰值净值 - 谷值净值) / 峰值净值

策略可能出现的最极端亏损。<20%为佳,越小越好

α
阿尔法 Alpha
基金收益 = α + β × 市场涨跌

与市场波动无关的超额收益。Alpha>0 获得超额收益

β
贝塔 Beta
β = Cov(Ri, Rm) / Var(Rm)

相对于市场基准的敏感度。β=1同步,β>1放大波动

I
信息比率 Info Ratio
超额收益 / 跟踪误差

单位跟踪误差带来的超额收益,越大越好

So
索提诺比率 Sortino
(年化收益 - 无风险利率) / 下行标准差

夏普改进版,仅考虑下行风险,更合理

W
胜率 Win Rate
盈利交易次数 / 总交易次数

>50%为佳,但非绝对(趋势策略胜率低但盈亏比高)

C
卡玛比率 Calmar
年化收益率 / 最大回撤

衡量回撤风险下的收益效率,越高越好

02 / 策略实战

经典策略模板与代码

六大经典量化策略的完整Python实现,基于Backtrader框架。每个策略包含原理说明、适用场景、完整代码、逐行解释及优缺点分析。

01 双均线交叉策略

量化交易的"Hello World"。利用短期均线和长期均线的交叉判断趋势方向。金叉买入,死叉卖出。

趋势跟踪 · 适合入门
dual_ma_strategy.py
import backtrader as bt
from datetime import datetime

class DualMAStrategy(bt.Strategy):
    """双均线交叉策略:快均线上穿慢均线买入(金叉),下穿卖出(死叉)"""
    params = (
        ('fast_period', 10),      # 快均线周期
        ('slow_period', 30),      # 慢均线周期
        ('position_size', 0.95),  # 仓位比例
    )

    def __init__(self):
        # 计算短期简单移动平均线
        self.fast_sma = bt.indicators.SMA(
            self.data.close, period=self.p.fast_period)
        # 计算长期简单移动平均线
        self.slow_sma = bt.indicators.SMA(
            self.data.close, period=self.p.slow_period)
        # 交叉信号:>0为金叉,<0为死叉
        self.crossover = bt.indicators.CrossOver(
            self.fast_sma, self.slow_sma)
        self.order = None

    def next(self):
        if self.order:
            return
        if not self.position:
            # 无持仓时:金叉买入
            if self.crossover > 0:
                self.order = self.buy(size=self.p.position_size)
        else:
            # 有持仓时:死叉卖出
            if self.crossover < 0:
                self.order = self.close()

# ===== 回测配置 =====
cerebro = bt.Cerebro()
cerebro.addstrategy(DualMAStrategy)
data = bt.feeds.YahooFinanceData(dataname='AAPL',
    fromdate=datetime(2020, 1, 1),
    todate=datetime(2024, 12, 31))
cerebro.adddata(data)
cerebro.broker.setcash(100000.0)
cerebro.broker.setcommission(commission=0.001)
cerebro.addanalyzer(bt.analyzers.SharpeRatio, _name='sharpe')
cerebro.addanalyzer(bt.analyzers.DrawDown, _name='drawdown')
results = cerebro.run()

02 动量策略 (RSI + MACD)

基于"强者恒强"假设。MACD金叉且RSI处于强势区间(50-70)时买入,MACD死叉或RSI超买(>70)时卖出。

趋势跟踪 · 中等复杂度
momentum_strategy.py
import backtrader as bt

class MomentumStrategy(bt.Strategy):
    """动量策略: MACD金叉 + RSI强势区间(50-70)时买入"""
    params = (
        ('rsi_period', 14),
        ('macd_fast', 12),
        ('macd_slow', 26),
        ('macd_signal', 9),
    )

    def __init__(self):
        # 计算RSI指标
        self.rsi = bt.indicators.RSI(
            self.data.close, period=self.p.rsi_period)
        # 计算MACD指标
        self.macd = bt.indicators.MACD(
            self.data.close,
            period_me1=self.p.macd_fast,
            period_me2=self.p.macd_slow,
            period_signal=self.p.macd_signal)
        self.order = None

    def next(self):
        if self.order:
            return
        if not self.position:
            # 入场:MACD金叉 + RSI在50-70之间(强势但未超买)
            if (self.macd.macd[0] > self.macd.signal[0] and
                self.rsi[0] < 70 and self.rsi[0] > 50):
                self.order = self.buy()
        else:
            # 出场:MACD死叉 或 RSI超买(>70)
            if (self.macd.macd[0] < self.macd.signal[0] or
                self.rsi[0] > 70):
                self.order = self.close()

03 均值回归策略 (布林带 + RSI)

基于"价格围绕均值波动"规律。价格触及布林带下轨且RSI超卖(<30)时买入,触及上轨或RSI超买(>70)时卖出。

逆势交易 · 适合入门
mean_reversion.py
import backtrader as bt

class MeanReversionStrategy(bt.Strategy):
    """均值回归: 布林带下轨+RSI超卖买入,上轨+RSI超买卖出"""
    params = (
        ('period', 20),          # 布林带周期
        ('devfactor', 2),       # 标准差倍数
        ('position_size', 0.95),
    )

    def __init__(self):
        # 计算布林带指标
        self.bband = bt.indicators.BollingerBands(
            self.data.close,
            period=self.p.period,
            devfactor=self.p.devfactor)
        # RSI辅助确认
        self.rsi = bt.indicators.RSI(
            self.data.close, period=14)
        self.order = None

    def next(self):
        if self.order:
            return
        if not self.position:
            # 入场:价格跌破下轨 且 RSI超卖(<30)
            if (self.data.close[0] < self.bband.lines.bot[0] and
                self.rsi[0] < 30):
                self.order = self.buy(size=self.p.position_size)
        else:
            # 出场:价格突破上轨 或 RSI超买(>70)
            if (self.data.close[0] > self.bband.lines.top[0] or
                self.rsi[0] > 70):
                self.order = self.close()

04 网格交易策略

将价格按固定间隔划分网格,价格每下跌一个网格买入,每上涨一个网格卖出。在震荡市中持续低买高卖。

震荡套利 · 适合自动化
grid_trading.py
import backtrader as bt

class GridTradingStrategy(bt.Strategy):
    """网格交易:基准价上下按固定间距设置网格买卖"""
    params = (
        ('grid_interval', 0.02),  # 网格间距(2%)
        ('grid_volume', 100),     # 每格交易量(股)
        ('max_grids', 10),        # 最大网格层数
    )

    def __init__(self):
        self.base_price = None      # 基准价格
        self.last_grid_level = 0    # 上次网格层级
        self.order = None

    def next(self):
        if self.order:
            return
        current_price = self.data.close[0]
        # 首次运行设置基准价格
        if self.base_price is None:
            self.base_price = current_price
            self.order = self.buy(size=self.p.grid_volume)
            return
        # 计算当前网格层级
        grid_level = int(
            (current_price - self.base_price) /
            (self.base_price * self.p.grid_interval))

        if not self.position:
            # 价格下跌到新网格层则买入
            if grid_level < self.last_grid_level:
                self.order = self.buy(size=self.p.grid_volume)
                self.last_grid_level = grid_level
        else:
            if grid_level > self.last_grid_level:
                # 价格上涨到新网格层则卖出
                self.order = self.sell(size=self.p.grid_volume)
                self.last_grid_level = grid_level
            elif grid_level < self.last_grid_level:
                # 价格继续下跌,加仓(限制最大层数)
                if abs(grid_level) < self.p.max_grids:
                    self.order = self.buy(size=self.p.grid_volume)
                    self.last_grid_level = grid_level

05 配对交易策略 (Pairs Trading)

市场中性统计套利。寻找两只协整股票,当价差Z-score超过阈值时做空强势、做多弱势,等待价差回归获利。

统计套利 · 市场中性
pairs_trading.py
import backtrader as bt

class PairsTradingStrategy(bt.Strategy):
    """配对交易: Z-score超阈值开仓,回归0附近平仓"""
    params = dict(
        period=20,         # Z-score计算窗口
        threshold=2.0,     # 开仓阈值
        exit_threshold=0.5, # 平仓阈值
        stake=10,          # 每笔交易股数
    )

    def __init__(self):
        # data0=资产A, data1=资产B
        self.spread = self.data0.close - self.data1.close
        self.spread_sma = bt.indicators.SMA(
            self.spread, period=self.p.period)
        self.spread_std = bt.indicators.StandardDeviation(
            self.spread, period=self.p.period)
        # 计算Z-score
        self.zscore = (
            self.spread - self.spread_sma
        ) / self.spread_std

    def next(self):
        if self.zscore[0] > self.p.threshold:
            # Z>2: 价差过大,A被高估 → 卖A买B
            self.sell(data=self.data0, size=self.p.stake)
            self.buy(data=self.data1, size=self.p.stake)
        elif self.zscore[0] < -self.p.threshold:
            # Z<-2: 价差过小,A被低估 → 买A卖B
            self.buy(data=self.data0, size=self.p.stake)
            self.sell(data=self.data1, size=self.p.stake)
        elif abs(self.zscore[0]) < self.p.exit_threshold:
            # Z回归至0附近,平仓获利
            self.close(data=self.data0)
            self.close(data=self.data1)

06 海龟交易策略

经典趋势跟踪完整系统。价格突破20日最高价做多,基于ATR动态仓位管理,每上涨0.5 ATR加仓(最多4次),回落2 ATR止损。

趋势跟踪 · 完整系统
turtle_strategy.py
import backtrader as bt

class TurtleStrategy(bt.Strategy):
    """海龟交易: 突破入场 + ATR仓位管理 + 金字塔加仓"""
    params = (
        ('long_period', 20),    # 入场通道周期
        ('short_period', 10),   # 离场通道周期
        ('atr_period', 14),     # ATR周期
        ('risk_percent', 0.01), # 每笔风险1%
    )

    def __init__(self):
        self.order = None
        self.buyprice = 0
        self.buy_size = 0
        self.buy_count = 0  # 加仓次数
        # 唐奇安通道
        self.H_line = bt.indicators.Highest(
            self.data.high(-1), period=self.p.long_period)
        self.L_line = bt.indicators.Lowest(
            self.data.low(-1), period=self.p.short_period)
        # ATR计算
        self.TR = bt.indicators.Max(
            (self.data.high(0) - self.data.low(0)),
            abs(self.data.close(-1) - self.data.high(0)),
            abs(self.data.close(-1) - self.data.low(0)))
        self.ATR = bt.indicators.SimpleMovingAverage(
            self.TR, period=self.p.atr_period)
        # 突破信号
        self.buy_signal = bt.ind.CrossOver(
            self.data.close(0), self.H_line)

    def next(self):
        if self.order:
            return
        # 入场:突破上轨且空仓
        if self.buy_signal > 0 and self.buy_count == 0:
            # 仓位 = 总资金×1% / ATR
            self.buy_size = self.broker.getvalue() * 0.01 / self.ATR
            self.buy_size = int(self.buy_size / 100) * 100
            self.order = self.buy(size=self.buy_size)
            self.buyprice = self.data.close[0]
            self.buy_count = 1
        # 加仓:每上涨0.5*ATR加仓,最多4次
        elif (self.position.size > 0 and
              self.data.close[0] > self.buyprice + 0.5 * self.ATR[0] and
              self.buy_count < 4):
            self.order = self.buy(size=self.buy_size)
            self.buyprice = self.data.close[0]
            self.buy_count += 1
        # 止损:回落2*ATR
        elif (self.position.size > 0 and
              self.data.close[0] < self.buyprice - 2 * self.ATR[0]):
            self.order = self.close()
            self.buy_count = 0

六大策略对比

策略类型适用市场信号频率复杂度核心指标
双均线趋势跟踪趋势市低低SMA交叉
动量趋势跟踪波动市中中RSI + MACD
均值回归逆势交易震荡市中中布林带 + RSI
网格交易震荡套利震荡市高低价格网格
配对交易统计套利全市场低高Z-score
海龟交易趋势跟踪强趋势市低高唐奇安通道 + ATR

回测六大陷阱

!
回测的真正价值不在于"找到好策略",而在于"淘汰坏策略"

回测结果好不代表实盘能赚钱,但回测结果差一定说明策略有问题——先用回测做"一票否决"。

陷阱1: 未来函数

在回测中使用了"当时还无法获得"的信息。如用当日收盘价计算信号并在当日交易、使用未公布的财报数据、前复权价格陷阱。

i

检测方法:将策略信号向前偏移1-2天,如果收益大幅下降,则100%存在未来函数。

陷阱2: 幸存者偏差

回测中只使用当前还在上市的股票,忽略已退市股票。A股2000年以来已有超500只退市,忽略它们会虚高收益约12%。

i

正确做法:使用包含退市股票的完整历史数据集,使用历史成份股快照。

陷阱3: 过度拟合

策略过度学习历史噪声而非真实规律。参数对结果极其敏感,稍微改变参数收益就断崖式下跌。

i

应对:样本外测试、Walk-Forward分析、参数高原检验、限制参数不超过3个。

陷阱4: 忽略交易成本

未充分考虑手续费、滑点、冲击成本。A股佣金约万1.5-万3,印花税卖出单边0.05%,滑点0.05%-0.2%。

i

加入交易成本后策略收益大幅下降,说明对成本敏感,实盘很难盈利。

!
专业回测流程

策略想法 → 历史回测 → 样本外测试 → 模拟盘交易(6-9个月) → 小资金实盘 → 正式上线。每个环节都不可跳过。

03 / 实战心法

技巧与建议

从策略构建到风险管理的实战经验。核心原则:逻辑先行、数据驱动、纪律执行。不回测、不验证,绝不实盘。

构建有效策略的四原则

1

明确目标先行

在写代码之前先确定可接受的收益目标和最大回撤,避免"既要高收益又要零回撤"的混合目标导致策略毁灭。

2

经济逻辑优先

每一个入选因子/参数都必须有明确的金融逻辑支撑,而非单纯的数据拟合。能解释"为什么赚钱"比"历史赚了钱"更重要。

3

从简单到复杂

从经典策略(如双均线)切入,逐步加入复杂因子。通过回测发现参数敏感点,而非追求一次性完美。

4

贴近实盘场景

开发时就纳入换手率限制、滑点模拟、手续费等实际交易成本,避免回测收益虚高。

数据清洗关键要点

复权处理

除权除息导致的价格下跳会干扰均线等技术指标。需根据策略选择前复权或后复权,否则回测结果失真。

幸存者偏差

回测中只使用现存股票会严重偏差。A股2000年至今已有超500只退市,忽略它们会虚高收益约12%。

代码统一

不同数据源代码格式不一(如600519.SH vs sh600519),合并数据集时易出错,需统一命名规范。

停牌处理

停牌期间无法交易,需在回测中正确处理停牌日,避免在停牌日产生交易信号。

涨跌停处理

涨停时无法买入,跌停时无法卖出。回测需模拟涨跌停限制,否则收益虚高。

异常值剔除

对极端值进行Winsorize处理或3σ剔除,防止异常数据对因子IC计算和策略信号产生干扰。

风险管理体系

核心原则

分散投资:不把所有资金投入单一策略,构建低相关性投资组合

严格止损:设定明确止损线并严格执行,可用ATR动态止损

定期压力测试:模拟极端行情,保持现金仓位应对黑天鹅

多层级风控:盘前、盘中、盘后24小时实时预警及人工监督

关键指标预警

指标健康范围预警信号
年化收益率与基准对比超过30%需警惕
最大回撤<20%>30%风险过高
夏普比率>1<0.5无效策略
换手率与策略频率匹配异常波动需检查

仓位与资金管理

i
仓位管理模型

等权重、风险平价(Risk Parity)是常用方法。初始实盘资金建议不超过总本金20%,严格避免杠杆操作。设置每日最大亏损限额,建立自动化监控报警机制。实盘过渡:先模拟盘运行1-3个月,初始实盘资金不超过总资金的10%。

避免过拟合的七种方法

1

样本外测试

将数据分为训练集和测试集,只在训练集优化,在测试集验证。

2

前向分析 (Walk-Forward)

滚动切分时间序列,在各局部区间验证泛化误差的方差稳定性。

3

单遍测试原则

一次优化一次验证,抵制多次调整参数的冲动。

4

蒙特卡洛模拟

对历史数据重采样生成大量模拟路径,检验策略统计稳健性。

5

限制参数空间

避免高维参数组合,优先选经济意义明确的参数,用L1/L2正则化。

6

多市场验证

同一逻辑在不同资产上是否一致有效,跨市场稳定性检验。

7

警惕未来函数

逐行检查所有特征计算是否只使用历史数据,避免信息泄露。

!

过拟合诊断信号

参数微调后收益剧烈波动;不同时段表现差异大;随机扰动数据后策略失效。

策略失效信号与应对

失效信号

回测收益曲线过度平滑或持续线性增长
策略实盘表现与回测预测严重不符
超额收益持续衰减、回撤突破历史极值
市场结构性变化(牛市/熊市切换)导致规律失效

应对方法

实时模拟交易(6-9个月)确认与回测预测相符
定期再训练机制:动态更新参数,保留核心逻辑
设置性能阈值:OOS夏普低于1.0则拒绝上线
向中低频转型:降换手率至40-60倍,深挖基本面因子

04 / 国内须知

国内量化注意事项

做国内量化必须了解的监管环境、A股特殊性、平台选择、数据源对比及个人投资者门槛建议。

监管政策时间线

2023年9月

加强程序化交易报告

证监会发布加强程序化交易报告通知,强化对量化交易监管(背景为2023年8月市场波动引发对量化的关注)。

2024年5月15日

《证券市场程序化交易管理规定(试行)》发布

证监会正式发布,2024年10月8日起施行。总体思路:"趋利避害、突出公平、有效监管、规范发展"。

2024年6月

三大交易所发布实施细则征求意见稿

沪深北交易所分别发布《程序化交易管理实施细则(征求意见稿)》,细化四类异常交易行为,明确高频交易认定标准。

2025年7月7日

《程序化交易管理实施细则》正式实施

标志着国内量化行业进入规范发展时代。高频交易差异化收费落地,重点监控四类异常行为:瞬时申报速率异常、频繁瞬时撤单、频繁拉抬打压、短时间大额成交。

2026年7月

证监会座谈会两提"规范量化交易"

证监会连开两天座谈会,与会代表两次提出"进一步规范量化交易行为""规范发展量化交易和AI应用"。

!
新规核心要点

报告管理:程序化交易投资者须真实、准确、完整、及时报告账户信息、资金规模、杠杆率、交易策略、最高申报速率等。高频交易从严监管:额外报告、提高交易费用等差异化管理。内外资一致原则:沪股通投资者参照适用。

A股市场特殊性

关键T+1交易制度

当日买入的股票次日才能卖出,限制了日内回转交易(融券标的除外),对高频策略构成根本约束。

关键涨跌停限制

主板±10%,创业板/科创板±20%(上市前5日不设限),ST股±5%。涨跌停导致无法成交、流动性枯竭。

融券限制

融券标的范围有限,2023年以来监管对融券做空持续收紧,对市场中性策略的对冲端影响较大。

退市制度

忽略退市股票会产生幸存者偏差,A股2000年以来已有超500只退市。回测必须包含退市股票。

散户占比高

市场情绪波动大、题材炒作频繁,量化资金高成交占比会直接影响个股短期走势。

程序化交易报告

客户须先向券商报告,经券商核查确认后方可进行程序化交易。

数据源选择对比

数据源费用覆盖市场特点适合人群
Tushare Pro基础免费/高级需积分A股为主数据规范,支持复权,稳定性高个人开发者、学生
AKShare完全免费全球主流市场覆盖面最广,但本质是爬虫聚合,稳定性弱开源爱好者、原型开发
Baostock纯免费A股、港股准确性优于AKShare,无积分门槛长周期回测
Wind万得年费数万-数十万全市场最全国内机构标准,数据质量顶级券商、公募、大型私募
Choice东方财富年费几千元全市场实时行情个人用户性价比首选进阶个人用户
i
数据源避坑建议

新手优先用 Tushare + Baostock 组合练手,足够支撑日线级策略回测。做日内/高频策略必须升级到收费Level2数据。因子研究优先选聚宽/通联的付费因子库,能节省80%因子清洗时间。AKShare适合宏观数据获取,但工程稳定性需自行验收。部分爬取数据存在合规风险,实盘应选择持牌机构授权数据源。

国内量化行业现状(2025-2026)

3.2
量化私募规模(万亿元)

2020年仅0.76万亿,5年增长超4倍

55
百亿量化私募(家)

2025年7月首超主观私募

52.5
2025量化多头平均收益(%)

比主观私募高近9个百分点

80
AI渗透率(%)

约八成机构已完成AI模型训练

个人投资者门槛与建议

券商平台资金门槛特点
多数券商QMT/PTrade50-100万主流选择,功能全面
国金证券等最低10万低门槛入门选择
专业投资者认证300万以上解锁更多交易权限
主流量化交易费率—万2.5-万3水平
i
个人投资者实操建议

新手入门可先购买指数增强基金(如易方达沪深300量化增强),年化跑赢指数约3-5%。进阶玩家在聚宽平台回测简单策略,验证有效性后再小仓实盘。初始实盘资金不超过总本金20%,严格避免杠杆。注意合规:国内非机构投资者使用API接口受限,高频交易可能触及监管红线。

05 / 进阶之路

后续学习路径

从入门到进阶的完整学习路线图,涵盖推荐书籍、在线课程、开源项目、量化比赛及职业发展路径。

四阶段学习路线图

I

第一阶段:基础搭建(1-2个月)

学习Python基础:掌握NumPy、Pandas数据处理库。了解金融市场基本产品和交易规则。安装量化平台:熟悉Backtrader、Zipline或聚宽等回测框架。数学基础:概率论、线性代数、统计学(假设检验、回归分析)。

II

第二阶段:策略实践(2-3个月)

实现简单策略:双均线交叉、布林带突破、RSI超买超卖。学习数据获取:使用Tushare、AKShare等开源数据接口。进行基础回测:评估策略收益和风险特征(夏普比率、最大回撤)。

III

第三阶段:进阶提升(3-6个月)

研究因子模型:价值因子、动量因子、质量因子。学习机器学习应用:随机森林、XGBoost预测股价。了解实盘对接:券商API接口和交易系统。掌握风控层:动态止损、仓位管理(ATR指标、风险平价)。

IV

第四阶段:工程部署(持续)

实盘部署:VN.PY事件引擎配置、日志系统搭建、异常报警。策略迭代SOP流程,持续复盘优化。关注AI前沿:深度学习因子挖掘、强化学习交易执行、NLP情绪分析。

推荐书籍

入门阶段

中文
《量化投资策略的技术与实践》

丁鹏 · 覆盖策略设计、回测验证、实盘要点

中文
《打开量化投资的黑箱》

里什·纳兰 · 讲机构怎么做量化,完整流程

中文
《量化投资:以Python为工具》

电子工业出版社 · Python量化入门实战

中文
《Python量化交易实战》

机械工业出版社 · 从零到一的实战指南

进阶阶段

英文
Active Portfolio Management

Grinold & Kahn · 量化组合管理圣经

英文
Quantitative Trading

Ernest Chan · 经典教材,策略经实盘验证

英文
Advances in Financial Machine Learning

Marcos López de Prado · ML在量化中的应用

英文
Python for Finance

Yves Hilpisch · 金融编程权威参考

在线课程与资源

免费优质课程

Coursera: Machine Learning(吴恩达)、Financial Engineering and Risk Management(哥大)、Machine Learning for Trading(佐治亚理工)

edX: 量化金融基础、Python金融分析

B站: "小市值量化"系列教程

QuantConnect: Learning Center(配套回测平台)

付费高性价比

聚宽量化学院: 国内最专业量化教育平台,从Python基础到策略开发到风控

BigQuant: AI量化方向课程

DataCamp: Python金融数据分析系列

开源项目

Backtrader: 轻量级回测框架
VN.PY: 国内最流行实盘框架
RQAlpha: 聚宽开源回测框架
QLib: 微软亚洲研究院AI量化平台
FinRL: 强化学习量化交易
Pyfolio: 30+绩效指标分析报告

量化比赛

WorldQuant Challenge

推荐

国际顶级对冲基金WorldQuant主办。单人赛零基础友好,积分制拿牌(青铜→大师),学习+比赛仅需5-8周。在BRAIN平台挖掘因子,通过回测验证有效性。

优秀选手可直接竞争研究顾问、实习、全职岗位,是量化求职敲门砖。许多金融机构将该竞赛视为选拔人才的重要参考。

Kaggle 金融竞赛

数据竞赛

参与金融类数据竞赛,积累策略开发经验,可长期组队拿牌。全球顶级数据科学竞赛平台,含多个金融市场预测类赛题。

国内平台:JoinQuant/BigQuant等定期举办策略竞赛,Top团队可获实盘资金奖励。

职业发展路径

量化研究员

侧重因子挖掘、策略迭代、统计建模。核心竞争力是策略超额稳定性。

量化开发岗

聚焦系统搭建、分布式计算、低延迟交易系统。程序员转行首选切入点。

风险管理岗

关注极值控制、压力测试、多层级风控体系设计。

AI/算法工程岗

需求上升最快,专注大模型部署、深度学习因子挖掘、NLP情绪分析。

!
行业趋势提示

行业已由"竞速赛"转为"淘汰赛",策略超额稳定性是核心竞争力。AI深度渗透背景下,需求上升的是算法/AI工程、复合型投研与数据科学岗位;需求下降的是初级研究员、实习生与数据处理岗位。转行关键:用2-3个完整策略开发项目(含回测报告、风险分析)证明能力,而非仅靠证书。