第二章 市场微观结构:订单簿原理、买卖价差、市场深度、交易机制差异
做跨市场套利,说白了就是在不同交易所之间「搬砖」。但砖不是你想搬就能搬的。你得先搞清楚每个市场的「脾气」——这就是市场微观结构。我刚开始做套利那会儿,吃过不少亏,后来才明白:不懂微观结构,策略写得再漂亮也是白搭。
2.1 订单簿原理:市场的「实时心电图」
订单簿是什么?你可以把它想象成一个实时更新的「买卖意愿清单」。买方挂单和卖方挂单,按价格从高到低排列,这就是订单簿。
我个人习惯把订单簿分成三层来看:
- 第一层(Top of Book):最优买价和最优卖价。这是最活跃的价格,也是你看到的市场报价。
- 第二层(Depth):次优价格及对应的挂单量。这里藏着市场的真实流动性。
- 第三层(Hidden Liquidity):冰山订单、暗池等。嗯,这部分是「看不见的手」,我在项目中遇到过好几次被暗池吃掉订单的情况。
订单簿的核心逻辑其实很简单:
# 一个简化的订单簿结构
class OrderBook:
def __init__(self):
self.bids = {} # 买方挂单 {价格: 数量}
self.asks = {} # 卖方挂单 {价格: 数量}
def get_spread(self):
best_bid = max(self.bids.keys())
best_ask = min(self.asks.keys())
return best_ask - best_bid
def get_depth(self, levels=5):
# 获取前5档深度
bid_depth = sorted(self.bids.items(), reverse=True)[:levels]
ask_depth = sorted(self.asks.items())[:levels]
return bid_depth, ask_depth
你想想看,订单簿每毫秒都在变化。做套利时,我通常不会只看第一层,因为那太容易被「钓鱼」了。有一次,我看到一个交易所的买一价特别高,以为有套利空间,结果一进去就被砸穿了——那是有人在挂「诱饵单」。
2.2 买卖价差:你的「过路费」
买卖价差(Bid-Ask Spread)就是最优卖价减去最优买价。说白了,这是你进出市场的成本。
为什么价差很重要?因为套利利润往往很薄。如果价差太大,你还没赚钱就先亏了。
核心公式:
实际套利利润 = 理论价差 - 买卖价差 - 手续费 - 滑点
如果买卖价差占了理论价差的30%以上,这笔交易基本不用做了。
我在项目中遇到过这样的情况:两个交易所的BTC价差有0.5%,看起来不错。但A交易所的买卖价差是0.2%,B交易所是0.15%,再加上手续费0.1%,实际利润只剩0.05%——还不够覆盖网络延迟的。
影响买卖价差的因素有哪些?
- 流动性:越活跃的品种,价差越小。BTC/ETH的价差通常只有0.01%-0.05%。
- 波动性:市场剧烈波动时,做市商会扩大价差来保护自己。
- 交易时间:非主流交易时段,价差会明显扩大。
- 交易所规则:有些交易所对做市商有补贴,价差会更小。
我的经验:做套利前,先花一周时间统计目标交易所的价差分布。别只看平均值,要看中位数和90分位数。因为极端情况才是真正让你亏钱的地方。
2.3 市场深度:你能「吃」下多少?
市场深度衡量的是在某个价格水平上,有多少挂单等着成交。深度越大,你越能「大额进出」而不影响价格。
我习惯用「深度图」来直观理解:
这张图里,红色是卖方深度,绿色是买方深度。中间那个缺口就是价差。深度越「厚」,说明市场越有「韧性」。
做套利时,我通常会关注三个深度指标:
| 指标 | 含义 | 套利中的应用 |
|---|---|---|
| 1档深度 | 最优价格上的挂单量 | 判断能否快速成交 |
| 5档深度 | 前5档价格的总挂单量 | 估算大额订单的冲击成本 |
| 深度斜率 | 价格每变动1%,深度变化多少 | 预测价格突破时的流动性变化 |
避坑指南:我曾经在深度看起来很好的交易所做套利,结果一进去发现挂单全是「虚单」——那些单子在你成交前就撤了。后来我学会了看「订单簿刷新频率」,如果每秒刷新超过50次,说明有人在频繁挂撤单,这种深度不可信。
2.4 交易机制差异:不同市场的「游戏规则」
不同交易所的交易机制差异,是套利策略设计的核心。我把它总结为三个维度:
2.4.1 撮合机制
- 连续竞价:大部分主流交易所都用这个。价格优先、时间优先。
- 集合竞价:开盘和收盘时用。所有订单集中撮合,产生统一价格。
- 做市商机制:有些交易所(比如某些衍生品平台)由做市商提供流动性,订单簿可能不公开。
嗯,这里要注意:做跨市场套利时,如果A交易所是连续竞价,B交易所是集合竞价,那价差信号会有「延迟」。我建议在集合竞价期间暂停套利策略。
2.4.2 订单类型
不同交易所支持的订单类型差别很大:
| 订单类型 | 说明 | 套利中的用途 |
|---|---|---|
| 限价单 | 指定价格成交 | 吃深度、做市 |
| 市价单 | 立即按最优价成交 | 快速建仓/平仓 |
| 冰山订单 | 只显示部分挂单量 | 隐藏真实意图 |
| 止损单 | 触发后变市价单 | 风险控制 |
| Post-Only | 只挂单不吃单 | 节省手续费 |
我个人习惯在套利时多用限价单+Post-Only。为什么?因为市价单的滑点太不可控了。有一次我用市价单在某个小交易所套利,结果滑了0.3%,直接把利润吃没了。
2.4.3 手续费结构
手续费是套利的「隐形杀手」。不同交易所的费率结构差异很大:
- Taker/Maker模式:吃单(Taker)贵,挂单(Maker)便宜甚至返现。
- 阶梯费率:交易量越大,费率越低。
- VIP制度:持有平台币可以打折。
真实案例:我做过一个统计,两个交易所的BTC价差平均0.2%,但A交易所Taker费率0.1%,B交易所Maker费率-0.02%(返现)。如果策略设计成在A吃单、在B挂单,实际成本只有0.08%,净赚0.12%。但如果反过来,成本就变成0.12%,利润只剩0.08%。
2.5 微观结构对套利策略的影响
理解了上面这些,我们来看看它们如何影响套利策略的设计:
- 信号延迟:订单簿更新频率不同,价差信号会有几十到几百毫秒的延迟。我建议用WebSocket而不是REST API。
- 执行成本:买卖价差+手续费+滑点,这三项加起来可能吃掉你一半的利润。
- 容量限制:市场深度决定了你能做多大的仓位。深度不够,大单进去就是「砸盘」。
- 规则差异:有些交易所不允许某些订单类型,或者有最小价格变动单位限制。
我的建议:在写策略代码之前,先花一周时间做「微观结构分析」。把目标交易所的订单簿数据存下来,分析价差分布、深度变化、订单簿更新频率。这些数据会告诉你:这个市场到底适不适合做套利。
好了,这一章的内容就到这里。市场微观结构是套利策略的「地基」,地基不稳,楼盖得再高也会塌。下一章我们会深入具体的套利策略设计,到时候这些微观结构知识都会用上。
公众号:蓝海资料掘金营,微信deep3321