Binance 量化系统方案 B|一期 MVP 详细设计说明书(正式版)

0. 文档目标

这份文档用于把“方案 B(专业版)”从总体蓝图收成可直接开工的一期设计稿。一期目标不是追求复杂,而是先建立一个完整闭环:

  • 学校服务器负责研究、回测、优化、候选策略产出
  • 治理层负责策略版本、审批、状态流转、发布与回滚
  • 本地电脑负责 paper / testnet smoke / limited live 执行

成功标准不是“先赚钱”,而是:

  • 研究可复现
  • artifact 可发布
  • registry 可追踪
  • 风控可生效
  • paper 可运行
  • limited live 可安全开始

1. 一期 MVP 正式边界

1.1 一期目标

建立一个最小但完整的量化生产闭环:

学校服务器完成研究与 candidate artifact 产出 → 治理层完成审批与版本管理 → 本地电脑完成 paper / smoke / limited-live 执行。

1.2 一期交易范围

  • 市场:Binance Spot
  • 标的:BTCUSDT、ETHUSDT
  • 策略数:1 个主策略家族
  • 时间周期:固定 1 类 timeframe,优先 15m1h
  • 资金范围:仅允许 paper、testnet smoke、limited live(极小资金)

1.3 一期明确不做

  • Futures 作为主战场
  • 杠杆与借贷
  • 多交易所
  • 高频策略
  • 多策略组合优化
  • 深度学习主导策略
  • 自动热更新生产参数
  • 自动晋升 live-full
  • 重型可视化后台

2. 三层系统的一期模块设计

2A. Research Plane(学校服务器)

目标

只负责从历史数据到 candidate artifact 的研究闭环,不碰真钱。

一期必做模块

1)Market Data Ingestor

  • 拉 Binance Spot 历史 K 线
  • 按 symbol / timeframe 存盘
  • 保存抓取时间与来源
  • 一期只抓 BTCUSDT / ETHUSDT + 固定 timeframe

2)Dataset Builder

  • 把原始数据整理成回测可用数据集
  • 做时间对齐、缺失标记、异常点处理
  • 输出 dataset_id

3)Strategy Core

  • 定义一期主策略逻辑
  • 输入历史数据,输出交易信号
  • 必须可解释、规则明确,不依赖复杂黑盒模型

4)Backtest Engine

  • 历史回测
  • 纳入手续费、滑点近似、tick/step 精度、最小 notional 限制

5)Optimizer

  • 做有限参数搜索
  • 目标是找稳定区,不是单点最优

6)Validator

  • OOS
  • Walk-forward
  • 参数稳定性检查
  • 输出是否建议进入 candidate

7)Artifact Builder

  • 生成 candidate artifact
  • 写 manifest / metrics / report

建议目录

quant-research/
  data/
    raw/
    curated/
  datasets/
  strategies/
    trend_breakout/
      strategy.py
      params_schema.yaml
      README.md
  backtests/
  optimization/
  validation/
  artifacts/
  reports/
  notebooks/
  tests/

2B. Governance Plane(治理层)

目标

只负责“管理版本和发布状态”,不负责研究、不负责下单。

一期必做模块

1)Strategy Registry

  • 保存策略 artifact
  • 记录状态
  • 记录当前可 paper/live 的版本

2)Approval Manifest

  • 明确某个 artifact 是否为:
    • candidate
    • approved-paper
    • approved-live
    • paused
    • retired
    • rejected

3)Risk Budget Config

  • 每个策略版本配置:
    • 最大风险预算
    • 最大单日亏损
    • 最大 symbol 暴露
    • live-limited 资金上限

4)Release History

  • 记录批准时间、版本、变更原因、回滚原因
  • 一期你自己就是审批人,但制度必须存在

建议目录

strategy-registry/
  strategies/
    trend_breakout_btc_eth/
      strategy-meta.yaml
      risk-budget.yaml
      release-history.md
      versions/
        0.1.0/
          manifest.json
          strategy_spec.yaml
          params.yaml
          risk_limits.yaml
          metrics.json
          report.md

2C. Execution Plane(本地电脑)

目标

只运行经过批准的策略版本,并严格执行风控。

一期必做模块

1)Artifact Loader

  • 拉取 / 读取治理层已批准版本
  • 校验 hash、版本、状态
  • 拒绝未批准版本运行

