📊 這篇屬於 量化交易全景地圖 的一塊;想看各概念怎麼串起來,回總覽逐一拆解。

訂單簿失衡(OBI, Order Book Imbalance)是量化裡最入門的「微觀結構」訊號之一,但多數文章丟一條公式就沒了,你還是不知道它實際長什麼樣。這篇帶你真的抓一次盤口、把它算出來看,並講清楚 OBI 跟常被混用的 OFI 到底差在哪——全部附可跑的 Python,複製就能執行。

先回顧:訂單簿在拔河

訂單簿就是「想買的人」和「想賣的人」各自掛出的價格與數量。最高買價是 Best Bid、最低賣價是 Best Ask。OBI 的直覺就像拔河:買方排了 100 人、賣方只有 20 人,價格「可能」比較容易往上。注意是「可能」不是「一定」——這個分寸是整篇的關鍵。(訂單簿、Maker/Taker 的基礎,可回 量化交易全景地圖 複習。)

OBI:把拔河變成一個數字

OBI 把買賣力量量化成一個介於 −1 到 +1 的數:

OBI = (買量 − 賣量) / (買量 + 賣量)

越接近 +1 代表顯示的買方深度越重、越接近 −1 代表賣方越重、0 代表兩邊均衡。實務上不會只看最佳一檔,而是取前 N 檔加權,因為只看一檔太容易被一兩筆掛單晃動。

動手:用 Python 抓真實盤口算 OBI

不用付費的 Level 2 數據——加密交易所的公開行情就含多檔深度,用 ccxtfetch_order_book 免 API key 就能抓。這也是加密比傳統市場好練手的地方:

import ccxt

ex = ccxt.binance()                       # 換所只改這行:ccxt.okx() / ccxt.bybit()
ob = ex.fetch_order_book("BTC/USDT", limit=20)   # 抓行情免 API key
bids, asks = ob["bids"], ob["asks"]       # [[價格, 數量], ...]

def obi(bids, asks, levels):
    qb = sum(a for _, a in bids[:levels])  # 前 N 檔買量
    qa = sum(a for _, a in asks[:levels])  # 前 N 檔賣量
    return (qb - qa) / (qb + qa)           # -1 ~ +1

for lv in (1, 5, 20):
    print(f"前 {lv} 檔 OBI = {obi(bids, asks, lv):+.3f}")

實際跑一次(BTC/USDT),盤口這一刻長這樣:

前  1 檔   OBI = -0.410   (賣方略重)
前  5 檔   OBI = -0.433
前 20 檔   OBI = -0.370

三個數都是負的、約 −0.4,表示這一瞬間賣方掛單明顯比買方重。但這只是「此刻的快照」,下一秒那些掛單可能整批消失。

順手算 microprice:比中間價更聰明的參考價

一般說的中間價(mid)是 (買價+賣價)/2,但它忽略了兩邊的「量」。microprice(微觀價)用量加權,量大的一側會把價往對手方推,更貼近「下一筆成交比較可能落在哪」:

pb, qb = bids[0]   # 最佳買價、買量
pa, qa = asks[0]   # 最佳賣價、賣量
microprice = (pb * qa + pa * qb) / (qb + qa)   # 量大的一側把價推向對手

做市策略常拿 microprice 當「合理價值(Fair Value)」的起點,再往兩側掛單。

OBI vs OFI:最常被搞混的一組

很多人把 OBI 和 OFI 當同義詞,其實差很多:

OBI 訂單簿失衡OFI 訂單流失衡
看的是某一瞬間的靜態快照段時間內的動態變化
怎麼算當下買量 vs 賣量新增、取消、成交造成的淨變化
需要一張訂單簿快照連續兩張以上快照(時間序列)
特性直覺、易被瞬間撤單晃動跟短期價格變動關係通常更穩定

OFI 的標準作法(Cont 等人)是比較前後兩刻盤口的價與量:買價漲了算「新增買壓」、買價跌了算「買盤撤離」,賣方對稱,最後相減:

def ofi_component(prev, now):
    pb0, qb0, pa0, qa0 = prev   # 前一刻盤口
    pb1, qb1, pa1, qa1 = now    # 這一刻盤口
    # 買方:價漲=新增買壓;價平=量變化;價跌=買盤撤離
    e_bid = qb1 if pb1 > pb0 else (qb1 - qb0 if pb1 == pb0 else -qb0)
    # 賣方:價漲=舊賣盤撤離;價平=量變化;價跌=新增賣壓
    e_ask = -qa0 if pa1 > pa0 else (qa1 - qa0 if pa1 == pa0 else qa1)
    return e_bid - e_ask        # 正=淨買壓增加,負=淨賣壓增加

