Pythonquantlib
QuantLib-Python:將期權的 NPV 拆分為內在和時間
我現在正在閱讀 Goutham Balaraman 和 Luigi Ballabio 的“食譜”。順便說一下,對 QuantLib-Python 的一個很好的介紹和一個很好的起點 :-)
在第四部分中,有以下範例為 Black&Scholes 的簡單期權定價:
from QuantLib import * today = Date(7, March, 2014) Settings.instance().evaluationDate = today # The Instrument option = EuropeanOption( PlainVanillaPayoff(Option.Call, 100.0), EuropeanExercise(Date(7, June, 2014))) # The Market u = SimpleQuote(100.0) # set todays value of the underlying r = SimpleQuote(0.01) # set risk-free rate sigma = SimpleQuote(0.20) # set volatility riskFreeCurve = FlatForward(0, TARGET(), QuoteHandle(r), Actual360()) volatility = BlackConstantVol(0, TARGET(), QuoteHandle(sigma), Actual360()) # The Model process = BlackScholesProcess( QuoteHandle(u), YieldTermStructureHandle(riskFreeCurve), BlackVolTermStructureHandle(volatility)) # The Pricing Engine engine = AnalyticEuropeanEngine(process) # The Result option.setPricingEngine(engine) print( "NPV: ", option.NPV() )
程式碼吐出期權的 NPV。
在大學裡,我曾經了解到期權的價值可以分為“內在”和“時間”部分。是否可以使用 QouantLib-Python 實現這一目標?
NPV_intrinsic = max([ 0 , u.value() - option.getStrike() ])
以上不起作用,因為’option.getStrike()‘不存在:-(
非常感謝!
您要查找的方法是
option.payoff()
,它將期權的收益 P 作為函式對象返回;內在價值將是P(u.value())
。但是,該方法在 C++ 中可用,但尚未導出到 Python。我建議您在https://github.com/lbalabio/QuantLib-SWIG/issues上打開一個關於此的問題,以便開發人員可以獲取它。