Me gustaría simular una volatilidad local subyacente $$ dS_t = S_t\sigma(t, S_t)dW_t $$ y he revisado el LocalVolTermStructureHandle
de QuantLib para hacerlo.
Hasta ahora:
today = ql.Date().todaysDate()
calendar = ql.NullCalendar()
dayCounter = ql.Actual365Fixed()
spot = 100
rate = 0.0
initial_value = ql.QuoteHandle(ql.SimpleQuote(spot))
flat_curve = ql.FlatForward(today, rate, ql.Actual365Fixed())
riskfree_ts = ql.YieldTermStructureHandle(flat_curve)
dividend_ts = ql.YieldTermStructureHandle(flat_curve)
Ahora, tengo una implementación basada en Python localvol_func
de $(t, s)\mapsto \sigma(t, s)$ y me gustaría invocar
localvol_ts = ql.LocalVolTermStructureHandle(localvol_func)
(o similar) para finalmente hacer
process = ql.GeneralizedBlackScholesProcess(initial_value, dividendTS=dividend_ts, riskfreeTS=riskfree_ts, localVolTS=localvol_ts)
¿Tiene sentido en absoluto? ¿Lograría lo que estoy intentando lograr? Sé que Python QuantLib es solo un envoltorio, por lo que probablemente no puedo trabajar con una implementación basada en Python de la función de volatilidad local, ¿verdad? ¿Qué tendría que hacer en su lugar?