Thanks very much for your help in advance.
I am trying to understand the yield curve construction from Python Quantlib. And it seems I cannot get the curve output the same dates(nodes) as my input when using the FuturesRateHelper. Here is my code:
calc_date = ql.Date(18, 2, 2015)
ql.Settings.instance().evaluationDate = calc_date
bussiness_convention = ql.ModifiedFollowing
daycount = ql.Actual365Fixed()
calendar = ql.JointCalendar(ql.UnitedStates(), ql.UnitedKingdom())
depo_r = {ql.Period(1, ql.Weeks): float(0.001375),
ql.Period(int(1), ql.Months): float(0.001717),
ql.Period(int(2), ql.Months): float(0.002112),
ql.Period(int(3), ql.Months): float(0.002381)
}
depoHelpers = [ql.DepositRateHelper(ql.QuoteHandle(ql.SimpleQuote(depo_r[p])),
p,
0, calendar, bussiness_convention, False, daycount)
for p in depo_r.keys()]
future_r = {ql.Date(17, 6, 2015): float(99.725),
ql.Date(16, 9, 2015): float(99.585),
ql.Date(16, 12, 2015):float(99.385),
ql.Date(16, 3, 2016): float(99.16),
ql.Date(15, 6, 2016): float(98.93),
ql.Date(21, 9, 2016): float(98.715)
}
futuresHelpers =[ql.FuturesRateHelper(ql.QuoteHandle(ql.SimpleQuote(future_r[d])),
d, 3,
calendar, bussiness_convention,
True, daycount,
ql.QuoteHandle(ql.SimpleQuote(0.0)))
for d in future_r.keys() ]
helpers = depoHelpers + futuresHelpers
curve = ql.PiecewiseFlatForward(0, calendar, helpers, daycount)
and here is my output when I printed curve.dates()
---------
February 18th, 2015
---------
February 25th, 2015
---------
March 18th, 2015
---------
April 20th, 2015
---------
May 18th, 2015
---------
September 17th, 2015
---------
December 16th, 2015
---------
March 16th, 2016
---------
June 16th, 2016
---------
September 15th, 2016
---------
December 21st, 2016
I am very confused as the the date of June 17, 2015 disappeared and several dates are also shifted from my input (e.g. Sep 21 2016 as in my input (which is an IMM date) but Sep 15 2016 was shown in the output). Why is it happening?
Many thanks for your help again.