网淘吧来吧,欢迎您!

Pair Trade Screener

2026-04-01 新闻来源:网淘吧 围观:14
电脑广告
手机广告

配对交易筛选器

概述

本功能通过配对交易识别并分析统计套利机会。配对交易是一种市场中性策略,通过利用两种相关证券的相对价格变动获利,而不受整体市场方向的影响。该功能采用严谨的统计方法,包括相关性分析和协整检验,以寻找稳健的交易配对。

核心方法:

Pair Trade Screener

  • 识别具有高相关性且属于相似行业/板块的股票配对
  • 进行协整检验(长期统计关系)
  • 计算价差Z分数以识别均值回归机会
  • 基于统计阈值生成入场/出场信号
  • 为市场中性敞口提供头寸规模建议

主要优势:

  • 市场中性:在上涨、下跌或横盘市场中均可获利
  • 风险管理:对整体市场波动的敞口有限
  • 统计基础:数据驱动,非主观判断
  • 分散化:与传统纯多头策略不相关

何时使用本功能

在以下情况使用此技能:

  • 用户询问"配对交易机会"
  • 用户需要"市场中性策略"
  • 用户请求"统计套利筛选"
  • 用户询问"哪些股票走势同步?"
  • 用户希望对冲行业风险敞口
  • 用户请求均值回归交易思路
  • 用户询问相对价值交易

用户请求示例:

  • "寻找科技行业的配对交易机会"
  • "哪些股票具有协整关系?"
  • "筛选统计套利机会"
  • "寻找均值回归配对"
  • "当前有哪些优质的市场中性交易?"

分析工作流程

步骤1:定义配对分析范围

目标:建立用于分析配对关系的股票池

方案A:基于行业的筛选(推荐)

选择特定行业进行筛选:

  • 科技
  • 金融
  • 医疗保健
  • 非必需消费品
  • 工业
  • 能源
  • 材料
  • 必需消费品
  • 公用事业
  • 房地产
  • 通信服务

选项B:自定义股票列表

用户提供具体股票代码进行分析:

Example: ["AAPL", "MSFT", "GOOGL", "META", "NVDA"]

选项C:行业特定

聚焦于板块内的特定行业:

  • 例如:科技板块内的“软件”
  • 例如:金融板块内的“区域性银行”

筛选标准:

  • 最低市值:20亿美元(中盘股及以上)
  • 最低平均成交量:每日100万股(流动性要求)
  • 活跃交易:排除已退市或不活跃的股票
  • 相同交易所偏好:避免跨交易所的复杂情况

步骤二:获取历史价格数据

目标:获取价格历史数据,用于相关性和协整分析。

数据要求:

  • 时间范围:2年(至少252个交易日)
  • 频率:每日收盘价
  • 调整:已根据拆股和股息进行调整
  • 数据清洁:无间隔或缺失值

FMP API端点:

GET /v3/historical-price-full/{symbol}?apikey=YOUR_API_KEY

数据验证:

  • 验证所有股票代码的日期范围是否一致
  • 移除缺失数据超过10%的股票
  • 使用前向填充法填补微小间隔
  • 记录数据质量问题

脚本执行:

python scripts/fetch_price_data.py --sector Technology --lookback 730

步骤三:计算相关性和贝塔值

目标:识别具有强线性关系的候选配对。

相关性分析:

对于股票池中的每一对股票 (i, j):

  1. 计算皮尔逊相关系数(ρ)
  2. 计算滚动相关性(90天窗口)以进行稳定性检查
  3. 筛选出ρ ≥ 0.70(强正相关)的股票对

相关性解释:

  • ρ ≥ 0.90:极强相关性(最佳候选对)
  • ρ 0.70-0.90:强相关性(良好候选对)
  • ρ 0.50-0.70:中等相关性(边缘候选对)
  • ρ < 0.50:弱相关性(排除)

Beta值计算:

对于每个候选股票对(股票A,股票B):

Beta = Covariance(A, B) / Variance(B)

Beta值表示对冲比率:

  • Beta = 1.0:等额美元金额
  • Beta = 1.5:每1.00美元的A对应1.50美元的B
  • Beta = 0.8:每1.00美元的A对应0.80美元的B

相关性稳定性检查:

  • 计算多个时间段(6个月、1年、2年)的相关性
  • 要求相关性保持稳定(没有恶化)
  • 标记近期相关性低于历史相关性超过0.15的股票对

步骤四:协整性检验

目标:从统计学上验证长期均衡关系。

