本文目錄
  1. 訂單簿看掛單,AMM看池內狀態與公式
  2. 先固定兩個架空市場的起始條件
  3. 同樣買入10單位B,總投入如何計算?
  4. 分別買入1、5、10單位B,結果有何不同?
  5. 平均成交價、最後成交價與成交後邊際價格
  6. 起始報價相同,不代表成本與風險相同
  7. 常見問題
  8. 資料來源與說明範圍

訂單簿看掛單,AMM看池內狀態與公式

訂單簿列出掛單的價格與數量;AMM(自動做市商)則依其設計,用池內狀態與定價規則算出交換所需的數量。即使兩邊起初都是每單位B需付2單位A,也不表示買入整批B會付出相同數量的A。要看懂差別,得把整筆投入、平均成交價和交易後的價格分開。

以下只比較一組固定賣單與一個雙代幣、固定乘積的AMM模型。AMM有不同設計,不能把這一條公式套到所有AMM;訂單簿的例子也不代表任何具名平台的撮合規則。BIS網站刊載的研究專欄說明掛單記錄與儲備定價的差別,Chainlink的教育文章則介紹多種AMM設計。

先固定兩個架空市場的起始條件

A與B都是虛構代幣,不是美元、台幣、事件機率或市場份額。本文的A/B一律表示每單位B需付多少A。計算採連續數量模型,不計手續費、Gas費、代幣整數精度與取整;假設期間沒有撤單、新掛單、順序變動、外部價格變動,池內也沒有指定買入以外的狀態變動。

訂單簿中的賣單是以A交換B的報價。本例假設兩筆賣單的數量都維持可用:先買5 B,每單位付2 A;之後再買5 B,每單位付2.2 A。這是計算條件,不是訂單簿保證成交的意思。

池內以x表示B的儲備、y表示A的儲備。起初x = 100、y = 200,指定規則為x × y = 20,000。取走一些B時,必須補入A,才能維持這個乘積。

兩個架空市場的起始條件:後面的每次計算都從這裡重新開始
兩個架空市場的起始條件:後面的每次計算都從這裡重新開始
設計起始條件買入時如何改變例子的範圍
固定賣單的訂單簿先有5 B,價格2 A/B;再有5 B,價格2.2 A/B按這個順序成交,扣除各筆賣單的數量只設定這10 B,沒有提供後續賣單
不計費用的固定乘積池100 B與200 A;x × y = 20,000取走B、補入A,維持指定的儲備乘積只是指定模型,不是實際協議的交易輸出

Uniswap v2定價文件說明的是特定版本,其實際規則會計入費用。本文為了看清數量與價格的關係,另行設定不計費用的教學模型,不能拿下列結果當成實際Uniswap交換的報價。

同樣買入10單位B,總投入如何計算?

訂單簿的第一筆賣價是2 A/B。池內起始的邊際價格,也就是極微小數量變動所對應的價格,是200 ÷ 100 = 2 A/B。但這兩個起始數字,都沒有直接回答取得10 B要付出多少A。

在訂單簿中,買入10 B會用完兩筆賣單:5 × 2 + 5 × 2.2 = 21 A。把總投入21 A除以收到的10 B,平均成交價就是2.1 A/B。

池內則從100 B減少為90 B。要維持乘積20,000,新的A儲備必須是20,000 ÷ 90 = 2,000/9 A。扣除原先的200 A,這次需補入2,000/9 − 200 = 200/9 A,約22.2222 A。再除以收到的10 B,平均成交價為20/9 A/B,約2.2222 A/B。

分別買入1、5、10單位B,結果有何不同?

把買入數量換成1 B或5 B,也要從原本的狀態重新計算。下表不是依序先買1 B、再買5 B、最後買10 B。分數是模型內的精確值,小數只用來顯示近似結果,取到小數點後四位,不在計算途中四捨五入。

三個獨立的買入例子:每列都重設為相同的起始賣單與100 B/200 A儲備
三個獨立的買入例子:每列都重設為相同的起始賣單與100 B/200 A儲備
收到的B訂單簿總投入(A)池內總投入(A)池內平均成交價(A/B)池內成交後邊際價格(A/B)
1 B2200/99 ≈ 2.0202200/99 ≈ 2.020220,000/9,801 ≈ 2.0406
5 B10200/19 ≈ 10.526340/19 ≈ 2.1053800/361 ≈ 2.2161
10 B21200/9 ≈ 22.222220/9 ≈ 2.2222200/81 ≈ 2.4691

若以q表示收到的B數量,池內總投入為C(q) = 20,000/(100 − q) − 200 = 200q/(100 − q),適用範圍是0 ≤ q < 100。q > 0時,平均成交價為C(q)/q = 200/(100 − q);q = 0時沒有可計算的平均成交價。成交後的邊際價格是導數dC/dq = 20,000/(100 − q)2。

