TWAP 與可執行額度
用成熟 TWAP 釋放上限、spot 即時限制和借貸庫存共同決定最大可執行做空額度。
三道不同的約束
| 約束 | 回答的問題 | 資料來源 |
|---|---|---|
| 風險曲線 | 目前允許多少理論淨賣出額 | 固定參數模型 |
| TWAP + spot | 哪一部分上漲已獲確認、目前價格是否收縮額度 | V2 累計價格與即時儲備 |
| 可借 Token / 精確輸出 | 庫存能否實際賣出這麼多 USDC | Engine 帳本、Token 餘額、即時 Pair |
最終能開倉的金額取決於三者,而不是某一張市值表。
1. 累計價格與 TWAP
V2 記錄的是 external6 / token18 的累計價格。設 A(t) 是按 2¹¹² 縮放的累計值,兩次觀察間隔為 Δt:
轉換為 native18 市值:
2. 最小視窗不是固定滾動視窗
參考 Engine 家族使用 300 秒最小觀察視窗:
Δt < 300 秒:觀察更新 不寫入觀察狀態,不抬升已確認上限。Δt ≥ 300 秒:本次平均涵蓋自上一次已提交觀察起的整個時間段。
3. 已確認上限:只升不降
初始化時,容量上限從固定 M₀ 及 C(M₀) 開始;並不是一開始容量為零。此時還沒有經過時間的 TWAP 樣本。
對成熟樣本,候選市值為:
只有候選值高於歷史上限,才抬升它。用 H 表示已確認市值上限、 表示已確認容量上限:
普通價格下跌不會降低這兩個歷史已確認上限。但實際可用額度仍會被 spot 立即限制。
4. spot 即時約束
如果現有全部部位的淨賣出規模為 O = totalOpenShortNative:
- spot 下跌:即時壓縮可開額度,無需等待新 TWAP。
- spot 恢復:可在已確認上限內立即恢復額度。
- spot 創出更高價格:超出已確認上限的部分仍需成熟 TWAP。
- spot 低於
M₀:模型仍有M₀下限;不能把這裡理解為全市場風險消失。
情境範例
假設歷史已確認市值上限為 10,000,000 USDC,已有淨賣出規模 8,000 USDC:
| 目前 spot 市值 | 有效容量(約 USDC) | 剩餘新開淨賣出額度(約 USDC) |
|---|---|---|
| 25,000,000 | 55,056.240673 | 47,056.240673;上漲超出舊上限的部分未釋放 |
| 1,000,000 | 10,518.095455 | 2,518.095455;即時收縮 |
| 10,000,000 | 55,056.240673 | 47,056.240673;舊上限內恢復 |
該範例只計算風險層。實際 Pair 的 Token 借貸約束可能使最後可執行值更小。
5. Token 庫存約束
引擎實際 Token 餘額還必須不小於可借帳面餘額。額外轉入 Token 不會自動擴大 L₀;如果餘額不足,Quoter 會報錯,而不是繼續給出看似可用的額度。
設 T 為 Pair Token18 儲備、R 為 external6 USDC 儲備、L 為可借 Token18。為保證 V2 精確輸出反算不超過 L,庫存對應的最大 external6 淨賣出量為:
L = 0 時單獨傳回零。
把該預覽額度向下轉換到 external6,再取較小值:
如果 Qsold,max = 0,名目本金也為零。這裡的加 1 / 減 1 都是 native18 原始整數單位,不是 1 USDC。
6. 報價不是成交保證
- 預覽與確認狀態不是同一個欄位;前端應分別展示。
- 報價之後可能發生 swap、別人的開倉、稅 Token 清算或時間推進。
- 可執行名目本金仍不是完整交易報價:使用者還需滿足抵押金、Token 借入上限和六位精確淨輸出等要求。