← 回 blog 列表 · 2026-05-10
我把 Bitfinex Funding 回測了 5.5 年 — 這是真實能賺到的數字
從 2020-11 到 2026-04 的完整 walk-forward 回測。58 個 90 天 OOS 視窗、真實成交模型、prepayment hazard。中位約 16% net APY,p5-p95 區間 6.7%-27.3%。
「Bitfinex Funding 平均年化多少?」 — 這個問題沒有單一答案。利率每天變動、每年市場 regime 不同、不同 strategy 結果差很大。
我用 Bitfinex 公開的 5.5 年 candle 資料,跑了一個 walk-forward 回測 — 想知道如果過去 5.5 年都跑同一個策略,實際會賺多少。
這篇文章是回測結果完整公開: 中位 APY、最差 5%、最好 95%、跨 regime 表現。所有數字都是 net(扣完 Bitfinex 15% 抽成),由 scripts/realistic_backtest.py 對 data/history/ 跑出。
TL;DR
- fUSD balanced 中位 net APY: 15.7% (p5-p95: 6.7%-27.3%, Sharpe 3.9)
- fUST balanced 中位 net APY: 16.0% (p5-p95: 9.9%-22.9%, Sharpe 6.1)
- 58 個 90 天 OOS 滾動視窗、跨 calm / bull / bear / storm 四種 regime
- 包含真實成交模型(queue rank · time decay · depth gate · spike filter)+ prepayment hazard(借款人提前歸還)
- 行銷頁刻意顯示更低區間(fUSD 12-15%、fUST 11-13%) — 見下方「保守估算」段
為什麼用 Walk-Forward 而不是單一回測
99% 的「我賺 X% APY」claim 是用單一回測算的:
- 抓一段歷史(例如 2024 整年)
- 跑策略
- 算最終收益
問題: 這嚴重 overfit。如果你把 strategy 參數調到剛好在 2024 表現最好,2025 大概率會崩。
Walk-Forward 的做法:
- 切資料成「訓練窗 + 測試窗」(180d train / 90d test)
- 在訓練窗 calibrate 參數
- 在沒看過的測試窗評估
- 把測試窗往前滾 30 天、重複
- 最終 58 個獨立的 90 天 OOS 結果
每個 OOS 結果都是「策略真的不知道未來會發生什麼」的條件下跑出來的。58 個結果的中位 + 分布 = 真實期望表現。
看一張圖 — 結果分布
下圖是 58 個 OOS 視窗的 net APY 分布(fUSD vs fUST balanced preset, λ=1.0 calibrated baseline):