协整为何重要:

  • 相关性衡量的是短期协同变动
  • 协整证明的是长期均衡关系
  • 协整的配对具有可预测的均值回归特性
  • 非协整的配对可能永久性偏离

增广迪基-富勒(ADF)检验:

对每个相关配对:

  1. 计算价差:价差 = 价格_A - (Beta × 价格_B)
  2. 对价差序列进行ADF检验
  3. 检查p值:p < 0.05 表示存在协整(拒绝单位根的原假设)
  4. 提取ADF统计量用于强度排序

协整结果解读:

  • p值 < 0.01:非常强的协整关系(★★★)
  • p值 0.01-0.05:中等强度的协整关系(★★)
  • p值 > 0.05:无协整关系(排除)

半衰期计算:

估计均值回归速度:

Half-Life = -log(2) / log(mean_reversion_coefficient)
  • 半衰期 < 30 天:快速均值回归(适合短期交易)
  • 半衰期 30-60 天:中等速度(标准)
  • 半衰期 > 60 天:缓慢均值回归(长期持有期)

Python 实现:

from statsmodels.tsa.stattools import adfuller

# Calculate spread
spread = price_a - (beta * price_b)

# ADF test
result = adfuller(spread)
adf_stat = result[0]
p_value = result[1]

# Interpret
is_cointegrated = p_value < 0.05

步骤 5:价差分析与 Z 分数计算

目标:量化当前价差对均衡状态的偏离程度。

价差计算:

两种常用方法:

方法 1:价格差(加法模型)

Spread = Price_A - (Beta × Price_B)

最佳适用:价格水平相近的股票

方法 2:价格比(乘法模型)

Spread = Price_A / Price_B

最佳适用:价格水平不同的股票,更易于解释

Z 分数计算:

衡量价差偏离其均值的标准差倍数:

Z-Score = (Current_Spread - Mean_Spread) / Std_Dev_Spread

Z 分数解读:

  • Z > +2.0:股票 A 相对于 B 价格偏高(做空 A,做多 B)
  • Z > +1.5:中度偏贵(关注入场时机)
  • Z值介于-1.5至+1.5:正常范围(不进行交易)
  • Z < -1.5:中度便宜(关注入场时机)
  • Z < -2.0:股票A相对于B显得便宜(做多A,做空B)

历史价差分析:

  • 计算90天滚动窗口的均值和标准差
  • 绘制历史Z值分布图
  • 识别历史最大Z值偏离区间
  • 检查结构性断点(价差机制变化)

第六步:生成入场/离场建议

目标:提供具有明确规则的可执行交易信号

入场条件:

保守策略(Z值≥±2.0时):

LONG Signal:
- Z-score < -2.0 (spread 2+ std devs below mean)
- Spread is mean-reverting (cointegration p < 0.05)
- Half-life < 60 days
→ Action: Buy Stock A, Short Stock B (hedge ratio = beta)

SHORT Signal:
- Z-score > +2.0 (spread 2+ std devs above mean)
- Spread is mean-reverting (cointegration p < 0.05)
- Half-life < 60 days
→ Action: Short Stock A, Buy Stock B (hedge ratio = beta)

激进策略(Z值≥±1.5时):

  • 降低阈值以增加交易频率
  • 更高胜率但单笔平均利润较小
  • 需要更严格的风险管理

离场条件:

主要退出条件:均值回归 (Z = 0)

Exit when spread returns to mean (z-score crosses 0)
→ Close both legs simultaneously

次要退出条件:部分获利了结

Exit 50% when z-score reaches ±1.0
Exit remaining 50% at z-score = 0

止损条件:

Exit if z-score extends beyond ±3.0 (extreme divergence)
Risk: Possible structural break in relationship

基于时间的退出条件:

Exit after 90 days if no mean-reversion
Prevents holding broken pairs indefinitely

步骤7:头寸规模与风险管理

目标:确定市场中立敞口的金额。

市场中立规模设定:

对于贝塔系数为 β 的配对(股票A, 股票B):

等额敞口:

If portfolio size = $10,000 allocated to this pair:
- Long $5,000 of Stock A
- Short $5,000 × β of Stock B

Example (β = 1.2):
- Long $5,000 Stock A
- Short $6,000 Stock B
→ Market neutral, beta = 0

头寸规模考量:

  • 每对配对分配总额:占投资组合的10-20%
  • 最大配对数量:5-8个活跃配对以实现多样化
  • 配对间的相关性:避免高度相关的配对

风险指标:

  • 每对最大亏损:占总投资组合的2-3%
  • 止损触发条件:Z分数 > ±3.0 或价差亏损 -5%
  • 投资组合层面风险:所有配对风险总和 ≤ 10%

