2、固定价差止损法:定义固定阈值,当价差偏离超过N个标准差时触发止损
固定价差止损法,说白了就是给价差波动画一条「红线」。
我个人习惯把它叫做「标准差围栏法」——你设定一个倍数,比如2倍标准差,价差跑出这个圈子,我就砍仓。听起来简单吧?但这里面的门道,我踩过的坑可不少。
2.1 核心逻辑:为什么是标准差?
价差回归策略的核心假设是:价差会在均值附近来回摆动。那问题来了——摆动多大算「异常」?
标准差就是答案。它衡量的是价差的历史波动幅度。假设价差服从正态分布(嗯,实际市场并不完美正态,但够用了),那么:
- ±1个标准差内:约68%的价差波动落在这里
- ±2个标准差内:约95%的价差波动落在这里
- ±3个标准差内:约99.7%的价差波动落在这里
所以,当你设定N=2时,意味着你愿意承受约5%的「假突破」风险。N=3时,风险降到0.3%左右。
关键点:固定价差止损不是拍脑袋定的,它基于统计规律。你选的N值,直接决定了你愿意为「捕捉回归」付出多少止损代价。
2.2 数学表达与代码实现
公式其实很简单:
止损线 = 均值 ± N × 标准差
其中:
- 均值:过去M个周期的价差平均值
- 标准差:过去M个周期的价差标准差
- N:你设定的倍数(通常取2或3)
我给你们写个Python示例,这是我实际项目中用过的简化版:
import numpy as np
class FixedSpreadStopLoss:
def __init__(self, window=20, n_std=2.5):
self.window = window # 滚动窗口
self.n_std = n_std # 标准差倍数
self.spread_history = [] # 价差历史
def update(self, current_spread):
"""更新价差并检查是否触发止损"""
self.spread_history.append(current_spread)
# 保留最近window个数据
if len(self.spread_history) > self.window:
self.spread_history.pop(0)
# 计算均值和标准差
if len(self.spread_history) < self.window:
return False # 数据不够,不触发
mean = np.mean(self.spread_history)
std = np.std(self.spread_history)
upper_bound = mean + self.n_std * std
lower_bound = mean - self.n_std * std
# 检查是否越界
if current_spread > upper_bound or current_spread < lower_bound:
return True # 触发止损
return False
# 使用示例
stop_loss = FixedSpreadStopLoss(window=30, n_std=2.5)
for spread in real_time_spreads:
if stop_loss.update(spread):
print(f"价差{spread:.4f}触发止损!平仓离场")
break
我的经验:window参数别设太小。我曾经用10期窗口,结果市场一震荡,止损线跟着乱跳,一天止损了5次。后来改成30期,稳定多了。你想想看,窗口太小,均值和标准差本身就不稳定,止损线就成了「移动靶」。
2.3 N值怎么选?实战中的取舍
N值的选择,本质上是在「少止损」和「少亏损」之间找平衡。
| N值 | 理论触发概率 | 特点 | 适用场景 |
|---|---|---|---|
| 1.5 | 约13% | 止损频繁,但单次亏损小 | 高频交易、低波动品种 |
| 2.0 | 约5% | 平衡型,多数策略的默认值 | 大多数价差回归策略 |
| 2.5 | 约1.2% | 止损少,但单次亏损可能较大 | 趋势性强、价差波动大的品种 |
| 3.0 | 约0.3% | 极少止损,但一旦触发就是大亏 | 长周期、高确信度的策略 |
我个人习惯用2.5。为什么?因为2.0太容易触发,尤其在市场情绪化的时候;3.0又太松,等触发时亏损已经很大了。2.5是个折中,既过滤掉大部分噪音,又不会让亏损失控。
注意:别迷信理论概率。实际市场中,价差分布有「肥尾」特征——极端行情比正态分布预测的更频繁。所以N=3理论上只有0.3%概率触发,但实际可能达到1%-2%。我曾在股指期货跨期套利中吃过这个亏,N=3的止损线,一个月被打了3次。
2.4 固定价差止损的优缺点
先说说优点:
- 简单透明:参数就两个(window和N),一眼看懂
- 统计基础:有数学依据,不是拍脑袋
- 易于回测:历史数据一跑,效果立竿见影
缺点也很明显:
- 静态假设:假设价差波动率不变,但市场波动率会变
- 滞后性:用历史数据算标准差,遇到波动率突变会反应慢半拍
- 参数敏感:window和N稍微一改,结果天差地别
嗯,这里要注意——固定价差止损法最适合波动率相对稳定的品种。比如国债期货的跨期价差,波动率变化不大,用这个方法很舒服。但如果是股指期货,波动率忽高忽低,你可能需要更动态的方法。
2.5 知识体系总览
下面这张图,是我梳理的固定价差止损法的核心逻辑,你看一眼就能明白整个流程:
这张图把整个流程串起来了:实时价差进来 → 滚动窗口算均值和标准差 → 判断是否越界 → 触发止损或继续持有。循环往复,直到策略结束。
2.6 避坑指南
我曾经在实盘中犯过一个低级错误——用全量历史数据算标准差。结果呢?三年前的波动率和现在完全不一样,止损线要么太松要么太紧。后来我改成滚动窗口,只取最近N期数据,效果立马好了。
还有一点:别在开盘后立刻用这个方法。开盘前几分钟价差波动剧烈,标准差会被瞬间拉大,导致止损线形同虚设。我一般开盘后等5分钟,等数据稳定了再启用止损。
总结一下:固定价差止损法是个好工具,但它不是万能的。它假设市场波动率稳定,但现实往往不配合。所以我的建议是——把它作为止损体系的基础层,再搭配其他动态方法一起用。