Cubo QuantLib Swaption Vol
Attualmente sto cercando di valutare le swaption in QuantLib/Python usando un cubo di volatilità usando ql.SwaptoinVolCube2. Dalla documentazione:
optionTenors = ['1y', '2y', '3y']
swapTenors = [ '5Y', '10Y']
strikeSpreads = [ -0.01, 0.0, 0.01]
volSpreads = [
[0.5, 0.55, 0.6],
[0.5, 0.55, 0.6],
[0.5, 0.55, 0.6],
[0.5, 0.55, 0.6],
[0.5, 0.55, 0.6],
[0.5, 0.55, 0.6],
]
optionTenors = [ql.Period(tenor) for tenor in optionTenors]
swapTenors = [ql.Period(tenor) for tenor in swapTenors]
volSpreads = [[ql.QuoteHandle(ql.SimpleQuote(v)) for v in row] for row in volSpreads]
swapIndexBase = ql.EuriborSwapIsdaFixA(ql.Period(1, ql.Years), e6m_yts, ois_yts)
shortSwapIndexBase = ql.EuriborSwapIsdaFixA(ql.Period(1, ql.Years), e6m_yts, ois_yts)
vegaWeightedSmileFit = False
volCube = ql.SwaptionVolatilityStructureHandle(
ql.SwaptionVolCube2(
ql.SwaptionVolatilityStructureHandle(swaptionVolMatrix),
optionTenors,
swapTenors,
strikeSpreads,
volSpreads,
swapIndexBase,
shortSwapIndexBase,
vegaWeightedSmileFit)
)
Attualmente, mi chiedo quale ruolo giochino i due indici di swap in questo?
Presumo che abbia qualcosa a che fare con il calcolo di ATM e strike-spread vs ATM, ma non capisco perché richieda due indici per questo.
Grazie per eventuali indicazioni!
Risposte
Lo swaption vol cube è fondamentalmente una serie di strati superficiali, ogni strato si riferisce a un determinato strike e ha volumi per combinazioni di scadenze di opzioni e scadenze di swap dello stesso sottostante: uno swap con determinate convenzioni. Quel sottostante è definito dal swapIndexBase.
Tuttavia, per scadenze più brevi, le convenzioni sono spesso diverse. Ad esempio, in Euro, hai swap vs Euribor 6M per scadenze > 1Y e swap vs Euribor 3M per scadenze 1Y. Il shortSwapIndexBaseviene utilizzato per identificare questo secondo sottostante.
L'esempio su readthedocs potrebbe essere migliore sotto questo aspetto.