"""US macro event calendar dates (2006-2025).

FOMC: last scheduled day of each meeting from Federal Reserve
fomchistoricalYYYY.htm and fomccalendars.htm (fetched by _generate_macro_calendar.py).
CPI: second Tuesday of each month (approximate BLS release schedule).
NFP (Employment Situation): first Friday of each month (standard BLS schedule).
Elections: federal general election day (first Tuesday after first Monday in November),
even years only (presidential and midterm).
"""

from __future__ import annotations

import pandas as pd

FOMC_DECISION_DATES_ISO: tuple[str, ...] = (
    "2006-01-31",
    "2006-03-28",
    "2006-05-10",
    "2006-06-29",
    "2006-08-08",
    "2006-09-20",
    "2006-10-25",
    "2006-12-12",
    "2007-01-31",
    "2007-03-21",
    "2007-05-09",
    "2007-06-28",
    "2007-08-07",
    "2007-09-18",
    "2007-10-31",
    "2007-12-11",
    "2008-01-30",
    "2008-03-18",
    "2008-04-30",
    "2008-06-25",
    "2008-08-05",
    "2008-09-16",
    "2008-10-29",
    "2008-12-16",
    "2009-01-28",
    "2009-03-18",
    "2009-04-29",
    "2009-06-24",
    "2009-08-12",
    "2009-09-23",
    "2009-11-04",
    "2009-12-16",
    "2010-01-27",
    "2010-03-16",
    "2010-04-28",
    "2010-06-23",
    "2010-08-10",
    "2010-09-21",
    "2010-11-03",
    "2010-12-14",
    "2011-01-26",
    "2011-03-15",
    "2011-04-27",
    "2011-06-22",
    "2011-08-09",
    "2011-09-21",
    "2011-11-02",
    "2011-12-13",
    "2012-01-25",
    "2012-03-13",
    "2012-04-25",
    "2012-06-20",
    "2012-08-01",
    "2012-09-13",
    "2012-10-24",
    "2012-12-12",
    "2013-01-30",
    "2013-03-20",
    "2013-05-01",
    "2013-06-19",
    "2013-07-31",
    "2013-09-18",
    "2013-10-30",
    "2013-12-18",
    "2014-01-29",
    "2014-03-19",
    "2014-04-30",
    "2014-06-18",
    "2014-07-30",
    "2014-09-17",
    "2014-10-29",
    "2014-12-17",
    "2015-01-28",
    "2015-03-18",
    "2015-04-29",
    "2015-06-17",
    "2015-07-29",
    "2015-09-17",
    "2015-10-28",
    "2015-12-16",
    "2016-01-27",
    "2016-03-16",
    "2016-04-27",
    "2016-06-15",
    "2016-07-27",
    "2016-09-21",
    "2016-11-02",
    "2016-12-14",
    "2017-02-01",
    "2017-03-15",
    "2017-05-03",
    "2017-06-14",
    "2017-07-26",
    "2017-09-20",
    "2017-11-01",
    "2017-12-13",
    "2018-01-31",
    "2018-03-21",
    "2018-05-02",
    "2018-06-13",
    "2018-08-01",
    "2018-09-26",
    "2018-11-08",
    "2018-12-19",
    "2019-01-30",
    "2019-03-20",
    "2019-05-01",
    "2019-06-19",
    "2019-07-31",
    "2019-09-18",
    "2019-10-30",
    "2019-12-11",
    "2020-01-29",
    "2020-03-02",
    "2020-03-15",
    "2020-04-29",
    "2020-06-10",
    "2020-07-29",
    "2020-09-16",
    "2020-11-05",
    "2020-12-16",
    "2021-01-27",
    "2021-03-17",
    "2021-04-28",
    "2021-06-16",
    "2021-07-28",
    "2021-09-22",
    "2021-11-03",
    "2021-12-15",
    "2022-01-26",
    "2022-03-16",
    "2022-05-04",
    "2022-06-15",
    "2022-07-27",
    "2022-09-21",
    "2022-11-02",
    "2022-12-14",
    "2023-02-01",
    "2023-03-22",
    "2023-05-03",
    "2023-06-14",
    "2023-07-26",
    "2023-09-20",
    "2023-11-01",
    "2023-12-13",
    "2024-01-31",
    "2024-03-20",
    "2024-05-01",
    "2024-06-12",
    "2024-07-31",
    "2024-09-18",
    "2024-11-07",
    "2024-12-18",
    "2025-01-29",
    "2025-03-19",
    "2025-05-07",
    "2025-06-18",
    "2025-07-30",
    "2025-08-22",
    "2025-09-17",
    "2025-10-29",
    "2025-12-10",
)