2)Market Stream

  • 接实时行情
  • 管理 websocket
  • 自动重连
  • 检测 stale 数据

3)Signal Runtime

  • 调用已批准策略核心
  • 生成候选信号

4)Risk Control Plane

  • 检查是否允许交易
  • 检查是否超预算
  • 检查是否命中停机条件
  • 检查订单是否符合 Binance filters

5)Execution Router

  • 将通过风控的交易意图转成订单计划
  • 决定下单/撤单/重试逻辑

6)Broker Adapter

  • 与 Binance Spot API 通信
  • 下单、查单、撤单
  • 同步余额、订单、持仓

7)State Store

建议一期使用 SQLite,保存:

  • 当前持仓
  • 未完成订单
  • 最近 fills
  • 当前 live 版本
  • 风控状态
  • kill-switch 状态

8)Alerting

  • Telegram 心跳
  • 订单失败提醒
  • 风控触发提醒
  • 数据流中断提醒
  • 日终简报

建议目录

quant-execution/
  configs/
  approved/
  runtime/
    artifact_loader.py
    market_stream.py
    signal_runtime.py
    risk_plane.py
    execution_router.py
    broker_adapter.py
  state/
  logs/
  alerts/
  reports/
  tests/

3. Artifact 设计

3.1 定义

artifact 不是一个策略脚本,而是:

某个策略版本在某个数据快照、某个代码版本、某套参数和风控约束下的可发布工件。

3.2 目录结构

versions/0.1.0/
  manifest.json
  strategy_spec.yaml
  params.yaml
  risk_limits.yaml
  metrics.json
  report.md

3.3 manifest.json 建议字段

{
  "strategy_id": "trend_breakout_btc_eth",
  "version": "0.1.0",
  "status": "candidate",
  "market": "binance_spot",
  "symbols": ["BTCUSDT", "ETHUSDT"],
  "timeframes": ["15m"],
  "code_commit": "abc123",
  "data_snapshot_id": "dataset-20260309-001",
  "artifact_hash": "sha256:...",
  "created_at": "2026-03-09T10:00:00Z",
  "validator_summary": {
    "oos_pass": true,
    "walk_forward_pass": true,
    "stability_pass": true,
    "cost_stress_pass": true
  },
  "approved_for": null
}

3.4 strategy_spec.yaml

包含:

  • 策略名称
  • 策略说明
  • 输入字段
  • 适用 symbol
  • 适用 timeframe
  • regime 适用条件
  • 信号语义说明

3.5 params.yaml

仅放参数:

  • breakout_window
  • trend_window
  • atr_stop_multiplier
  • cooldown_bars

3.6 risk_limits.yaml

包含:

  • max_position_pct
  • max_daily_loss_pct
  • max_symbol_exposure_pct
  • stop_loss_pct
  • cooldown_after_loss_bars
  • max_slippage_bps
  • stale_data_timeout_sec

3.7 metrics.json

建议包含:

  • total_return
  • max_drawdown
  • sharpe
  • sortino
  • profit_factor
  • win_rate
  • avg_trade
  • turnover
  • oos_return
  • walk_forward_score
  • stability_score

3.8 report.md

必须给审批人看,结构建议:

  1. 策略简介
  2. 数据范围
  3. 回测结果
  4. OOS 结果
  5. Walk-forward 结果
  6. 参数稳定性
  7. 风险点
  8. 是否建议进入 paper

4. Registry 设计

4.1 strategy-meta.yaml

描述整个策略家族:

  • strategy_id
  • owner
  • description
  • default_market
  • default_symbols
  • lifecycle_state
  • current_paper_version
  • current_live_version

4.2 risk-budget.yaml

治理层单独维护风险预算:

strategy_id: trend_breakout_btc_eth
paper:
  enabled: true
  max_notional_usdt: 0
live_limited:
  enabled: true
  max_notional_usdt: 200
  max_daily_loss_pct: 1.0
live_full:
  enabled: false
  max_notional_usdt: 0
symbol_limits:
  BTCUSDT:
    max_exposure_pct: 10
  ETHUSDT:
    max_exposure_pct: 10

4.3 release-history.md

记录:

  • 日期
  • 版本
  • 状态变化
  • 变更原因
  • 回滚原因

5. 生命周期状态机定义

5.1 一期状态

  • candidate
  • approved-paper
  • paper-running
  • approved-live
  • live-limited
  • paused
  • retired
  • rejected

