|
From: Capt'n V. <vr...@ho...> - 2023-05-08 18:22:45
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><div dir="auto"><div class="gmail_quote" dir="auto"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><font face="Calibri" size="2"><span style="font-size:11pt"><div>Hi All,</div> <div> </div> <div>I’m trying to construct an yield curve using <a href="https://quantlib-python-docs.readthedocs.io/en/latest/thelpers.html?highlight=FixedRateBondHelper"><font color="blue"><u>FixedRateBondHelper</u></font></a> on real US treasury data and following this example <a href="https://quant.stackexchange.com/questions/54526/parameter-in-fixedratebondhelper-of-quantlib"><font color="blue"><u>https://quant.stackexchange.com/questions/54526/parameter-in-fixedratebondhelper-of-quantlib</u></font></a>. Here is my reproducible code: </div> <div> </div> <div>`from QuantLib import *</div> <div>from pandas import DataFrame</div> <div>import numpy as np</div> <div>import matplotlib.pyplot as plt</div> <div> </div> <div>calc_date = ql.Date(5, 5, 2023)</div> <div>Settings.instance().evaluationDate = calc_date</div> <div> </div> <div>calendar = UnitedStates(UnitedStates.GovernmentBond)</div> <div>business_convention = Unadjusted</div> <div>day_count = ql.ActualActual(ql.ActualActual.Bond)</div> <div>end_of_month = True</div> <div>settlement_days = 1</div> <div>face_amount = 100</div> <div>coupon_frequency = Period(Semiannual)</div> <div> </div> <div> </div> <div>data = [</div> <div> ('31-08-2021', '31-08-2023', 0.125, 98.43537),</div> <div> ('30-09-2021', '30-09-2023', 0.25, 98.13213),</div> <div> ('01-11-2021', '31-10-2023', 0.375, 97.82426),</div> <div> ('30-11-2021', '30-11-2023', 0.5, 97.56833),</div> <div> ('31-12-2021', '31-12-2023', 0.75, 97.36831),</div> <div> ('31-01-2022', '31-01-2024', 0.875, 97.16839),</div> <div> ('28-02-2022', '29-02-2024', 1.5, 97.35896),</div> <div> ('31-03-2022', '31-03-2024', 2.25, 97.79973),</div> <div> ('02-05-2022', '30-04-2024', 2.5, 97.88095),</div> <div> ('31-05-2022', '31-05-2024', 2.5, 97.77523),</div> <div> ('30-06-2022', '30-06-2024', 3.0, 98.2304),</div> <div> ('01-08-2022', '31-07-2024', 3.0, 98.21679),</div> <div> ('31-08-2022', '31-08-2024', 3.25, 98.53124),</div> <div> ('30-09-2022', '30-09-2024', 4.25, 99.87726),</div> <div> ('31-10-2022', '31-10-2024', 4.375, 100.14486),</div> <div> ('30-11-2022', '30-11-2024', 4.5, 100.42819),</div> <div> ('03-01-2023', '31-12-2024', 4.25, 100.1332),</div> <div> ('31-01-2023', '31-01-2025', 4.125, 100.0258),</div> <div> ('28-02-2023', '28-02-2025', 4.625, 101.04361),</div> <div> ('15-03-2022', '15-03-2025', 1.75, 95.98058),</div> <div> </div> <div> ]</div> <div>helpers = []</div> <div> </div> <div>for issue_date, maturity, coupon, price in data:</div> <div> price = ql.QuoteHandle(ql.SimpleQuote(price))</div> <div> issue_date = ql.Date(issue_date, '%d-%m-%Y')</div> <div> maturity = ql.Date(maturity, '%d-%m-%Y')</div> <div> schedule = ql.MakeSchedule(issue_date, maturity, ql.Period(ql.Semiannual))</div> <div> helper = ql.FixedRateBondHelper(price, 2, 100, schedule, [coupon / 100], day_count)</div> <div> helpers.append(helper)</div> <div>yc = ql.PiecewiseLogCubicDiscount(calc_date, helpers, day_count) `</div> <div> </div> <div>which follows the example. However, I’m getting the following error when trying `yc.nodes()`:</div> <div>`RuntimeError: 1st iteration: failed at 20th alive instrument, pillar March 15th, 2025, maturity March 15th, 2025, reference date May 5th, 2023: invalid range: xMin_ (0.930502) >= xMax_ (0.930502)’ . The 19<font size="1"><span style="font-size:7.3pt"><sup>th</sup></span></font> and 20<font size="1"><span style="font-size:7.3pt"><sup>th</sup></span></font> treasuries (CUSIPs <font face="Calibri">91282CGN</font><font face="Calibri"> and </font></div> <div> <font face="Calibri">91282CED</font><font face="Calibri"> </font>yield 4.019113 and 4.02135 respectively? </div> <div> </div> <div>Thank you for your help in advance,</div> <div>Greg</div></span></font></blockquote></div></div> |