263 lines
11 KiB
Markdown
263 lines
11 KiB
Markdown
# AlphaX 多策略改造计划
|
||
|
||
本文档定义 AlphaX 从“单一综合评分链路”升级为“多策略并行研究与交易验证平台”的改造计划。
|
||
|
||
核心原则:**因子不等于策略**。因子只能作为证据、条件或风控输入;策略必须是一套完整的交易剧本,包含适用环境、触发、确认、入场、退出、失效、仓位和复盘口径。
|
||
|
||
## 1. 为什么要改
|
||
|
||
当前系统已经有 `strategy_version`、`FactorScorer`、`factor_score_breakdown` 和 paper trading 归因,但综合确认策略仍更像一个“大而全评分器”:
|
||
|
||
- 很多因子在同一个确认函数里叠加,容易把单根行情重复加分。
|
||
- 推荐和 paper trading 更容易知道“综合分高不高”,但不容易知道“到底是哪套策略赚了钱”。
|
||
- 复盘能看到因子胜率,但很难独立评估一个完整交易模型的胜率、回撤、盈亏比和适用行情。
|
||
- 新增强形态时容易误把一个因子升级为策略,例如 `box_breakout_pullback_4h`。
|
||
|
||
改造目标是让系统支持多个独立策略同时运行,并让每个策略从发现到交易账本都有独立记录和评价体系。
|
||
|
||
## 0. 架构红线
|
||
|
||
这是基础设施重构,不是简单加几个字段。后续实现必须遵守:
|
||
|
||
- `strategy_code` 表示策略身份,`strategy_version` 表示版本,两者不能混用。
|
||
- 策略输出必须走统一契约,不能每个策略自定义一套不可比的 JSON。
|
||
- 推荐、挂单、持仓、事件日志、复盘都必须保留策略血缘。
|
||
- 因子角色必须显式声明,未知因子不能默认成为交易触发。
|
||
- 历史综合确认策略可以兼容为 `main_composite_v1`,但它与其他策略平等运行;新数据不允许没有策略来源。
|
||
- 策略中文名、描述、启用状态要集中维护,不能散落在页面和业务代码里。
|
||
- 多策略架构上线后,收益评价必须按策略拆分;总收益只能作为账户层结果,不能替代策略评价。
|
||
|
||
## 2. 基本概念
|
||
|
||
### 2.1 因子角色
|
||
|
||
每个因子必须先归类,不允许默认都作为策略核心触发。
|
||
|
||
- `prerequisite`:先决条件。决定能不能看,例如交易量、交易宇宙、市场环境、是否异常币。不能单独产生交易信号。
|
||
- `trigger`:触发条件。让策略产生候选,例如箱体突破回踩、1H 量价齐飞、短周期启动。
|
||
- `confirmation`:确认条件。提高交易可信度,例如板块共振、舆情共振、大户偏多、1H 未衰竭。
|
||
- `entry`:入场条件。决定现在能不能买,例如 15m 承接、离箱体上沿距离、盈亏比。
|
||
- `risk`:风控条件。一票否决或降级,例如 risk_off、假突破、止损过宽、账户回撤过大。
|
||
- `attribution`:归因条件。用于复盘解释,不一定参与实时决策。
|
||
|
||
### 2.2 策略成立标准
|
||
|
||
一个策略至少要定义:
|
||
|
||
- `strategy_code`:稳定代码,例如 `long_box_retest_4h_v1`。
|
||
- `strategy_version`:版本,例如 `v2026.05.26-r1`。
|
||
- `market_regime`:适用市场环境。
|
||
- `universe_filter`:交易宇宙要求。
|
||
- `prerequisites`:先决条件。
|
||
- `trigger_model`:核心触发模型。
|
||
- `confirmation_model`:辅助确认模型。
|
||
- `entry_model`:入场模型。
|
||
- `exit_model`:止盈、止损、移动止盈、失效退出。
|
||
- `risk_model`:仓位、杠杆、账户级约束。
|
||
- `review_metrics`:胜率、收益率、最大回撤、盈亏比、持仓时长、机会转化率。
|
||
|
||
如果只有一个强因子,没有完整入场/退出/风控/复盘口径,只能叫“策略候选”或“因子”,不能叫正式策略。
|
||
|
||
## 3. 目标链路
|
||
|
||
```text
|
||
统一交易宇宙
|
||
-> 策略 A 独立扫描
|
||
-> 策略 B 独立扫描
|
||
-> 策略 C 独立扫描
|
||
-> 信号标准化
|
||
-> 冲突与重复仲裁
|
||
-> 推荐/观察/挂单
|
||
-> paper trading 保留策略血缘
|
||
-> 按策略独立复盘
|
||
-> 策略灰度/发布/淘汰
|
||
```
|
||
|
||
统一交易宇宙只负责把明显不适合交易的币剔除,例如稳定币、封装币、inactive 交易对、异常交易对和长期流动性不合格的币。它不是策略,也不直接产生交易动作。
|
||
|
||
## 4. 初始策略池建议
|
||
|
||
### 4.1 `long_box_retest_4h_v1`
|
||
|
||
定位:底部箱体突破后,第一次或第二次回踩箱体上沿/EMA 承接。
|
||
|
||
- 先决条件:非 risk_off,交易量合格,非异常交易对,箱体宽度合理。
|
||
- 核心触发:`box_breakout_pullback_4h`。
|
||
- 确认条件:1H 不衰竭,15m 有承接,板块或市场环境不拖后腿。
|
||
- 入场条件:当前价不能离箱体上沿太远,盈亏比合格。
|
||
- 失效条件:跌回箱体、放量冲高回落、突破后过久才回踩。
|
||
- 复盘口径:回踩入场后的 24h/72h 收益、最大回撤、止损触发率。
|
||
|
||
注意:`box_breakout_pullback_4h` 是该策略的核心触发因子,但不等于策略本身。
|
||
|
||
### 4.2 `long_intraday_momentum_15m_1h_v1`
|
||
|
||
定位:1H 量价齐飞后的加速机会。
|
||
|
||
- 核心触发:`vp_fly_1h_current`。
|
||
- 风险重点:追高、假突破、短线衰竭。
|
||
- 入场要求:必须有 15m 承接或回踩,不允许单纯因为放量就直接买。
|
||
|
||
### 4.3 `long_compression_breakout_1h_4h_v1`
|
||
|
||
定位:1H/4H 低波动压缩后放量突破,捕捉启动前后第一段。
|
||
|
||
- 核心触发:`compression_breakout_1h_4h`。
|
||
- 入场要求:必须有 15m 当前触发或回踩确认。
|
||
- 风险重点:假突破、放量冲高回落、RR不足。
|
||
|
||
### 4.4 `long_second_wave_pullback_1h_v1`
|
||
|
||
定位:强势榜币种第一波后,回踩承接走二波。
|
||
|
||
- 先决条件:不是纯追涨,涨幅后必须有回踩和承接。
|
||
- 核心触发:强势榜 + 回踩结构。
|
||
- 风险重点:高位回落、流动性退潮、meme 过热。
|
||
|
||
### 4.5 `short_breakdown_retest_1h_v1`
|
||
|
||
定位:1H 支撑/箱体下沿破位后反抽失败。
|
||
|
||
- 核心触发:`breakdown_retest_1h_short`。
|
||
- 入场要求:反抽失败确认、离反抽区不能太远。
|
||
- 风险重点:重新站回破位区、BTC/ETH 快速转强。
|
||
|
||
### 4.6 `short_weak_bounce_failure_15m_1h_v1`
|
||
|
||
定位:弱势环境下 15m/1H 反弹无量,反抽均线或前支撑后再次转弱。
|
||
|
||
- 核心触发:`weak_bounce_failure_15m_1h_short`。
|
||
- 确认条件:risk_off/high/critical 环境或相对弱势。
|
||
- 风险重点:反弹转强、空头拥挤、RR不足。
|
||
|
||
## 5. 数据模型改造
|
||
|
||
### 5.1 第一阶段:兼容式加字段
|
||
|
||
优先在现有表增加策略血缘字段,避免一次性重构过大。
|
||
|
||
- `recommendation.strategy_code`
|
||
- `recommendation.strategy_signal_id`
|
||
- `recommendation.strategy_snapshot_json`
|
||
- `recommendation.factor_roles_json`
|
||
- `paper_trades.strategy_code`
|
||
- `paper_trades.strategy_signal_id`
|
||
- `paper_trades.strategy_snapshot_json`
|
||
- `paper_orders.strategy_code`
|
||
- `paper_orders.strategy_signal_id`
|
||
|
||
当前已有 `strategy_version`,后续它表示策略版本,不再替代策略身份。
|
||
|
||
### 5.2 第二阶段:新增策略信号表
|
||
|
||
新增 `strategy_signals`,作为策略输出的标准事实表:
|
||
|
||
- `id`
|
||
- `run_id`
|
||
- `strategy_code`
|
||
- `strategy_version`
|
||
- `symbol`
|
||
- `direction`
|
||
- `signal_status`
|
||
- `confidence`
|
||
- `market_regime`
|
||
- `trigger_json`
|
||
- `factor_roles_json`
|
||
- `entry_plan_json`
|
||
- `risk_plan_json`
|
||
- `decision_log_json`
|
||
- `created_at`
|
||
|
||
推荐、挂单、持仓都引用 `strategy_signal_id`,形成完整链路。
|
||
|
||
### 5.3 第三阶段:策略运行与评价表
|
||
|
||
新增:
|
||
|
||
- `strategy_catalog`:策略注册、启用状态、适用市场、版本。
|
||
- `strategy_run_log`:每次策略扫描的运行结果。
|
||
- `strategy_performance_daily`:按日聚合策略表现。
|
||
|
||
## 6. 执行模块改造
|
||
|
||
### P0:先做策略规范和血缘记录
|
||
|
||
目标:不大改链路,先保证每个推荐和 paper trading 记录知道“来自哪套策略”。
|
||
|
||
- 建立 `app/core/strategy_contract.py`,定义策略输出结构。
|
||
- 建立 `app/core/factor_roles.py`,统一因子角色分类。
|
||
- 给 `recommendation` / `paper_trades` / `paper_orders` 补 `strategy_code` 和 `strategy_signal_id`。
|
||
- 在确认层先把现有综合确认策略标为 `main_composite_v1`。
|
||
- 把 `box_breakout_pullback_4h` 标记为 `long_box_retest_4h_v1` 的核心触发候选,但仍通过完整策略条件判断。
|
||
|
||
### P1:拆出第一个独立策略
|
||
|
||
目标:让 `long_box_retest_4h_v1` 独立运行,与其他策略平等并行。
|
||
|
||
- 新增 `app/strategies/box_retest_4h.py`。
|
||
- 让它消费统一交易宇宙和 4H K线。
|
||
- 输出标准 `strategy_signal`。
|
||
- 推荐层只消费标准信号,不关心策略内部细节。
|
||
- paper trading 保留 `strategy_code`。
|
||
- 复盘页按策略展示表现。
|
||
|
||
### P2:多策略编排与仲裁
|
||
|
||
目标:多个策略同时运行,但同一币种不要重复乱开仓。
|
||
|
||
- 新增 `strategy_orchestrator`。
|
||
- 支持启用/禁用策略。
|
||
- 支持同币种冲突仲裁:同方向合并、不同方向拒绝或降级。
|
||
- 支持策略优先级和市场环境开关。
|
||
- 同一币种同一方向进入 paper trading 前必须检查账户集中度和累计杠杆。
|
||
|
||
### P3:策略独立复盘与发布机制
|
||
|
||
目标:策略按独立样本晋级/淘汰,不再只看总评分。
|
||
|
||
- 每个策略独立统计:候选数、推荐数、成交数、胜率、平均收益、最大回撤、盈亏比、平均持仓时长。
|
||
- 每个策略按 market regime 拆分表现。
|
||
- 策略改动先进入灰度版本,不直接覆盖主版本。
|
||
- 连续低表现策略自动降级为 observe-only 或暂停。
|
||
|
||
## 7. 页面改造计划
|
||
|
||
### 策略交易页
|
||
|
||
- 持仓、挂单、已完成、日志增加 `策略` 列。
|
||
- 策略筛选器:全部 / 箱体突破回踩 / 量价加速 / 短周期观察 / 舆情确认。
|
||
- 交易详情展示当时的 `strategy_snapshot`。
|
||
|
||
### 机会总览页
|
||
|
||
- 列表只显示核心结论。
|
||
- 详情页展示策略来源、触发因子、确认因子、入场因子、风险因子。
|
||
|
||
### 复盘中心
|
||
|
||
- 增加“按策略”视图。
|
||
- 每个策略显示:样本数、转化率、胜率、收益、最大回撤、适用行情。
|
||
- 因子归因仍保留,但作为策略内部解释,不再替代策略评价。
|
||
|
||
## 8. 验收标准
|
||
|
||
第一阶段完成后,至少满足:
|
||
|
||
- 任意一条 recommendation 能看到 `strategy_code`。
|
||
- 任意一笔 paper trade 能看到 `strategy_code`。
|
||
- 任意一笔 paper order 能看到 `strategy_code`。
|
||
- 任意一个策略信号能追溯到 `strategy_signals` 或标准 `StrategySignal` 快照。
|
||
- 复盘能按 `strategy_code` 聚合收益和胜率。
|
||
- `box_breakout_pullback_4h` 不会被文档或代码误称为完整策略。
|
||
- 新增策略必须通过策略成立标准检查。
|
||
- 新数据不得出现空 `strategy_code`。
|
||
|
||
## 9. 开发纪律
|
||
|
||
- 不能因为一个因子表现好,就直接让它下单。
|
||
- 不能把先决条件当作策略触发。
|
||
- 不能把归因因子当作实时交易条件。
|
||
- 不能让 paper trading 丢失策略来源。
|
||
- 不能只看总收益,必须按策略看收益和回撤。
|
||
- 新策略必须先 observe-only 或 paper-only,积累样本后再考虑真实同步。
|