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