I'm trying to price a fixed rate bond with ex-dividend date using Python QuantLib. This is a feature of UK Gilts.
On regular days, I'm able to get the correct accrued interest, but on days in the ex-dividend period, I'm unable to determine the correct accrued interest. Any help is appreciated.
Below is my code
import QuantLib as ql import datetime as dt import numpy as np import pandas as pd #ISIN: GB00B54QLM75 issue_date=ql.Date(22, 10, 2009) maturity_date=ql.Date(22, 1, 2060) first_cpn_date=ql.Date(22, 1, 2010) last_cpn_date=ql.Date(22, 7, 2059) tenor=ql.Period(ql.Semiannual) calendar=ql.UnitedKingdom() business_convention=ql.Unadjusted termination_business_convention=ql.Unadjusted date_generation=ql.DateGeneration.Forward end_of_month=False coupon = .04 fbSchedule=ql.Schedule(issue_date, maturity_date, tenor, calendar, business_convention, termination_business_convention, date_generation, end_of_month, first_cpn_date, last_cpn_date) sch = [x for x in fbSchedule] fbSchedule = ql.Schedule( sch, calendar, business_convention, termination_business_convention, tenor, date_generation, end_of_month, [True] * (len(sch)-1) ) cpns = [coupon] settle_days=1 face_amt = 100. rdm_amt = 100. fixedRateBond = ql.FixedRateBond( settle_days, face_amt, fbSchedule, cpns, ql.ActualActual(ql.ActualActual.ISMA), business_convention, rdm_amt, issue_date ) print(fixedRateBond.accruedAmount(ql.Date(24, 3, 2023))) #QL: 0.6740331491712714, Blbg: 0.67403 print(fixedRateBond.accruedAmount(ql.Date(14, 7, 2023))) #QL: 1.9116022099447516, Blbg: -0.08840
Edit: I don't think this is a duplicate of Negative Accrued for treasury bonds? as a method to determine negative AI is not described