如何基于配对价差与标准差快速生成股票交易信号?
配对交易价差信号最简实现方案
核心规则
- 基础定义
- 价差(spread):配对股票策略的核心价值度量指标,单组配对组合由2支股票构成,例如Amazon、Tesla组成的
Amazon_Tesla配对 - 信号取值规则:信号值为1时,对应股票执行卖出操作;信号值为0时,对应股票执行买入操作
- 价差(spread):配对股票策略的核心价值度量指标,单组配对组合由2支股票构成,例如Amazon、Tesla组成的
- 输入参数
std:浮点型数值,用于计算信号触发阈值,本场景固定以1倍标准差作为触发线spread:支持传入列表或pandas序列格式的价差时间序列
- 输出要求
最终输出两组对应配对股票的交易信号:Signal-1(配对组合第一支股票的交易信号)、Signal-2(配对组合第二支股票的交易信号) - 信号变动逻辑
信号值随价差与阈值的动态关系调整:当价差超出阈值时触发对应交易,例如价差在索引位置2首次突破上阈值时,对应操作为卖出Amazon股票、买入Tesla股票;价差在阈值区间内波动时,信号保持上一次的持仓状态不变,变动规律完全匹配公开参考示例的设计逻辑。
最简实现
采用向量化计算逻辑替代手动循环,无冗余计算,适配大规模时间序列的快速处理需求:
import numpy as np import pandas as pd def generate_pair_signals(std: float, spread): # 计算1倍标准差触发阈值 trigger_threshold = 1 * std spread_arr = np.array(spread) # 标记上下阈值穿越位置,非穿越点标记为空值 trigger_points = np.where( spread_arr > trigger_threshold, 1, np.where(spread_arr < -trigger_threshold, 0, np.nan) ) # 非触发点位前向填充,沿用最近一次的交易状态 state_series = pd.Series(trigger_points).ffill().values # 配对交易多空仓位对等反向,直接推导第二支股票的信号 signal_1 = state_series signal_2 = 1 - state_series return signal_1, signal_2
校验对齐
- 触发行为匹配示例:当价差首次突破上阈值(如索引位置2的穿越事件),自动触发卖出配对第一支股票(Signal-1=1)、买入配对第二支股票(Signal-2=0)的操作,与示例行为无偏差
- 无频繁信号跳变:价差在正负阈值之间的区间内波动时,信号不会随微小价差变化反复调整,保持上次触发的持仓状态,符合实盘配对交易的信号设计要求
内容的提问来源于stack exchange,提问作者birdalugur
相关产品推荐
相关产品推荐

