# 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,积累样本后再考虑真实同步。