alphax/docs/MULTI_STRATEGY_ARCHITECTURE.md
2026-06-07 20:29:45 +08:00

11 KiB
Raw Blame History

AlphaX 多策略改造计划

本文档定义 AlphaX 从“单一综合评分链路”升级为“多策略并行研究与交易验证平台”的改造计划。

核心原则:因子不等于策略。因子只能作为证据、条件或风控输入;策略必须是一套完整的交易剧本,包含适用环境、触发、确认、入场、退出、失效、仓位和复盘口径。

1. 为什么要改

当前系统已经有 strategy_versionFactorScorerfactor_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. 目标链路

统一交易宇宙
  -> 策略 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_ordersstrategy_codestrategy_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积累样本后再考虑真实同步。