5 votos

Configurar OvernightIndex Quantlib

De alguna manera estoy luchando en mi antigua pregunta sobre la configuración de un índice Overnight en QuantLib (ver pregunta: Pregunta antigua ). Lo que no entiendo es cómo puedo configurar el curve_handle :

index = OvernightIndex("EONIA", 0, EURCurrency(),
                       TARGET(), Actual360(), curve_handle)

Tengo un conjunto de datos para el Sonar de Índice Nocturno de Singapur. No sé cómo configurar ahora el curve_handle en mi ejemplo de abajo marcado como xxxxx . Creo que puedo dejarlo como se muestra a continuación. El código es el siguiente:

import QuantLib as ql

todaysDate = ql.Date(10, ql.December, 2017)
ql.Settings.instance().evaluationDate = todaysDate

calendar = ql.Singapore()
dayCounter_Act365 = ql.Actual365()
settlement_days_sonar = 2

SGD_SONAT_OIS = ql.OvernightIndex("SONAR", settlement_days_sonar, ql.SGDCurrency(), calendar, dayCounter_Act365)

#--------------------------------------------------------------------
# Discounting curve
#--------------------------------------------------------------------

# setup DepositRateHelper for 0-1 days
helpers_disc = [ql.DepositRateHelper(ql.QuoteHandle(ql.SimpleQuote(rate/100)),
                                     ql.Period(1,ql.Days), fixingDays,
                                     calendar, ql.ModifiedFollowing, False, ql.Actual365())
            for rate, fixingDays in [(0.081, 0)]]

# Overnight Index Swap rate
# setup OISRateHelper for 1,2,3 weeks and 1 month
helpers_disc += [ql.OISRateHelper(settlement_days_sonar, ql.Period(*tenor),
                                  ql.QuoteHandle(ql.SimpleQuote(rate/100)), SGD_SONAT_OIS)
            for rate, tenor in [(0.0713, (1,ql.Weeks)), 
                                (0.0688, (2,ql.Weeks)),
                                (0.0663, (3,ql.Weeks))]]

# OIS quotes up to 30 years
# setup OISRateHelper from 1 months to 30 years
helpers_disc += [ql.OISRateHelper(settlement_days_sonar, ql.Period(*tenor),
                                 ql.QuoteHandle(ql.SimpleQuote(rate/100)), SGD_SONAT_OIS)
            for rate, tenor in [(0.0656, (1,ql.Months)), 
                                (0.0613  , (2,ql.Months)),
                                (0.06 , (3,ql.Months)),
                                (0.0563 , (4,ql.Months)),
                                (0.055  , (5,ql.Months)),
                                (0.0538 , (6,ql.Months)),
                                (0.3356 , (9,ql.Years)),
                                (0.3806 , (10,ql.Years)),
                                (0.4938 , (12,ql.Years)),
                                (0.6888 , (15,ql.Years)),
                                (0.965 , (20,ql.Years)),
                                (1.1081 , (25,ql.Years)),
                                (1.1831, (30,ql.Years))]]

sonar_curve = ql.PiecewiseLogCubicDiscount(date, helpers_disc, ql.Actual365())
sonar_curve.enableExtrapolation()

4voto

Brad Tutterow Puntos 5628

Puedes dejarlo fuera durante el arranque de la curva. En ese contexto, el índice sólo se utiliza para pedir sus convenciones.

Más tarde, si quiere prever las fijaciones de los índices, puede inicializar un asa con la curva que se ha fijado y pasarla al índice.

0 votos

Muchas gracias. ¿Tienes un ejemplo?

0 votos

curve_handle = YieldTermStructureHandle(bootstrapped_curve); index = OvernightIndex(..., curve_handle)

0 votos

Hola Luigi, muchas gracias. De alguna manera todavía no me queda claro. ¿Puedes ser más explícito con el ejemplo anterior?

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X