間隔幾秒抓兩次盤口、丟進這個函式,就得到這段時間的淨買賣壓方向。OBI 告訴你「現在誰人多」,OFI 告訴你「剛剛力量往哪邊移動」,兩個一起看才完整。

最容易踩的坑(這段比公式重要)

  • 掛單只是意願,可以瞬間取消。你看到的失衡,下一秒可能就不見了。
  • 當心 spoofing/layering(幌騙)。有人故意掛遠離盤口的巨量單製造假壓力,引你進場後立刻撤掉。
  • 最大的那道「牆」不一定有效。真正有意義的是貼近盤口、持續存在、且配合成交發生的量,不是畫面上最大的掛單。
  • OBI/OFI 是「特徵之一」,不是預言。實務上是當多個特徵餵進模型,搭配成交方向一起判斷,絕不是單一進場訊號
  • 回測別偷看未來。用訂單簿做研究極容易不小心用到「當下還不知道的資料」,讓回測虛假地漂亮。

實務上怎麼用

OBI/OFI 最常見的用途是做市:用 microprice 當合理價值、用 OBI 偏斜兩側報價(哪邊壓力大就把報價往那邊挪),用 OFI 偵測短期方向、危險時收單。加密例子:跑做市的人會把這些訊號接進報價邏輯;想實際體驗,可從 用 ccxt 自寫機器人 的同一套 API 技能延伸(抓盤口、下單都是同樣的 ccxt)。

回到全景

OBI/OFI 是量化全景裡「市場怎麼運作」這一塊最實用的入口——你已經會抓真實盤口、算失衡、分清 OBI 與 OFI 了。接下來把同一套盤口資料接上報價邏輯,就進入「做市」的世界。記住那句話:盤口失衡只告訴你「可能」,把「可能」當「一定」是最貴的學費。

常見問題 FAQ

OBI 能預測價格嗎?

不能單獨預測。OBI 反映此刻盤口的買賣力量,但掛單可瞬間取消、甚至有人用假單製造假象(spoofing)。實務上它是「多個短期特徵之一」,要搭配成交方向、OFI、撤單行為一起判斷,而不是單一進場訊號。

OBI 和 OFI 哪個比較好?

不是誰取代誰。OBI 是某一瞬間的靜態快照失衡,OFI 是一段時間內新增/取消/成交的動態變化。OFI 跟短期價格變動的關係通常更穩定,但需要連續快照才能算。兩個一起看最完整。

算 OBI 一定要付費的 Level 2 數據嗎?

不用。多數加密交易所的公開行情就含多檔深度,用 ccxt 的 fetch_order_book 免 API key 就能抓,這也是加密比傳統股市好練手的原因之一。傳統市場的深度數據往往要另外付費。

OBI 可以用在加密合約嗎?

可以,永續合約的訂單簿一樣抓得到。但合約多了資金費率、強平堆積、ADL 等結構,極端行情下盤口會跟現貨很不一樣,別把現貨的直覺直接套到合約上。

看到盤口一面倒的巨量牆,要不要跟?

要很小心。遠離最佳價的巨量掛單常常是「擺著嚇人」的,可能瞬間撤掉(spoofing/layering)。真正有意義的是貼近盤口、持續存在、且配合成交發生的量,不是畫面上最大的那道牆。


利益揭露:本文部分交易所連結含邀請碼,使用不增加你的成本,有些還有手續費折扣。內容以教育與「幫你看懂並避坑」為前提,不構成投資建議。

關於Mr. Slash

「Mr. Slash 的系統性人生」,創立於 2024年,由 Mr. Slash 本人及專業編輯團隊經營的財經內容平台。

我們的宗旨是透過投資、財經、自動化與新興科技等領域的深入解說與應用,幫助讀者打造穩定的被動收入系統。內容涵蓋加密貨幣、股息資產、量化工具、平台分潤等實用策略,協助你用更聰明的方法配置資金、累積資產,走在財務自由的路上,少走冤枉路。

若為商業合作邀稿,將會清楚標註「不代表本站立場」。

商業合作

如果您有任何關於我們團隊或網站內容的疑問或建議,歡迎您前往IG 私訊 @slash.Capital聯繫我們,謝謝!

發表迴響

相關文章

Trending

探索更多來自 Mr. Slash|系統流人生 的內容

立即訂閱即可持續閱讀,還能取得所有封存文章。

繼續閱讀

خصم دائم على الرسوم سجّل في OKX مجاناً ←
Join Mr. Slash