I'm trying to model the price of a bond and having some trouble understanding how the "simple" convention works. The bond in question is IL0011948028. I'm able to replicate BBG's price using QuantLib (python) as follows:
import QuantLib as ql faceValue = 100.0 couponType = ql.Annual issueDate = ql.Date(18, 4, 2023) EvalDate = ql.Date(12, 9, 2024) Maturity = ql.Date(28, 2, 2029) quotedYield = 0.0444 couponRate = 0.0375 settlementDays = 1 dates = ['2023-04-18', '2024-02-29', '2025-02-27', '2026-02-26', '2027-02-28', '2028-02-29', '2029-02-28'] schedule = ql.Schedule([ql.Date(dt, '%Y-%m-%d') for dt in dates]) bond = ql.FixedRateBond(settlementDays, faceValue, schedule, [couponRate], ql.Actual365Fixed(ql.Actual365Fixed.Standard)) print(bond.dirtyPrice(quotedYield, ql.Actual365Fixed(ql.Actual365Fixed.Standard), ql.Simple, ql.Annual)) This produces the correct value (99.24176 vs 99.242 in BBG). However, I don't really understand how the simple interest calculation works; looking at the source code, it just returns 1.0+r*t, but if I try replicating this in Excel by discounting coupons with $1+yield\times t$ where t is time to maturity and yield=4.44%, I'm off by more than a dollar (same if I include the factor of fraction of a year).
Could someone explain in equations what the QuantLib/BBG calculation is doing? Sorry if this is really simple, but I can't seem to find good resources about simple yield/interest for multiperiod bonds. Thanks.
Edit: I'm using a trade date of 9/12/2024 with settlement 9/13/2024. Terribly sorry for the omission. I should also note, Israel uses a Sunday-Thursday work week.
Using the normal $\frac{CF}{(1+r\frac{d}{365})^t}$ (d is days in the period), I get 99.321 which is close but not close enough for my purposes.