QuantLib Swaption Vol Cube

Aug 27 2020

나는 현재 사용 QuantLib / 파이썬에서 가격 스왑 션에 노력하고 변동성 큐브를 사용하여 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)
)

현재이 두 스왑 지수가 어떤 역할을하는지 궁금합니다.

나는 그것이 ATM과 스트라이크 스프레드 대 ATM의 계산과 관련이 있다고 가정하지만 왜 두 개의 인덱스가 필요한지 이해하지 못합니다 .

어떤 조언을 해주셔서 감사합니다!

답변

3 DavidDuarte Aug 27 2020 at 04:00

swaption vol 큐브는 기본적으로 일련의 표면 레이어이며, 각 레이어는 주어진 스트라이크를 참조하고 옵션 만료 및 동일한 기본 스왑 테너의 조합에 대한 vols를 가지고 있습니다. 그 기본은 swapIndexBase.

그러나 만기가 짧은 경우 규칙이 다른 경우가 많습니다. 예를 들어, 유로에서는 테너> 1Y에 대해 스왑 대 6M Euribor가 있고 1Y 테너에 대해 스왑 대 3M Euribor가 있습니다. 는 shortSwapIndexBase기본이 두 번째를 식별하는 데 사용됩니다.

readthedocs의 예제는 그 점에서 더 좋을 수 있습니다.