It seems as if the ActualActual dc method is producing results different from what the documentation says.
I tried the examples from https://www.isda.org/a/pIJEE/The-Actual-Actual-Day-Count-Fraction-1999.pdf page 2:
Below delivers 150, which is fine
ql.ActualActual(ql.ActualActual.ISMA).dayCount(d1=ql.Date('1999-02-01', '%Y-%m-%d'),
d2=ql.Date('1999-07-01', '%Y-%m-%d'))
Below delivers 183, based on the examples from ISDA, it should deliver 184
ql.ActualActual(ql.ActualActual.ISMA).dayCount(d1=ql.Date('1999-07-01', '%Y-%m-%d'),
d2=ql.Date('1999-12-31', '%Y-%m-%d'))
Below delivers 183, based on examples from ISDA, it should deliver 182
ql.ActualActual(ql.ActualActual.ISMA).dayCount(d1=ql.Date('1999-12-31', '%Y-%m-%d'),
d2=ql.Date('2000-07-01', '%Y-%m-%d'))
I found this issue when trying to compare against Bloomberg and LSEG, which both calculate 107 days with settlement = "2025-07-08" on XS2320031383. Using Actual/Actual.ISMA on QuantLib delivers 106 days, however.
It seems as if the ActualActual dc method is producing results different from what the documentation says.
I tried the examples from https://www.isda.org/a/pIJEE/The-Actual-Actual-Day-Count-Fraction-1999.pdf page 2:
Below delivers 150, which is fine
ql.ActualActual(ql.ActualActual.ISMA).dayCount(d1=ql.Date('1999-02-01', '%Y-%m-%d'),
d2=ql.Date('1999-07-01', '%Y-%m-%d'))
Below delivers 183, based on the examples from ISDA, it should deliver 184
ql.ActualActual(ql.ActualActual.ISMA).dayCount(d1=ql.Date('1999-07-01', '%Y-%m-%d'),
d2=ql.Date('1999-12-31', '%Y-%m-%d'))
Below delivers 183, based on examples from ISDA, it should deliver 182
ql.ActualActual(ql.ActualActual.ISMA).dayCount(d1=ql.Date('1999-12-31', '%Y-%m-%d'),
d2=ql.Date('2000-07-01', '%Y-%m-%d'))
I found this issue when trying to compare against Bloomberg and LSEG, which both calculate 107 days with settlement = "2025-07-08" on XS2320031383. Using Actual/Actual.ISMA on QuantLib delivers 106 days, however.