Python
如何在 QuantLib 中同時使用收益率曲線和貼現曲線對看漲期權進行估值
我是 QuantLib 的新手,我正在嘗試評估一個簡單的歐洲電話。QuantLib 的 Black-Scholes-Merton 過程對我來說很有意義,但我不知道如何將貼現曲線納入其中。
請參閱下面的 Python 範例。現在這個過程需要一條指數曲線和一條紅利曲線。我需要採用指數曲線、股息曲線和貼現曲線的過程。我怎樣才能在 QuantLib 中做到這一點?
def call_atm_test(): """Returns price of a european option using black-scholes""" today = ql.Date(22, ql.May, 2019) ql.Settings.instance().evaluationDate = today option = ql.EuropeanOption(ql.PlainVanillaPayoff(ql.Option.Call, 2856.27), ql.EuropeanExercise(ql.Date(22, ql.May, 2020))) u = ql.SimpleQuote(2856.27) r = ql.SimpleQuote(0.0223) d = ql.SimpleQuote(0.01879) sigma = ql.SimpleQuote(0.15259) riskFreeCurve = ql.FlatForward(0, ql.TARGET(), ql.QuoteHandle(r), ql.Actual360()) dividend_yield = ql.FlatForward(0, ql.TARGET(), ql.QuoteHandle(d), ql.Actual360()) volatility = ql.BlackConstantVol(0, ql.TARGET(), ql.QuoteHandle(sigma), ql.Actual360()) process = ql.BlackScholesMertonProcess(ql.QuoteHandle(u), ql.YieldTermStructureHandle(dividend_yield), ql.YieldTermStructureHandle(riskFreeCurve), ql.BlackVolTermStructureHandle(volatility)) engine = ql.AnalyticEuropeanEngine(process) option.setPricingEngine(engine) result = option.NPV() return result
在 QuantLib 的 C++ 版本中,可以將單獨的貼現曲線傳遞給引擎,但該功能不會在 Python 中導出(因此,正如@Cornholio 所說,無風險曲線也用於貼現)。如果您在 Python 中需要此功能,請在https://github.com/lballabio/QuantLib-SWIG/issues打開一個問題。
基本上,你
riskFreeCurve
同時是一條收益率曲線和一條貼現曲線。QuantLib 只是將其保存為YieldTermStructure
. 你可以看到print(riskFreeCurve.discount(ql.Date(22, ql.May, 2020))) print(riskFreeCurve.zeroRate(ql.Date(22, ql.May, 2020), ql.Actual360(), ql.Continuous))
給你折扣因子和收益率:
0.9775834043036867 2.230000 % Actual/360 continuous compounding