I am missing something in the fixing rules for USD Libor: the fixing for the date Aug 31th, 2022 is on Aug 26th, 2022 - 3 business days ahead (checked in another system).
However, I am defining a 2-day fixing in index. How come the correct date is Aug 26th, 2022 and not 2-business days ahead Aug 29th, 2022?

>>> ql.UnitedStates.advance(ql.UnitedStates(), ql.Date(31,8,2022),-2,False)

>>> mock_curve = ql.FlatForward(2, ql.UnitedStates(), 3.23819/100 - 0.00866, ql.Actual360())
>>> index = ql.USDLibor(ql.Period('1M'), ql.YieldTermStructureHandle(mock_curve))

>>> index.fixingDate(ql.Date(31,8,2022))

>>> ql.UnitedStates.holidayList(ql.UnitedStates(),ql.Date(1,1,2022),ql.Date(31,12,2022))
(Date(17,1,2022), Date(21,2,2022), Date(30,5,2022), Date(4,7,2022), Date(5,9,2022), Date(10,10,2022), Date(11,11,2022), Date(24,11,2022), Date(26,12,2022))

  • 1
    $\begingroup$ Quantlib is really not good with holidays, It should not let you use "UnitedStates.holidayList" because there is no such thing. However for LIBOR (all currencies) business days, you should be using London holiday calendar, in which 29 August 2022 is the "Summer bank holiday". $\endgroup$ Aug 31, 2022 at 2:23
  • $\begingroup$ My assumption is the US holidays are the days in which there is no settlement in USD. For my purpose, loans between 2 parties, the UnitedStates calendar seems to be appropriate. $\endgroup$
    – jamoreiras
    Aug 31, 2022 at 13:37
  • 1
    $\begingroup$ There are many different US holiday calendars, for settling USD currency, for settling bonds, for settling equities, etc. Eg Good Friday, Columbus day, New Years Eve are holidays in some US calendars but not in others. QuantLib does its users no favors by pretending that there is a "US calendar". Anyway, LIBOR does not use US calendars at all, but is published eg on July 4th, which is a holiday on pretty much all US calendars. $\endgroup$ Aug 31, 2022 at 13:58

1 Answer 1


Because Monday Aug 29th was a London holiday. Libor sets 2 London banking days prior to start date.

  • $\begingroup$ That seems to make sense. I would need to look at the United Kingdom holiday list: >>> ql.UnitedKingdom.holidayList(ql.UnitedKingdom(),ql.Date(1,1,2022),ql.Date(31,12,2022)) (Date(3,1,2022), Date(15,4,2022), Date(18,4,2022), Date(2,5,2022), Date(30,5,2022), Date(29,8,2022), Date(26,12,2022), Date(27,12,2022)) $\endgroup$
    – jamoreiras
    Aug 31, 2022 at 0:51
  • $\begingroup$ A "United Kingdom" holidays makes no sense either, as, for example, the Easter Monday is a bank holiday in England, Wales and the Northern Ireland, but not in Scotland. As I said, QL is bad with calendars. $\endgroup$ Oct 30, 2023 at 12:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.