BigShort Docs

TWAP 與可執行額度

用成熟 TWAP 釋放上限、spot 即時限制和借貸庫存共同決定最大可執行做空額度。

三道不同的約束

約束回答的問題資料來源
風險曲線目前允許多少理論淨賣出額固定參數模型
TWAP + spot哪一部分上漲已獲確認、目前價格是否收縮額度V2 累計價格與即時儲備
可借 Token / 精確輸出庫存能否實際賣出這麼多 USDCEngine 帳本、Token 餘額、即時 Pair

最終能開倉的金額取決於三者,而不是某一張市值表。

1. 累計價格與 TWAP

V2 記錄的是 external6 / token18 的累計價格。設 A(t) 是按 2¹¹² 縮放的累計值,兩次觀察間隔為 Δt:

P―raw,X112=⌊A(t1)−A(t0)Δt⌋

轉換為 native18 市值:

MTWAP=⌊P―raw,X112S10122112⌋

2. 最小視窗不是固定滾動視窗

參考 Engine 家族使用 300 秒最小觀察視窗:

  • Δt < 300 秒:觀察更新 不寫入觀察狀態,不抬升已確認上限。
  • Δt ≥ 300 秒:本次平均涵蓋自上一次已提交觀察起的整個時間段。

3. 已確認上限:只升不降

初始化時,容量上限從固定 M₀ 及 C(M₀) 開始;並不是一開始容量為零。此時還沒有經過時間的 TWAP 樣本。

對成熟樣本,候選市值為:

Mcandidate=max(M0,min(MTWAP,Mt))

只有候選值高於歷史上限,才抬升它。用 H 表示已確認市值上限、CHC_H 表示已確認容量上限:

H′=max(H,Mcandidate),CH′=max(CH,C(H′))

普通價格下跌不會降低這兩個歷史已確認上限。但實際可用額度仍會被 spot 立即限制。

4. spot 即時約束

Ms=min(max(Mspot,M0),Mt)Meffective=min(H,Ms)Ceffective=min(CH,C(Meffective))

如果現有全部部位的淨賣出規模為 O = totalOpenShortNative:

Cremaining=max(Ceffective−O,0)
  • spot 下跌:即時壓縮可開額度,無需等待新 TWAP。
  • spot 恢復:可在已確認上限內立即恢復額度。
  • spot 創出更高價格:超出已確認上限的部分仍需成熟 TWAP。
  • spot 低於 M₀:模型仍有 M₀ 下限;不能把這裡理解為全市場風險消失。

情境範例

假設歷史已確認市值上限為 10,000,000 USDC,已有淨賣出規模 8,000 USDC:

目前 spot 市值有效容量(約 USDC)剩餘新開淨賣出額度(約 USDC)
25,000,00055,056.24067347,056.240673;上漲超出舊上限的部分未釋放
1,000,00010,518.0954552,518.095455;即時收縮
10,000,00055,056.24067347,056.240673;舊上限內恢復

該範例只計算風險層。實際 Pair 的 Token 借貸約束可能使最後可執行值更小。

5. Token 庫存約束

Lavailable=L0−Lbad−Lborrowed

引擎實際 Token 餘額還必須不小於可借帳面餘額。額外轉入 Token 不會自動擴大 L₀;如果餘額不足,Quoter 會報錯,而不是繼續給出看似可用的額度。

設 T 為 Pair Token18 儲備、R 為 external6 USDC 儲備、L 為可借 Token18。為保證 V2 精確輸出反算不超過 L,庫存對應的最大 external6 淨賣出量為:

EL=⌈L⋅9,970⋅RT⋅10,000+L⋅9,970⌉−1

L = 0 時單獨傳回零。

把該預覽額度向下轉換到 external6,再取較小值:

Eexec=min(⌊Cremaining,preview1012⌋,EL)Qsold,max=Eexec1012Nmax=⌈(Qsold,max+1)10,0009,900⌉−1

如果 Qsold,max = 0,名目本金也為零。這裡的加 1 / 減 1 都是 native18 原始整數單位,不是 1 USDC。

6. 報價不是成交保證

  • 預覽與確認狀態不是同一個欄位;前端應分別展示。
  • 報價之後可能發生 swap、別人的開倉、稅 Token 清算或時間推進。
  • 可執行名目本金仍不是完整交易報價:使用者還需滿足抵押金、Token 借入上限和六位精確淨輸出等要求。
BigShort Protocol · ARC發行 · 交易 · 做空