步骤8:生成配对分析报告

目标:创建一份包含调查结果和建议的结构化Markdown报告。

报告章节:

  1. 执行摘要

    • 分析的总配对数量
    • 发现的协整配对数量
    • 按统计强度排名的前5个机会
  2. 协整配对表

    • 配对名称 (股票A / 股票B)
    • 相关系数
    • 协整P值
    • 当前Z值
    • 交易信号 (做多/做空/无)
    • 半衰期
  3. 详细分析 (前10个配对)

    • 配对描述
    • 统计指标
    • 当前价差位置
    • 入场/出场建议
    • 仓位规模
    • 风险评估
  4. 价差图表 (基于文本)

    • 历史Z值图 (ASCII艺术)
    • 入场/出场点位标注
    • 当前位置指示器
  5. 风险警告

    • 相关性恶化的配对
    • 检测到结构性断点
    • 低流动性警告

文件命名规范:

pair_trade_analysis_[SECTOR]_[YYYY-MM-DD].md

示例:pair_trade_analysis_Technology_2025-11-08.md

质量标准

统计严谨性

有效配对的最低要求:

  • ✓ 两年期相关性 ≥ 0.70
  • ✓ 协整 p 值 < 0.05(ADF 检验)
  • ✓ 价差平稳性确认
  • ✓ 半衰期 < 90 天
  • ✓ 最近 6 个月内无结构性断点

危险信号(排除配对):

  • 最近 6 个月相关性下降 >0.20
  • 协整 p 值 > 0.05
  • 半衰期随时间增加(均值回归减弱)
  • 重大公司事件(并购、分拆、破产风险)
  • 流动性考量(日均成交量 < 50万股)

实际操作考量

交易成本:

  • 假设每边交易来回成本为0.1%
  • 每对交易总成本 = 0.4%(双边进入与退出)
  • 最小z分数阈值应超过交易成本

卖空操作:

  • 确认股票可卖空(非难借券)
  • 计入卖空利息成本(融券费用)
  • 监控轧空风险

执行策略:

  • 同时进行双边建仓/平仓(规避单边风险)
  • 使用限价订单控制滑点
  • 建仓前预先锁定卖空标的

可用脚本

scripts/find_pairs.py

用途:在行业板块或自定义列表中筛选协整配对。

用法:

# Sector-based screening
python scripts/find_pairs.py --sector Technology --min-correlation 0.70

# Custom stock list
python scripts/find_pairs.py --symbols AAPL,MSFT,GOOGL,META --min-correlation 0.75

# Full options
python scripts/find_pairs.py \
  --sector Financials \
  --min-correlation 0.70 \
  --min-market-cap 2000000000 \
  --lookback-days 730 \
  --output pairs_analysis.json

参数:

  • --sector:行业名称(科技、金融等)
  • --symbols:股票代码逗号分隔列表(作为行业的替代选项)
  • --min-correlation:最小相关性阈值(默认值:0.70)
  • --min-market-cap:最低市值筛选条件(默认值:20亿美元)
  • --lookback-days:历史数据周期(默认值:730天)
  • --output:输出JSON文件(默认值:标准输出)
  • --api-key:FMP API密钥(或设置FMP_API_KEY环境变量)

输出:

[
  {
    "pair": "AAPL/MSFT",
    "stock_a": "AAPL",
    "stock_b": "MSFT",
    "correlation": 0.87,
    "beta": 1.15,
    "cointegration_pvalue": 0.012,
    "adf_statistic": -3.45,
    "half_life_days": 42,
    "current_zscore": -2.3,
    "signal": "LONG",
    "strength": "Strong"
  }
]

scripts/analyze_spread.py

用途:分析特定配对的价格差行为并生成交易信号。

用法:

# Analyze specific pair
python scripts/analyze_spread.py --stock-a AAPL --stock-b MSFT

# Custom lookback period
python scripts/analyze_spread.py \
  --stock-a JPM \
  --stock-b BAC \
  --lookback-days 365 \
  --entry-zscore 2.0 \
  --exit-zscore 0.5

参数:

  • --stock-a第一个股票代码
  • --stock-b: 第二个股票代码
  • --lookback-days: 分析周期(默认值:365)
  • --entry-zscore: 入场Z分数阈值(默认值:2.0)
  • --exit-zscore: 出场Z分数阈值(默认值:0.0)
  • --api-key: FMP API密钥

输出:

  • 当前价差分析
  • Z分数计算
  • 入场/出场建议
  • 仓位规模
  • 历史Z分数图表(文本形式)

