第三章 做市策略核心指标:买卖价差、持仓风险、报价命中率、夏普比率与收益回撤比

做市策略做得好不好,不能光凭感觉。我见过不少新手,跑回测时看着资金曲线往上走就兴奋,结果一上实盘就亏得找不着北。为什么?因为没抓住核心指标。

今天咱们就把做市策略的五个核心指标掰开揉碎讲清楚。说白了,这五个指标就是你的仪表盘。开车不看仪表盘,迟早要出事。

3.1 买卖价差(Spread)—— 做市商的饭碗

买卖价差,就是买一价和卖一价之间的差值。你想想看,做市商赚的是什么?就是这中间的差价。

核心公式:

Spread = Ask Price - Bid Price

通常用基点(bps)表示:Spread(bps) = (Ask - Bid) / Mid Price × 10000

我在项目中遇到过一种情况:某个山寨币的价差经常超过50个基点,看着利润空间很大。但一算成交量,一天就几万美金。这种价差大但流动性差的市场,其实很难做。

价差类型我一般分三种:

  • 静态价差:你挂单时设定的固定价差。比如我习惯在BTC上设2个tick的价差。
  • 动态价差:根据市场波动率实时调整的价差。波动大时放宽,波动小时收窄。
  • 有效价差:实际成交时的价差,考虑了滑点和手续费。

我的经验:别只看名义价差。扣除手续费后的净价差才是你真正能吃到嘴里的。有些交易所maker返佣高,价差小点也能做。

3.2 持仓风险(Inventory Risk)—— 做市商的命门

做市最怕什么?不是亏手续费,而是方向性持仓。你想想看,如果市场突然暴跌,你手里全是多头库存,那画面太美我不敢看。

持仓风险的核心指标就两个:

指标 定义 我的经验阈值
库存量 当前持有的净头寸 不超过日均成交量的0.5%
库存周转率 库存清空的速度 理想状态:每5-10分钟周转一次

我曾经吃过一次大亏。2020年3月12日,比特币暴跌那天,我的策略没及时调整库存上限,结果手里攒了200个BTC的多头。那一夜,我盯着屏幕,看着价格从8000跌到3800。嗯,从那以后,我加了一个硬止损:库存超过阈值就强制平仓。

避坑指南:库存风险不是线性的。当市场出现极端行情时,你的库存可能瞬间膨胀。我建议设置两层保护:软限制(报警)和硬限制(强制平仓)。

3.3 报价命中率(Hit Rate)—— 你的单子能不能成交

报价命中率,就是你挂的单子最终成交的比例。这个指标很有意思——太高了说明你给的价差太窄,利润薄;太低了说明你挂的价没人理。

我一般这样算:

# 报价命中率计算示例
def calculate_hit_rate(filled_orders, total_orders):
    """
    filled_orders: 成交的订单数
    total_orders: 总挂单数
    """
    if total_orders == 0:
        return 0
    return filled_orders / total_orders

# 实际项目中我会分方向统计
bid_hit_rate = calculate_hit_rate(bid_filled, bid_total)
ask_hit_rate = calculate_hit_rate(ask_filled, ask_total)
print(f"买单命中率: {bid_hit_rate:.2%}")
print(f"卖单命中率: {ask_hit_rate:.2%}")

理想情况下,买卖双方的命中率应该差不多。如果一边明显高于另一边,说明你的报价有偏向性,库存风险就会积累。

我个人习惯把命中率控制在30%-60%之间。低于30%,说明价差太宽,该收窄了;高于60%,说明价差太窄,利润空间被压缩。

3.4 夏普比率—— 风险调整后的收益

夏普比率,说白了就是每承担一单位风险,能换来多少超额收益。做市策略的夏普比率通常比趋势策略高,因为做市赚的是波动率的钱,不是方向的钱。

公式:

Sharpe Ratio = (策略收益率 - 无风险利率) / 策略收益率的波动率

做市策略的夏普比率一般能做到3-5,优秀的能到8以上。

但这里有个坑。我见过有人用日收益率算夏普比率,结果算出来8.5,高兴得不行。后来我让他换成小时级别的数据重算,直接掉到2.3。为什么?因为做市策略的日内波动很大,日频数据会平滑掉很多风险。

建议:计算夏普比率时,频率要和你的交易频率匹配。高频做市用分钟级数据,中低频用小时级。别偷懒用日频。

3.5 收益回撤比—— 实盘最关心的指标

夏普比率再高,回撤大了你也扛不住。收益回撤比,就是总收益除以最大回撤。这个指标直接告诉你:为了赚这些钱,你最多承受了多大的浮亏。

我给自己定的标准:

  • 收益回撤比 > 3:合格
  • 收益回撤比 > 5:良好
  • 收益回撤比 > 8:优秀

记得有一次,我优化了一个参数组合,夏普比率从4.2提升到了6.8,但收益回撤比从5.1降到了2.9。我犹豫了一下,最后还是选了原来的参数。为什么?因为实盘时,回撤大了你根本拿不住。心理压力会逼你提前平仓,最后收益反而更低。

3.6 五个指标的关系图

下面这张图是我自己总结的做市策略核心指标关系。你看一眼就明白了:

做市策略 核心指标 买卖价差 Spread 持仓风险 Inventory Risk 报价命中率 Hit Rate 夏普比率 Sharpe 收益回撤比 Return/Drawdown 做市策略核心指标关系图 五个指标相互影响,需要综合优化,不能只看单一指标

你看这张图就明白了。五个指标不是孤立的。价差太宽,命中率就低;价差太窄,库存风险就大。夏普比率和收益回撤比是最终的结果指标,前面三个是过程指标。

3.7 实战中的指标监控

我自己的交易系统里,有一个实时监控面板。每5秒刷新一次,显示这五个指标的实时值。一旦某个指标超出阈值,系统就会报警。

举个例子:

# 实时监控逻辑(伪代码)
def monitor_indicators():
    while True:
        spread = get_current_spread()
        inventory = get_current_inventory()
        hit_rate = calculate_hit_rate(last_100_orders)
        sharpe = calculate_sharpe(last_24h_returns)
        rdd_ratio = calculate_return_drawdown_ratio()
        
        # 报警逻辑
        if spread > max_spread:
            alert("价差过大,检查市场状态")
        if abs(inventory) > max_inventory:
            alert("库存超限,启动对冲")
        if hit_rate < 0.2 or hit_rate > 0.7:
            alert("命中率异常,调整报价策略")
        if sharpe < 2.0:
            alert("夏普比率过低,考虑暂停策略")
        if rdd_ratio < 3.0:
            alert("收益回撤比恶化,检查风险敞口")
        
        time.sleep(5)

这套逻辑我用了三年,帮我躲过了好几次黑天鹅事件。有一次,夏普比率突然从4.5掉到1.8,系统自动暂停了策略。后来发现是交易所的API出了问题,报价延迟了200毫秒。要是没这个监控,那天得亏不少。

总结一下:

五个指标,三个过程(价差、库存、命中率),两个结果(夏普、回撤比)。过程指标帮你实时调整策略,结果指标帮你评估策略好坏。两手都要抓,两手都要硬。

好了,这一章的内容就到这里。记住,指标是死的,市场是活的。别死盯着数字,要理解数字背后的市场逻辑。下一章咱们聊聊如何用这些指标来设计一个完整的做市策略框架。


公众号:蓝海资料掘金营,微信deep3321