statistical-arbitrage
统计套利策略的完整指南,包括配对交易、协整分析、主成分策略和行业轮动套利。适用于需要构建市场中性策略、对冲系统性风险并获取稳定Alpha收益的量化投资场景。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
统计套利策略的完整指南,包括配对交易、协整分析、主成分策略和行业轮动套利。适用于需要构建市场中性策略、对冲系统性风险并获取稳定Alpha收益的量化投资场景。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
量化投资策略组合选择指南,根据市场环境(牛/熊/震荡)选择合适的选股和择时策略组合。适用于需要构建或调整量化投资组合、不知道如何搭配使用多种策略的投资者。
资金流选股模型指南,包括资金流概念、测算方法和基于高频数据的选股策略。适用于需要利用资金流向进行选股决策的场景。
动量与反转策略指南,包括行为金融学基础、动量反转效应的成因和A股量化策略。适用于需要理解和实施动量/反转投资策略的场景。
多因子选股模型的完整指南,包括因子选取、有效性检验(排序法)、冗余因子剔除、综合评分模型构建和实证案例。适用于需要构建或优化多因子选股策略的量化投资者。
量化选股基础知识,介绍量化投资的概念、框架以及与传统投资方法的区别。当需要理解量化选股的核心理念、适用场景或构建量化选股系统时使用此 skill。
行业轮动策略指南,基于宏观经济周期和M2指标的A股行业轮动模型。适用于需要理解和实施行业配置策略的场景。
| name | statistical-arbitrage |
| description | 统计套利策略的完整指南,包括配对交易、协整分析、主成分策略和行业轮动套利。适用于需要构建市场中性策略、对冲系统性风险并获取稳定Alpha收益的量化投资场景。 |
统计套利是一种基于数学模型和历史统计规律的风险套利策略。它利用证券价格的历史统计规律进行套利,与无风险套利不同,统计套利存在历史规律失效的风险。其核心思想是通过构建多头和空头组合来对冲市场风险,获取与市场无关的稳定Alpha收益。
何时使用此技能:
Morgan Stanley将统计套利定义为:一种基于模型的投资过程,在不依赖于经济含义的情况下,运用数量手段构建资产组合,根据证券价格与数量模型所预测的理论价值进行对比,构建证券投资组合的多头和空头,从而对市场风险进行规避,获取一个稳定的Alpha。
| 特征 | 统计套利 | 无风险套利 |
|---|---|---|
| 理论基础 | 历史统计规律 | 价格必然收敛 |
| 风险 | 历史规律可能失效 | 理论无风险 |
| 收益 | 概率性Alpha | 确定性收益 |
| 适用范围 | 相关性资产对 | 期货到期收敛 |
统计套利主要有两大方法:
推荐策略:协整策略更优,因为:
配对交易(Pairs Trading)是最经典的统计套利方法:
关键特点:
Step 1: 行业划分
└─ 在同一行业内筛选股票对,保证主营业务相似
Step 2: 收益率相关性检验
└─ 要求配对股票历史收益率相关系数 > 阈值(建议 > 0.85)
Step 3: 协整关系检验
└─ 检验两只股票价格序列是否存在长期均衡关系
Step 4: 价差形态过滤
└─ 筛选价差回归速度快的股票对,获得更多交易机会
两只股票存在协整关系的条件:
协整方程:
Pa,t = α + β × Pb,t + εt
其中 εt(残差)必须是平稳序列。
检验步骤:
| 参数 | 含义 | 推荐范围 |
|---|---|---|
| δ1 | 建仓阈值 | 1.0 ~ 1.3(σ倍数) |
| δ2 | 平仓阈值 | -1.0 ~ -0.7(σ倍数) |
| δ3 | 止损阈值 | 2.0 ~ 3.0(σ倍数) |
入场条件:
spreadt > δ1 × σt:股票A相对高估,股票B相对低估
spreadt < -δ1 × σt:股票A相对低估,股票B相对高估
平仓条件:
spreadt > δ2 × σt 或 spreadt < -δ2 × σt:价差回归,平仓获利止损条件:
spreadt > δ3 × σt 或 spreadt < -δ3 × σt:协整关系破坏,立即止损最优阈值确定方法: 回测优化,在样本内寻找收益最大化的参数组合
模型I:独立同分布假设
εt ~ N(0, σ²)
模型II:均值回复过程(推荐)
dε(t) = m(ε(t) - m)dt + σdW(t)
模型III:AR(1)模型
模型IV:GARCH(1,1)模型
Step 1: 股价矩阵标准化
└─ PT×n → 标准化矩阵 P'T×n
Step 2: 计算相关系数矩阵
└─ P'n×n 的相关系数矩阵 Rn×n
Step 3: 特征分解
└─ 计算特征根 λ1, λ2, ..., λn
└─ 计算特征向量 V1, V2, ..., Vn
Step 4: 构建主成分组合
└─ fi = P'T×n × Vi
└─ 通常取前k个主成分(累计贡献率 ≥ 80%~90%)
Step 5: 回归分析
└─ 将单只股票收益率表达为主成分组合的线性方程
└─ 根据残差偏离进行套利
| 特征 | 协整策略 | 主成分策略 |
|---|---|---|
| 样本内收益 | 40%~50%/年 | 更高 |
| 样本外收益 | ~8%/半年 | 更高、更稳健 |
| 可靠性 | 基于个股对 | 基于股票组合 |
| 推荐程度 | 一般 | 强烈推荐 |
利用同一市场环境下不同行业股票波动不同步性,获取市场中性Alpha收益。
案例:农林 / 制造行业轮动
1. 归一化行业指数
└─ 以某基准日的指数值为1
2. 计算行业比值
└─ 农林指数 / 制造指数
3. 设置交易区间
└─ 比值 < 0.9:卖空制造,买入农林
└─ 比值 ≈ 1.0:平仓
└─ 比值 > 1.1:卖空农林,买入制造
| 方法 | 描述 | 特点 |
|---|---|---|
| 固定窗口 | 协整参数固定,用新数据计算残差 | 假定协整关系不变 |
| 滚动窗口 | 每天平移,参数动态更新 | 捕捉参数变化 |
| 扩展窗口 | 窗口长度不断增加 | 可能过于滞后 |
推荐方法:滚动窗口方法(方法二)在样本外表现最好
不等价差突破阈值就建仓,而是等价差反向回归穿越阈值时才建仓。
优点:
注意: 实证表明提前平仓对收益影响可能是负面的
利用负溢价认股权证进行无风险套利:
案例:江铜权证的套利
1. 买入负溢价认股权证
2. 融券卖空标的正股
3. 到期行权归还股票
4. 锁定权证的负溢价收益
当可转债转股溢价为负时:
1. 买入可转债
2. 融券卖出标的股票
3. 转股后归还融券
4. 获取转股价值与转债价格差额
券商对冲融券风险:
1. 向投资者融券卖出股票
2. 同时做空股指期货对冲系统性风险
3. 获取稳定的融券利息收益
| 脚本 | 功能 | 使用场景 |
|---|---|---|
scripts/pairs_trading.py | 协整检验、配对交易信号生成、回测 | 配对交易策略开发与验证 |
# 使用 uv 管理 Python 环境
uv venv .venv
source .venv/bin/activate
# 安装依赖
uv pip install pandas numpy statsmodels matplotlib
# 运行脚本
python scripts/pairs_trading.py --help
# 1. 协整检验
python scripts/pairs_trading.py test --price-a data/stock_a.csv --price-b data/stock_b.csv
# 2. 生成交易信号
python scripts/pairs_trading.py signals --price-a data/stock_a.csv --price-b data/stock_b.csv --entry-threshold 1.2 --exit-threshold -0.8
# 3. 回测
python scripts/pairs_trading.py backtest --price-a data/stock_a.csv --price-b data/stock_b.csv --entry-threshold 1.2 --exit-threshold -0.8
CSV 文件必须包含以下列:
date: 日期(YYYY-MM-DD 格式)close: 收盘价示例:
date,close
2020-01-02,10.50
2020-01-03,10.55
...
| 错误场景 | 可能原因 | 解决方案 |
|---|---|---|
| 协整检验 p 值 > 0.05 | 两股票不存在长期均衡关系 | 更换股票对,确保同行业、业务相似 |
| ADF 检验失败 | 残差序列不平稳 | 重新回归计算,或使用滚动窗口 |
| 样本外收益为负 | 协整关系在样本外失效 | 缩短滚动窗口期,增加止损频率 |
| 交易信号过于频繁 | 阈值 δ1 设置过低 | 提高 δ1 至 1.2~1.5 |
| 价差长期不回归 | 行业基本面发生重大变化 | 缩短持仓周期,及时止损 |
问题:运行 pairs_trading.py 报错 "ModuleNotFoundError"
# 解决方案:使用 uv 创建并激活环境
uv venv .venv
source .venv/bin/activate
uv pip install pandas numpy statsmodels
# 运行脚本
python scripts/pairs_trading.py --help
问题:协整检验结果不稳定
# 原因:数据时间窗口过短
# 解决:确保使用2年以上日线数据
# 推荐:使用滚动窗口方法更新参数
问题:回测收益与实盘差异大
# 可能原因:
# 1. 回测未考虑滑点 - 建议设置滑点成本 0.1%~0.2%
# 2. 流动性不足 - 选择日均成交额 > 1亿的股票
# 3. 融券成本未计入 - 融券年化成本约 8%~12%
quant-stock-selection-intro: 量化选股入门multi-factor-model: 多因子选股模型timing/trend-following-timing: 趋势追踪择时