Cube de volume d'échange QuantLib

Aug 27 2020

J'essaie actuellement de fixer le prix des swaptions sous QuantLib/Python en utilisant un cube de volatilité utilisant ql.SwaptoinVolCube2. De la documentation :

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)
)

Actuellement, je me demande quel rôle jouent les deux indices de swap là-dedans ?

Je suppose que cela a quelque chose à voir avec le calcul de l'ATM et des spreads de grève par rapport à l'ATM, mais je ne comprends pas pourquoi il faut deux indices pour cela.

Merci pour tout pointeur !

Réponses

3 DavidDuarte Aug 27 2020 at 04:00

Le cube de vol de swaption est essentiellement une série de couches de surface, chaque couche se réfère à une grève donnée et a des vols pour des combinaisons d'expirations d'options et de durées de swap du même sous-jacent : un swap avec des conventions données. Ce sous-jacent est défini par le swapIndexBase.

Cependant, pour les échéances plus courtes, les conventions sont souvent différentes. Par exemple, en Euro, vous avez swap contre Euribor 6M pour les durées > 1Y et swap contre Euribor 3M pour la durée 1Y. Le shortSwapIndexBasesert à identifier ce second sous-jacent.

L'exemple sur readthedocs pourrait être meilleur à cet égard.