24#include <ql/time/calendars/unitedstates.hpp>
25#include <ql/errors.hpp>
39 return (d == 22 || (d == 23 && w ==
Monday)
47 return d >= 25 && w ==
Monday && m ==
May;
50 return (d == 30 || (d == 31 && w ==
Monday)
67 if (y <= 1970 || y >= 1978) {
69 return (d == 11 || (d == 12 && w ==
Monday) ||
78 if (y <= 1970 || y >= 1978) {
89 return (d == 19 || (d == 20 && w ==
Monday) || (d == 18 && w ==
Friday))
90 && m ==
June && y >= 2022;
96 static auto settlementImpl = ext::make_shared<UnitedStates::SettlementImpl>();
97 static auto liborImpactImpl = ext::make_shared<UnitedStates::LiborImpactImpl>();
98 static auto nyseImpl = ext::make_shared<UnitedStates::NyseImpl>();
99 static auto governmentImpl = ext::make_shared<UnitedStates::GovernmentBondImpl>();
100 static auto nercImpl = ext::make_shared<UnitedStates::NercImpl>();
101 static auto federalReserveImpl = ext::make_shared<UnitedStates::FederalReserveImpl>();
102 static auto sofrImpl = ext::make_shared<UnitedStates::SofrImpl>();
106 impl_ = settlementImpl;
109 impl_ = liborImpactImpl;
115 impl_ = governmentImpl;
124 impl_ = federalReserveImpl;
127 QL_FAIL(
"unknown market");
146 || isWashingtonBirthday(d, m, y, w)
148 || isMemorialDay(d, m, y, w)
150 || isJuneteenth(d, m, y, w)
152 || ((d == 4 || (d == 5 && w ==
Monday) ||
155 || isLaborDay(d, m, y, w)
157 || isColumbusDay(d, m, y, w)
159 || isVeteransDay(d, m, y, w)
163 || ((d == 25 || (d == 26 && w ==
Monday) ||
176 if (((d == 5 && w ==
Monday) ||
177 (d == 3 && w ==
Friday)) && m ==
July && y >= 2015)
187 Day em = easterMonday(y);
192 || isWashingtonBirthday(d, m, y, w)
196 || isMemorialDay(d, m, y, w)
198 || isJuneteenth(d, m, y, w)
200 || ((d == 4 || (d == 5 && w ==
Monday) ||
203 || isLaborDay(d, m, y, w)
207 || ((d == 25 || (d == 26 && w ==
Monday) ||
211 if (y >= 1998 && (d >= 15 && d <= 21) && w ==
Monday && m ==
January)
215 if ((y <= 1968 || (y <= 1980 && y % 4 == 0)) && m ==
November
222 (y == 2018 && m ==
December && d == 5)
224 || (y == 2012 && m ==
October && (d == 29 || d == 30))
226 || (y == 2007 && m ==
January && d == 2)
228 || (y == 2004 && m ==
June && d == 11)
230 || (y == 2001 && m ==
September && (11 <= d && d <= 14))
232 || (y == 1994 && m ==
April && d == 27)
234 || (y == 1985 && m ==
September && d == 27)
236 || (y == 1977 && m ==
July && d == 14)
238 || (y == 1973 && m ==
January && d == 25)
240 || (y == 1972 && m ==
December && d == 28)
242 || (y == 1969 && m ==
July && d == 21)
244 || (y == 1969 && m ==
March && d == 31)
246 || (y == 1969 && m ==
February && d == 10)
248 || (y == 1968 && m ==
July && d == 5)
251 || (y == 1968 && dd >= 163 && w ==
Wednesday)
253 || (y == 1968 && m ==
April && d == 9)
255 || (y == 1963 && m ==
November && d == 25)
257 || (y == 1961 && m ==
May && d == 29)
259 || (y == 1958 && m ==
December && d == 26)
261 || ((y == 1954 || y == 1956 || y == 1965)
274 Day em = easterMonday(y);
282 || isWashingtonBirthday(d, m, y, w)
285 || (dd == em-3 && y != 2015 && y != 2021 && y != 2023)
287 || isMemorialDay(d, m, y, w)
289 || isJuneteenth(d, m, y, w)
291 || ((d == 4 || (d == 5 && w ==
Monday) ||
294 || isLaborDay(d, m, y, w)
296 || isColumbusDay(d, m, y, w)
298 || isVeteransDayNoSaturday(d, m, y, w)
302 || ((d == 25 || (d == 26 && w ==
Monday) ||
308 (y == 2018 && m ==
December && d == 5)
310 || (y == 2012 && m ==
October && (d == 30))
312 || (y == 2004 && m ==
June && d == 11)
336 || isMemorialDay(d, m, y, w)
338 || ((d == 4 || (d == 5 && w ==
Monday)) && m ==
July)
340 || isLaborDay(d, m, y, w)
363 || isWashingtonBirthday(d, m, y, w)
365 || isMemorialDay(d, m, y, w)
367 || isJuneteenth(d, m, y, w)
369 || ((d == 4 || (d == 5 && w ==
Monday)) && m ==
July)
371 || isLaborDay(d, m, y, w)
373 || isColumbusDay(d, m, y, w)
375 || isVeteransDayNoSaturday(d, m, y, w)
bool isWeekend(Weekday) const override
bool isWeekend(Weekday w) const
ext::shared_ptr< Impl > impl_
Day dayOfYear() const
One-based (Jan 1st = 1)
bool isBusinessDay(const Date &) const override
bool isBusinessDay(const Date &) const override
bool isBusinessDay(const Date &) const override
bool isBusinessDay(const Date &) const override
bool isBusinessDay(const Date &) const override
bool isBusinessDay(const Date &) const override
bool isBusinessDay(const Date &) const override
@ FederalReserve
Federal Reserve Bankwire System.
@ NYSE
New York stock exchange calendar.
@ LiborImpact
Libor impact calendar.
@ GovernmentBond
government-bond calendar
@ NERC
off-peak days for NERC
@ Settlement
generic settlement calendar
@ SOFR
SOFR fixing calendar.
UnitedStates(Market market)