BigShort Docs

資金費 Funding

基於借貸利用率的二次日費率曲線、毛名義金額計費與 Q128 時間積分,含精確舍入算例。

Funding 是 Short 部位持續占用借貸能力所支付的 BNB 費用。它不是在多空雙方之間轉移的永續合約資金費,也不是按即時 Token 市價計算的借款利息。目前版本由 Short 部位支付,進入獨立 fundingNative 收入帳本。

該機制分兩層:Token 借貸利用率決定費率,BNB 毛名目份額決定各部位支付金額。

借貸利用率與 Funding 日率的二次關係

圖示採用 當前 BSC 組引數。日率曲線不是投資回報率。

1. 參數與單位

符號 / 參數數值與單位用途
L0L_01,997,367,528 Token當前 BSC 組初始借貸本金
LbadL_{\mathrm{bad}}Token,18 位精度已確認未回收借貸本金
BtotalB_{\mathrm{total}}Token,18 位精度目前所有活動部位借款量
UUbps,10,000 = 100%已向下量化的庫存利用率
起點 / 終點1,000 / 9,000 bps10% / 90% 利用率
AA99,990 ppm / 日曲線增量係數
bb10 ppm / 日最低日費率
HiH_iBNB 最小單位,18 位部位 shortShares,以毛名目金額計
QQ21282^{128}Funding 定點指數精度

1,000,000 ppm = 100%,一天按 86,400 秒計。以 ether 表達的 BNB 參數只是 Solidity 的 101810^{18} 縮放語法。

2. 利用率與二次曲線

先剔除已確認壞帳:

Leffective=L0−LbadL_{\mathrm{effective}}=L_0-L_{\mathrm{bad}}
U=⌊Btotal⋅10,000Leffective⌋U=\left\lfloor\frac{B_{\mathrm{total}}\cdot10{,}000}{L_{\mathrm{effective}}}\right\rfloor

若有效本金為零,程式碼直接令 U=10,000U=10{,}000。直接給 Engine 捐贈 Token 不增加 L0L_0,不能繞過帳本降低利用率。

在 1,000<U<9,0001{,}000<U<9{,}000 時,正規化變數同樣按整數向下捨入:

x=⌊(U−1,000)⋅10,0008,000⌋x=\left\lfloor\frac{(U-1{,}000)\cdot10{,}000}{8{,}000}\right\rfloor

日費率 rdr_d 的單位為 ppm / 日:

