Beta套利配对交易策略设计方案3
Beta套利配对交易策略设计方案
1. 概述
Beta套利是一种基于ETH/BTC下行联动性的配对交易策略。通过追踪ETH在下跌行情中相对于BTC的收益率比值(beta),识别ETH相对强势的时机,做多ETH同时做空BTC,捕获两者之间的相对价值回归。
核心假设:当ETH的下行beta较低且趋势收敛时,说明ETH在下跌中比BTC更抗跌,暗示短期相对强势,此时做多ETH/做空BTC存在正期望。
1.1 与现有策略的区别
| 维度 | 现有协整Z-Score策略 | Beta套利策略 |
|---|---|---|
| 信号来源 | 价差Z-score偏离与回归 | 下行beta收敛 |
| Beta估计 | IMM Kalman滤波器(全样本) | 仅负收益K线的收益率比值 |
| 过滤体系 | 4层动量过滤器 + 协整门控 | 无外部过滤,信号自包含 |
| 交易方向 | 双向(多/空ETH) | 单向(固定做多ETH/做空BTC) |
| 持仓周期 | 中等(数小时~数天) | 短周期(平均6小时) |
| 适用标的 | 多币种配对 | 专注ETH/BTC |
2. 数据源
2.1 WebSocket订阅
订阅ETH和BTC的1小时级别K线数据:
频道: candle
标的: ETH/USDC:USDC, BTC/USDC:USDC
周期: 1h
数据: time, open, high, low, close, volume, return_pct
推送机制:虽然订阅的是1h周期,但服务器会在该小时窗口内高频推送K线更新(close为实时最新价)。系统对每次推送都执行完整的信号计算流程,始终对最新价格保持敏感,而非等待K线闭合。同一小时窗口内的推送覆盖更新当前K线的close值。
2.2 数据结构
K线序列由已闭合K线和当前实时K线组成:
[已闭合K线_1, 已闭合K线_2, ..., 已闭合K线_n, 当前实时K线]
↑
close = 实时最新价
每次WS推送覆盖更新
- 已闭合K线:OHLCV和return_pct固定不变,来自历史数据
- 当前实时K线:close随WS推送实时更新,return_pct实时重算
2.3 数据对齐
ETH和BTC的K线按时间戳内连接(inner join),确保每个时间点两者数据完整。丢弃任一方缺失的时间点。
3. Beta计算算法
3.1 核心定义
Beta定义为ETH下跌时相对于BTC的收益率放大/缩小倍数:
beta_i = |ETH_return_i / BTC_return_i|
其中 ETH_return_i 为负值(仅取ETH下跌的K线)。
3.2 计算流程
输入: ETH/BTC 对齐K线序列(包含历史已闭合K线 + 当前未闭合实时K线)
输出: 长度为 N 的 beta 数据序列
步骤:
1. 从最新K线(含当前未闭合K线)开始向前回溯
2. 筛选 ETH 收益率 < 0 的K线(负收益)
3. 对每个满足条件的K线,检查对应BTC收益率:
a. |BTC收益率| < MIN_BTC_RETURN(趋近于0)→ 剔除该数据点,不计入
b. BTC收益率 >= 0(非负值)→ 直接设定 beta = 3
c. BTC收益率 < 0 → 计算 beta = |ETH_return / BTC_return|
4. 收集 N 个有效 beta 值(默认 N = 10)
5. 回溯上限: MAX_LOOKBACK 根K线(默认 100),超出则放弃本次信号
6. 按时间正序排列 beta 序列
3.3 参数说明
| 参数 | 默认值 | 说明 |
|---|---|---|
NEGATIVE_RETURN_COUNT (N) |
10 | 需要收集的负收益K线数量 |
MIN_BTC_RETURN_ABS |
0.0005 (0.05%) | BTC收益率绝对值下限,过滤接近零的分母 |
MAX_LOOKBACK_BARS |
100 | 最大回溯K线数,限制采样窗口跨度 |
3.4 Beta含义解读
| Beta值 | 含义 | 举例 |
|---|---|---|
| beta = 3 | ETH跌但BTC未跌(惩罚值) | ETH跌1%, BTC涨0.5% → beta=3 |
| beta > 1 | ETH跌幅大于BTC | ETH跌2%, BTC跌1% → beta=2 |
| beta = 1 | ETH跌幅等于BTC | ETH跌1%, BTC跌1% → beta=1 |
| beta < 1 | ETH跌幅小于BTC | ETH跌0.5%, BTC跌1% → beta=0.5 |
4. 信号生成
4.1 指标计算
对N个beta数据点计算两个统计量:
EMA_beta = EWM(beta_series, span=EMA_SPAN).last() # 指数加权移动平均
Mean_beta = arithmetic_mean(beta_series) # 算术平均值
4.2 开仓条件
同时满足以下两个条件时触发开仓信号:
条件1: EMA_beta < BETA_EMA_THRESHOLD (EMA低于绝对阈值)
条件2: EMA_beta < Mean_beta (EMA低于算术均值,趋势收敛)
信号解读:
- 条件1确保下行beta处于较低水平(ETH抗跌性好)
- 条件2确保beta趋势在下降(近期ETH相对强势在增强)
- 两者结合表示:ETH的下行敏感度低且持续改善,是做多ETH的有利时机
4.3 参数说明
| 参数 | 默认值 | 说明 |
|---|---|---|
EMA_SPAN |
5 | EMA计算窗口,对N个beta点赋予近期更高权重 |
BETA_EMA_THRESHOLD |
1.5 | EMA绝对阈值上限 |
4.4 信号流程图
每次WS推送(1h candle高频更新)
│
▼
更新当前K线的close(覆盖)
│
▼
计算beta序列(回溯10个ETH负收益K线,含当前未闭合K线)
│
├── 数据不足 → 跳过
│
▼
计算 EMA_beta 和 Mean_beta
│
├── EMA_beta >= 1.5 → 无信号
├── EMA_beta >= Mean_beta → 无信号
│
▼
开仓信号触发(以当前实时价格开仓)
│
▼
开仓比例 = Mean_beta(算术均值)
注意:beta序列的回溯范围包含当前未闭合K线,当前K线的close随每次WS推送实时更新,因此beta和信号会随价格变化实时重算。信号触发后立即以实时价格执行开仓。持仓期间的P&L监控同样对每次WS推送实时响应。
5. 仓位管理
5.1 开仓
| 腿 | 方向 | 名义持仓 | 杠杆 | 保证金 |
|---|---|---|---|---|
| ETH | 多 (Long) | 1 USD | 10x | 0.1 USD |
| BTC | 空 (Short) | Mean_beta USD | 10x | Mean_beta / 10 USD |
- 所有订单为市价单
- Beta(算术均值)作为对冲比例,确保风险中性
- 平均保证金 = (ETH保证金 + BTC保证金) / 2
5.2 仓位计算示例
假设 Mean_beta = 1.3:
ETH多单: 名义 1 USD, 保证金 = 1/10 = 0.1 USD
BTC空单: 名义 1.3 USD, 保证金 = 1.3/10 = 0.13 USD
平均保证金 = (0.1 + 0.13) / 2 = 0.115 USD
5.3 盈亏计算
ETH盈亏 = ETH名义持仓 × (ETH当前价 / ETH入场价 - 1)
BTC盈亏 = BTC名义持仓 × (1 - BTC当前价 / BTC入场价)
组合盈亏 = ETH盈亏 + BTC盈亏
收益率 = 组合盈亏 / 平均保证金
6. 风控与退出机制
6.1 移动止盈止损
阶段1 — 等待激活:
实时跟踪组合收益率
当收益率 > 0 且 > 5%(激活阈值)时,进入阶段2
阶段2 — 峰值追踪:
记录并持续更新盈利峰值(只升不降)
peak_pnl = max(peak_pnl, current_pnl)
阶段3 — 回撤触发:
当从峰值回落 0.5%(回撤金额/平均保证金)时,触发止盈
触发条件: current_pnl < peak_pnl - 0.5% × avg_margin
平仓操作:同时平掉ETH多单和BTC空单,均为市价单。
参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
| 激活阈值 | 5% | 收益率达到此值后启动峰值追踪 |
| 回撤触发 | 0.5% | 从峰值回落此幅度触发平仓 |
6.2 冷却期
平仓后进入冷却期,默认 3 根K线(3小时)内不开新仓,避免反复开平。
6.3 建议补充的风控措施
| 措施 | 说明 | 建议值 |
|---|---|---|
| 最大持仓时间 | 超时强制平仓 | 48-72小时 |
| 单日最大亏损 | 当日累计亏损上限 | 可配置 |
| 回溯窗口告警 | N个负收益K线跨度过大时告警 | 当回溯超过50根K线 |
7. 实盘实现要点
7.1 数据流架构
WebSocket (1h candle,高频推送)
├── ETH K线推送 ──┐
└── BTC K线推送 ──┤
▼
K线缓冲区(覆盖更新当前K线close)
[已闭合K线序列] + [当前实时K线]
│
┌───────────┴───────────┐
▼ ▼
未持仓 → 信号检测 持仓中 → P&L监控
│ │
▼ ▼
计算beta(含当前K线) 实时计算组合盈亏
EMA < 阈值 && EMA < Mean (每次推送都重算)
│ │
┌───┴───┐ ┌───────┼───────┐
│无信号 │ 有信号 ▼ ▼ ▼
└───┬──┘ │ 移动止盈 止损 正常持有
│ ▼ 触发 触发
│ 以实时价格开仓 │ │
│ (ETH多+BTC空) └───┬───┘
│ │
│ ▼
│ 平仓(两腿同时,市价单)
│ │
▼ ▼
等待下次推送 冷却期 → 等待下次推送
7.2 关键实现注意事项
- 实时响应:1h candle订阅会被服务器高频推送,每次推送都触发完整的信号检测(未持仓时)或P&L监控(持仓时),不做降频过滤
- K线覆盖更新:同一小时窗口内的推送覆盖当前K线的close值,beta计算范围包含当前未闭合K线(close为实时价),信号随价格变化实时重算
- 除零保护:BTC收益率绝对值 < 0.05% 时跳过该数据点;BTC收益率非负时beta设为3
- 原子操作:ETH和BTC的开仓/平仓应尽量同时执行,减少单腿风险
- 状态持久化:持仓状态、beta序列、峰值盈利等需持久化,支持断线恢复
- 最小下单量:确认Hyperliquid对ETH/BTC的最小下单量要求
7.3 配置项汇总
# Beta计算
BETA_ARB_NEGATIVE_RETURN_COUNT: 10
BETA_ARB_MIN_BTC_RETURN_ABS: 0.0005
BETA_ARB_MAX_LOOKBACK_BARS: 100
# 信号
BETA_ARB_EMA_SPAN: 5
BETA_ARB_EMA_THRESHOLD: 1.5
# 仓位
BETA_ARB_ETH_POSITION_USD: 1.0
BETA_ARB_LEVERAGE: 10
# 风控
BETA_ARB_TAKE_PROFIT_PCT: 0.05
BETA_ARB_STOP_LOSS_PCT: 0.03
BETA_ARB_TRAILING_ACTIVATION_PCT: 0.05
BETA_ARB_TRAILING_CALLBACK_PCT: 0.005
BETA_ARB_COOLDOWN_BARS: 3
BETA_ARB_MAX_HOLD_HOURS: 72