MACRO_EVENT_DATES_ISO: tuple[str, ...] = (
    "2006-01-06",
    "2006-01-10",
    "2006-01-31",
    "2006-02-03",
    "2006-02-14",
    "2006-03-03",
    "2006-03-14",
    "2006-03-28",
    "2006-04-07",
    "2006-04-11",
    "2006-05-05",
    "2006-05-09",
    "2006-05-10",
    "2006-06-02",
    "2006-06-13",
    "2006-06-29",
    "2006-07-07",
    "2006-07-11",
    "2006-08-04",
    "2006-08-08",
    "2006-09-01",
    "2006-09-12",
    "2006-09-20",
    "2006-10-06",
    "2006-10-10",
    "2006-10-25",
    "2006-11-03",
    "2006-11-07",
    "2006-11-14",
    "2006-12-01",
    "2006-12-12",
    "2007-01-05",
    "2007-01-09",
    "2007-01-31",
    "2007-02-02",
    "2007-02-13",
    "2007-03-02",
    "2007-03-13",
    "2007-03-21",
    "2007-04-06",
    "2007-04-10",
    "2007-05-04",
    "2007-05-08",
    "2007-05-09",
    "2007-06-01",
    "2007-06-12",
    "2007-06-28",
    "2007-07-06",
    "2007-07-10",
    "2007-08-03",
    "2007-08-07",
    "2007-08-14",
    "2007-09-07",
    "2007-09-11",
    "2007-09-18",
    "2007-10-05",
    "2007-10-09",
    "2007-10-31",
    "2007-11-02",
    "2007-11-13",
    "2007-12-07",
    "2007-12-11",
    "2008-01-04",
    "2008-01-08",
    "2008-01-30",
    "2008-02-01",
    "2008-02-12",
    "2008-03-07",
    "2008-03-11",
    "2008-03-18",
    "2008-04-04",
    "2008-04-08",
    "2008-04-30",
    "2008-05-02",
    "2008-05-13",
    "2008-06-06",
    "2008-06-10",
    "2008-06-25",
    "2008-07-04",
    "2008-07-08",
    "2008-08-01",
    "2008-08-05",
    "2008-08-12",
    "2008-09-05",
    "2008-09-09",
    "2008-09-16",
    "2008-10-03",
    "2008-10-14",
    "2008-10-29",
    "2008-11-04",
    "2008-11-07",
    "2008-11-11",
    "2008-12-05",
    "2008-12-09",
    "2008-12-16",
    "2009-01-02",
    "2009-01-13",
    "2009-01-28",
    "2009-02-06",
    "2009-02-10",
    "2009-03-06",
    "2009-03-10",
    "2009-03-18",
    "2009-04-03",
    "2009-04-14",
    "2009-04-29",
    "2009-05-01",
    "2009-05-12",
    "2009-06-05",
    "2009-06-09",
    "2009-06-24",
    "2009-07-03",
    "2009-07-14",
    "2009-08-07",
    "2009-08-11",
    "2009-08-12",
    "2009-09-04",
    "2009-09-08",
    "2009-09-23",
    "2009-10-02",
    "2009-10-13",
    "2009-11-04",
    "2009-11-06",
    "2009-11-10",
    "2009-12-04",
    "2009-12-08",
    "2009-12-16",
    "2010-01-01",
    "2010-01-12",
    "2010-01-27",
    "2010-02-05",
    "2010-02-09",
    "2010-03-05",
    "2010-03-09",
    "2010-03-16",
    "2010-04-02",
    "2010-04-13",
    "2010-04-28",
    "2010-05-07",
    "2010-05-11",
    "2010-06-04",
    "2010-06-08",
    "2010-06-23",
    "2010-07-02",
    "2010-07-13",
    "2010-08-06",
    "2010-08-10",
    "2010-09-03",
    "2010-09-14",
    "2010-09-21",
    "2010-10-01",
    "2010-10-12",
    "2010-11-02",
    "2010-11-03",
    "2010-11-05",
    "2010-11-09",
    "2010-12-03",
    "2010-12-14",
    "2011-01-07",
    "2011-01-11",
    "2011-01-26",
    "2011-02-04",
    "2011-02-08",
    "2011-03-04",
    "2011-03-08",
    "2011-03-15",
    "2011-04-01",
    "2011-04-12",
    "2011-04-27",
    "2011-05-06",
    "2011-05-10",
    "2011-06-03",
    "2011-06-14",
    "2011-06-22",
    "2011-07-01",
    "2011-07-12",
    "2011-08-05",
    "2011-08-09",
    "2011-09-02",
    "2011-09-13",
    "2011-09-21",
    "2011-10-07",
    "2011-10-11",
    "2011-11-02",
    "2011-11-04",
    "2011-11-08",
    "2011-12-02",
    "2011-12-13",
    "2012-01-06",
    "2012-01-10",
    "2012-01-25",
    "2012-02-03",
    "2012-02-14",
    "2012-03-02",
    "2012-03-13",
    "2012-04-06",
    "2012-04-10",
    "2012-04-25",
    "2012-05-04",
    "2012-05-08",
    "2012-06-01",
    "2012-06-12",
    "2012-06-20",
    "2012-07-06",
    "2012-07-10",
    "2012-08-01",
    "2012-08-03",
    "2012-08-14",
    "2012-09-07",
    "2012-09-11",
    "2012-09-13",
    "2012-10-05",
    "2012-10-09",
    "2012-10-24",
    "2012-11-02",
    "2012-11-06",
    "2012-11-13",
    "2012-12-07",
    "2012-12-11",
    "2012-12-12",
    "2013-01-04",
    "2013-01-08",
    "2013-01-30",
    "2013-02-01",
    "2013-02-12",
    "2013-03-01",
    "2013-03-12",
    "2013-03-20",
    "2013-04-05",
    "2013-04-09",
    "2013-05-01",
    "2013-05-03",
    "2013-05-14",
    "2013-06-07",
    "2013-06-11",
    "2013-06-19",
    "2013-07-05",
    "2013-07-09",
    "2013-07-31",
    "2013-08-02",
    "2013-08-13",
    "2013-09-06",
    "2013-09-10",
    "2013-09-18",
    "2013-10-04",
    "2013-10-08",
    "2013-10-30",
    "2013-11-01",
    "2013-11-12",
    "2013-12-06",
    "2013-12-10",
    "2013-12-18",
    "2014-01-03",
    "2014-01-14",
    "2014-01-29",
    "2014-02-07",
    "2014-02-11",
    "2014-03-07",
    "2014-03-11",
    "2014-03-19",
    "2014-04-04",
    "2014-04-08",
    "2014-04-30",
    "2014-05-02",
    "2014-05-13",
    "2014-06-06",
    "2014-06-10",
    "2014-06-18",
    "2014-07-04",
    "2014-07-08",
    "2014-07-30",
    "2014-08-01",
    "2014-08-12",
    "2014-09-05",
    "2014-09-09",
    "2014-09-17",
    "2014-10-03",
    "2014-10-14",
    "2014-10-29",
    "2014-11-04",
    "2014-11-07",
    "2014-11-11",
    "2014-12-05",
    "2014-12-09",
    "2014-12-17",
    "2015-01-02",
    "2015-01-13",
    "2015-01-28",
    "2015-02-06",
    "2015-02-10",
    "2015-03-06",
    "2015-03-10",
    "2015-03-18",
    "2015-04-03",
    "2015-04-14",
    "2015-04-29",
    "2015-05-01",
    "2015-05-12",
    "2015-06-05",
    "2015-06-09",
    "2015-06-17",
    "2015-07-03",
    "2015-07-14",
    "2015-07-29",
    "2015-08-07",
    "2015-08-11",
    "2015-09-04",
    "2015-09-08",
    "2015-09-17",
    "2015-10-02",
    "2015-10-13",
    "2015-10-28",
    "2015-11-06",
    "2015-11-10",
    "2015-12-04",
    "2015-12-08",
    "2015-12-16",
    "2016-01-01",
    "2016-01-12",
    "2016-01-27",
    "2016-02-05",
    "2016-02-09",
    "2016-03-04",
    "2016-03-08",
    "2016-03-16",
    "2016-04-01",
    "2016-04-12",
    "2016-04-27",
    "2016-05-06",
    "2016-05-10",
    "2016-06-03",
    "2016-06-14",
    "2016-06-15",
    "2016-07-01",
    "2016-07-12",
    "2016-07-27",
    "2016-08-05",
    "2016-08-09",
    "2016-09-02",
    "2016-09-13",
    "2016-09-21",
    "2016-10-07",
    "2016-10-11",
    "2016-11-02",
    "2016-11-04",
    "2016-11-08",
    "2016-12-02",
    "2016-12-13",
    "2016-12-14",
    "2017-01-06",
    "2017-01-10",
    "2017-02-01",
    "2017-02-03",
    "2017-02-14",
    "2017-03-03",
    "2017-03-14",
    "2017-03-15",
    "2017-04-07",
    "2017-04-11",
    "2017-05-03",
    "2017-05-05",
    "2017-05-09",
    "2017-06-02",
    "2017-06-13",
    "2017-06-14",
    "2017-07-07",
    "2017-07-11",
    "2017-07-26",
    "2017-08-04",
    "2017-08-08",
    "2017-09-01",
    "2017-09-12",
    "2017-09-20",
    "2017-10-06",
    "2017-10-10",
    "2017-11-01",
    "2017-11-03",
    "2017-11-14",
    "2017-12-01",
    "2017-12-12",
    "2017-12-13",
    "2018-01-05",
    "2018-01-09",
    "2018-01-31",
    "2018-02-02",
    "2018-02-13",
    "2018-03-02",
    "2018-03-13",
    "2018-03-21",
    "2018-04-06",
    "2018-04-10",
    "2018-05-02",
    "2018-05-04",
    "2018-05-08",
    "2018-06-01",
    "2018-06-12",
    "2018-06-13",
    "2018-07-06",
    "2018-07-10",
    "2018-08-01",
    "2018-08-03",
    "2018-08-14",
    "2018-09-07",
    "2018-09-11",
    "2018-09-26",
    "2018-10-05",
    "2018-10-09",
    "2018-11-02",
    "2018-11-06",
    "2018-11-08",
    "2018-11-13",
    "2018-12-07",
    "2018-12-11",
    "2018-12-19",
    "2019-01-04",
    "2019-01-08",
    "2019-01-30",
    "2019-02-01",
    "2019-02-12",
    "2019-03-01",
    "2019-03-12",
    "2019-03-20",
    "2019-04-05",
    "2019-04-09",
    "2019-05-01",
    "2019-05-03",
    "2019-05-14",
    "2019-06-07",
    "2019-06-11",
    "2019-06-19",
    "2019-07-05",
    "2019-07-09",
    "2019-07-31",
    "2019-08-02",
    "2019-08-13",
    "2019-09-06",
    "2019-09-10",
    "2019-09-18",
    "2019-10-04",
    "2019-10-08",
    "2019-10-30",
    "2019-11-01",
    "2019-11-12",
    "2019-12-06",
    "2019-12-10",
    "2019-12-11",
    "2020-01-03",
    "2020-01-14",
    "2020-01-29",
    "2020-02-07",
    "2020-02-11",
    "2020-03-02",
    "2020-03-06",
    "2020-03-10",
    "2020-03-15",
    "2020-04-03",
    "2020-04-14",
    "2020-04-29",
    "2020-05-01",
    "2020-05-12",
    "2020-06-05",
    "2020-06-09",
    "2020-06-10",
    "2020-07-03",
    "2020-07-14",
    "2020-07-29",
    "2020-08-07",
    "2020-08-11",
    "2020-09-04",
    "2020-09-08",
    "2020-09-16",
    "2020-10-02",
    "2020-10-13",
    "2020-11-03",
    "2020-11-05",
    "2020-11-06",
    "2020-11-10",
    "2020-12-04",
    "2020-12-08",
    "2020-12-16",
    "2021-01-01",
    "2021-01-12",
    "2021-01-27",
    "2021-02-05",
    "2021-02-09",
    "2021-03-05",
    "2021-03-09",
    "2021-03-17",
    "2021-04-02",
    "2021-04-13",
    "2021-04-28",
    "2021-05-07",
    "2021-05-11",
    "2021-06-04",
    "2021-06-08",
    "2021-06-16",
    "2021-07-02",
    "2021-07-13",
    "2021-07-28",
    "2021-08-06",
    "2021-08-10",
    "2021-09-03",
    "2021-09-14",
    "2021-09-22",
    "2021-10-01",
    "2021-10-12",
    "2021-11-03",
    "2021-11-05",
    "2021-11-09",
    "2021-12-03",
    "2021-12-14",
    "2021-12-15",
    "2022-01-07",
    "2022-01-11",
    "2022-01-26",
    "2022-02-04",
    "2022-02-08",
    "2022-03-04",
    "2022-03-08",
    "2022-03-16",
    "2022-04-01",
    "2022-04-12",
    "2022-05-04",
    "2022-05-06",
    "2022-05-10",
    "2022-06-03",
    "2022-06-14",
    "2022-06-15",
    "2022-07-01",
    "2022-07-12",
    "2022-07-27",
    "2022-08-05",
    "2022-08-09",
    "2022-09-02",
    "2022-09-13",
    "2022-09-21",
    "2022-10-07",
    "2022-10-11",
    "2022-11-02",
    "2022-11-04",
    "2022-11-08",
    "2022-12-02",
    "2022-12-13",
    "2022-12-14",
    "2023-01-06",
    "2023-01-10",
    "2023-02-01",
    "2023-02-03",
    "2023-02-14",
    "2023-03-03",
    "2023-03-14",
    "2023-03-22",
    "2023-04-07",
    "2023-04-11",
    "2023-05-03",
    "2023-05-05",
    "2023-05-09",
    "2023-06-02",
    "2023-06-13",
    "2023-06-14",
    "2023-07-07",
    "2023-07-11",
    "2023-07-26",
    "2023-08-04",
    "2023-08-08",
    "2023-09-01",
    "2023-09-12",
    "2023-09-20",
    "2023-10-06",
    "2023-10-10",
    "2023-11-01",
    "2023-11-03",
    "2023-11-14",
    "2023-12-01",
    "2023-12-12",
    "2023-12-13",
    "2024-01-05",
    "2024-01-09",
    "2024-01-31",
    "2024-02-02",
    "2024-02-13",
    "2024-03-01",
    "2024-03-12",
    "2024-03-20",
    "2024-04-05",
    "2024-04-09",
    "2024-05-01",
    "2024-05-03",
    "2024-05-14",
    "2024-06-07",
    "2024-06-11",
    "2024-06-12",
    "2024-07-05",
    "2024-07-09",
    "2024-07-31",
    "2024-08-02",
    "2024-08-13",
    "2024-09-06",
    "2024-09-10",
    "2024-09-18",
    "2024-10-04",
    "2024-10-08",
    "2024-11-01",
    "2024-11-05",
    "2024-11-07",
    "2024-11-12",
    "2024-12-06",
    "2024-12-10",
    "2024-12-18",
    "2025-01-03",
    "2025-01-14",
    "2025-01-29",
    "2025-02-07",
    "2025-02-11",
    "2025-03-07",
    "2025-03-11",
    "2025-03-19",
    "2025-04-04",
    "2025-04-08",
    "2025-05-02",
    "2025-05-07",
    "2025-05-13",
    "2025-06-06",
    "2025-06-10",
    "2025-06-18",
    "2025-07-04",
    "2025-07-08",
    "2025-07-30",
    "2025-08-01",
    "2025-08-12",
    "2025-08-22",
    "2025-09-05",
    "2025-09-09",
    "2025-09-17",
    "2025-10-03",
    "2025-10-14",
    "2025-10-29",
    "2025-11-07",
    "2025-11-11",
    "2025-12-05",
    "2025-12-09",
    "2025-12-10",
)

MACRO_EVENT_DATES: list[pd.Timestamp] = [pd.Timestamp(s) for s in MACRO_EVENT_DATES_ISO]
FOMC_DECISION_DATES: list[pd.Timestamp] = [pd.Timestamp(s) for s in FOMC_DECISION_DATES_ISO]

