Quantlib Black Model for Commodity Options (Interest Rate Options) 對 gamma 和價格與 BBG 的關係非常輕,模型不正確嗎?
我正在使用 QuantLib 開發人員範例來嘗試為 TY 選項定價。Delta 非常接近,但價格和 gamma 相差甚遠(幾乎是 2 倍)。
是我用錯了模型還是模型錯了?
這是程式碼
import QuantLib as ql import math calendar = ql.UnitedStates() bussiness_convention = ql.ModifiedFollowing settlement_days = 0 day_count = ql.ActualActual() interest_rate = 25/10000 calc_date = ql.Date(1,7,2021) yield_curve = ql.FlatForward(calc_date, interest_rate, day_count, ql.Compounded, ql.Continuous) ql.Settings.instance().evaluationDate = calc_date option_maturity_date = ql.Date(23,7,2021) strike = 133 spot = 132.40625 # futures price volatility = 3.896/100 flavor = ql.Option.Call discount = yield_curve.discount(option_maturity_date) strikepayoff = ql.PlainVanillaPayoff(flavor, strike) T = yield_curve.dayCounter().yearFraction(calc_date, option_maturity_date) stddev = volatility*math.sqrt(T) black = ql.BlackCalculator(strikepayoff, spot, stddev, discount) print("Option Price: " + str(black.value() )) print("Delta: " + str(black.delta(spot) )) print("Gamma: " + str(black.gamma(spot) )) print("Theta: "+ str(black.theta(spot, T) )) print("Vega: "+ str(black.vega(T) ))
和輸出
簡短的回答:
- Gamma 的計算方式不同;
- 交易所以 QuantLib 不計算的方式報價
長答案:BBG 的 DES 頁面將 Gamma 計算為底層的 1% chg - DES 頁面也沒有靈活性,通常這不是他們提供的最佳計算。
但是,您可以在其 OTC 定價器中載入任何列出的選項以獲取
listed
模式。TYQ1C 133.00 COMB Comdty OVME
載入程式碼(在底層證券旁邊)。您以“錯誤”的方式計算它。此程式碼以價格報價(請參閱OMON
或HP)
- 所以 IVOL 是結果,而不是輸入。價格(股票)將使用上市價格進行顏色編碼。就 Gamma 而言 - 點擊設置(在 OVME 中) - 使用者設置 - 定價 - 希臘部分 - Gamma - 設置為
1 unit underly chg
~27。在同一頁面上,您可能會看到fraction of days
打勾。所以到期時間是幾分鐘而不是一整天(只剩下 21 天)。我認為 API 欄位 (DES) 也可以做到這一點,但通常 BBG 使用 OV 定價器和 MARS 比這個FLDS
API 東西更強大(但在這裡非常接近,所以應該沒問題)。我無法評論 quantlib,但這真的是 PDE 求解器嗎?那是美國的選擇。該程式碼
ql.PlainVanillaPayoff
讓我想知道這是否不僅僅是標準的黑色?我可能錯了,現在我懶得嘗試了。在任何情況下,PDE 求解器都不是微不足道的,並且會產生一些差異。編輯
謝謝@mmencke。實際上沒有看到你引用了 qlib 文件,反正 Danny。它表明它是標準的黑色。也就是說,有了這份契約——理論上幾乎沒有區別。您可以通過包含等於 r 的人為股息並使用未來價格作為基礎價格來破解 BS American 定價器(如果有的話)。
老實說,我沒有正確看待這個問題,只是因為我知道伽瑪設置而迅速做出了回應,並且該價格是市場報價。我現在在 OVME 中嘗試過,它基本上是相同的。雖然以上所有內容仍然適用,但理解這些引用是棘手的部分,而不是 qlib 關心的事情。畢竟它只是黑色(並且沒有提及這是什麼契約)。從技術上講,價格和收益率之間也有區別,但 BBG 僅提供與 Black 一致的 TYA 價格 vol。您可以查看並查看
EDA Cmdty
對數正態空間和正態空間中的 yield vol。OVDV``OVME
報價:
OVME 中顯示的股票價值為 1 點。報價以點數和分數為單位,以 100 點為基礎。在您的螢幕截圖中,價格為
0'17
15.625 美元,Tick Value 為 15.625 美元。因此,您在 OVME 上看到的當天報價是
- 價格(股份):00'17(報價)
- 價格(總):價格(份額)*Tick Value = 281.25
- 價格(%):每股價格(總)/基礎價格 => $ (281.25/1000)/132-13 =0.002124 $
qlib 顯示的內容實際上都不是。這是每股價格(總)= $ 263.9/1000 = 0.2639 $ 在下面的螢幕截圖中。我手動覆蓋 OVME 以使用您的輸入。因此價格不再是 00'17 而是 00'16 7/8 (它現在像你的例子一樣解決價格問題)。右側的螢幕截圖使用了更高的名義值,因此您可以看到精確的小數 - 以及兩者的接近程度 $ 236895.16/1000000=0.26389516 $ .
現在基本上一切都匹配了。Vega 只是在擴展,而 Theta 肯定不是 Bloomberg 的教科書 theta。我習慣將 theta 計算為真正的一日 theta(一種通過減少到期時間來重新定價,保持其他所有條件相同)。我手頭沒有例子,但如果到期時間很短,教科書的 theta 可以超過期權的實際市場價值。