QuantLib Swaption Vol Cube
Ich versuche derzeit, Swaptions unter QuantLib/Python mit einem Volatilitätswürfel mit ql.SwaptoinVolCube2. Aus der Dokumentation:
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)
)
Aktuell frage ich mich, welche Rolle die beiden Swap-Indizes dabei spielen?
Ich nehme an, es hat etwas mit der Berechnung von ATM und Strike-Spreads vs. ATM zu tun, aber ich verstehe nicht, warum dafür zwei Indizes erforderlich sind.
Danke für jeden Hinweis!
Antworten
Der Swaption Vol Cube ist im Grunde eine Reihe von Oberflächenschichten, jede Schicht bezieht sich auf einen bestimmten Ausübungspreis und hat Vols für Kombinationen von Optionsverläufen und Swap-Laufzeiten desselben Basiswerts: ein Swap mit bestimmten Konventionen. Dieser Basiswert wird durch die definiert swapIndexBase.
Bei kürzeren Laufzeiten sind die Konventionen jedoch oft anders. In Euro haben Sie beispielsweise Swap vs. 6M Euribor für Laufzeiten > 1J und Swap vs. 3M Euribor für Laufzeiten von 1J. Der shortSwapIndexBasewird verwendet, um diesen zweiten Basiswert zu identifizieren.
Das Beispiel auf readthedocs könnte in dieser Hinsicht besser sein.