11 KiB
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. 目标链路
统一交易宇宙
-> 策略 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_coderecommendation.strategy_signal_idrecommendation.strategy_snapshot_jsonrecommendation.factor_roles_jsonpaper_trades.strategy_codepaper_trades.strategy_signal_idpaper_trades.strategy_snapshot_jsonpaper_orders.strategy_codepaper_orders.strategy_signal_id
当前已有 strategy_version,后续它表示策略版本,不再替代策略身份。
5.2 第二阶段:新增策略信号表
新增 strategy_signals,作为策略输出的标准事实表:
idrun_idstrategy_codestrategy_versionsymboldirectionsignal_statusconfidencemarket_regimetrigger_jsonfactor_roles_jsonentry_plan_jsonrisk_plan_jsondecision_log_jsoncreated_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,积累样本后再考虑真实同步。