BigShort Docs

TWAP 與可執行額度

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

三道不同的約束

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

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

1. 累計價格與 TWAP

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

P‾raw,X112=⌊A(t1)−A(t0)Δt⌋\overline P_{\mathrm{raw},X112} =\left\lfloor\frac{A(t_1)-A(t_0)}{\Delta t}\right\rfloor

轉換為 native18 市值:

MTWAP=⌊P‾raw,X112 S2112⌋M_{\mathrm{TWAP}}= \left\lfloor \frac{\overline P_{\mathrm{raw},X112}\,S}{2^{112}} \right\rfloor

BNB 與 WBNB 均為 18 位,市值直接按累計價格乘固定曲線供應計算,不使用額外的精度轉換系數。當前組曲線供應為 10,000,000,000 Token。

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

當前 BSC 經濟組使用 300 秒最小觀察視窗:

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

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

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

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

Mcandidate=max⁡(M0,min⁡(MTWAP,Mt))M_{\mathrm{candidate}} =\max\bigl(M_0,\min(M_{\mathrm{TWAP}},M_t)\bigr)

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

H′=max⁡(H,Mcandidate),CH′=max⁡(CH,C(H′))H'=\max(H,M_{\mathrm{candidate}}), \qquad C_H'=\max(C_H,C(H'))

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

4. spot 即時約束

Ms=min⁡(max⁡(Mspot,M0),Mt)M_s=\min\bigl(\max(M_{\mathrm{spot}},M_0),M_t\bigr)
Meffective=min⁡(H,Ms)M_{\mathrm{effective}}=\min(H,M_s)
Ceffective=min⁡(CH,C(Meffective))C_{\mathrm{effective}}=\min\bigl(C_H,C(M_{\mathrm{effective}})\bigr)

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

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

情境範例

目前 spot 市值 有效容量(約 BNB) 剩餘額度(約 BNB) 含義
25,000 39.627904792016544177 37.627904792016544177 超出舊上限的上漲尚未釋放
1,000 6.003373265906041571 4.003373265906041571 spot 下跌即時收縮
10,000 39.627904792016544177 37.627904792016544177 恢復到舊上限內

表中為當前經濟組整數實現復算,不是任何實際市場的實時報價。實際 Pair 借貸庫存、全域性/市場暫停與最小名義本金等檢查可能進一步限制可執行額度。

5. Token 庫存約束

Lavailable=L0−Lbad−LborrowedL_{\mathrm{available}}=L_0-L_{\mathrm{bad}}-L_{\mathrm{borrowed}}

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

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

EL=⌈L⋅9,975⋅RT⋅10,000+L⋅9,975⌉−1E_L=\left\lceil \frac{L\cdot9{,}975\cdot R}{T\cdot10{,}000+L\cdot9{,}975} \right\rceil-1

L = 0 時單獨傳回零。

BNB 和 WBNB 精度相同,直接比較預覽風險額度與庫存額度:

Qsold,max=min⁡(Cremaining,preview,EL)Q_{\mathrm{sold,max}}=\min\left(C_{\mathrm{remaining,preview}},E_L\right)

Quoter 還會讀取當前 Factory 最小毛名義本金與 Engine 有效暫停狀態。若正在暫停,或算出的最大毛名義本金低於當前下限,回傳的可執行淨賣出額和名義本金均為零;原始風險容量與庫存容量仍可用於診斷。

6. 報價不是成交保證

  • 預覽與確認狀態不是同一個欄位;前端應分別展示。
  • 報價之後可能發生 swap、別人的開倉、稅 Token 清算或時間推進。
  • 可執行名義本金仍不是完整交易報價:使用者還需滿足當前最小毛名義本金、暫停狀態、新增抵押與 Token 借入上限等要求。開/加倉後的區塊鎖是另一個維度:區塊 N 增加敞口後,最早 N+1 才能部分/全平倉或單筆/批次清算,不是等待本頁的 300 秒視窗。
BigShort Protocol · BSC發行 · 交易 · 做空