如何計算反向永續合約的損益?
對於每口合約有固定美元面值的標準反向永續合約,計算交易損益時要使用價格的倒數。結果會以結算幣計價。若直接把價格變動乘以固定的 BTC 數量,算出來的其實是另一種商品的損益。
假設有一個假想的 BTC 反向合約,面值為 $1。你在每 BTC 價格 $50,000 時買進 100,000 口合約,並在 $55,000 時全部平倉。在扣除手續費與資金費率之前:
Q = signed contract count; positive for a long
C = dollar face value per contract
P&L_BTC = Q × C × (1 / entry_price − 1 / exit_price)
= 100,000 × $1 × (1 / $50,000 − 1 / $55,000)
= 0.18181818 BTC
P&L_USD_at_exit = 0.18181818 × $55,000
= $10,000
這個部位的合約面值是 $100,000。它換算成 BTC 的等值會隨價格變動:進場時是 2 BTC,出場時約為 1.818182 BTC。正因為這個換算會變動,我才堅持要把合約規格擺在會計程式碼旁邊。一個叫做 size 的欄位,等於是邀請你在某個星期五晚上,苦苦追查當初到底是指哪個單位。
請確認交易所的乘數、結算幣別與捨入規則。「反向」(Inverse)描述的是損益計算慣例,並不保證在每個交易所裡一口合約都等於一美元。
為什麼帳戶增加的美元金額,會比交易本身賺到的還多?
因為擔保品本身也有價格。
以 1 BTC(價值 $50,000)作為擔保品,並執行上述交易。假設全程沒有存提款、手續費或資金費率,且保證金始終充足。平倉後,帳戶持有 1.18181818 BTC。以每 BTC $55,000 計算,相當於 $65,000。
| 項目 | 計算方式 | 美元變動 |
|---|---|---|
| 原始擔保品 | 1 BTC × ($55,000 − $50,000) | +$5,000 |
| 衍生品損益(以出場價估值) | 0.18181818 BTC × $55,000 | +$10,000 |
| 帳戶總權益 | $65,000 − $50,000 | +$15,000 |
交易帳本與帳戶權益曲線回答的是不同的問題。如果你的報告把整整 $15,000 都標記為訊號損益,等於把「在上漲行情中持有擔保品」的功勞也算給了這個策略。
反過來的情況同樣重要。一個策略可能一邊累積 BTC,一邊美元權益卻在下滑。這兩種圖表本身都沒有錯,問題出在你在兩者之間切換卻不加以說明。
回測報酬應該用 BTC 還是美元來衡量?
在比較策略之前,先決定好報告幣別,然後同時保留兩種視角。以這個帳戶為例,BTC 報酬率是 18.18%;美元報酬率則是 30%。這是同一個結果的兩種衡量方式。
若要跨美股、穩定幣結算期貨與幣本位合約做比較,我通常會用美元帳戶權益作為共通的報告序列。但如果研究任務本身是以累積 BTC 為目標,那 BTC 序列就該被同等重視。這個選擇會改變報酬分佈、回撤幅度與 Sharpe 值。
務必納入一個被動持有擔保品的基準。在這個例子中,單純持有最初的 1 BTC 不動,就能有 10% 的美元報酬率。這個帳戶在這段期間比該基準多出 20 個百分點。這個差額只是描述了這個例子本身,並不代表確立了超額報酬(alpha),也沒有針對過程中承擔的衍生品曝險做調整。
把單位寫進欄位名稱裡。 使用 equity_btc、equity_usd 和 pnl_btc。一旦兩種合約類型出現在同一份報告中,一個赤裸裸的 equity 欄位就會變得很危險。
回測系統該如何記錄以 BTC 支付的手續費與資金費率?
實際的幣本位資金變動發生時,就要如實記錄。BTC 手續費會減少 BTC 錢包餘額;收到的 BTC 資金費率則會增加餘額。這些金額應依照適用的合約規則與歷史費率來推算。
接著要區分「交易歸因」與「帳戶估值」這兩件事。當 BTC 交易價為 $50,000 時支付了 0.001 BTC 的手續費,支付當下的價值是 $50。如果之後 BTC 漲到 $55,000,這個帳戶會比一個完全相同、但從未支付這筆手續費的帳戶少 $55。多出來的那 $5,其實是那筆已經離開帳戶的幣,後續價格變動所造成的差異。
這兩個數字都有其用處。若只是把歷史上以美元計價的現金流加回起始美元權益,除非你明確地做過調節,否則會漏掉這個幣別效應。
我個人偏好以幣本位帳本作為會計的原始資料來源,美元估值則由此推導而來。在每個快照時點,用一個有明確記錄、且時間戳對齊的換算價格,去為錢包餘額加上未實現幣本位損益進行估值。任何合約標記價格與報告換算價格之間刻意存在的差異,都應該記錄下來。
哪些測試能揪出反向合約的會計錯誤?
我會從那種答案能用紙筆算出來的極小型合成價格路徑開始測試。市場歷史數據非常擅長把單位錯誤藏在一條看似合理的權益曲線之中。
| 測試(不含成本) | 預期結果 |
|---|---|
| 以相同價格進場與出場 | BTC 計價的衍生品損益為零 |
| 在相同價格路徑上反轉部位方向 | 衍生品損益的正負號會完全反轉 |
| 持有 1 BTC、無衍生品部位;價格從 $50,000 漲到 $55,000 | BTC 權益維持在 1;美元權益增加 $5,000 |
| 以當前標記價格平掉範例部位 | 未實現損益轉入錢包,且不改變總權益 |
最後這項測試能抓出重複計算的問題:引擎把已實現損益入帳了,卻忘了把對應的未實現金額扣除。此外也要測試部分平倉的情境。只有被平掉的那部分合約應該結算其損益;剩下的部位則必須依照該交易所的會計慣例,保留正確的進場成本基礎。
針對反向合約策略,AI 研究代理人應該回報哪些內容?
合約口數與乘數、結算幣別、起始擔保品、幣本位現金流,以及以聲明的報告幣別表示的權益。除了策略曲線之外,也要呈現被動持有擔保品的曲線,並對兩者之間的差異做出調節說明。
在一個自主化的研究流程中,我會把這個調節過程當作接受一份回測結果的必要條件。最佳化器會直接為你給它的任何數字排序打分。如果上漲的 BTC 資產負債表被誤記到交易訊號的功勞上,它就會很樂意地去最佳化這個會計錯誤。
一份有用的報告,應該要能精確到每一筆結算紀錄,解釋清楚為什麼這筆交易賺了 $10,000,帳戶卻增加了 $15,000。這樣的結果,才是另一位研究人員真正能夠稽核的。
← 所有文章
