第一章:仿真环境搭建——回测引擎选型、历史数据准备、模拟撮合引擎配置、延迟模拟器部署
做高频做市,最怕什么?
怕策略在仿真里跑得风生水起,一上实盘就亏得亲妈都不认识。
我见过太多团队,仿真环境搭得跟闹着玩似的,结果实盘上线第一天就被市场教育了。说白了,仿真环境就是你的「练兵场」,练不好兵,上战场就是送人头。
这一章,咱们就聊聊怎么把这个练兵场搭扎实。
1.1 回测引擎选型:别选最火的,选最合适的
回测引擎这东西,市面上少说几十种。我个人习惯,先看三个硬指标:
- 速度:高频做市,一秒可能上千笔订单。引擎跑得慢,回测结果就是废纸。
- 灵活性:能不能自定义撮合逻辑?能不能模拟订单簿?这些很关键。
- 数据接口:能不能直接吃你的历史数据格式?别到时候还要花两周写数据转换脚本。
我推荐几个常用的,你们自己掂量:
| 引擎 | 语言 | 适合场景 | 我的评价 |
|---|---|---|---|
| Backtrader | Python | 中低频、策略验证 | 入门友好,但高频场景有点吃力 |
| QuantConnect (LEAN) | C#/Python | 多资产、云回测 | 功能全,但延迟模拟不够细 |
| 自研引擎 | C++/Rust | 高频做市、低延迟 | 我最终的选择,后面细说 |
| 回测框架 + 自研撮合 | Python/C++ | 折中方案 | 适合团队过渡期 |
嗯,这里要注意。别一上来就搞自研引擎,那玩意儿费时费力。我建议先用Backtrader跑通逻辑,再逐步替换核心模块。
1.2 历史数据准备:垃圾进,垃圾出
这句话我说了十年了,但每次带新人,还是有人在这上面栽跟头。
高频做市的数据,不是随便找个CSV就能用的。你需要的是 Level 2 数据,也就是逐笔成交 + 订单簿快照。光有1分钟K线?那玩意儿做不了高频。
数据准备我分三步走:
- 数据源选择:交易所直连数据 > 第三方数据商 > 免费数据。别省那点钱,免费数据里一个时间戳错误,能让你策略亏掉几万块。
- 数据清洗:去重、补缺失、校正时间戳。我曾经遇到过某数据商把14:30:01.001 和 14:30:01.002 的顺序搞反了,整整三天没找到原因。
- 数据切片:高频做市不需要十年数据。我一般取最近3-6个月,重点看波动大的时段。比如开盘、收盘、重大新闻发布前后。
1.3 模拟撮合引擎配置:核心中的核心
回测引擎是骨架,撮合引擎才是心脏。
高频做市的撮合,跟传统回测完全不一样。你不能简单地说「价格到了就成交」,那太天真了。真实市场里,有排队、有滑点、有部分成交、有撤单重发。
我常用的模拟撮合引擎配置,核心参数如下:
# 模拟撮合引擎配置示例
class MatchingEngineConfig:
def __init__(self):
# 订单簿深度:模拟10档行情
self.order_book_depth = 10
# 撮合频率:模拟纳秒级撮合
self.matching_interval_ns = 100 # 100纳秒
# 滑点模型:基于订单簿流动性
self.slippage_model = 'order_book_based'
# 部分成交概率:基于历史统计
self.partial_fill_prob = 0.15 # 15%的概率部分成交
# 撤单延迟:模拟网络延迟
self.cancel_delay_ms = 0.5 # 0.5毫秒
你想想看,如果撮合引擎里没有「部分成交」这个参数,你的策略在仿真里可能每笔都全仓成交,但实盘里可能只成交了30%。那策略表现能一样吗?
我个人习惯,先用默认参数跑一遍,然后根据实盘数据反推参数。比如,拿一周的实盘订单簿数据,统计出真实的「部分成交概率」和「滑点分布」,再把这些值塞进撮合引擎里。
1.4 延迟模拟器部署:别让你的策略「太聪明」
这是最容易忽略的一环。
很多人在仿真环境里跑策略,觉得「哇,年化500%」,结果一上实盘就崩了。为什么?因为仿真环境里没有延迟!你的策略在仿真里能瞬间看到行情、瞬间下单、瞬间成交,但实盘里,从行情到达到你看到,再到你下单、交易所收到,每一步都有延迟。
延迟模拟器,就是给你的策略「戴上镣铐」。
我部署延迟模拟器的标准做法:
- 网络延迟:模拟从你的服务器到交易所机房的物理距离。比如你在上海,交易所机房在深圳,那单程延迟大约15-20毫秒。
- 处理延迟:模拟策略计算、订单编码、系统调度的耗时。这个一般0.1-1毫秒。
- 撮合延迟:模拟交易所撮合引擎的处理时间。这个在纳秒级,但排队时间可能很长。
- 随机抖动:真实网络延迟不是固定的,是有波动的。加一个±30%的随机抖动,更真实。
我曾经带过一个团队,他们的策略在仿真里表现完美,但实盘上线第一天就亏了2%。后来一查,发现仿真环境里延迟设成了0。说白了,策略在「作弊」,它以为自己能预知未来。
知识体系总览
下面这张图,是我自己梳理的仿真环境搭建核心逻辑。你可以把它当成一张「地图」,每次搭建环境时对照着检查一遍。
好了,这一章的内容就到这儿。仿真环境搭建是个细活,急不得。把上面四个模块都扎扎实实搞定了,你的策略才有资格上实盘去闯一闯。
公众号:蓝海资料掘金营,微信deep3321