Tengo el siguiente problema al iniciar la curva OIS del JPY. El bootstrapping en sí mismo funciona cuando se tiene un conjunto de datos, por ejemplo, para la fecha 2017-02-09 . Tengo todos mis instrumentos y, como dije, el bootstrapping y la recepción de la curva OIS. Si extiendo el conjunto de datos a una segunda fecha 2017-02-10 Recibo todos los datos en mi bootstrapper, lo que no tiene sentido con el mensaje de error:
más de un instrumento con pilar 10 de febrero de 2017
que resulta en los mismos vencimientos debido a los datos de diferentes fechas como se explicó anteriormente. Tengo que hacer un bucle sobre las fechas pero no tengo ni idea de cómo podría funcionar en ese contexto. Se agradecería la ayuda.
import QuantLib as ql
import pandas as pd
import matplotlib.pyplot as plt
def Convert(Period):
unit =[]
if Period[-1:] == 'D':
unit = ql.Days
elif Period[-1:] == 'M':
unit = ql.Months
elif Period[-1:] == 'W':
unit = ql.Weeks
elif Period[-1:] == 'Y':
unit = ql.Years
period_object = ql.Period(int(Period[:-1]), unit)
return period_object
date = ql.Date(9, ql.February, 2017)
ql.Settings.instance().evaluationDate = date
data = pd.read_csv('C:/Data_JPY_Playing.csv').fillna('')
data_selected = data[['fdate', 'ptype' ,'maturity','fixing','values']].to_records(index=False)
Rate_Helper_Full_Disc = []
for fdate, ptype, maturity, fixing, values in data_selected:
if row['ptype'] == 'Deposit':
helper_disc = ql.DepositRateHelper(ql.QuoteHandle(ql.SimpleQuote(row['values']/100)),
Convert(row['maturity']),
int(row['fixing']),
ql.Japan(),
ql.ModifiedFollowing,
False,
ql.Actual365Fixed())
Rate_Helper_Full_Disc.append(helper_disc)
disc_curve = ql.PiecewiseCubicZero(date, Rate_Helper_Full_Disc, ql.Actual365Fixed())
disc_curve.enableExtrapolation()