Estoy haciendo un bootstrap de la curva shibor y de la curva fr007 utilizando los tipos swap en China. He creado mi propio índice como el siguiente:
Shibor3M=IborIndex("Shibor3M",Period(3,Months),0,CNYCurrency(),
China(China.IB),Following,False,Actual360(),
discounting_curve)
y utilizando para el bootstrapping las tasas al contado. Y el código es:
today=Date(17,6,2019)
Settings.instance().evaluationDate = today
discounting_curve=RelinkableYieldTermStructureHandle()
forecasting_curve=RelinkableYieldTermStructureHandle()
quotes = [SimpleQuote(2.80763/100)]
#Shibor index
Shibor3M=IborIndex("Shibor-3M",Period(3,Months),0,
CNYCurrency(),China(China.IB),
Following,False,Actual360(),
forecasting_curve)
depo_helper = [DepositRateHelper(
QuoteHandle(quotes[0]),Period(3,Months),0,China(China.IB),
Following,False,Actual360())]
swap_helpers = [ SwapRateHelper(QuoteHandle(SimpleQuote(rate/100.0)), Period(*tenor), China(China.IB),Quarterly,Following,Actual365Fixed(),Shibor3M())
for tenor, rate in [((6,Months),2.985),((9,Months),3.0163),((1,Years),3.0475),((2,Years), 3.1638),
((3,Years), 3.2788),
((4,Years), 3.3813),
((5,Years), 3.4688),
((7,Years), 3.6175),((10,Years),3.765)] ]
rate_helpers=depo_helper+swap_helpers
curve1=PiecewiseCubicZero(today,rate_helpers,Actual360)
spots = []
tenors = []
for d in curve1.dates():
yrs=Actual360.yearFraction(today,d)
compounding=Simple
freq=Quarterly
zero_rate=curve1.zeroRate(yrs,compounding,freq)
tenors.append(yrs)
eq_rate=zero_rate.equivalentRate(Actual360,compounding,freq,today,d).rate()
spots.append(100*eq_rate)
datatable={'Dates':curve1.dates(),'Tenors':tenors,'spots':spots}
df=pd.DataFrame.from_dict((datatable))
Pero no puedo obtener el resultado. ¿Puede alguien ayudarme? Gracias.