Meme Atlas AZ · cex-vs-dex-data
CEX 與 DEX 資料不能直接對表:先標出市場邊界
用資料血統分開委託簿、成交、鏈上池、聚合價格與更新時間,避免把同名欄位誤當同一市場。
- 發布
- 更新
- 編輯責任
- Meme Atlas AZ
一個中心化交易場所的頁面顯示價格、成交量與買賣盤;一個鏈上資料頁也顯示價格、成交量與流動性。欄名相似,很容易被整理成同一張表,再比較哪邊「更準」或「更大」。但兩邊的事件、狀態、資產身分與時間機制並不相同。表格若省略資料血統,整齊反而會掩蓋範圍錯誤。
本文不替 CEX 或 DEX 排名,也不把其中一邊設定為真實價格。目標是建立兩條平行的資料管線:每個數字從什麼市場物件產生、經過哪種聚合、在什麼時點可見,以及它不能回答什麼。只有欄位語意和範圍都對齊時,並列才有研究價值。
CEX 管線從 product 與委託簿開始
CEX 的最小市場單位通常是指定 product,例如某資產/某報價資產。頁面上的 last trade 是已發生的成交事件;best bid 與 best ask 是可見委託簿頂層;更深的價位與 size 才構成某一時點的 book view。三者都可被口語稱為「價格」,卻回答不同問題。
Coinbase 的公開 product book 文件把 Level 1、Level 2 與 Level 3 分開。Level 1 只提供最佳買賣價及最近成交;Level 2 按價位聚合委託;Level 3 保留較細的個別委託資訊。讀到 `bids`、`asks`、`price` 和 `size` 時,必須同時保存 level 與是否聚合。否則兩份都叫 order book 的資料仍可能粒度不同。
CEX 管線還有一層平台內部狀態。使用者在公開 API 或頁面看到的是場所發布的市場視圖,不是底層撮合系統的所有資訊。sequence、time 或 WebSocket 更新可以協助排序及同步,但一次輪詢只是一張視圖。輪詢較晚不代表每個委託都較新;缺少序列連續性時,也不能假定兩張快照之間沒有漏掉更新。
成交量則是期間事件的聚合。它需要 product、期間起訖、滾動或日曆規則、報價單位與場所時區。二十四小時量不會變成當下委託簿深度,最後成交價也不能代表任意數量都可執行。CEX 資料表若只有 price 與 volume 兩欄,尚未描述可見市場狀態。
DEX 管線從鏈、合約與 pair 開始
DEX 的最小範圍不是只有代號,而是 chain、base token、quote token、pair address 及池型。DEX Screener 的公開 schema 將 `chainId`、`pairAddress`、`baseToken`、`quoteToken`、`priceNative`、`priceUsd`、`volume` 與 `liquidity` 放在 pair 記錄中。這些欄位都應先被理解為單池資料。
鏈上池沒有和 CEX 委託簿完全相同的 bids/asks 階梯。池內狀態、曲線、費率、方向與輸入數量共同形成報價。Uniswap 對 price impact 的公開說明指出,交換數量相對於池流動性的大小會影響結果。因此,池的 spot-like price、某數量的 route quote 與實際鏈上執行仍是三種不同證據。
DEX 的成交或 swap 事件由鏈上交易產生,資料供應商再依自己的解析、pair 映射、時間窗與美元換算形成 volume 欄。即使鏈上事件公開,頁面上的聚合結果也不是沒有方法的原始事實。若供應商未公開上游 observation time,本站只能保存取得時間、已知區塊範圍與資料狀態。
`priceUsd` 也可能需要池外換算。若池以另一種代幣報價,供應商要先讀取池內相對價格,再把 quote 轉成 USD。這條 conversion path 與 CEX 法幣 product 或穩定資產 product 不同。最後顯示同樣的 USD 小數,不會消除中間路徑。
聚合供應商是第三條管線
CoinGecko 公開方法說明其價格會建立初始 ticker 集合,處理異常與離群值、轉換報價,並以成交量加權形成結果。這種 provider-global price 可能納入多個場所,是方法輸出,不是某一 CEX product 的 last trade,也不是某一 DEX pair 的池內價格。
供應商還可能分開交易場所、ticker、成交量與 order-book depth 等資料品質維度。這能提醒研究者保存方法與 scope,卻不代表本文需要複製 Trust Score 或建立另一套評分。數字經過聚合後適合描述廣義市場脈絡;若問題是某地點某方向的可見狀態,仍要回到局部資料。
因此,研究表最好有三個 source type:`cex-product`、`dex-pair` 與 `provider-global`。同名欄位進入表格前先標明類型,避免把聚合市場值與局部池值直接相減。若一個來源同時提供多層資料,每一筆也要保留原始 scope,不能因發布者相同便合成一列。
七組看似相同、其實不同的欄位
第一組是 price。CEX 可指 last、bid、ask 或 book level;DEX 可指池內比例、供應商換算價或指定數量的 route quote;聚合供應商則可能是多 ticker 加權結果。
第二組是 volume。CEX volume 屬於指定 product 與期間;DEX volume 屬於指定 pair 經解析的 swap 活動;global volume 可能含多個市場。三者都要保存窗口與 quote,不能只對齊「24h」文字。
第三組是 liquidity 或 depth。CEX depth 是有買賣方向與價位的委託簿視圖;DEX liquidity 是池狀態欄位,還要經曲線與數量才能理解價格影響。美元單位相同,也不是同一度量。
第四組是 timestamp。CEX 可能有成交時間、book time、sequence 與本站 fetch time;DEX 可能有 block/slot、事件時間、供應商更新與 fetch time。`pairCreatedAt` 是池建立時間,不能借作行情觀察時間。
第五組是 asset identity。CEX product 由場所內資產代碼與報價資產界定;DEX 必須使用鏈與完整合約或 mint。對號相同仍需外部映射證據,不能以代號把不同鏈資產靜默接起來。
第六組是 failure。CEX market 暫停、API 失敗、空 book 與零成交量不同;DEX 的 pool 不存在、欄位缺失、解析延遲與零流動性也不同。`null`、missing、stale、failed 必須分開,不以零補齊圖表。
第七組是 executability。公開 CEX book 會在觀察後改變;DEX quote 也會隨池狀態、路由與區塊改變。歷史快照能被研究,不能保證後續仍以同一結果執行。
對齊窗口之前先對齊事件定義
兩個來源都寫「一小時變動」,仍可能使用不同基準。CEX 可能由場所內指定 product 的起訖成交價形成,DEX 資料頁可能從池級觀察或供應商取樣序列計算,global provider 又可能先聚合多個 ticker。窗口名稱相同,只證明標籤相同,沒有證明起點、終點、取樣與缺值處理一致。
K 線也屬於衍生資料。open、high、low、close 需要明確的 interval、時區、資料來源及是否包含沒有成交的區間;DEX 的 candle 還要確認以哪個 pair、base/quote 方向與美元換算建立。若直接把 CEX candle 與 DEX pair candle 疊在一起,視覺上很容易看出差異,卻可能只是在比較不同事件集合。
資料回補是另一個常被忽略的差異。供應商稍後補入遲到事件、修正 ticker 映射或排除異常值,歷史窗口可能改變;區塊鏈重組、索引延遲或解析器更新也可能令鏈上資料頁重新計算。研究記錄要保存取得批次與方法版本,不能假定第一次看到的圖表永遠不變。
對齊結果因此應是逐欄狀態,而不是一個布林值。identity 可以已對齊,quote conversion 仍未知;time window 可以相同,事件來源仍不同。保留這種部分對齊,能避免為了產生比較結果而把未通過的條件隱藏起來。
用事件線而不是排行榜來對齊
較好的記錄是一條事件線。CEX 一筆寫 product、last trade time、best bid/ask、book level 與 fetch time;DEX 一筆寫完整 chain、contract、pair、base/quote、block 或已知時間、池價與換算路徑;供應商聚合資料另寫 ticker set 方法、provider timestamp 與 fetch time。三條線可以並排,但不共用一個假造的 timestamp。
若 CEX 與 DEX 數字不同,先查資產映射、報價方向、來源類型、美元換算、資料窗口與更新順序。只有這些條件已對齊,差異才可被描述成該時點兩個局部市場的觀察差。即使如此,也不能因此宣告哪邊錯誤、存在無風險套利或任何人能按該差值成交。
一份可重現的雙管線記錄
對 CEX,保存 venue、product、base/quote、field type、book level、aggregation、price/size、trade window、sequence、source time 與 fetch time。對 DEX,保存 chain、完整 token identity、pair、pool type、fee、direction、price field、liquidity、volume window、block/slot、conversion path 與 fetch time。
兩邊共同保存 provider、原始回應狀態、顯示精度與未知欄位。若做並列,再新增 alignment result,逐項寫 identity、scope、quote、window 與 time 是否對齊。任一必要條件未通過,就保留兩筆獨立觀察,不強行輸出價差或排名。
這份記錄的價值在於可追溯:讀者能知道每個數字屬於哪種市場物件,資料頁如何轉換它,以及差異還可能來自何處。CEX 與 DEX 不需要被壓成一套分數;把兩條資料血統保存完整,已經比一張看似精密的比較表更接近事實。
內容來源
- Coinbase Exchange API — Get product book發布者: Coinbase查閱日期:
- CoinGecko Methodology發布者: CoinGecko查閱日期:
- DEX Screener API Reference發布者: DEX Screener查閱日期:
- Uniswap Support — What is price impact?發布者: Uniswap Labs查閱日期:
- Uniswap Concentrated Liquidity Concepts發布者: Uniswap Labs查閱日期:
- Coinbase Exchange — WebSocket market data overview發布者: Coinbase查閱日期: