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,优先
15m或1h - 资金范围:仅允许 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 是否为:
candidateapproved-paperapproved-livepausedretiredrejected
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.md2C. 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.md3.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_pctmax_daily_loss_pctmax_symbol_exposure_pctstop_loss_pctcooldown_after_loss_barsmax_slippage_bpsstale_data_timeout_sec
3.7 metrics.json
建议包含:
total_returnmax_drawdownsharpesortinoprofit_factorwin_rateavg_tradeturnoveroos_returnwalk_forward_scorestability_score
3.8 report.md
必须给审批人看,结构建议:
- 策略简介
- 数据范围
- 回测结果
- OOS 结果
- Walk-forward 结果
- 参数稳定性
- 风险点
- 是否建议进入 paper
4. Registry 设计
4.1 strategy-meta.yaml
描述整个策略家族:
strategy_idownerdescriptiondefault_marketdefault_symbolslifecycle_statecurrent_paper_versioncurrent_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: 104.3 release-history.md
记录:
- 日期
- 版本
- 状态变化
- 变更原因
- 回滚原因
5. 生命周期状态机定义
5.1 一期状态
candidateapproved-paperpaper-runningapproved-livelive-limitedpausedretiredrejected
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 运行状态
normaldegradedrisk-lockdownmanual-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 就不是一张架构图,而是一条真正能开工、能验证、能逐步上实盘的专业路线。