可以看到:
- 兩個中位都集中在 16% 附近,分布有重疊
- fUSD 離散度更大 — 上尾(>25% APY)跟下尾(<8% APY)都比 fUST 厚
- fUST 較收斂 — 區間更窄、Sharpe 較高、極端月份較少
- 「穩定幣 yield = 5%」的直覺遠低於中位;「>30% APY」的標題真的存在但是罕見(>p95)
完整 Preset 對比
| Symbol | Preset | Median APY | p5 | p95 | Sharpe |
|---|---|---|---|---|---|
| fUSD | safe | 14.3% | 4.2% | 21.1% | 4.4 |
| fUSD | balanced | 15.7% | 6.7% | 27.3% | 3.9 |
| fUSD | aggressive | 15.3% | 6.8% | 26.4% | 3.5 |
| fUST | safe | 17.8% | 6.5% | 34.5% | 5.7 |
| fUST | balanced | 16.0% | 9.9% | 22.9% | 6.1 |
| fUST | aggressive | 16.8% | 9.6% | 24.4% | 6.1 |
(Sharpe = mean / std × √N。Sharpe 越高 = 同 mean 但月與月之間波動越小)
兩個出人意料的發現:
- fUSD aggressive 沒贏 balanced(15.3% vs 15.7%)。aggressive floor 過於激進、推離真正會成交的區間,等待沒那麼常出現的 spike。
- fUST safe 中位高過 balanced(17.8% vs 16.0%)、但 p5/p95 區間寬很多。較安全的 floor 成交快、漏單少,代價是月與月波動大。
生產目前兩個 symbol 都跑 balanced。
Prepayment-Hazard 敏感度區間
模型只有一個關鍵不確定參數: 借款人提前歸還強度(λ₀)。我們把它對 0.5×, 1×, 2×, 4× calibrated baseline 跑網格:
| λ scale | fUSD median | fUST median |
|---|---|---|
| 0.5× | 15.7% | 16.3% |
| 1.0× (calibrated) | 15.7% | 16.0% |
| 2.0× | 15.4% | 16.3% |
| 4.0× | 15.7% | 16.4% |
策略對 prepayment 不確定性很穩 — 即使 4× calibrated,中位 APY 變動 < 50 bps。(詳見 Prepayment hazard — 提前還款的真實成本)
為什麼行銷頁顯示更低區間
我們行銷頁顯示「fUSD 12-15%」、「fUST 11-13%」 — 低於上表中位。
原因:
- 回測 ≠ 真實: 5.5 年歷史不保證未來
- survivorship bias 還在: queue 排名是用
funding_stats的 borrowed-amount delta 推估,不是 real order-book replay - 過度行銷的反向操作: 寧可 under-promise over-deliver
實盤跑到行銷區間 = 我們贏。跑到 backtest 中位 = bonus。
跨 Regime 表現 — Storm 不是賺最多,是賺最少
Walk-forward 視窗跨 4 種 regime(用 BTC 30d vol 分位):
- Calm: vol < 25 percentile
- Bull: vol 25-75pct,30d return > 0
- Bear: vol 25-75pct,30d return ≤ 0
- Storm: vol > 75 percentile
| Regime | fUSD median APY | fUST median APY | n anchors |
|---|---|---|---|
| Calm | 17.3% | 17.3% | 34/38 |
| Bull | 15.6% | 15.8% | 49/52 |
| Bear | 13.4% | 18.2% | 48/49 |
| Storm | 8.0% | 9.6% | 26/32 |
這是這份回測最反直覺的發現,推翻了一個常見假設。
直覺(「Storm = 高波動 = funding rate 高 = yield 大」)只對一半: spike rate 確實會出現,但 spike 持續很短,prepayment hazard 模型顯示借款人在 storm 中 deleverage、提前平倉。Bot 在 day 1 抓到 25% rate,借款人 day 4 就還(原本要拿 30 天),實際 APY 崩盤。
Calm 才是穩穩賺的環境 — 穩定 fill、滿期、低取消、模型可以坐穩的 stable rate。
過度承諾警告
幾個誠實的注意事項:
- 5.5 年資料 ≠ 永恆: 包含 2020-2021 牛市(funding rate 平均 30%),拉高歷史平均。如果未來 5 年類似 2018-2019(funding rate 1-3%),實盤會嚴重 underperform 回測。
- Fill model 用 queue-rank proxy: queue position 是從
funding_statsborrowed-amount delta 推估,不是真實 order-book history(Bitfinex 不公開歷史 book snapshots)。proxy 可能高估或低估競爭。 - 黑天鵝: 5.5 年資料只有 1 個重大事件(2022 LUNA 崩盤),樣本太少不能算 tail risk。
- 行銷區間還是高過 Storm regime: 如果你在高波動週開始,預期會跑出低於行銷區間的數字直到 regime 平靜。
過度承諾警告
幾個誠實的注意事項:
- 5.5 年資料 ≠ 永恆: 包含 2020-2021 牛市(funding rate 平均 30%),拉高歷史平均。如果未來 5 年類似 2018-2019(funding rate 1-3%),實盤會嚴重 underperform 回測。
- Survivorship bias: 我用的是 Bitfinex 上已成交的 rate,不是「我能搶到的」 rate。實際 queue 競爭可能讓 fill rate 低於模型。
- 黑天鵝: 5.5 年資料只有 1 個重大事件(2022 LUNA 崩盤),樣本太少不能算 tail risk。
完整方法論文件 → docs/strategy_review.md(repo 公開後)
Code 在哪
完整 backtest code 在:
lending_bot/backtest/fill_model.py— 成交模型lending_bot/backtest/prepayment_model.py— 提前還款 hazardlending_bot/backtest/engine.py— walk-forward orchestrationscripts/realistic_backtest.py— CLI 入口
Repo 上線後可自己跑 reproduce(目前 private,2026 Q3 開源 roadmap)。
延伸閱讀
- 多桶 vs 單桶 — 為什麼分散勝出
- Per-symbol floor — fUSD 跟 fUST 為什麼用不同 floor
- Prepayment hazard — 提前還款的真實成本
- 建構 Yieldsforge 的故事
- 為什麼 Bitfinex Funding 是最好的 USDT 收益
揭露: 本文作者是 Yieldsforge 開發者。回測使用 Bitfinex 公開 candle data,2020-11 至 2026-04。所有 APY 數字 net of 15% Bitfinex fee。本文非投資建議,過去表現不擔保未來。