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:
dev-worker 2026-03-03 05:32:44 +00:00
parent c8c2d801a2
commit ffd7bed387
5 changed files with 1183 additions and 0 deletions

View 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 权重分配
| 层级 | 数据源 | 权重 | 角色 |
|------|--------|------|------|
| **方向层** | aggTradesCVD三轨 + P95/P99大单 | **45%** | 核心方向判断 |
| **拥挤层** | L/S Ratio + Top Trader Position | **20%** | 市场拥挤度 |
| **环境层** | Open Interest 变化 | **15%** | 资金活跃度/可交易性门槛 |
| **确认层** | 多时间框架一致性 | **15%** | 方向确认 |
| **辅助层** | Coinbase Premium | **5%** | 机构资金流向 |
### 2.2 各层级详细计算
#### 方向层45分
- **CVD_fast30m滚动方向**:与信号方向一致 +15
- **CVD_mid4h滚动方向**:与信号方向一致 +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_5m5分钟K线14周期 → 管入场灵敏度
- ATR_1h1小时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 免费 APIV5.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 | 待范总最终确认*

View 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%(最佳档位)

View 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 Bughotfix已上线
| 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 | 全部写好测好,一次性部署 | 减少重启 |
---
## 十一、数据需求
### 当前数据量
- aggTrades7039万条BTC 23天 + ETH 3天 + XRP/SOL 3天
- signal_indicators2.7万+条
- paper_trades181笔
- market_indicators5400+条
- liquidations3600+条
### 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开发的完整参考,开发过程中持续更新。*
*商业机密:策略细节不对外暴露。*

View 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-ArenaGitHub开源— 相似度85%
- **地址**https://github.com/HammerGPT/Hyper-Alpha-Arena
- **核心**监控Order Flow + OI变化 + Funding Rate极端值触发自动交易
- 支持币安合约+Hyperliquid用LLMGPT-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/月起 | 鲸鱼行为 |

View 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_score0~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+笔 → MLXGBoost等
## 已知问题
1. **方向层与确认层同源重复** — 等数据验证
2. **清算样本少** — 才积累2天ratio波动大
3. **币种间FR基准差异大** — BTC max=0.0046% vs SOL=0.022%,线性映射已自动处理