訂單簿只設定了0至10 B的賣單。在這個範圍內,總投入為2 × min(q, 5) + 2.2 × max(q − 5, 0),也就是先使用第一筆最多5 B的賣單,再使用第二筆。超過10 B的部分沒有資料,不能自行延伸。

平均成交價、最後成交價與成交後邊際價格

池內完成10 B的買入後,邊際價格為200/81 A/B,約2.4691 A/B,並不是剛才整筆交易的平均20/9 A/B。前者描述新狀態下極微小的數量變動,後者是整筆投入除以整筆收到的數量。

買入10 B之後,四種數字回答不同問題;A是投入數量,A/B才是單價
買入10 B之後,四種數字回答不同問題;A是投入數量,A/B才是單價
數字本例數值回答的問題
池內總投入200/9 A收到整批10 B,共需投入多少A?
池內平均成交價20/9 A/B這整批10 B,平均每單位B付多少A?
池內成交後邊際價格200/81 A/B新儲備狀態下,極微小變動對應的價格是多少?
訂單簿最後成交的賣價2.2 A/B最後用到哪個價位?下一筆賣價仍未設定。

Uniswap v2 SDK的定價說明也區分以儲備比率描述的極微小交易價格,以及一筆有限數量交易的平均執行價格。這裡的成交後邊際價格不是再買入一筆有限數量B時可直接成交的報價,也不會回頭變成前10 B全部支付的價格。

訂單簿也有類似的閱讀界線:10 B已用完兩筆賣單,最後成交在2.2 A/B,只能說明最後使用的價位。本例沒有設定下一筆賣單,所以下一筆賣價未知,不是零,也不能假定仍為2.2 A/B。

起始報價相同,不代表成本與風險相同

上面的總投入來自特意設定的賣單與儲備。對齊起始2 A/B與買入數量,並沒有對齊兩邊的資本、流動性分布或風險,也沒有包含真實交易的全部成本。改變訂單簿的掛單,結果就會改變,因此這個例子不能證明哪一種機制普遍更便宜、更好或更安全。

「訂單簿」或「AMM」的名稱,也不能單獨回答誰保管資產、撮合在哪裡進行、如何結算,或誰有資格使用服務。若交易的是事件市場,結果判定規則還是另一個問題;定價機制的名稱並不證明事件的真實機率。本例也沒有確認HypaForecast目前採用哪一種撮合或定價引擎。

常見問題

訂單簿和AMM最主要的差別是什麼?

訂單簿記錄掛單的價格與數量;本文選定的AMM模型則依池內儲備與固定乘積規則計算交換所需數量。AMM有不同設計,這一條公式不能代表所有AMM或協議版本。

為何起始報價相同,整筆成本卻不同?

起始報價只描述起點。接下來的總投入取決於整批數量會用到哪些賣單,或池內儲備會如何依指定公式變動。本例還排除了費用等成本,沒有證明哪種機制普遍更便宜。

平均成交價等於交易後的池內報價嗎?

不等於。本例收到10 B的平均成交價是20/9 A/B,成交後邊際價格則是200/81 A/B。後者描述新狀態下極微小的變動,既不是前10 B的平均,也不是再買入有限數量時可直接成交的報價。

最後以每單位B為2.2 A成交,下一筆也一定相同嗎?

不一定。這10 B已用完兩筆指定賣單,最後的2.2 A/B不會告訴你下一筆賣價。本例沒有提供後續掛單,也不保證實際市場的掛單數量或價格會維持可用。

從訂單簿或AMM的名稱,能判斷保管方式、結果判定或使用資格嗎?

不能。這些名稱只說明交易設計的一部分,不能單獨確認保管、撮合位置、結算、事件結果判定、真實機率或使用資格。本例也不代表HypaForecast目前的交易引擎或任何人的服務使用資格。

繼續了解交易與成本

接著從交易步驟、費用與平台條件,了解價格以外還需要確認的資訊。

資料來源與說明範圍

  1. Uniswap v2 Pricing:特定版本的儲備定價與計入費用的規則;本文另設不計費用的模型。
  2. Automated Market Makers (AMMs) Explained:基礎設施供應商的教育文章,本文只引用AMM存在不同設計的背景。
  3. Trading in the DeFi era: automated market-maker:2021年12月6日的研究專欄,呈現作者觀點,不代表BIS機構立場;本文未使用其中圖像。
  4. Uniswap v2 SDK: Pricing:v2 SDK文件中,儲備比率、極微小交易價格與有限交易平均價格的區分。

Uniswap相關文件的上述文字範圍於2026年10月22日確認;Chainlink與BIS資料沿用2026年10月19日的文字確認記錄。這些是資料確認日期,不是來源的發表日期。文中的A、B、掛單與計算都是虛構例子,不是即時價格、事件機率或實際交易。

HypaForecast發布教育指南,並營運預測市場。本文使用虛構代幣說明定價機制,不代表任何平台的即時報價、現行機制或你的使用資格。