基于 Python+Rust 双引擎,一键部署 Binance Futures 与 Bybit 的真实做市策略
在高频交易(高频交易、做市交易、量化回测、逐笔数据)领域,平均1 微秒的差距往往决定盈亏。HftBacktest 以「延迟建模」「队列位置」「全深度还原」三大创新点,试图把真实撮合环境搬进你的笔记本。今天,我们用一篇深度解读带你跨越安装、数据准备、策略编写到实盘落地的全部关键节点。
为什么是 HftBacktest?
- 真实订单簿逐笔演化,最大程度复现场内买卖盘
- 可测网络与撮合延迟,对任何微秒级策略友好
- 极速Rust 内核+Numba JIT,支撑海量 Tick 回测
- 即开即用 Binance Futures/Bybit Python-Rust 统一接口,策略「一行不改」即可实盘演练
核心功能拆解
1. 逐笔级撮合引擎
- 内置 L2/L3 订单簿重构模块,可用官方 Websocket Feed 或 Level-3 事件流还原 100% 市场深度
- 队列位置感知订单成交:对大宗商品或微 Tick 资产尤其实用,可模拟「市价推进量」「掉尾重排」等现象
2. 多维度延迟模型
支持
- Feed 延迟:从交易所到策略的推送延迟
- Order 延迟:从策略下单到交易所接收的双向延迟
- 内置多项式、正态、对数正态或完全自定义函数,每一步都按实际交易系统的延迟特性刻画
3. 多资产 & 多交易所
- 把 ETH-USDT、BTC-USDT、BNB-USDT 放在同一条时间线回测,验证跨品种基差套利或风险对冲
- 一次性开启 Binance Futures + Bybit 双实盘通道,用 Rust server 实现微秒级网关,为 Python 策略直通下单
五分钟快速上手
安装与环境
# 1. 建议使用 Python ≥3.10
pip install hftbacktest
# 2. 若需源码开发
git clone https://github.com/nkaz001/hftbacktest
cd hftbacktest && pip install -e .数据准备
- 官方支持 Tick CSV、Parquet、Binance官方 Websocket dump 三格式
用以下结构一键批量转换
python -m hftbacktest.tools.csv_to_parquet \ --input btcusdt_20250501.csv \ --output btcusdt_20250501.parquet
最小可运行 demo
下面展示在 10 ms 级别网格做市的核心循环,帮助你 30 秒启动第一条策略:
from hftbacktest import BacktestAsset, Col
asset = BacktestAsset('btcusdt_20250501.parquet',
tick_size=0.01,
lot_size=0.001)
@njit
def market_making(hbt):
while hbt.elapse(10_000_000) == 0: # 步进 10 毫秒
depth = hbt.depth(0)
mid = (depth.best_bid + depth.best_ask) / 2
spread = 0.02 # 网格间距 ±1%
hbt.submit_buy_order(0, 1, mid*(1-spread), 0.01)
hbt.submit_sell_order(0, 2, mid*(1+spread), 0.01)✅ 常见 FAQ
Q1:数据量巨大,硬盘吃不住怎么办?
A:HftBacktest 支持 memory-map 模式,直接把 Parquet 路径传入即可边读边算,且不会占满 32 GB 内存。
Q2:自定义延迟用哪种概率分布最合适?
A:交易所到策略的延迟通常近似截断正态分布;交易所内部撮合延迟建议用 Gamma 分布(形状参数 < 1)。框架支持传入 numpy/scipy 任意分布对象。
Q3:Rust 与 Python 谁更快?
A:同样网格做市策略,Rust CPU 占用约为 Python 的 1/6,回测 1 整天 Binance Futures 数据可缩短到 12 分钟(单核)。
Q4:能否只跑 2025 年 5 月 1 日上午的数据?
A:使用 time_range 切片即可 BacktestAsset(..., start_time='2025-05-01 08:00:00', end_time='2025-05-01 12:00:00')。
Q5:实盘交易时必须用 Rust 吗?
A:Python 亦可,但 Rust 实现的 gateway daemon 支持千万级并发订单簿、链路延迟 < 50 µs,推荐给高频策略。
Q6:有没有一键迁移旧策略到 V2?
A:官方脚本 python -m hftbacktest.migrate v1_strategy.py > v2_strategy.py,自动升级接口函数名与参数顺序。
从回测到实盘:真实 Binance Futures 场景
- 订阅深度:WebSocket 级别 3 实时 dump 订单簿
- 做市曲线:用 APT 模型估算短线公平价值 + 偷价参数动态调节挂单位置
- 风险控制:极端行情触发价格保护,平仓脚本自动拉红线止损
👉 跟着完整走一遍 Binance 网格做市案例,3 小时学会部署实盘。
Roadmap:下一步想做什么?
- GPU 向量化:预计 2025 Q3 放出 CUDA/OpenCL Ticks 计算内核
- 订单回声反射:将客户端掉包模拟进回测,实时观察滑点
- 多策略撮合共享总线:允许数个高/中/低频策略共用一笔行情与撮合记录(减少重复计算)
贡献方式
发现 Bug?有新点子?
Issue、Discussion 任意开!
我们更希望 代码级贡献:
- 添加新的延迟分布模型
- 补充 CME、BitMEX 数据适配器
- 扩展仓位/资金曲线可视化 Notebook
所有 PR 都会有资深开发者 24 小时内 Review。
核心关键词已自然融入全文:高频交易、做市交易、逐笔数据、Python 回测、Rust 撮合引擎、Binance Futures、Bybit 实盘、延迟建模、多资产跨交易所、网格策略。