QuantLib Swaption Vol Cube
В настоящее время я пытаюсь оценить свопинг в 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)
)
В настоящее время мне интересно, какую роль в этом играют два индекса обмена?
Я предполагаю, что это как-то связано с расчетом банкоматов и страйк-спредов по сравнению с банкоматами, но я не понимаю, почему для этого требуются два индекса.
Спасибо за любые указатели!
Ответы
Куб объема обмена представляет собой в основном серию поверхностных слоев, каждый из которых относится к данному страйку и имеет объемы для комбинаций сроков истечения опционов и срока обмена одного и того же базового актива: своп с заданными соглашениями. Эта основа определяется расширением swapIndexBase.
Однако в отношении более коротких сроков погашения часто применяются другие правила. Например, в евро у вас есть своп против 6M Euribor для срока> 1 года и своп против 3M Euribor для срока 1Y. shortSwapIndexBaseИспользуются для идентификации этого второго , лежащих в основе.
В этом отношении пример с readthedocs мог бы быть лучше.