回测框架概述:为什么我们需要它?

做市商策略写好了,怎么知道它能不能赚钱?

直接扔到实盘?那风险太大了。我见过太多人,策略回测没跑明白就上实盘,结果亏得底裤都不剩。

回测框架,说白了就是你的策略「时光机」。它用历史数据模拟交易,让你在真实资金入场前,先看清策略的底牌。

回测框架的核心作用

我个人习惯把回测框架的作用归纳为三点:

  • 验证策略有效性——你的做市策略到底能不能赚钱?回测给你第一个答案。
  • 发现潜在风险——比如极端行情下的滑点、流动性枯竭,回测能帮你提前暴露问题。
  • 优化参数配置——报价宽度、库存阈值、对冲频率,这些参数怎么调?回测告诉你答案。

核心观点:回测不是为了证明策略完美,而是为了在实盘前尽可能多地「排雷」。

我在项目中遇到过一件事:一个看起来年化收益80%的做市策略,回测时一切正常。但当我加入「订单簿快照延迟」这个现实因素后,收益直接腰斩。嗯,这就是回测的价值——它让你看到策略在真实世界里的样子。

回测框架的核心组件

一个完整的回测框架,至少包含以下五个组件。你想想看,少了哪一个,回测结果都可能失真。

1. 数据模块

这是回测的「燃料」。没有数据,一切都是空谈。

  • 行情数据:Tick级、秒级、分钟级,取决于你的策略频率
  • 订单簿数据:做市商必须要有完整的L2/L3订单簿快照
  • 交易数据:成交记录、挂单撤销记录

避坑指南:我曾经用分钟级K线回测一个高频做市策略,结果回测收益高得离谱。后来才发现,分钟级数据掩盖了订单簿的微观波动。做市商回测,至少要用Tick级数据。

2. 策略引擎

这是回测的「大脑」。它负责执行你的做市逻辑。

  • 报价生成逻辑(双边报价、动态价差)
  • 订单管理(挂单、撤单、重报)
  • 库存管理(目标库存、再平衡策略)

3. 模拟撮合引擎

这是回测的「心脏」。它模拟订单簿的撮合过程。

说白了,就是回答一个问题:你的报价单子,在什么价格、什么时间能成交?

# 一个简化的撮合逻辑示例
def match_order(order, orderbook):
    if order.side == 'buy':
        # 检查是否有卖单价格低于等于买单价格
        if orderbook.asks[0].price <= order.price:
            return True  # 成交
    else:
        if orderbook.bids[0].price >= order.price:
            return True  # 成交
    return False  # 未成交

4. 风控模块

做市商最怕什么?黑天鹅事件。风控模块就是你的「安全带」。

  • 最大持仓限制
  • 最大亏损限制
  • 报价偏离度检查
  • 异常行情熔断

警告:很多新手做回测时不加风控模块,觉得「策略本身就能控制风险」。我见过一个案例,策略在正常行情下表现完美,但遇到一次闪崩,库存直接爆仓。回测时加上风控,你会发现很多策略其实不堪一击。

5. 绩效评估模块

回测跑完了,怎么评价策略好坏?这就是绩效评估模块的工作。

回测框架的评估指标

做市商的评估指标,和普通趋势策略不太一样。我列几个核心的:

指标 计算公式 说明
年化收益率 (期末净值/期初净值)^(1/年数) - 1 衡量整体盈利能力
夏普比率 (策略收益率 - 无风险利率) / 收益率标准差 衡量风险调整后收益
最大回撤 max(峰值 - 谷值) / 峰值 衡量策略的最大亏损幅度
胜率 盈利交易次数 / 总交易次数 做市商通常胜率高但单笔盈利小
库存周转率 总交易量 / 平均库存 衡量做市商的做市效率
买卖价差收益 ∑(卖价 - 买价) × 成交量 做市商的核心收入来源

重点:做市商策略,我建议重点关注「最大回撤」和「库存周转率」。为什么?因为做市商赚的是薄利,一旦回撤过大,可能一次亏损吃掉几个月的利润。而库存周转率低,说明你的报价可能不够有竞争力。

回测框架的整体逻辑

说了这么多,我们用一个流程图来总结回测框架的核心逻辑:

回测框架核心流程图 历史数据输入 策略引擎 模拟撮合引擎 风控模块 绩效评估模块 → 输出指标 参数优化反馈 Tick级/秒级数据 报价逻辑/订单管理 订单簿撮合/滑点 持仓/亏损/熔断 夏普/回撤/胜率

这个流程,说白了就是:数据进去 → 策略决策 → 模拟成交 → 风控检查 → 绩效打分。然后根据打分结果,回头调整策略参数,再来一轮。

我的经验:刚开始做回测时,我总想一步到位,把所有组件都做得特别复杂。后来发现,先跑通一个最简单的版本,再逐步加细节,效率反而更高。比如先不加滑点、不考虑手续费,看看策略逻辑本身是否成立。

回测框架不是万能的。它不能预测未来,也不能保证实盘一定赚钱。但它能帮你回答一个关键问题:「如果历史重演,我的策略会怎样?」

嗯,这就是回测框架存在的意义。

专注资料整理