docs: 补充V5.1/V5.2信号系统详细文档
- v51-signal-system.md: V5.1基础信号系统 - v51-signal-enhancement.md: V5.1增强方案 - v52-signal-system.md: V5.2信号系统 - v52-evolution-roadmap.md: V5.2进化路线图 - v52-development.md: V5.2开发文档(完整版)
This commit is contained in:
parent
c8c2d801a2
commit
ffd7bed387
250
docs/arbitrage-engine/v51-signal-enhancement.md
Normal file
250
docs/arbitrage-engine/v51-signal-enhancement.md
Normal file
@ -0,0 +1,250 @@
|
|||||||
|
---
|
||||||
|
title: V5.1 信号增强方案
|
||||||
|
description: V5.1 信号评分体系 + 仓位管理 + TP/SL + 风控 + 回测框架
|
||||||
|
---
|
||||||
|
|
||||||
|
# V5.1 信号增强方案
|
||||||
|
|
||||||
|
> 讨论参与:露露(Opus 4.6) + 小周(GPT-5.3-Codex) + 范总审核
|
||||||
|
> 定稿时间:2026-02-28
|
||||||
|
|
||||||
|
## 1. 概述
|
||||||
|
|
||||||
|
V5.0 以 aggTrades 原始成交流为核心(CVD三轨 + ATR + VWAP + P95/P99大单),V5.1 在此基础上增加 4 个数据维度 + 完善交易管理系统。
|
||||||
|
|
||||||
|
**核心理念**:aggTrades 是我们的独特优势(别人没有原始成交流),新增数据源作为方向确认和风控补充,不替代 aggTrades 的核心地位。
|
||||||
|
|
||||||
|
## 2. 信号评分体系(100分制)
|
||||||
|
|
||||||
|
### 2.1 权重分配
|
||||||
|
|
||||||
|
| 层级 | 数据源 | 权重 | 角色 |
|
||||||
|
|------|--------|------|------|
|
||||||
|
| **方向层** | aggTrades(CVD三轨 + P95/P99大单) | **45%** | 核心方向判断 |
|
||||||
|
| **拥挤层** | L/S Ratio + Top Trader Position | **20%** | 市场拥挤度 |
|
||||||
|
| **环境层** | Open Interest 变化 | **15%** | 资金活跃度/可交易性门槛 |
|
||||||
|
| **确认层** | 多时间框架一致性 | **15%** | 方向确认 |
|
||||||
|
| **辅助层** | Coinbase Premium | **5%** | 机构资金流向 |
|
||||||
|
|
||||||
|
### 2.2 各层级详细计算
|
||||||
|
|
||||||
|
#### 方向层(45分)
|
||||||
|
|
||||||
|
- **CVD_fast(30m滚动)方向**:与信号方向一致 +15
|
||||||
|
- **CVD_mid(4h滚动)方向**:与信号方向一致 +15
|
||||||
|
- **P95/P99 大单**:无反向 P99 大单 +10,有同向 P99 大单 +15
|
||||||
|
- **CVD_fast 斜率加速**:斜率 > 阈值 +5(额外加分)
|
||||||
|
|
||||||
|
#### 拥挤层(20分)
|
||||||
|
|
||||||
|
- **L/S Ratio**:
|
||||||
|
- L/S > 2.0(做空信号)或 L/S < 0.5(做多信号):+10
|
||||||
|
- L/S 1.5-2.0 / 0.5-0.67:+5
|
||||||
|
- 中性区间:0
|
||||||
|
- **Top Trader Position Ratio**:
|
||||||
|
- 大户方向与信号一致:+10
|
||||||
|
- 大户方向中性:+5
|
||||||
|
- 大户方向反向:0
|
||||||
|
|
||||||
|
#### 环境层(15分)
|
||||||
|
|
||||||
|
- **OI 变化**(不判断方向,判断活跃度):
|
||||||
|
- OI 15分钟变化率 > 阈值(活跃):+15
|
||||||
|
- OI 变化温和:+10
|
||||||
|
- OI 萎缩(市场冷清):+5
|
||||||
|
|
||||||
|
#### 确认层(15分)
|
||||||
|
|
||||||
|
- **多时间框架确认规则**:
|
||||||
|
- `1m` = 触发层(入场点)
|
||||||
|
- `5m/15m` = 方向确认层
|
||||||
|
- `1h` = 风险闸门
|
||||||
|
- **评分**:
|
||||||
|
- 5m AND 15m 同向:+15
|
||||||
|
- 5m OR 15m 同向:+10
|
||||||
|
- 无同向确认:+0
|
||||||
|
- **1h 反向处理**:不在评分里扣分,而是在仓位管理里降仓(见 3.2)
|
||||||
|
|
||||||
|
#### 辅助层(5分)
|
||||||
|
|
||||||
|
- **Coinbase Premium**:
|
||||||
|
- Premium 方向与信号一致且 > 阈值:+5
|
||||||
|
- 中性:+2
|
||||||
|
- 反向:0
|
||||||
|
|
||||||
|
### 2.3 开仓门槛
|
||||||
|
|
||||||
|
| 总分 | 操作 |
|
||||||
|
|------|------|
|
||||||
|
| < 60 | **不开仓** |
|
||||||
|
| 60 - 74 | 轻仓(基础仓位 × 0.5) |
|
||||||
|
| 75 - 84 | 标准仓位 |
|
||||||
|
| ≥ 85 | 允许加仓(基础仓位 × 1.3) |
|
||||||
|
|
||||||
|
## 3. 仓位管理
|
||||||
|
|
||||||
|
### 3.1 基础仓位
|
||||||
|
|
||||||
|
- **默认**:总资金的 10%
|
||||||
|
- **杠杆**:3X(可调)
|
||||||
|
- **单笔最大风险**:总资金的 2%
|
||||||
|
|
||||||
|
### 3.2 1h 时间框架降仓规则
|
||||||
|
|
||||||
|
| 1h 状态 | 仓位调整 |
|
||||||
|
|---------|---------|
|
||||||
|
| 1h 同向 | 正常仓位 |
|
||||||
|
| 1h 弱反向 | 仓位 × 0.7 |
|
||||||
|
| 1h 强反向(CVD + 趋势都反) | 仓位 × 0.5,且仅允许 ≥85 分信号 |
|
||||||
|
|
||||||
|
### 3.3 Funding Rate 偏置
|
||||||
|
|
||||||
|
- FR 不做触发因子,做"慢变量偏置"
|
||||||
|
- 计算 `FR z-score(7d)` + `FR 斜率(近3个结算点)`
|
||||||
|
- 映射为 `bias`(-1 ~ +1)叠加到总分
|
||||||
|
- FR 极端且与信号方向冲突时:仅降仓,不反向开仓
|
||||||
|
|
||||||
|
## 4. TP/SL 管理(双ATR融合)
|
||||||
|
|
||||||
|
### 4.1 ATR 计算
|
||||||
|
|
||||||
|
```
|
||||||
|
risk_atr = 0.7 × ATR_5m + 0.3 × ATR_1h
|
||||||
|
```
|
||||||
|
|
||||||
|
- ATR_5m:5分钟K线,14周期 → 管入场灵敏度
|
||||||
|
- ATR_1h:1小时K线,14周期 → 管极端波动保护
|
||||||
|
- 好处:分钟级不钝化(靠5m),又不被短时噪音洗掉(靠1h兜底)
|
||||||
|
|
||||||
|
### 4.2 止盈止损参数
|
||||||
|
|
||||||
|
| 参数 | 计算 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| **SL** | Entry ± 2.0 × risk_atr | 初始止损 |
|
||||||
|
| **TP1** | Entry ∓ 1.5 × risk_atr | 第一目标 |
|
||||||
|
| **TP2** | Entry ∓ 3.0 × risk_atr | 第二目标 |
|
||||||
|
|
||||||
|
### 4.3 分批平仓逻辑
|
||||||
|
|
||||||
|
1. **TP1 触发**:平 50% 仓位,SL 移至成本价 + 手续费(Breakeven)
|
||||||
|
2. **TP2 触发**:平剩余 50%,信号标记 "tp"
|
||||||
|
3. **SL 触发(TP1 已达)**:标记 "sl_be"(保本止损,实际盈亏 ≈ +0.5R)
|
||||||
|
4. **SL 触发(TP1 未达)**:标记 "sl"(完整止损,亏损 -1.0R)
|
||||||
|
|
||||||
|
### 4.4 期望值计算
|
||||||
|
|
||||||
|
假设 60% 胜率(TP1 命中率):
|
||||||
|
- 60% × 2.0R = +1.2R
|
||||||
|
- 40% × -1.0R = -0.4R
|
||||||
|
- **期望值 = +0.8R/笔**
|
||||||
|
|
||||||
|
## 5. 风控系统
|
||||||
|
|
||||||
|
### 5.1 自适应冷却期
|
||||||
|
|
||||||
|
| 条件 | 冷却时间 |
|
||||||
|
|------|---------|
|
||||||
|
| 基础(同向信号开仓后) | 10 分钟 |
|
||||||
|
| 近 30min 同向连续 2 笔止损 | 升到 20 分钟 |
|
||||||
|
| 上一笔同向达到 TP1 | 缩短到 5 分钟 |
|
||||||
|
| 第 4 个同向信号 | 默认不开,除非上一笔已TP1 + 当前≥85分 + 1h不强反向 |
|
||||||
|
|
||||||
|
- **反向信号**不受同向冷却限制,但需过最小反转阈值(防止来回翻单)
|
||||||
|
|
||||||
|
### 5.2 清算瀑布检测
|
||||||
|
|
||||||
|
- **主通道(实时)**:aggTrades 异常成交密度 + 价格加速度 + 点差扩张 → 推断清算瀑布
|
||||||
|
- **辅通道(校验)**:Binance `forceOrders` API → 事后校验和阈值再训练
|
||||||
|
- 交易决策吃主通道,模型校准吃辅通道
|
||||||
|
|
||||||
|
### 5.3 盘口轻量监控(资源受限版)
|
||||||
|
|
||||||
|
- 仅采集 Top-of-Book + 前5档聚合(每 100-250ms 采样)
|
||||||
|
- 保留 3 个指标:`microprice`、`imbalance`、`spread`
|
||||||
|
- 只存特征,不存全量快照
|
||||||
|
- 后续评估是否升到10档
|
||||||
|
|
||||||
|
## 6. 数据源汇总
|
||||||
|
|
||||||
|
### 6.1 Binance 免费 API(V5.1 新增)
|
||||||
|
|
||||||
|
| 数据 | 接口 | 更新频率 |
|
||||||
|
|------|------|---------|
|
||||||
|
| 多空比 | `GET /futures/data/globalLongShortAccountRatio` | 5min |
|
||||||
|
| 大户持仓比 | `GET /futures/data/topLongShortPositionRatio` | 5min |
|
||||||
|
| OI 历史 | `GET /futures/data/openInterestHist` | 5min |
|
||||||
|
| Funding Rate | `GET /fapi/v1/fundingRate` | 8h结算 |
|
||||||
|
|
||||||
|
### 6.2 Coinbase Premium
|
||||||
|
|
||||||
|
- 对比 Coinbase BTC/USD 与 Binance BTC/USDT 实时价差
|
||||||
|
- 正 Premium = 机构买入(看多信号)
|
||||||
|
- 负 Premium = 机构卖出(看空信号)
|
||||||
|
|
||||||
|
### 6.3 已有数据源(V5.0)
|
||||||
|
|
||||||
|
| 数据 | 来源 | 存储 |
|
||||||
|
|------|------|------|
|
||||||
|
| aggTrades | Binance WebSocket 实时 + REST 回补 | PostgreSQL agg_trades 表 |
|
||||||
|
| CVD三轨 | signal_engine 内存计算 | signal_indicators 表 |
|
||||||
|
| ATR/VWAP | signal_engine 内存计算 | signal_indicators 表 |
|
||||||
|
| P95/P99大单 | signal_engine 24h滚动统计 | signal_indicators 表 |
|
||||||
|
| Funding Rate | agg_trades_collector 定时采集 | rate_snapshots 表 |
|
||||||
|
|
||||||
|
## 7. 回测框架
|
||||||
|
|
||||||
|
### 7.1 架构:逐tick事件回放
|
||||||
|
|
||||||
|
**不用逐分钟K线回测**(会系统性高估策略),用 aggTrades 逐tick回放。
|
||||||
|
|
||||||
|
### 7.2 三层数据结构
|
||||||
|
|
||||||
|
```
|
||||||
|
FeatureStore
|
||||||
|
├── 按时间索引缓存 1m/5m/15m/1h 特征
|
||||||
|
├── CVD, L/S, OI, FR bias, 盘口因子
|
||||||
|
└── 滚动窗口自动过期
|
||||||
|
|
||||||
|
SignalEvent
|
||||||
|
├── ts, symbol, side, score, regime
|
||||||
|
├── factors (各层评分明细)
|
||||||
|
└── entry_rule_id
|
||||||
|
|
||||||
|
PositionState
|
||||||
|
├── entry_ts, entry_px, size
|
||||||
|
├── sl_px, tp1_px, tp2_px
|
||||||
|
├── status (active/tp1_hit/tp/sl/sl_be)
|
||||||
|
└── cooldown_until
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.3 撮合逻辑
|
||||||
|
|
||||||
|
1. 每个 tick 到来 → 先更新未平仓位(检查 TP/SL/时间止损)
|
||||||
|
2. 再评估新信号(检查冷却期、评分、仓位规则)
|
||||||
|
3. 输出交易记录
|
||||||
|
|
||||||
|
### 7.4 统计输出
|
||||||
|
|
||||||
|
- 胜率 (Win Rate)
|
||||||
|
- 总盈亏 (Total PnL in R)
|
||||||
|
- 盈亏比 (Profit Factor)
|
||||||
|
- 夏普比率 (Sharpe Ratio)
|
||||||
|
- 最大回撤 (MDD)
|
||||||
|
- 平均持仓时间 (Avg Hold)
|
||||||
|
- 滑点影响评估 (Slippage Impact)
|
||||||
|
|
||||||
|
## 8. 远期规划
|
||||||
|
|
||||||
|
### V5.2(远期备选)
|
||||||
|
|
||||||
|
- **Twitter 新闻情绪面**:监控关键账号,AI分析利好/利空
|
||||||
|
- **范总判断**:新闻最终反映在 aggTrades 里,信号跑通后不急
|
||||||
|
|
||||||
|
### V5.3(数据充足后)
|
||||||
|
|
||||||
|
- ML模型替换规则引擎(XGBoost/LightGBM集成)
|
||||||
|
- 需要足够回测数据训练
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*文档版本:V5.1-draft | 待范总最终确认*
|
||||||
130
docs/arbitrage-engine/v51-signal-system.md
Normal file
130
docs/arbitrage-engine/v51-signal-system.md
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
---
|
||||||
|
title: V5.1 信号系统文档
|
||||||
|
---
|
||||||
|
|
||||||
|
# V5.1 基线信号系统(v51_baseline)
|
||||||
|
|
||||||
|
## 概述
|
||||||
|
|
||||||
|
V5.1 是基于市场微观结构的短线交易信号系统,使用 5 层 100 分评分体系,通过 CVD(累积成交量差)、大单流、持仓结构等 6 个信号源综合判断交易方向和强度。
|
||||||
|
|
||||||
|
## 评分体系(5层100分)
|
||||||
|
|
||||||
|
| 层级 | 权重 | 信号源 | 逻辑 |
|
||||||
|
|------|------|--------|------|
|
||||||
|
| 方向层 | 45分 | CVD_fast(30m) + CVD_mid(4h) + P99大单 + 加速度 | 三票共振定方向 |
|
||||||
|
| 拥挤层 | 20分 | 多空比 + 大户持仓 | 反向拥挤 = 机会 |
|
||||||
|
| 环境层 | 15分 | OI变化率 | 资金流入确认趋势 |
|
||||||
|
| 确认层 | 15分 | CVD_fast + CVD_mid 同向 | 双周期共振确认 |
|
||||||
|
| 辅助层 | 5分 | Coinbase Premium | 美国机构动向 |
|
||||||
|
|
||||||
|
### 方向层详解(45分 + 5分加速奖金)
|
||||||
|
|
||||||
|
信号方向由 CVD_fast 和 CVD_mid 综合判断:
|
||||||
|
|
||||||
|
```
|
||||||
|
CVD_fast > 0 且 CVD_mid > 0 → LONG
|
||||||
|
CVD_fast < 0 且 CVD_mid < 0 → SHORT
|
||||||
|
不一致 → 以 CVD_fast 方向为准,但标记 no_direction
|
||||||
|
```
|
||||||
|
|
||||||
|
评分项:
|
||||||
|
- CVD_fast 方向一致:+15
|
||||||
|
- CVD_mid 方向一致:+15
|
||||||
|
- P99 大单顺向流入:+15(无反向大单时+10)
|
||||||
|
- 加速度奖金:CVD_fast 加速度方向一致 → +5(可超过45)
|
||||||
|
|
||||||
|
### 拥挤层详解(20分)
|
||||||
|
|
||||||
|
| 子项 | 满分 | 逻辑 |
|
||||||
|
|------|------|------|
|
||||||
|
| 多空比(LSR) | 10分 | 做空+LSR>2.0=满分,做多+LSR<0.5=满分 |
|
||||||
|
| 大户持仓比 | 10分 | 做多+多头占比≥55%=满分 |
|
||||||
|
|
||||||
|
数据缺失时给中间分(5分),避免因采集失败误杀信号。
|
||||||
|
|
||||||
|
### 环境层详解(15分)
|
||||||
|
|
||||||
|
基于 OI(持仓量)变化率评分:
|
||||||
|
- OI 显著增长 → 趋势确认 → 满分
|
||||||
|
- OI 变化不大 → 中等分
|
||||||
|
- OI 下降 → 低分
|
||||||
|
|
||||||
|
### 确认层详解(15分)
|
||||||
|
|
||||||
|
CVD_fast 和 CVD_mid 同时为正(LONG)或同时为负(SHORT)→ 15分,否则 0分。
|
||||||
|
|
||||||
|
> **已知问题**:与方向层存在同源重复(两者都用 CVD_fast/CVD_mid)。两周后根据数据评估是否重构。
|
||||||
|
|
||||||
|
### 辅助层详解(5分)
|
||||||
|
|
||||||
|
Coinbase Premium = Coinbase 价格 vs Binance 价格差。
|
||||||
|
- 正溢价 + 做多 → 5分(美国机构买入)
|
||||||
|
- 负溢价 + 做空 → 5分
|
||||||
|
- 溢价绝对值 ≤ 0.05% → 2分(中性)
|
||||||
|
- 反向溢价 → 0分
|
||||||
|
|
||||||
|
## 开仓规则
|
||||||
|
|
||||||
|
| 档位 | 分数 | 行为 |
|
||||||
|
|------|------|------|
|
||||||
|
| 不开仓 | < 75 | 不触发 |
|
||||||
|
| 标准 | 75-84 | 正常开仓 |
|
||||||
|
| 加仓 | ≥ 85 | 加重仓位 |
|
||||||
|
|
||||||
|
- **冷却期**:同币种同策略 10 分钟
|
||||||
|
- **最大持仓**:4 笔/策略
|
||||||
|
- **反向翻转**:收到反向 ≥75 分信号 → 平旧仓 + 开新仓
|
||||||
|
|
||||||
|
## TP/SL 设置
|
||||||
|
|
||||||
|
| 参数 | 值 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| SL | 2.0 × ATR | 止损 |
|
||||||
|
| TP1 | 1.5 × ATR | 第一止盈(平50%仓位) |
|
||||||
|
| TP2 | 3.0 × ATR | 第二止盈(平剩余仓位) |
|
||||||
|
|
||||||
|
TP1命中后 SL 移到保本价(Break Even)。
|
||||||
|
|
||||||
|
## 信号源
|
||||||
|
|
||||||
|
| 信号 | 数据源 | 更新频率 |
|
||||||
|
|------|--------|----------|
|
||||||
|
| CVD_fast | aggTrades 30分钟窗口 | 15秒 |
|
||||||
|
| CVD_mid | aggTrades 4小时窗口 | 15秒 |
|
||||||
|
| P99 大单 | aggTrades P99分位数 | 实时 |
|
||||||
|
| 加速度 | CVD_fast 二阶导数 | 15秒 |
|
||||||
|
| 多空比/大户持仓 | Binance API | 5分钟 |
|
||||||
|
| OI | Binance API | 5分钟 |
|
||||||
|
| Coinbase Premium | 计算值 | 5分钟 |
|
||||||
|
|
||||||
|
## 策略配置
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "v51_baseline",
|
||||||
|
"version": "5.1",
|
||||||
|
"threshold": 75,
|
||||||
|
"weights": {
|
||||||
|
"direction": 45,
|
||||||
|
"crowding": 20,
|
||||||
|
"environment": 15,
|
||||||
|
"confirmation": 15,
|
||||||
|
"auxiliary": 5
|
||||||
|
},
|
||||||
|
"accel_bonus": 5,
|
||||||
|
"tp_sl": {
|
||||||
|
"sl_multiplier": 2.0,
|
||||||
|
"tp1_multiplier": 1.5,
|
||||||
|
"tp2_multiplier": 3.0
|
||||||
|
},
|
||||||
|
"signals": ["cvd", "p99", "accel", "ls_ratio", "oi", "coinbase_premium"]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 历史表现(修正后数据,截至 2026-03-02)
|
||||||
|
|
||||||
|
- 总交易:282+ 笔
|
||||||
|
- 胜率:~65%
|
||||||
|
- 盈亏比:~0.72
|
||||||
|
- 按档位:85+ 胜率73.6%,75-79 胜率78%(最佳档位)
|
||||||
383
docs/arbitrage-engine/v52-development.md
Normal file
383
docs/arbitrage-engine/v52-development.md
Normal file
@ -0,0 +1,383 @@
|
|||||||
|
---
|
||||||
|
title: V5.2 开发文档(完整版)
|
||||||
|
description: 套利引擎V5.2 — Bug修复 + 策略优化 + 8信号源 + 策略配置化 + AB测试
|
||||||
|
---
|
||||||
|
|
||||||
|
# V5.2 开发文档(完整版)
|
||||||
|
|
||||||
|
> **版本**:V5.2 | **状态**:待开发 | **负责人**:露露
|
||||||
|
> **创建**:2026-03-01 | **前置**:V5.1 tag `v5.1` commit `d8ad879`
|
||||||
|
> **V5.1-hotfix**:commits `45bad25` → `4b841bc`(P0修复已上线)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 一、V5.1 现状总结
|
||||||
|
|
||||||
|
### 模拟盘数据(截至2026-03-01)
|
||||||
|
|
||||||
|
| 指标 | 数值 |
|
||||||
|
|------|------|
|
||||||
|
| 总交易 | 181笔 |
|
||||||
|
| 总盈亏 | +37.07R |
|
||||||
|
| 每笔平均 | +0.20R |
|
||||||
|
| 初始资金 | $10,000 |
|
||||||
|
| 当前余额 | ~$17,414 |
|
||||||
|
|
||||||
|
### 按档位统计(关键数据)
|
||||||
|
|
||||||
|
| 档位 | 笔数 | 胜率 | 总PnL | 每笔平均 | 结论 |
|
||||||
|
|------|------|------|-------|---------|------|
|
||||||
|
| **85+ (heavy)** | 53 | 73.6% | +15.00R | +0.28R | ✅ 优质 |
|
||||||
|
| **80-84** | 81 | 65.4% | +4.11R | +0.05R | ⚠️ 平庸 |
|
||||||
|
| **75-79** | 41 | 78.0% | +17.05R | +0.42R | ✅ 最佳 |
|
||||||
|
| **70-74** | 6 | 50.0% | -2.65R | -0.44R | ❌ 亏钱 |
|
||||||
|
|
||||||
|
### 手续费分析(核心发现)
|
||||||
|
|
||||||
|
| 币种 | SL距离% | 仓位价值 | 隐含杠杆 | 手续费/R |
|
||||||
|
|------|---------|---------|---------|---------|
|
||||||
|
| BTC | 0.43% | $46,000 | 4.6x | 0.23R |
|
||||||
|
| ETH | 0.56% | $36,000 | 3.6x | 0.18R |
|
||||||
|
| XRP | 0.44% | $45,000 | 4.5x | 0.05R |
|
||||||
|
| SOL | 0.58% | $34,000 | 3.4x | 0.04R |
|
||||||
|
|
||||||
|
**手续费公式**:`fee_R = 2 × 0.05% × position_value / risk_usd`
|
||||||
|
|
||||||
|
**BTC盈亏比问题**:TP2净利+0.89R vs SL净亏-1.23R,盈亏比仅0.72,需55%以上胜率才保本。
|
||||||
|
|
||||||
|
### V5.1已修复的P0 Bug(hotfix已上线)
|
||||||
|
|
||||||
|
| Bug | 影响 | 修复Commit |
|
||||||
|
|-----|------|-----------|
|
||||||
|
| pnl_r虚高2倍 | 统计数据全部失真 | `45bad25` |
|
||||||
|
| 冷却期阻断反向平仓 | 反向信号无法关仓 | `45bad25` |
|
||||||
|
| 分区月份Bug | 月底数据写入失败 | `45bad25` |
|
||||||
|
| SL/TP用市价不是限价 | SL超过1R | `2f9dce4` |
|
||||||
|
| 浮盈没算半仓 | 持仓盈亏虚高 | `4b841bc` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 二、V5.2 目标
|
||||||
|
|
||||||
|
### 核心目标
|
||||||
|
1. **修复所有已知Bug**(Claude Code审阅 + 实际使用发现的)
|
||||||
|
2. **FR+清算加入评分**(8信号源完整版)
|
||||||
|
3. **开仓阈值提到75分**(砍掉70-74垃圾信号)
|
||||||
|
4. **策略配置化框架**(一套代码多份配置)
|
||||||
|
5. **AB测试**(V5.1 vs V5.2并行对比)
|
||||||
|
6. **24小时warmup**(消除冷启动)
|
||||||
|
|
||||||
|
### 设计原则
|
||||||
|
- **55%胜率必须盈利**:盈亏比至少0.82:1
|
||||||
|
- **无限趋近实盘**:模拟盘和实盘逻辑完全一致
|
||||||
|
- **数据驱动**:所有决策基于数据,不拍脑袋
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 三、Bug修复清单
|
||||||
|
|
||||||
|
### 后端(15项)
|
||||||
|
|
||||||
|
| ID | 优先级 | 文件 | 问题 | 修复方案 |
|
||||||
|
|----|--------|------|------|---------|
|
||||||
|
| P0-3 | **P1** | signal_engine.py:285 | 开仓价用30分VWAP而非实时价 | `price = win_fast.trades[-1][2]` |
|
||||||
|
| P0-4 | P2 | signal_engine+paper_monitor | 双进程并发写paper_trades | `SELECT FOR UPDATE SKIP LOCKED` |
|
||||||
|
| P1-2 | P2 | signal_engine.py:143-162 | 浮点精度漂移(buy_vol/sell_vol) | 每10000次trim从deque重算sums |
|
||||||
|
| P1-3 | **P1** | market_data_collector.py:51 | 单连接无重连 | 改用`db.get_sync_conn()`连接池 |
|
||||||
|
| P1-4 | P3 | db.py:36-43 | 连接池初始化线程不安全 | `threading.Lock`双重检查 |
|
||||||
|
| P2-1 | P2 | market_data_collector.py:112 | XRP/SOL coinbase_premium KeyError | `if symbol not in pair_map: return` |
|
||||||
|
| P2-3 | P2 | agg_trades_collector.py:77 | flush_buffer每秒调ensure_partitions | 移到定时任务(每小时一次) |
|
||||||
|
| P2-4 | P3 | liquidation_collector.py:127 | elif条件冗余 | 改为`else` |
|
||||||
|
| P2-5 | P2 | signal_engine.py:209 | atr_percentile @property有写副作用 | 拆成`update_atr_history()`方法 |
|
||||||
|
| P2-6 | P2 | main.py:554 | 1R=$200硬编码 | 从paper_config.json动态读取 |
|
||||||
|
| P3-1 | P2 | auth.py:15 | JWT密钥硬编码默认值 | 启动时强制校验`JWT_SECRET`环境变量 |
|
||||||
|
| P3-2 | P3 | main.py:17 | CORS allow_origins=["*"] | 限制为`https://arb.zhouyangclaw.com` |
|
||||||
|
| P3-3 | P3 | auth.py:316 | refresh token刷新非原子 | `UPDATE...WHERE revoked=0 RETURNING` |
|
||||||
|
| P3-4 | P3 | auth.py:292 | 登录无频率限制 | slowapi或Redis计数器 |
|
||||||
|
| NEW-1 | **P1** | signal_engine.py:664 | 冷启动warmup只有4小时 | 分批加载24小时,加载完再出信号 |
|
||||||
|
|
||||||
|
### 前端(12项)
|
||||||
|
|
||||||
|
| ID | 优先级 | 文件 | 问题 | 修复方案 |
|
||||||
|
|----|--------|------|------|---------|
|
||||||
|
| FE-P1-1 | **P1** | lib/auth.tsx:113 | 并发401多次refresh竞态 | 单例Promise + `_refreshPromise` |
|
||||||
|
| FE-P1-2 | **P1** | lib/auth.tsx:127 | 刷新失败AuthContext未同步 | `window.dispatchEvent("auth:session-expired")` |
|
||||||
|
| FE-P1-3 | **P1** | 所有页面 | catch{}静默吞掉API错误 | 每个组件加`error` state + 红色提示 |
|
||||||
|
| FE-P1-4 | P2 | paper/page.tsx:119 | LatestSignals串行4请求 | `Promise.allSettled`并行 |
|
||||||
|
| FE-P2-1 | P3 | app/page.tsx:52 | MiniKChart每30秒销毁重建 | 只更新data不重建chart |
|
||||||
|
| FE-P2-3 | P2 | paper/page.tsx:20 | ControlPanel非admin可见 | 校验`isAdmin`,非admin隐藏 |
|
||||||
|
| FE-P2-4 | **P1** | paper/page.tsx:181 | WebSocket无断线重连 | 指数退避重连 + 断线提示 |
|
||||||
|
| FE-P2-5 | P2 | paper/page.tsx:217 | 1R=$200前端硬编码 | 从`/api/paper/config`读取 |
|
||||||
|
| FE-P2-6 | P2 | signals/page.tsx:101 | 5秒轮询5分钟数据 | 改为300秒间隔 |
|
||||||
|
| FE-P2-8 | P3 | paper/signals | 大量`any`类型 | 定义TypeScript interface |
|
||||||
|
| FE-P3-1 | P3 | lib/auth.tsx:33 | Token存localStorage | 评估httpOnly cookie方案 |
|
||||||
|
| FE-P3-3 | P3 | app/page.tsx:144 | Promise.all任一失败全丢 | 改`Promise.allSettled` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 四、新功能:8信号源评分
|
||||||
|
|
||||||
|
### 当前6信号源 → V5.2增加2个
|
||||||
|
|
||||||
|
| # | 信号源 | 层级 | 当前 | V5.2 |
|
||||||
|
|---|--------|------|------|------|
|
||||||
|
| 1 | CVD三轨(fast/mid) | 方向层 | ✅ 评分中 | 保持 |
|
||||||
|
| 2 | P99大单流 | 方向层 | ✅ 评分中 | 保持 |
|
||||||
|
| 3 | CVD加速度 | 方向层 | ✅ 评分中 | 保持 |
|
||||||
|
| 4 | 多空比+大户持仓比 | 拥挤层 | ✅ 评分中 | 保持 |
|
||||||
|
| 5 | OI变化率 | 环境层 | ✅ 评分中 | 保持 |
|
||||||
|
| 6 | Coinbase Premium | 辅助层 | ✅ 评分中 | 保持 |
|
||||||
|
| **7** | **资金费率(FR)** | **拥挤层** | ⬜ 仅采集 | **✅ 加入评分** |
|
||||||
|
| **8** | **清算数据** | **确认层** | ⬜ 仅采集 | **✅ 加入评分** |
|
||||||
|
|
||||||
|
### FR评分逻辑(草案)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# 资金费率 → 拥挤层加分
|
||||||
|
# FR > 0.03% = 多头过度拥挤 → SHORT加分
|
||||||
|
# FR < -0.03% = 空头过度拥挤 → LONG加分
|
||||||
|
# |FR| > 0.1% = 极端值 → 反向强信号
|
||||||
|
|
||||||
|
funding_rate = self.market_indicators.get("funding_rate")
|
||||||
|
if funding_rate is not None:
|
||||||
|
if direction == "LONG" and funding_rate < -0.0003:
|
||||||
|
fr_score = 5 # 空头拥挤,做多有利
|
||||||
|
elif direction == "SHORT" and funding_rate > 0.0003:
|
||||||
|
fr_score = 5 # 多头拥挤,做空有利
|
||||||
|
elif direction == "LONG" and funding_rate > 0.001:
|
||||||
|
fr_score = -5 # 多头极度拥挤,做多危险(减分)
|
||||||
|
elif direction == "SHORT" and funding_rate < -0.001:
|
||||||
|
fr_score = -5 # 空头极度拥挤,做空危险
|
||||||
|
else:
|
||||||
|
fr_score = 0
|
||||||
|
```
|
||||||
|
|
||||||
|
### 清算数据评分逻辑(草案)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# 大额清算 → 确认层加分
|
||||||
|
# 大额空单清算 = 空头被清洗 → SHORT可能结束,LONG加分
|
||||||
|
# 大额多单清算 = 多头被清洗 → LONG可能结束,SHORT加分
|
||||||
|
# 5分钟内清算量 > 阈值 = 趋势加速信号
|
||||||
|
|
||||||
|
liq_long = self.market_indicators.get("long_liq_usd", 0)
|
||||||
|
liq_short = self.market_indicators.get("short_liq_usd", 0)
|
||||||
|
if direction == "LONG" and liq_short > 500000:
|
||||||
|
liq_score = 5 # 大量空单被清算,趋势确认
|
||||||
|
elif direction == "SHORT" and liq_long > 500000:
|
||||||
|
liq_score = 5
|
||||||
|
else:
|
||||||
|
liq_score = 0
|
||||||
|
```
|
||||||
|
|
||||||
|
### V5.2权重分配(草案)
|
||||||
|
|
||||||
|
| 层级 | V5.1权重 | V5.2权重 | 变化 |
|
||||||
|
|------|---------|---------|------|
|
||||||
|
| 方向层 | 45+5 | 40+5 | -5 |
|
||||||
|
| 拥挤层 | 20 | 25(+FR 5分) | +5 |
|
||||||
|
| 环境层 | 15 | 15 | 不变 |
|
||||||
|
| 确认层 | 15 | 20(+清算 5分) | +5 |
|
||||||
|
| 辅助层 | 5 | 5 | 不变 |
|
||||||
|
| **总计** | **100+5** | **105+5** | +5 |
|
||||||
|
|
||||||
|
> 注:总分超过100不影响,阈值按绝对分数判断(75/80/85)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 五、策略调整
|
||||||
|
|
||||||
|
### 开仓阈值调整
|
||||||
|
|
||||||
|
| | V5.1 | V5.2 | 原因 |
|
||||||
|
|---|------|------|------|
|
||||||
|
| 最低开仓分 | 60分 | **75分** | 70-74档位50%胜率,扣手续费亏钱 |
|
||||||
|
| light档 | 60-74 | **取消** | 数据证明低分信号无价值 |
|
||||||
|
| standard档 | 75-84 | 75-84 | 保持 |
|
||||||
|
| heavy档 | 85+ | 85+ | 保持 |
|
||||||
|
|
||||||
|
### TP/SL倍数(待AB测试确认)
|
||||||
|
|
||||||
|
| 参数 | V5.1(方案A) | V5.2候选(方案B) |
|
||||||
|
|------|-------------|-----------------|
|
||||||
|
| SL | 2.0 × risk_atr | 3.0 × risk_atr |
|
||||||
|
| TP1 | 1.5 × risk_atr | 2.0 × risk_atr |
|
||||||
|
| TP2 | 3.0 × risk_atr | 4.0 × risk_atr |
|
||||||
|
| BTC手续费占比 | 0.23R | 0.15R |
|
||||||
|
| TP2净利 | +0.89R | +0.97R |
|
||||||
|
| SL净亏 | -1.23R | -1.15R |
|
||||||
|
| 盈亏比 | 0.72 | 0.84 |
|
||||||
|
| 保本胜率 | 58% | 54% |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 六、策略配置化框架
|
||||||
|
|
||||||
|
### 设计目标
|
||||||
|
一个signal-engine进程,支持多套策略配置并行。
|
||||||
|
|
||||||
|
### 配置文件结构
|
||||||
|
```json
|
||||||
|
// strategies/v51.json
|
||||||
|
{
|
||||||
|
"name": "v51_baseline",
|
||||||
|
"threshold": 75,
|
||||||
|
"weights": {
|
||||||
|
"direction": 45,
|
||||||
|
"crowding": 20,
|
||||||
|
"environment": 15,
|
||||||
|
"confirmation": 15,
|
||||||
|
"auxiliary": 5
|
||||||
|
},
|
||||||
|
"tp_sl": {
|
||||||
|
"sl_multiplier": 2.0,
|
||||||
|
"tp1_multiplier": 1.5,
|
||||||
|
"tp2_multiplier": 3.0
|
||||||
|
},
|
||||||
|
"signals": ["cvd", "p99", "accel", "ls_ratio", "oi", "coinbase_premium"]
|
||||||
|
}
|
||||||
|
|
||||||
|
// strategies/v52.json
|
||||||
|
{
|
||||||
|
"name": "v52_8signals",
|
||||||
|
"threshold": 75,
|
||||||
|
"weights": {
|
||||||
|
"direction": 40,
|
||||||
|
"crowding": 25,
|
||||||
|
"environment": 15,
|
||||||
|
"confirmation": 20,
|
||||||
|
"auxiliary": 5
|
||||||
|
},
|
||||||
|
"tp_sl": {
|
||||||
|
"sl_multiplier": 3.0,
|
||||||
|
"tp1_multiplier": 2.0,
|
||||||
|
"tp2_multiplier": 4.0
|
||||||
|
},
|
||||||
|
"signals": ["cvd", "p99", "accel", "ls_ratio", "oi", "coinbase_premium", "funding_rate", "liquidation"]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### paper_trades表新增字段
|
||||||
|
```sql
|
||||||
|
ALTER TABLE paper_trades ADD COLUMN strategy VARCHAR(32) DEFAULT 'v51_baseline';
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 七、AB测试方案
|
||||||
|
|
||||||
|
### 架构
|
||||||
|
```
|
||||||
|
signal_engine.py
|
||||||
|
├── evaluate_signal(state, strategy="v51") → score_A, signal_A
|
||||||
|
├── evaluate_signal(state, strategy="v52") → score_B, signal_B
|
||||||
|
│
|
||||||
|
├── paper_open_trade(strategy="v51", ...) → paper_trades.strategy='v51'
|
||||||
|
└── paper_open_trade(strategy="v52", ...) → paper_trades.strategy='v52'
|
||||||
|
```
|
||||||
|
|
||||||
|
### 独立资金池
|
||||||
|
- V5.1:$10,000虚拟资金,独立统计
|
||||||
|
- V5.2:$10,000虚拟资金,独立统计
|
||||||
|
|
||||||
|
### 对比指标
|
||||||
|
| 指标 | V5.1 | V5.2 |
|
||||||
|
|------|------|------|
|
||||||
|
| 总笔数 | ? | ? |
|
||||||
|
| 胜率 | ? | ? |
|
||||||
|
| 每笔平均R | ? | ? |
|
||||||
|
| 最大回撤 | ? | ? |
|
||||||
|
| 盈亏比 | ? | ? |
|
||||||
|
| PF | ? | ? |
|
||||||
|
|
||||||
|
### 测试周期
|
||||||
|
- **两周**(目标每策略100+笔)
|
||||||
|
- 结束后选表现更好的上实盘
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 八、24小时Warmup
|
||||||
|
|
||||||
|
### 当前问题
|
||||||
|
signal-engine启动时只加载4小时数据,P99大单需要24小时窗口。
|
||||||
|
|
||||||
|
### 方案(范总确认)
|
||||||
|
```python
|
||||||
|
def main():
|
||||||
|
states = {sym: SymbolState(sym) for sym in SYMBOLS}
|
||||||
|
|
||||||
|
# 分批加载24小时(每批100万条,避免OOM)
|
||||||
|
for sym, state in states.items():
|
||||||
|
load_historical_chunked(state, 24 * 3600 * 1000)
|
||||||
|
logger.info(f"[{sym}] warmup complete")
|
||||||
|
|
||||||
|
logger.info("=== 全部币种warmup完成,开始出信号 ===")
|
||||||
|
# 这之后才开始评估循环
|
||||||
|
```
|
||||||
|
|
||||||
|
### 预估
|
||||||
|
- 4币种24小时约2000-3000万条
|
||||||
|
- 加载时间1-3分钟
|
||||||
|
- 启动后信号质量从第一笔就是100%
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 九、V5.1-hotfix已修复清单(参考)
|
||||||
|
|
||||||
|
| Commit | 内容 |
|
||||||
|
|--------|------|
|
||||||
|
| `45bad25` | P0-1: 反向信号绕过冷却 |
|
||||||
|
| `45bad25` | P0-2: pnl_r统一(exit-entry)/risk_distance |
|
||||||
|
| `45bad25` | P1-1: 分区月份+UTC修复 |
|
||||||
|
| `2f9dce4` | TP/SL改限价单模式(趋近实盘) |
|
||||||
|
| `4b841bc` | 前端浮盈半仓计算 |
|
||||||
|
| `d351949` | 历史pnl_r修正脚本 |
|
||||||
|
| `8b73500` | Auth从SQLite迁移PG |
|
||||||
|
| `9528d69` | recent_large_trades去重 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 十、开发排期(草案)
|
||||||
|
|
||||||
|
| 阶段 | 时间 | 内容 | 产出 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| Phase 1 | Day 1-2 | Bug修复(P1全部 + P2重要的) | 代码+测试 |
|
||||||
|
| Phase 2 | Day 2-3 | FR+清算评分逻辑 | signal_engine.py |
|
||||||
|
| Phase 3 | Day 3-4 | 策略配置化框架 | strategies/*.json + 代码 |
|
||||||
|
| Phase 4 | Day 4-5 | AB测试机制 | paper_trades.strategy字段 |
|
||||||
|
| Phase 5 | Day 5 | 24h warmup | signal_engine.py |
|
||||||
|
| Phase 6 | Day 6-7 | 前端Bug修复 + 策略对比页面 | 前端代码 |
|
||||||
|
| **部署** | Day 7 | 全部写好测好,一次性部署 | 减少重启 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 十一、数据需求
|
||||||
|
|
||||||
|
### 当前数据量
|
||||||
|
- aggTrades:7039万条(BTC 23天 + ETH 3天 + XRP/SOL 3天)
|
||||||
|
- signal_indicators:2.7万+条
|
||||||
|
- paper_trades:181笔
|
||||||
|
- market_indicators:5400+条
|
||||||
|
- liquidations:3600+条
|
||||||
|
|
||||||
|
### V5.2需要的数据量
|
||||||
|
- **AB测试**:每策略至少100笔 → 两周
|
||||||
|
- **权重优化(Phase 1统计分析)**:300+笔
|
||||||
|
- **回归分析**:500+笔
|
||||||
|
- **ML优化**:1000+笔
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 十二、风险与注意事项
|
||||||
|
|
||||||
|
1. **手续费是盈亏关键** — BTC手续费0.23R/笔,必须控制交易频率
|
||||||
|
2. **样本量不足** — 当前181笔,按分数段分析可能不稳定
|
||||||
|
3. **过拟合风险** — 两周一次微调,每次±10-20%,不做大改
|
||||||
|
4. **AB测试期间** — 两套策略共享最大持仓4个,需要分配
|
||||||
|
5. **24h warmup** — 启动时间变长,需要告知运维(小周)
|
||||||
|
6. **策略配置化** — 改动signal_engine核心代码,必须充分测试
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*本文档为V5.2开发的完整参考,开发过程中持续更新。*
|
||||||
|
*商业机密:策略细节不对外暴露。*
|
||||||
269
docs/arbitrage-engine/v52-evolution-roadmap.md
Normal file
269
docs/arbitrage-engine/v52-evolution-roadmap.md
Normal file
@ -0,0 +1,269 @@
|
|||||||
|
---
|
||||||
|
title: V5.2 策略进化路线图
|
||||||
|
description: 信号引擎V5.2 — 数据驱动的策略迭代框架,将信号源视为特征、权重视为模型参数,通过模拟盘持续优化
|
||||||
|
---
|
||||||
|
|
||||||
|
# V5.2 策略进化路线图
|
||||||
|
|
||||||
|
> **优先级:P0(最高)** | 负责人:露露 | 创建:2026-02-28
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 一、核心思路 ⭐⭐⭐
|
||||||
|
|
||||||
|
### 信号源 = 特征(Feature)
|
||||||
|
|
||||||
|
每一个数据源都是模型的一个**输入特征**。特征越多、越有效,模型的预测能力越强。
|
||||||
|
|
||||||
|
当前V5.1的5层评分体系,本质上就是一个**手动设计的线性模型**:
|
||||||
|
|
||||||
|
```
|
||||||
|
总分 = W1×方向层 + W2×拥挤层 + W3×环境层 + W4×确认层 + W5×辅助层
|
||||||
|
```
|
||||||
|
|
||||||
|
### 权重 = 模型参数(Parameter)
|
||||||
|
|
||||||
|
当前权重是人工拍的(45/20/15/15/5),不一定是最优的。
|
||||||
|
|
||||||
|
**目标**:用真实交易数据(模拟盘+实盘),自动学习每个特征的最优权重。
|
||||||
|
|
||||||
|
### 迭代循环(正向飞轮)
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────┐
|
||||||
|
│ │
|
||||||
|
│ ① 加入新信号源(特征) │
|
||||||
|
│ ↓ │
|
||||||
|
│ ② 模拟盘跑数据(每笔记录5层分数+盈亏) │
|
||||||
|
│ ↓ │
|
||||||
|
│ ③ 分析数据(哪些特征有效、最优权重) │
|
||||||
|
│ ↓ │
|
||||||
|
│ ④ 调整权重 / 加减特征 │
|
||||||
|
│ ↓ │
|
||||||
|
│ ⑤ 实盘验证 │
|
||||||
|
│ ↓ │
|
||||||
|
│ ⑥ 数据反馈 → 回到① │
|
||||||
|
│ │
|
||||||
|
│ 数据越多 → 模型越准 → 赚越多 → 数据越多 │
|
||||||
|
│ │
|
||||||
|
└─────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
这就是量化交易的**核心方法论**,和大模型训练思路一样:
|
||||||
|
- 大模型:数据 → 特征提取 → 权重训练 → 验证 → 迭代
|
||||||
|
- 信号引擎:行情数据 → 信号源/指标 → 评分权重 → 模拟盘验证 → 调参迭代
|
||||||
|
|
||||||
|
**护城河**:积累的数据和调优后的参数,是别人无法复制的。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 二、当前架构(V5.1)
|
||||||
|
|
||||||
|
### 已有信号源(特征)
|
||||||
|
|
||||||
|
| 层 | 权重 | 信号源 | 数据来源 | 状态 |
|
||||||
|
|----|------|--------|---------|------|
|
||||||
|
| 方向层 | 45分 | CVD_fast(30m) | agg_trades计算 | ✅ 真实数据 |
|
||||||
|
| 方向层 | - | CVD_mid(4h) | agg_trades计算 | ✅ 真实数据 |
|
||||||
|
| 方向层 | - | P99大单流 | agg_trades计算 | ✅ 真实数据 |
|
||||||
|
| 方向层 | +5 | CVD加速度 | agg_trades计算 | ✅ 真实数据 |
|
||||||
|
| 拥挤层 | 20分 | 多空比 | 币安API globalLongShortAccountRatio | ✅ 真实数据 |
|
||||||
|
| 拥挤层 | - | 大户持仓比 | 币安API topLongShortAccountRatio | ✅ 真实数据 |
|
||||||
|
| 环境层 | 15分 | OI变化率 | 币安API openInterestHist | ✅ 真实数据 |
|
||||||
|
| 确认层 | 15分 | 多时间框架CVD一致性 | agg_trades计算 | ✅ 真实数据 |
|
||||||
|
| 辅助层 | 5分 | Coinbase Premium | 币安+CB价差 | ✅ 真实数据 |
|
||||||
|
|
||||||
|
### 每笔交易记录的数据
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"score": 85,
|
||||||
|
"score_factors": {
|
||||||
|
"direction": {"score": 45, "cvd_fast": 15, "cvd_mid": 15, "p99_flow": 15, "accel_bonus": 5},
|
||||||
|
"crowding": {"score": 15, "long_short_ratio": 10, "top_trader_position": 5},
|
||||||
|
"environment": {"score": 10, "open_interest_hist": 0.02},
|
||||||
|
"confirmation": {"score": 15},
|
||||||
|
"auxiliary": {"score": 5, "coinbase_premium": 0.0012}
|
||||||
|
},
|
||||||
|
"pnl_r": 2.25,
|
||||||
|
"status": "tp"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 三、V5.2 待加入信号源(按优先级)
|
||||||
|
|
||||||
|
### 第一批(数据容易获取)
|
||||||
|
|
||||||
|
| 信号源 | 类型 | 获取方式 | 预期价值 |
|
||||||
|
|--------|------|---------|---------|
|
||||||
|
| 资金费率(Funding Rate) | 拥挤指标 | 币安API /fapi/v1/fundingRate | 高 — 极端FR是反转信号 |
|
||||||
|
| 清算数据(Liquidation) | 情绪指标 | 币安WS forceOrder | 高 — 大额清算=趋势加速 |
|
||||||
|
| 期权PCR(Put/Call Ratio) | 情绪指标 | Deribit API | 中 — 机构对冲意愿 |
|
||||||
|
| 波动率指数(DVOL) | 环境指标 | Deribit API | 中 — 波动率扩张/收缩 |
|
||||||
|
|
||||||
|
### 第二批(需要爬取/计算)
|
||||||
|
|
||||||
|
| 信号源 | 类型 | 获取方式 | 预期价值 |
|
||||||
|
|--------|------|---------|---------|
|
||||||
|
| Twitter/X情绪 | 情绪指标 | Agent-Reach xsearch | 中 — 散户情绪反指标 |
|
||||||
|
| 恐贪指数 | 情绪指标 | alternative.me API | 低 — 日级更新太慢 |
|
||||||
|
| 链上大额转账 | 鲸鱼行为 | Etherscan/Blockchain API | 中 — 鲸鱼动向 |
|
||||||
|
| 交易所净流入 | 资金流 | CryptoQuant/Glassnode | 高 — 抛压预警 |
|
||||||
|
|
||||||
|
### 第三批(高级)
|
||||||
|
|
||||||
|
| 信号源 | 类型 | 获取方式 | 预期价值 |
|
||||||
|
|--------|------|---------|---------|
|
||||||
|
| 订单簿深度不对称 | 微观结构 | 币安WS depth | 中 — 支撑/阻力判断 |
|
||||||
|
| 跨交易所价差 | 套利信号 | 多交易所API | 低 — 实现复杂 |
|
||||||
|
| 新闻事件检测 | 事件驱动 | LLM分析 | 中 — 黑天鹅预警 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 四、权重优化方法(数据足够后实施)
|
||||||
|
|
||||||
|
### Phase 1:统计分析(200+笔交易后)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# 按各层分数分桶,看胜率
|
||||||
|
# 例如:方向层>=40分时胜率65%,<30分时胜率45%
|
||||||
|
# → 说明方向层有效,保持高权重
|
||||||
|
|
||||||
|
# 按拥挤层分桶
|
||||||
|
# 例如:拥挤层>=15分时胜率60%,<10分时胜率58%
|
||||||
|
# → 说明拥挤层区分度低,可以降权重
|
||||||
|
```
|
||||||
|
|
||||||
|
### Phase 2:回归分析(500+笔交易后)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# 逻辑回归:各层分数 → 是否盈利
|
||||||
|
# 输出:每个特征的系数 = 最优权重
|
||||||
|
from sklearn.linear_model import LogisticRegression
|
||||||
|
model = LogisticRegression()
|
||||||
|
model.fit(X_factors, y_win) # X=5层分数, y=盈利/亏损
|
||||||
|
optimal_weights = model.coef_
|
||||||
|
```
|
||||||
|
|
||||||
|
### Phase 3:机器学习(1000+笔交易后)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# XGBoost/随机森林:自动发现非线性关系
|
||||||
|
# 例如:方向层高+拥挤层低 = 最佳组合(简单线性模型发现不了)
|
||||||
|
from xgboost import XGBClassifier
|
||||||
|
model = XGBClassifier()
|
||||||
|
model.fit(X_factors, y_win)
|
||||||
|
# 特征重要性排序 → 指导信号源增减
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 五、2026-02-28 开发记录
|
||||||
|
|
||||||
|
### V5.1完善
|
||||||
|
- **5层评分真实数据修复**:signal_engine之前没正确解析market_indicators的JSONB,拥挤/环境/辅助层全是默认中间分。修了fetch_market_indicators正确解析JSONB → commit `317031a`
|
||||||
|
- **前端UI全面压缩**:标题改"⚡ 信号引擎 V5.1",所有面板字体/间距/padding缩小 → commits `9382d35`, `271658c`
|
||||||
|
|
||||||
|
### 模拟盘上线(Paper Trading)
|
||||||
|
- **paper_trades表** + signal_engine集成 + 5个API → commit `e054db1`
|
||||||
|
- **开关机制**:默认关闭,前端按钮控制,API热更新 → commit `282aed1`
|
||||||
|
- **手续费**:Taker 0.05%×2=0.1%来回 → commit `47004ec`
|
||||||
|
- **反向信号翻转**:持多仓来空信号→先平后开 → commit `6681070`
|
||||||
|
- **WebSocket实时TP/SL**:独立paper_monitor.py进程,毫秒级平仓 → commit `7b901a2`
|
||||||
|
- **前端aggTrade实时价格**:逐笔成交推送 → commit `1d23042`
|
||||||
|
- **当前资金显示** → commit `d0e626a`
|
||||||
|
- **冷启动保护**:重启后跳过前3轮防重复开仓 → commit `95b45d0`
|
||||||
|
- **5层评分明细记录**:score_factors JSONB字段 → commit `022ead6`
|
||||||
|
|
||||||
|
### Bug修复
|
||||||
|
- arb-api缩进错误 → commit `cd17c76`
|
||||||
|
- Request未导入 → commit `b232270`
|
||||||
|
- useAuth登录检测 → commit `59910fe`
|
||||||
|
- 现价不准改币安API → commit `d177d28`
|
||||||
|
- 最新信号symbol参数修复 → commit `404cc68`
|
||||||
|
- 资金字体超框 → commit `95fec35`
|
||||||
|
- gitignore __pycache__ → commit `961cbc6`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 六、下一步行动
|
||||||
|
|
||||||
|
| 阶段 | 时间 | 内容 |
|
||||||
|
|------|------|------|
|
||||||
|
| 现在 | 2026-02-28 ~ 03-14 | 模拟盘跑两周,积累200-300笔交易数据 |
|
||||||
|
| Phase 1 | 03-14 | 统计分析各层贡献,初步调权重 |
|
||||||
|
| Phase 2 | 03-21 | 加入资金费率+清算数据(第一批新信号源) |
|
||||||
|
| Phase 3 | 04-01 | 回归分析自动优化权重 |
|
||||||
|
| Phase 4 | 04-15 | 小仓实盘验证 |
|
||||||
|
| 持续 | 长期 | 不断加入新信号源,数据驱动迭代 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 七、行业竞品与信号源调研(2026-02-28)
|
||||||
|
|
||||||
|
### 与我们思路相似的项目
|
||||||
|
|
||||||
|
#### 1. Hyper-Alpha-Arena(GitHub开源)— 相似度85%
|
||||||
|
- **地址**:https://github.com/HammerGPT/Hyper-Alpha-Arena
|
||||||
|
- **核心**:监控Order Flow + OI变化 + Funding Rate极端值,触发自动交易
|
||||||
|
- 支持币安合约+Hyperliquid,用LLM(GPT-5/Claude/DeepSeek)做策略决策
|
||||||
|
- **区别**:他们用LLM自然语言描述策略做决策,我们用评分模型
|
||||||
|
- **我们的优势**:5层评分+权重训练更可量化、可回测、可优化
|
||||||
|
|
||||||
|
#### 2. FinRL-AlphaSeek(哥伦比亚大学,ACM竞赛)— 相似度80%
|
||||||
|
- **地址**:https://github.com/Open-Finance-Lab/FinRL_Contest_2025
|
||||||
|
- **论文**:https://arxiv.org/html/2504.02281v4
|
||||||
|
- **核心**:因子挖掘(Factor Mining) + 集成学习(Ensemble Learning)
|
||||||
|
- 两阶段:① 特征工程+因子选择 ② 多模型集成
|
||||||
|
- **映射关系**:他们的"因子"=我们的"信号源",他们的"集成权重"=我们的"评分权重"
|
||||||
|
- **区别**:他们用强化学习(RL)训练Agent,我们用统计回归优化权重
|
||||||
|
- **可借鉴**:遗传算法优化权重(比逻辑回归更强)
|
||||||
|
|
||||||
|
#### 3. ACM论文:ML驱动多因子量化模型(ETH市场)— 相似度75%
|
||||||
|
- **地址**:https://dl.acm.org/doi/10.1145/3766918.3766922
|
||||||
|
- **核心**:把交易因子分三类 — 传统技术因子 + 链上因子 + ML生成因子
|
||||||
|
- 用IC值(信息系数)衡量每个因子的预测力
|
||||||
|
- 用**遗传算法**自动优化因子权重
|
||||||
|
- 信号用Z-score阈值触发(>1买入,<-1卖出)
|
||||||
|
- **启发**:我们也可以用IC值来量化每个信号源的贡献
|
||||||
|
|
||||||
|
#### 4. CoinGlass CDRI(衍生品风险指数)— 相似度70%
|
||||||
|
- **地址**:https://www.coinglass.com/pro/i/CDRI
|
||||||
|
- **核心**:综合OI/FR/清算/CVD等多指标打分,评分>80或<20触发信号
|
||||||
|
- **区别**:他们只做风险预警展示,不做自动交易
|
||||||
|
|
||||||
|
### 行业信号源使用频率排名
|
||||||
|
|
||||||
|
| 排名 | 信号源 | 行业使用频率 | 我们状态 | 数据源 | 获取难度 |
|
||||||
|
|------|--------|------------|---------|--------|---------|
|
||||||
|
| 1 | CVD/Order Flow | ⭐⭐⭐⭐⭐ | ✅ 已有 | agg_trades | - |
|
||||||
|
| 2 | Open Interest | ⭐⭐⭐⭐⭐ | ✅ 已有 | 币安API | - |
|
||||||
|
| 3 | Funding Rate | ⭐⭐⭐⭐⭐ | ⬜ 待加 | 币安API(免费) | ⭐ |
|
||||||
|
| 4 | 清算数据 | ⭐⭐⭐⭐ | ⬜ 待加 | 币安WS forceOrder | ⭐⭐ |
|
||||||
|
| 5 | 多空比 | ⭐⭐⭐⭐ | ✅ 已有 | 币安API | - |
|
||||||
|
| 6 | 链上净流入/流出 | ⭐⭐⭐⭐ | ⬜ 待加 | CryptoQuant(付费) | ⭐⭐⭐ |
|
||||||
|
| 7 | Coinbase Premium | ⭐⭐⭐ | ✅ 已有 | 价差计算 | - |
|
||||||
|
| 8 | 社交情绪 | ⭐⭐⭐ | ⬜ 待加 | Santiment/LLM | ⭐⭐⭐ |
|
||||||
|
| 9 | 期权PCR/DVOL | ⭐⭐⭐ | ⬜ 待加 | Deribit API | ⭐⭐ |
|
||||||
|
| 10 | 鲸鱼钱包追踪 | ⭐⭐⭐ | ⬜ 待加 | Nansen(付费) | ⭐⭐⭐ |
|
||||||
|
| 11 | 清算热力图 | ⭐⭐ | ⬜ 待加 | CoinGlass API(付费) | ⭐⭐ |
|
||||||
|
| 12 | 订单簿深度 | ⭐⭐ | ⬜ 待加 | 币安WS depth | ⭐⭐ |
|
||||||
|
|
||||||
|
### 关键结论
|
||||||
|
|
||||||
|
1. **没有人做得和我们完全一样** — 大多数用传统技术指标或纯ML黑箱,用CVD+多空比+OI做多层评分的几乎没有
|
||||||
|
2. **行业趋势明确** — 多因子 + ML权重优化,和范总定的方向完全一致
|
||||||
|
3. **Funding Rate是最高优先级** — 行业使用率最高、免费获取、我们还没加
|
||||||
|
4. **权重优化可升级** — 从逻辑回归→IC值+遗传算法,参考ACM论文方法
|
||||||
|
|
||||||
|
### 数据供应商参考
|
||||||
|
|
||||||
|
| 平台 | 核心能力 | 价格 | 适合 |
|
||||||
|
|------|---------|------|------|
|
||||||
|
| CoinGlass | 衍生品数据(OI/FR/清算/热力图) | 免费基础+付费API | 清算数据 |
|
||||||
|
| CryptoQuant | 链上数据(净流入/矿工/交易所储备) | $29/月起 | 链上因子 |
|
||||||
|
| Santiment | 社交情绪+链上+开发活跃度 | 免费基础+付费 | 情绪因子 |
|
||||||
|
| Glassnode | 链上高级指标(SOPR/NUPL/STH-LTH) | $39/月起 | 深度链上 |
|
||||||
|
| Nansen | 鲸鱼钱包追踪+Smart Money | $100/月起 | 鲸鱼行为 |
|
||||||
151
docs/arbitrage-engine/v52-signal-system.md
Normal file
151
docs/arbitrage-engine/v52-signal-system.md
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
---
|
||||||
|
title: V5.2 信号系统文档
|
||||||
|
---
|
||||||
|
|
||||||
|
# V5.2 八信号源系统(v52_8signals)
|
||||||
|
|
||||||
|
## 概述
|
||||||
|
|
||||||
|
V5.2 在 V5.1 基础上新增 **资金费率(Funding Rate)** 和 **清算数据(Liquidation)** 两个信号源,形成 7 层 100 分评分体系。目标是提高信号精准度,减少无效开仓。
|
||||||
|
|
||||||
|
## 与 V5.1 的核心差异
|
||||||
|
|
||||||
|
| 对比项 | V5.1 | V5.2 |
|
||||||
|
|--------|------|------|
|
||||||
|
| 信号源 | 6个 | 8个(+FR, +清算) |
|
||||||
|
| 评分层 | 5层 | 7层(+FR层, +清算层) |
|
||||||
|
| 方向权重 | 45分 | 40分 |
|
||||||
|
| TP/SL | SL=2.0×ATR | SL=3.0×ATR(更宽) |
|
||||||
|
| 盈亏比目标 | 0.72 | 0.84+ |
|
||||||
|
|
||||||
|
## 评分体系(7层100分)
|
||||||
|
|
||||||
|
| 层级 | 权重 | 信号源 | 说明 |
|
||||||
|
|------|------|--------|------|
|
||||||
|
| 方向层 | 40分 | CVD_fast + CVD_mid + P99大单 | 同V5.1但权重降低 |
|
||||||
|
| 拥挤层 | 18分 | 多空比 + 大户持仓 | 结构性仓位判断 |
|
||||||
|
| **FR层** | **5分** | **资金费率** | **持仓成本顺风度** |
|
||||||
|
| 环境层 | 12分 | OI变化率 | 同V5.1但权重降低 |
|
||||||
|
| 确认层 | 15分 | CVD双周期共振 | 同V5.1 |
|
||||||
|
| **清算层** | **5分** | **清算比率** | **市场清洗力度** |
|
||||||
|
| 辅助层 | 5分 | Coinbase Premium | 同V5.1 |
|
||||||
|
|
||||||
|
### FR层详解(5分)— 线性评分
|
||||||
|
|
||||||
|
**数据源**:Binance fundingRate,每5分钟采集,每8小时结算。
|
||||||
|
|
||||||
|
**评分公式**:
|
||||||
|
```
|
||||||
|
raw_score = (|当前FR| / 历史最大FR) × 5,上限5分
|
||||||
|
|
||||||
|
有利方向 → fr_score = raw_score(0~5)
|
||||||
|
不利方向 → fr_score = 0
|
||||||
|
```
|
||||||
|
|
||||||
|
**方向判断**:
|
||||||
|
- 做多 + FR为负(空头付费给多头)= 有利 → 给分
|
||||||
|
- 做空 + FR为正(多头付费给空头)= 有利 → 给分
|
||||||
|
- 其他 = 不利 → 0分(不扣分)
|
||||||
|
|
||||||
|
**历史最大FR**:从数据库实时计算,每小时缓存一次。数据越多越精准。
|
||||||
|
|
||||||
|
| 币种 | 历史最大FR | 说明 |
|
||||||
|
|------|-----------|------|
|
||||||
|
| BTC | ~0.0046% | 波动最小 |
|
||||||
|
| ETH | ~0.0095% | 中等 |
|
||||||
|
| XRP | ~0.022% | 波动大 |
|
||||||
|
| SOL | ~0.022% | 波动大 |
|
||||||
|
|
||||||
|
**设计原则**:
|
||||||
|
- 信号方向已确定,FR只评估"有多顺风"
|
||||||
|
- 不利方向不扣分(方向决策不由FR层负责)
|
||||||
|
- 线性映射,不分层不设阈值,灵活精准
|
||||||
|
- 分数带小数(如 +2.27分、+0.33分)
|
||||||
|
|
||||||
|
### 清算层详解(5分)— 梯度评分
|
||||||
|
|
||||||
|
**数据源**:liq-collector 实时采集清算事件。
|
||||||
|
|
||||||
|
**评分逻辑**:
|
||||||
|
```
|
||||||
|
ratio = 对手方清算USD / 己方清算USD
|
||||||
|
|
||||||
|
做多 → ratio = 空头清算 / 多头清算
|
||||||
|
做空 → ratio = 多头清算 / 空头清算
|
||||||
|
|
||||||
|
ratio ≥ 2.0 → 5分
|
||||||
|
ratio ≥ 1.5 → 3分
|
||||||
|
ratio ≥ 1.2 → 1分
|
||||||
|
ratio < 1.2 → 0分
|
||||||
|
```
|
||||||
|
|
||||||
|
**逻辑**:对手方爆仓越多,说明市场正在朝我们的方向清洗,有利信号。
|
||||||
|
|
||||||
|
## TP/SL 设置
|
||||||
|
|
||||||
|
| 参数 | V5.1 | V5.2 | 变化原因 |
|
||||||
|
|------|------|------|----------|
|
||||||
|
| SL | 2.0 × ATR | 3.0 × ATR | 更宽止损,减少噪声出局 |
|
||||||
|
| TP1 | 1.5 × ATR | 2.0 × ATR | 更远止盈,提高盈亏比 |
|
||||||
|
| TP2 | 3.0 × ATR | 4.5 × ATR | 大幅提升盈亏比目标 |
|
||||||
|
|
||||||
|
理论盈亏比从 0.72 提升到 0.84。
|
||||||
|
|
||||||
|
## 开仓规则
|
||||||
|
|
||||||
|
与 V5.1 相同:
|
||||||
|
- 阈值:75分(标准),85分(加仓)
|
||||||
|
- 冷却:10分钟
|
||||||
|
- 最大持仓:4笔
|
||||||
|
- 反向翻转:反向≥75分 → 平旧开新
|
||||||
|
|
||||||
|
## 策略配置
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "v52_8signals",
|
||||||
|
"version": "5.2",
|
||||||
|
"threshold": 75,
|
||||||
|
"weights": {
|
||||||
|
"direction": 40,
|
||||||
|
"crowding": 18,
|
||||||
|
"funding_rate": 5,
|
||||||
|
"environment": 12,
|
||||||
|
"confirmation": 15,
|
||||||
|
"liquidation": 5,
|
||||||
|
"auxiliary": 5
|
||||||
|
},
|
||||||
|
"accel_bonus": 0,
|
||||||
|
"tp_sl": {
|
||||||
|
"sl_multiplier": 3.0,
|
||||||
|
"tp1_multiplier": 2.0,
|
||||||
|
"tp2_multiplier": 4.5
|
||||||
|
},
|
||||||
|
"signals": ["cvd", "p99", "accel", "ls_ratio", "oi", "coinbase_premium", "funding_rate", "liquidation"]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## AB测试观测清单(2026-03-02 ~ 03-16)
|
||||||
|
|
||||||
|
### 冻结期规则
|
||||||
|
- 不改权重、不改阈值、不改评分逻辑
|
||||||
|
- 单写入源(小周生产环境)
|
||||||
|
- 目标:V5.1 500+笔,V5.2 200+笔
|
||||||
|
|
||||||
|
### 两周后评审项
|
||||||
|
1. **确认层重复计分审计** — 方向层和确认层同源,看区分度
|
||||||
|
2. **拥挤层 vs FR相关性** — `corr(FR_score, crowd_score)`,>0.7则降一层
|
||||||
|
3. **OI持续性审计** — `oi_persist_n=1` vs `>=2` 胜率差异
|
||||||
|
4. **清算触发率审计** — 按币种,避免触发不均衡
|
||||||
|
5. **config_hash落库** — 权重调整前补版本标识
|
||||||
|
|
||||||
|
### 权重优化路径
|
||||||
|
- 200+笔 → 统计分析(各层分布+胜率关联)
|
||||||
|
- 500+笔 → 回归分析(哪些层对盈亏贡献最大)
|
||||||
|
- 1000+笔 → ML(XGBoost等)
|
||||||
|
|
||||||
|
## 已知问题
|
||||||
|
|
||||||
|
1. **方向层与确认层同源重复** — 等数据验证
|
||||||
|
2. **清算样本少** — 才积累2天,ratio波动大
|
||||||
|
3. **币种间FR基准差异大** — BTC max=0.0046% vs SOL=0.022%,线性映射已自动处理
|
||||||
Loading…
Reference in New Issue
Block a user