5.2 状态流转规则

candidate -> approved-paper

  • 报告完整
  • validator 全部通过
  • 成本压力测试不过于脆弱

approved-paper -> paper-running

  • 本地部署 paper 配置完成
  • runtime 正常

paper-running -> approved-live

  • paper 观察期通过
  • 无重大执行偏差
  • 无重大风控问题

approved-live -> live-limited

  • 小资金预算已设置
  • kill-switch 可用
  • 告警通道可用

live-limited -> paused

  • 超过日亏损
  • 多次 API 异常
  • 数据 stale
  • 人工暂停

任意状态 retired

  • 策略失效或明确弃用

6. 风控规则表(一期正式版)

6.1 研究前置风控

  • OOS 必须存在
  • Walk-forward 必须存在
  • 参数稳定区检查必须做
  • 成本压力测试必须做
  • 多重检验校正强烈建议做

6.2 交易级风控

  • 单笔风险:总权益 0.25% ~ 0.5%
  • 止损:必须
  • 下单前本地 filter 校验:必须
  • 最大滑点阈值:必须
  • stale 数据时禁止开仓:必须

6.3 账户级风控

  • 最大同时持仓数:1~2
  • 单 symbol 最大暴露:严格限制
  • 单策略资金预算:小额
  • 单日最大亏损:触发即停机
  • 连续失败次数阈值:超阈值暂停

6.4 运行级风控

事件响应
websocket 断流进入 degraded
账户状态不同步禁止新开仓
exchange metadata 过期禁止新开仓
多次下单失败risk-lockdown
人工暂停manual-pause

6.5 运行状态

  • normal
  • degraded
  • risk-lockdown
  • manual-pause

7. 一期推荐策略接口

必须实现的方法

  • generate_signal(context)
  • regime_filter(context)
  • position_sizing_hint(context, risk_budget)
  • risk_constraints()

禁止策略直接做的事

  • 直接调用 Binance API
  • 直接写运行状态
  • 绕过风险控制面
  • 自行热更新参数

8. Binance 专项落地规则

8.1 Pre-trade sanitization

在 Execution Router 前必须有 OrderSanitizer

  • price rounding
  • quantity rounding
  • min/max notional 校验
  • symbol filter 校验

失败时:

  • 不发单
  • 记录 reject reason
  • 触发日志

8.2 Metadata refresh

必须支持:

  • 冷启动刷新
  • 周期刷新
  • 过期判定

一旦 metadata stale:

  • 禁止新开仓

8.3 WebSocket 与执行通道解耦

不要让 market stream 与 order execution 共用脆弱状态。

8.4 费用模型版本化

研究端和 live 端都必须知道当前 fee model 版本,并可对比 modeled cost 与 realized cost。


9. 开发优先级

P0:先搭治理骨架

  • artifact 格式
  • registry 目录
  • manifest 字段
  • 状态机
  • risk-budget 文件

P1:研究闭环

  • 数据
  • 回测
  • validator
  • candidate artifact 产出

P2:本地执行闭环

  • artifact loader
  • market stream
  • risk plane
  • broker adapter
  • state store
  • alerting

P3:paper

approved-paper 真正进入 paper-running

P4:testnet smoke

仅验证 API/session/order 生命周期

P5:limited live

极小资金,严格止损与停机


10. 一期实施顺序(建议)

第 1 周

  • 定 registry / artifact 结构
  • 定状态机
  • 定风险规则文件

第 2 周

  • 拉历史数据
  • 做 dataset builder
  • 写主策略 core

第 3 周

  • 做 backtest + metrics
  • 做 validator
  • 输出首个 candidate

第 4 周

  • 本地 execution skeleton
  • market stream
  • artifact loader
  • risk plane

第 5 周

  • broker adapter
  • state store
  • alerting
  • paper-run

第 6 周

  • testnet smoke
  • limited live 准备

11. 最终裁决

这份一期设计的核心思想不是“先让交易跑起来”,而是:

先让策略从研究到生产的路径可治理、可回滚、可风控。

一期最重要的不是更多花哨策略,而是:

  • 治理骨架
  • 研究闭环
  • 执行骨架
  • 风控先行

如果严格按这份设计推进,方案 B 就不是一张架构图,而是一条真正能开工、能验证、能逐步上实盘的专业路线。