参考文档

references/methodology.md

统计套利与配对交易的全面指南:

  • 配对选择标准: 如何识别良好的配对候选
  • 统计检验相关性、协整性、平稳性
  • 价差构建:价格差法与价格比率法
  • 均值回归:半衰期计算与解读
  • 风险管理:头寸规模、止损、分散化
  • 常见误区:幸存者偏差、前视偏差、过拟合

references/cointegration_guide.md

协整检验深入探讨:

  • 什么是协整?:直观解释
  • ADF检验:分步流程
  • P值解读:统计显著性阈值
  • 半衰期估计:AR(1)模型方法
  • 结构突变:制度变化检验
  • 实践案例包含真实配对案例的研究

与其他技能的结合

板块分析师的整合运用:

  • 利用板块分析师识别轮动中的行业板块
  • 在表现优异的板块内筛选配对交易组合
  • 领先板块中的配对可能呈现更强劲的趋势

技术分析师的整合运用:

  • 通过个股技术指标确认配对交易的入场/离场时机
  • 入场前核查支撑位/阻力位
  • 验证趋势方向是否与价差信号保持一致

回测专家的整合运用:

  • 将候选配对提交给回测专家进行验证
  • 测试历史Z分数入场/离场规则
  • 优化阈值参数(入场Z分数、止损位)
  • 通过向前滚动分析确保策略稳健性

市场环境分析的整合运用:

  • 极端波动期间(VIX > 30)避免进行配对交易
  • 危机时期相关性可能失效
  • 更倾向于在横盘/区间震荡市场进行配对交易

投资组合管理器集成:

  • 跟踪多个配对持仓
  • 监控整体市场中性的风险敞口
  • 计算投资组合层面的配对交易损益
  • 定期重新平衡对冲比率

重要注意事项

  • 所有分析和输出均为英文
  • 统计基础:无主观判断性解读
  • 市场中性的核心:最小化方向性贝塔风险敞口
  • 数据质量至关重要:垃圾进,垃圾出
  • 需要FMP API密钥:免费层级足以满足基本筛选需求
  • Python依赖库:pandas, numpy, scipy, statsmodels

常见应用场景

应用场景 1:科技行业配对

User: "Find pair trading opportunities in tech stocks"

Workflow:
1. Screen Technology sector for stocks with market cap > $10B
2. Calculate all pairwise correlations
3. Filter pairs with correlation ≥ 0.75
4. Run cointegration tests
5. Identify current z-score extremes (|z| > 2.0)
6. Generate top 10 pairs report

应用场景 2:特定配对分析

User: "Analyze AAPL and MSFT as a pair trade"

Workflow:
1. Fetch 2-year price history for AAPL and MSFT
2. Calculate correlation and beta
3. Test for cointegration
4. Calculate current spread and z-score
5. Generate entry/exit recommendation
6. Provide position sizing guidance

应用场景 3:区域性银行配对

User: "Screen for pairs among regional banks"

Workflow:
1. Filter Financials sector for industry = "Regional Banks"
2. Exclude banks with <$5B market cap
3. Calculate pairwise statistics
4. Rank by cointegration strength
5. Focus on pairs with half-life < 45 days
6. Report top 5 mean-reverting pairs

故障排除

问题:未找到协整配对

解决方案:

  • 扩大股票池(降低市值门槛)
  • 放宽协整p值至0.10
  • 尝试不同板块(公用事业板块通常协整性较好)
  • 将回看期延长至3年

问题:所有z值均接近零(无交易信号)

解决方案:

  • 市场正常状态(配对处于均衡)
  • 稍后重试或扩大股票池
  • 将入场阈值从±2.0降低至±1.5

问题:配对相关性失效

解决方案:

  • 检查公司事件(财报发布、业绩指引变更)
  • 确认无并购活动或重组计划
  • 若确认结构性断裂,则从观察列表中移除该配对
  • 重新入场前监控30天

API要求

  • 必需FMP API密钥(免费版即可)
  • 请求频率限制免费版每日约250次请求
  • 数据用量估算每个代码获取两年历史数据约需2次请求
  • 升级建议高频筛选推荐专业版(29美元/月)

参考资源


版本信息: 1.0最后更新2025年11月8日依赖项: Python 3.8+、pandas、numpy、scipy、statsmodels、requests

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏

文章底部电脑广告
手机广告位-内容正文底部
上一篇:ClawGuard 下一篇:Raindrop.io Bookmarks

相关文章

您是本站第379042名访客 今日有351篇新文章/评论