2、做市策略基础:订单簿结构解析、买卖价差(Bid-Ask Spread)的构成、做市报价策略。
好,咱们正式开始聊做市策略。这一节是地基,地基不牢,后面全白搭。我见过不少新手,上来就写策略代码,结果连订单簿都读不明白,最后亏得莫名其妙。所以,咱们先把这几个核心概念啃透。
2.1 订单簿结构解析:市场的“实时快照”
订单簿,说白了就是交易所里所有挂单的集合。它实时反映了当前市场上,谁想买、谁想卖,以及他们愿意出什么价。
我个人习惯把订单簿想象成一个“排队簿”。
- 买单(Bids):一群人举着牌子,喊着“我要买!”,价格从高到低排。出价最高的排最前面,优先成交。
- 卖单(Asks):另一群人喊着“我要卖!”,价格从低到高排。要价最低的排最前面,优先成交。
一个典型的订单簿结构,通常包含以下几个关键字段:
| 层级 (Level) | 价格 (Price) | 数量 (Size/Volume) | 累计数量 (Cumulative) |
|---|---|---|---|
| 卖一 (Ask 1) | 100.50 | 1,000 | 1,000 |
| 卖二 (Ask 2) | 100.55 | 2,500 | 3,500 |
| 卖三 (Ask 3) | 100.60 | 1,200 | 4,700 |
| ... | ... | ... | ... |
| 买一 (Bid 1) | 100.45 | 2,000 | 2,000 |
| 买二 (Bid 2) | 100.40 | 3,000 | 5,000 |
| 买三 (Bid 3) | 100.35 | 1,500 | 6,500 |
你看,卖一和买一之间的价格差,就是咱们常说的买卖价差。这个价差,就是做市商吃饭的本钱。
我的小技巧: 别只看第一档。我习惯把前五档的累计深度都算出来。如果卖一到卖五的累计量很大,说明上方抛压重,价格短期难涨。反之亦然。这比只看第一档要靠谱得多。
2.2 买卖价差(Bid-Ask Spread)的构成:你的利润从哪来?
价差不是凭空产生的。它由几个硬成本构成。你想想看,如果做市商不把这些成本算进去,那就是在给交易所打工。
- 手续费(Taker Fee):这是最直接的。你作为做市商,挂单成交通常要付手续费。这个成本必须覆盖。
- 逆向选择成本(Adverse Selection Cost):这个有点绕。简单说,就是当你挂单后,市场突然朝不利于你的方向运动。比如你挂了买单,结果一个大户砸盘,你接盘了,价格继续跌。这部分潜在亏损,也要算进价差里。
- 存货成本(Inventory Cost):你手里拿着货,就有价格波动的风险。持有时间越长,风险越大。这个风险溢价,也得体现在价差里。
- 订单处理成本(Order Processing Cost):包括系统延迟、网络费用等。虽然单笔很小,但积少成多。
所以,一个合理的价差公式大概是:
Spread = 2 * (Taker Fee + Adverse Selection Cost + Inventory Cost + Order Processing Cost)
嗯,这里要注意,这个公式只是理论上的。实际中,你还要考虑竞争对手的报价。我曾经在某个流动性极好的币对上,把价差压到只有0.01个tick,结果一算账,扣掉手续费还亏了。后来我学乖了,价差必须留足安全垫。
2.3 做市报价策略:怎么挂单才不亏?
报价策略的核心,就是决定你在订单簿的哪个位置挂单,挂多少量。这里没有银弹,只有权衡。
我个人常用的几种策略,分享给你:
- 对称报价(Symmetric Quoting):在买一和卖一同时挂单,价差对称。这是最基础的策略,适合波动率低、流动性好的市场。优点是简单,缺点是赚得少。
- 非对称报价(Asymmetric Quoting):根据你对市场方向的判断,调整买卖挂单的价差。比如你觉得要涨,就把买单挂得近一点(价差小),卖单挂得远一点(价差大)。这样更容易接到货,但不容易卖出去。说白了,就是用仓位来表达观点。
- 基于存货的报价(Inventory-based Quoting):根据你当前的持仓量来调整报价。如果你手里货太多,就主动降低卖价,吸引买家;如果货太少,就提高买价,吸引卖家。这是最经典的做市策略之一。
避坑指南: 我曾经犯过一个错,在某个新币上用了对称报价,结果市场深度极差,我的单子被一个程序化大单连续吃掉,瞬间积累了巨量库存,价格随后暴跌。那次教训告诉我:永远不要在不了解市场深度的情况下使用固定价差策略。
下面这张图,是我自己总结的做市报价策略决策流程,你可以参考一下:
你看,整个流程的核心就是:先看市场环境,再看自身状态,最后决定怎么报价。这个顺序不能乱。
核心总结: 做市报价不是简单的“买一卖一挂单”。它是一个动态的、基于风险管理的决策过程。你的报价策略,本质上是在管理你的库存风险、逆向选择风险和手续费成本。把这三点想明白了,你的策略就成功了一半。
好了,这一节的内容就到这。记住,订单簿是你的战场,价差是你的武器,报价策略是你的战术。下一节,咱们聊聊怎么用代码把这些策略实现出来。