Soy nuevo en QuantLib, y estoy intentando valorar una simple llamada europea. El proceso Black-Scholes-Merton de QuantLib tiene sentido para mí, pero no sé cómo incorporar una curva de descuento en él.
A continuación se muestra mi ejemplo actual en Python. En este momento el proceso toma una curva de índice y una curva de dividendo. Necesito que el proceso tome una curva de índice, una curva de dividendo y una curva de descuento. ¿Cómo puedo lograr esto en 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