rd(U)={10,U≤1,00010+⌊99,990⋅x210,0002⌋,1,000<U<9,000100,000,U≥9,000r_d(U)=\begin{cases} 10,&U\le1{,}000\\ 10+\left\lfloor\dfrac{99{,}990\cdot x^2}{10{,}000^2}\right\rfloor,&1{,}000<U<9{,}000\\ 100{,}000,&U\ge9{,}000 \end{cases}

目前實作是二次曲線(平方項),不是三次曲線。利用率在 10% 以下時日費率為 0.001%;達到 90% 後為 10% / 日。高利用率下的資金成本會顯著上升,不能把最低費率當作固定收費標準。

利用率 xx 整數日費率 換算日百分比 1 BNB 份額一天費用約值
≤10% 不適用 10 ppm 0.001% 0.000010 BNB
30% 2,500 6,259 ppm 0.6259% 0.006259 BNB
50% 5,000 25,007 ppm 2.5007% 0.025007 BNB
70% 7,500 56,254 ppm 5.6254% 0.056254 BNB
≥90% 不適用 100,000 ppm 10% 0.100000 BNB

表中費用為便於閱讀的十進位約值;鏈上實際值還要經過以下 Q128 整數計算。

3. 按秒累計、按份額分攤

設距上次更新經過 Δt\Delta t 秒,全域 Funding 指數為 II,每一段費率固定的區間增加:

ΔI=⌊rd⋅Δt⋅Q1,000,000⋅86,400⌋\Delta I=\left\lfloor\frac{r_d\cdot\Delta t\cdot Q}{1{,}000{,}000\cdot86{,}400}\right\rfloor
Inew=Iold+ΔII_{\mathrm{new}}=I_{\mathrm{old}}+\Delta I

部位 ii 記錄其上次結算快照 IiI_i,未付金額為:

Fi=⌊Hi⋅(I−Ii)Q⌋F_i=\left\lfloor\frac{H_i\cdot(I-I_i)}{Q}\right\rfloor

兩步均向下捨入。跨多個檢查點應分別計算 ΔI\Delta I 再相加,不應無條件用一個連續浮點公式替代;極小的整數捨入差異不代表多收或少收了一筆完整費用。

為什麼不會隨瞬時市價重估舊 Funding?

  • 日費率來自 Token 庫存帳本,不直接依賴 Pair 當時價格。
  • 部位份額來自毛名目金額,不是借入 Token 數量 × 檢查點現貨價。
  • 開倉、加倉、部分平倉和清算在改變借款量前先更新指數,將舊時間段按舊利用率鎖定。
  • 壞帳恢復僅允許在沒有活動 Token 借款時進行,避免把恢復後的較低利用率追溯套用於舊區間。

市場交易仍可能改變將來新倉的借入 Token 數量,從而間接影響未來利用率;「不按瞬時市價計費」並不等於未來費用完全不受市場行為影響。

4. 結算如何扣款

設目前部位資金為 MM:

Fpaid=min⁡(Fi,M),Funpaid=Fi−FpaidF_{\mathrm{paid}}=\min(F_i,M),\qquad F_{\mathrm{unpaid}}=F_i-F_{\mathrm{paid}}

已付部分從 marginNative 轉入 fundingNative,不減少 collateralNative 的歷史抵押帳面值;應付但未付部分不會憑空成為已實現協議收入。

操作 Funding 處理
新開倉 更新全域指數,新份額從目前快照開始計費,不承擔開倉前區間
加倉 先按舊份額結清舊區間;再加入新份額,此後按合併份額計費
追加抵押 先加入資金,再結清所有份額的費用,允許新資金補足舊欠費
全部平倉 先結清全部份額,再進行各自的安全檢查
部分平倉 只結算關閉份額;剩餘份額保留舊快照和對應歷史欠費
清算 優先結清 Funding;付不清時進入 Funding 資不抵債專用分支

平倉與清算先受開/加倉區塊鎖約束:最新開倉或加倉在區塊 N,最早在 N+1 才能部分/全平倉或單筆/批次清算。追加抵押和部分平倉不重置該鎖。當前版本不提供存續倉位保證金提款,部分平倉不返現。

除清算外,若本次要求結算的那部分 Funding 仍有未支付額,操作回退;部分平倉後,剩餘份額的歷史 Funding 可以繼續待結算。部分平倉不能透過縮小份額抹去歷史 Funding。

5. 當前 BSC 組引數精確算例

以下是獨立的 Funding 算例:設毛名義份額為 1 BNB,已借出 132,259,540.801155254764734088 Token,有效本金為 1,997,367,528 Token,沒有其他倉位與壞賬。

U=⌊132,259,540.801155254764734088⋅10,0001,997,367,528⌋=662U=\left\lfloor\frac{132{,}259{,}540.801155254764734088\cdot10{,}000}{1{,}997{,}367{,}528}\right\rfloor=662

量化利用率為 6.62%,低於 10%,故日費率為 10 ppm。份額 H=1018H=10^{18} 對應 1 BNB 毛名義本金;保持上述利用率一天,僅在一天末更新一次:

ΔI=⌊10⋅21281,000,000⌋\Delta I=\left\lfloor\frac{10\cdot2^{128}}{1{,}000{,}000}\right\rfloor
F=⌊1018⋅ΔI2128⌋=9,999,999,999,999F=\left\lfloor\frac{10^{18}\cdot\Delta I}{2^{128}}\right\rfloor =9{,}999{,}999{,}999{,}999

即 0.000009999999999999 BNB,比十進位制理想值 0.00001 BNB 少 1 wei。若另設獨立場景使利用率穩定在 50%,同樣 1 BNB 份額一天的精確費用為 0.025006999999999999 BNB。這些是費用算例,不是固定收益、倉位規模限制或利率承諾。

加倉前後分段

若一個部位先持有 H1H_1 兩天,再增加 ΔH\Delta H,則舊兩天使用 H1H_1 結算;加倉之後才使用 H1+ΔHH_1+\Delta H。即使加倉使日費率從低檔跳到高檔,也不能把新費率回溯計入舊兩天。

BigShort Protocol · BSC發行 · 交易 · 做空