第二章:市场微观结构——订单簿深度解析、买卖盘口与价差、市场数据 Feeds(SIP/直连)

各位同学,欢迎来到第二章。

上一章我们聊了套利的基本逻辑,说白了就是「低买高卖」在不同交易所的变种。但真正动手做之前,有一道绕不过去的坎——你得先看懂市场到底在发生什么。

这一章,我们就来拆解市场的「微观结构」。我个人觉得,这是整个套利系统里最性感的部分。你想想看,每一笔订单、每一个报价,背后都是真金白银的博弈。读懂这些,你才算真正入了门。

2.1 订单簿:市场的「实时账本」

订单簿(Order Book)是什么?

简单说,它就是交易所用来记录所有未成交买卖订单的电子账本。每一笔挂单,无论是买还是卖,都会出现在这里。

我刚开始做量化时,总觉得订单簿就是一堆数字。后来有一次,我盯着盘口看了一下午,突然发现——这玩意儿其实是一张「战场地图」。买盘和卖盘在每一个价位上排兵布阵,谁强谁弱,一目了然。

2.1.1 订单簿的核心结构

一个标准的订单簿,通常包含以下信息:

价格(Price) 买盘数量(Bid Size) 卖盘数量(Ask Size)
100.05 0 1,200
100.04 0 800
100.03 500 0
100.02 1,000 0
100.01 2,000 0

你看,买盘(Bid)从低到高排列,卖盘(Ask)从高到低排列。中间那个缺口,就是买卖双方的交战地带。

关键概念:

  • 最佳买价(Best Bid):当前最高的买入价格
  • 最佳卖价(Best Ask):当前最低的卖出价格
  • 价差(Spread):Ask - Bid,也就是买卖之间的差距

价差越小,说明市场流动性越好。我见过一些冷门股票,价差能大到几毛钱,那种票做套利基本没戏。

2.2 买卖盘口与价差:读懂市场的「呼吸」

盘口(Level 2 数据)比订单簿更细。它展示了每一个价位上的挂单明细,包括做市商或交易所的标识。

为什么要看盘口?

举个例子。假设某只股票在交易所A的盘口是这样的:

  • 买一:100.00, 500股
  • 卖一:100.02, 300股

而在交易所B:

  • 买一:100.01, 200股
  • 卖一:100.03, 400股

你看,交易所A的卖一(100.02)比交易所B的买一(100.01)还低。理论上,你可以从A买入,到B卖出,赚取0.01美元的差价。但这里有个坑——你得考虑手续费和滑点。

避坑指南:

我曾经在实盘里遇到过这种情况:看到价差存在,立刻下单。结果因为网络延迟,等我订单到达时,盘口已经变了。那笔单子不仅没赚到钱,反而亏了手续费。所以,盘口数据是有「时效性」的,千万别拿过时的数据做决策。

2.3 市场数据 Feeds:SIP 与直连

做跨交易所套利,数据源是命根子。你拿到的数据质量,直接决定了你的策略能不能赚钱。

目前美股市场主流的市场数据获取方式有两种:SIP 和直连。

2.3.1 SIP(证券信息处理器)

SIP 是美国证券市场的官方数据整合系统。它负责收集所有交易所的报价和交易数据,然后统一发布。

优点:

  • 数据全面,覆盖所有交易所
  • 价格相对便宜

缺点:

  • 有延迟。SIP 的数据是「整合后」的,通常比实际成交慢几十到几百毫秒
  • 对于高频套利来说,这个延迟是致命的

我个人的建议是:如果你做的是中低频套利(比如持仓几秒到几分钟),SIP 完全够用。但如果你要抢毫秒级的价差,那必须上直连。

2.3.2 直连(Direct Feed)

直连就是直接从交易所获取数据。比如你直接连到纳斯达克(NASDAQ)或纽交所(NYSE)的服务器,拿到第一手报价。

优点:

  • 延迟极低,通常在微秒级别
  • 数据更原始,包含更多细节(比如订单类型、隐藏订单等)

缺点:

  • 贵。每个交易所都要单独付费,而且通常要求你租用机柜或托管服务器
  • 数据量大,处理起来更复杂

实战技巧:

我一般会同时接入 SIP 和直连。SIP 用来做「全景监控」,直连用来做「精确打击」。比如,SIP 发现某个股票在多个交易所之间出现价差,然后我用直连数据去确认并执行交易。这样既保证了覆盖度,又控制了成本。

2.4 知识体系结构图

为了帮你理清思路,我画了一张图。这张图展示了本章的核心知识点和它们之间的关系。

市场微观结构知识体系 订单簿 (Order Book) 盘口与价差 (Level 2) 市场数据 Feeds 买盘 (Bid) 卖盘 (Ask) 最佳买价/卖价 价差 (Spread) SIP 直连 (Direct Feed) 跨交易所套利策略 理解微观结构 → 识别价差机会 → 执行套利策略

2.5 实战代码示例:解析订单簿

光说不练假把式。我们来看看怎么用 Python 解析一个简单的订单簿。

import pandas as pd

# 模拟一个订单簿数据
order_book = {
    'bids': [
        {'price': 100.03, 'size': 500},
        {'price': 100.02, 'size': 1000},
        {'price': 100.01, 'size': 2000}
    ],
    'asks': [
        {'price': 100.04, 'size': 800},
        {'price': 100.05, 'size': 1200},
        {'price': 100.06, 'size': 600}
    ]
}

# 提取最佳买价和最佳卖价
best_bid = order_book['bids'][0]['price']
best_ask = order_book['asks'][0]['price']
spread = best_ask - best_bid

print(f"最佳买价: {best_bid}")
print(f"最佳卖价: {best_ask}")
print(f"价差: {spread}")

# 计算买卖盘口的总深度
total_bid_size = sum([bid['size'] for bid in order_book['bids']])
total_ask_size = sum([ask['size'] for ask in order_book['asks']])

print(f"买盘总深度: {total_bid_size}")
print(f"卖盘总深度: {total_ask_size}")

这段代码很简单,但它是所有套利策略的基础。你想想看,如果你能实时监控多个交易所的订单簿,然后找出价差最大的那一对,是不是就能赚钱了?

核心要点回顾:

  • 订单簿是市场的实时账本,读懂它才能读懂市场
  • 价差是套利机会的直接体现,但要注意时效性
  • SIP 适合中低频,直连适合高频,根据你的策略选择
  • 代码实现并不复杂,难的是数据的实时性和准确性

嗯,这一章的内容就到这里。记住,市场微观结构不是死知识,它是活的。你盯盘盯得越多,对它的感觉就越敏锐。下一章,我们会把这些知识串起来,开始搭建真正的套利系统。


公众号:蓝海数据掘金营,微信deep3321