QuantLib Swaption Vol Cube

Aug 27 2020

私は現在、を使用してボラティリティキューブを使用してQuantLib / Pythonでスワップションの価格を設定しようとしていql.SwaptoinVolCube2ます。ドキュメントから:

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

現在、2つのスワップインデックスがこれでどのような役割を果たしているのか疑問に思っていますか?

ATMとストライクスプレッド対ATMの計算と関係があると思いますが、なぜこれに2つのインデックスが必要なのかわかりません。

ポインタをありがとう!

回答

3 DavidDuarte Aug 27 2020 at 04:00

スワップションボリュームキューブは基本的に一連の表面レイヤーであり、各レイヤーは特定のストライクを参照し、オプションの有効期限と同じ原資産のスワップテナーの組み合わせのボリュームを持っています:特定の規則によるスワップ。その基礎となるものはによって定義されますswapIndexBase

ただし、満期が短い場合は、規則が異なることがよくあります。たとえば、ユーロでは、1年を超える期間のスワップと6M Euribor、および1年の期間のスワップと3MEuriborがあります。shortSwapIndexBase基礎となるこの第二の識別に使用されます。

その点では、readthedocsの例の方が優れている可能性があります。