fa45d8aa5f
- health_checklist.json: 192.168.1.122→node122
- ocr_client.py: docstring IP→node122
- docs/market-data-requirements.md: IP→node122
- 所有API调用通过ProxyHandler({})绕过系统代理
Privoxy对node122:18003返回500,直连正常
423 lines
10 KiB
Python
423 lines
10 KiB
Python
from datetime import timedelta
|
|
|
|
from dateutil.relativedelta import MO
|
|
from pandas import DateOffset, Timestamp
|
|
from pandas.tseries.holiday import Holiday, sunday_to_monday
|
|
|
|
from .common_holidays import new_years_day
|
|
from .exchange_calendar import SUNDAY
|
|
|
|
|
|
def sunday_to_tuesday(dt):
|
|
"""
|
|
If holiday falls on Sunday, use Tuesday instead.
|
|
"""
|
|
if dt.weekday() == SUNDAY:
|
|
return dt + timedelta(2)
|
|
return dt
|
|
|
|
|
|
def sunday_to_wednesday(dt):
|
|
"""
|
|
If holiday falls on Sunday, use Wednesday instead.
|
|
"""
|
|
if dt.weekday() == SUNDAY:
|
|
return dt + timedelta(3)
|
|
return dt
|
|
|
|
|
|
NewYearsHolidayJan1 = new_years_day()
|
|
|
|
NewYearsHolidayJan2 = Holiday(
|
|
"New Year's Holiday (Jan 2)",
|
|
month=1,
|
|
day=2,
|
|
)
|
|
NewYearsHolidayJan3 = Holiday(
|
|
"New Year's Holiday (Jan 3)",
|
|
month=1,
|
|
day=3,
|
|
)
|
|
|
|
# https://en.wikipedia.org/wiki/Coming_of_Age_Day
|
|
ComingOfAgeDayThrough1999 = Holiday(
|
|
"Coming of Age Day (through 1999)",
|
|
month=1,
|
|
day=15,
|
|
start_date="1948-01-01",
|
|
end_date="2000-01-01",
|
|
observance=sunday_to_monday,
|
|
)
|
|
ComingOfAgeDay2000Onwards = Holiday(
|
|
"Coming of Age Day (2000 onwards)",
|
|
month=1,
|
|
day=1,
|
|
offset=DateOffset(weekday=MO(2)),
|
|
start_date="2000-01-01",
|
|
)
|
|
|
|
NationalFoundationDay = Holiday(
|
|
"National Foundation Day",
|
|
month=2,
|
|
day=11,
|
|
observance=sunday_to_monday,
|
|
)
|
|
|
|
# The dates on which the vernal/autumnal equinox will be observed
|
|
# are announced on the first weekday of February of the previous
|
|
# year, so we treat them as ad-hoc holidays, even though they
|
|
# occur every year. For more info, see:
|
|
# https://en.wikipedia.org/wiki/Public_holidays_in_Japan#cite_note-3
|
|
# See:
|
|
# https://www.timeanddate.com/holidays/japan/
|
|
# https://www.timeanddate.com/holidays/japan/spring-equinox
|
|
VernalEquinoxes = [
|
|
Timestamp("1997-03-20"),
|
|
Timestamp("1998-03-21"),
|
|
Timestamp("1999-03-22"),
|
|
Timestamp("2000-03-20"),
|
|
Timestamp("2001-03-20"),
|
|
Timestamp("2002-03-21"),
|
|
Timestamp("2003-03-21"),
|
|
Timestamp("2004-03-20"),
|
|
Timestamp("2005-03-21"),
|
|
Timestamp("2006-03-21"),
|
|
Timestamp("2007-03-21"),
|
|
Timestamp("2008-03-20"),
|
|
Timestamp("2009-03-20"),
|
|
Timestamp("2010-03-22"),
|
|
Timestamp("2011-03-21"),
|
|
Timestamp("2012-03-20"),
|
|
Timestamp("2013-03-20"),
|
|
Timestamp("2014-03-21"),
|
|
Timestamp("2015-03-21"),
|
|
Timestamp("2016-03-21"),
|
|
Timestamp("2017-03-20"),
|
|
Timestamp("2018-03-21"),
|
|
Timestamp("2019-03-21"),
|
|
Timestamp("2020-03-20"),
|
|
Timestamp("2021-03-20"),
|
|
Timestamp("2022-03-21"),
|
|
Timestamp("2023-03-21"),
|
|
Timestamp("2024-03-20"),
|
|
Timestamp("2025-03-20"),
|
|
Timestamp("2026-03-20"),
|
|
Timestamp("2027-03-22"),
|
|
Timestamp("2028-03-20"),
|
|
Timestamp("2029-03-20"),
|
|
Timestamp("2030-03-20"),
|
|
Timestamp("2031-03-21"),
|
|
Timestamp("2032-03-20"),
|
|
Timestamp("2033-03-21"),
|
|
Timestamp("2034-03-20"),
|
|
Timestamp("2035-03-21"),
|
|
Timestamp("2036-03-20"),
|
|
Timestamp("2037-03-20"),
|
|
Timestamp("2038-03-20"),
|
|
Timestamp("2039-03-21"),
|
|
Timestamp("2040-03-20"),
|
|
]
|
|
|
|
# The Golden Week holidays (late April - early May) are listed in reverse
|
|
# chronological order because earlier holidays must be aware of later holidays
|
|
# so that that if an earlier holiday (Constitution Memorial Day, Greenery Day)
|
|
# falls on a Sunday, that holiday can be observed on the next non-holiday
|
|
# weekday.
|
|
# Clash with GreeneryDay and ConstitutionMemorialDay
|
|
ChildrensDay = Holiday(
|
|
"Children's Day",
|
|
month=5,
|
|
day=5,
|
|
observance=sunday_to_monday,
|
|
)
|
|
|
|
# From 1986-2006, the day between Constitution Memorial Day and Children's
|
|
# Day was an unnamed citizen's holiday because it was between two holidays.
|
|
# In 2007, Greenery Day was moved from April 29 to May 4, replacing the
|
|
# unnamed citizen's holiday. For more info, see:
|
|
# https://en.wikipedia.org/wiki/Golden_Week_(Japan)
|
|
# Clash with ChildrensDay and ConstitutionMemorialDay
|
|
GreeneryDay2007Onwards = Holiday(
|
|
"Greenery Day",
|
|
month=5,
|
|
day=4,
|
|
start_date="2007-01-01",
|
|
observance=sunday_to_tuesday,
|
|
)
|
|
|
|
CitizensHolidayGoldenWeek = Holiday(
|
|
"Citizen's Holiday Golden Week",
|
|
month=5,
|
|
day=4,
|
|
end_date="2007-01-01",
|
|
observance=sunday_to_monday,
|
|
)
|
|
|
|
# In 2007, April 29 was changed from Greenery Day to Showa Day,
|
|
# and Greenery Day was moved to May 4.
|
|
GreeneryDayThrough2006 = Holiday(
|
|
"Greenery Day",
|
|
month=4,
|
|
day=29,
|
|
end_date="2007-01-01",
|
|
observance=sunday_to_monday,
|
|
)
|
|
|
|
ShowaDay = Holiday(
|
|
"Showa Day",
|
|
month=4,
|
|
day=29,
|
|
start_date="2007-01-01",
|
|
observance=sunday_to_monday,
|
|
)
|
|
|
|
# Clash with ChildrensDay
|
|
ConstitutionMemorialDay = Holiday(
|
|
"Constitution Memorial Day",
|
|
month=5,
|
|
day=3,
|
|
observance=sunday_to_wednesday,
|
|
)
|
|
|
|
MarineDayThrough2002 = Holiday(
|
|
"Marine Day (through 2002)",
|
|
month=7,
|
|
day=20,
|
|
end_date="2003-01-01",
|
|
observance=sunday_to_monday,
|
|
)
|
|
|
|
MarineDay2003OnwardsThrough2019 = Holiday(
|
|
"Marine Day (2003 - 2019)",
|
|
month=7,
|
|
day=1,
|
|
offset=DateOffset(weekday=MO(3)),
|
|
start_date="2003-01-01",
|
|
end_date="2020-01-01",
|
|
)
|
|
|
|
# Changed due to Tokyo Olympics
|
|
MarineDay2020 = Holiday(
|
|
"Marine Day (2020)",
|
|
month=7,
|
|
day=23,
|
|
year=2020,
|
|
)
|
|
|
|
MarineDay2021 = Holiday(
|
|
"Marine Day (2021)",
|
|
month=7,
|
|
day=22,
|
|
year=2021,
|
|
)
|
|
|
|
MarineDay2022Onwards = Holiday(
|
|
"Marine Day (2022 onwards)",
|
|
month=7,
|
|
day=1,
|
|
offset=DateOffset(weekday=MO(3)),
|
|
start_date="2022-01-01",
|
|
)
|
|
|
|
MountainDayThrough2019 = Holiday(
|
|
"Mountain Day (through 2019)",
|
|
month=8,
|
|
day=11,
|
|
start_date="2016-01-01",
|
|
end_date="2020-01-01",
|
|
observance=sunday_to_monday,
|
|
)
|
|
|
|
# Changed due to Tokyo Olympics
|
|
MountainDay2020 = Holiday(
|
|
"Mountain Day (2020)",
|
|
month=8,
|
|
day=10,
|
|
year=2020,
|
|
)
|
|
|
|
MountainDay2021 = Holiday(
|
|
"Mountain Day (2021)",
|
|
month=8,
|
|
day=9,
|
|
year=2021,
|
|
)
|
|
|
|
MountainDay2022Onwards = Holiday(
|
|
"Mountain Day (2022 onwards)",
|
|
month=8,
|
|
day=11,
|
|
start_date="2022-01-01",
|
|
observance=sunday_to_monday,
|
|
)
|
|
|
|
# See note on equinoxes above VernalEquinoxes
|
|
AutumnalEquinoxes = [
|
|
Timestamp("1997-09-23"),
|
|
Timestamp("1998-09-23"),
|
|
Timestamp("1999-09-23"),
|
|
Timestamp("2000-09-23"),
|
|
Timestamp("2001-09-24"),
|
|
Timestamp("2002-09-23"),
|
|
Timestamp("2003-09-23"),
|
|
Timestamp("2004-09-23"),
|
|
Timestamp("2005-09-23"),
|
|
Timestamp("2006-09-23"),
|
|
Timestamp("2007-09-24"),
|
|
Timestamp("2008-09-23"),
|
|
Timestamp("2009-09-23"),
|
|
Timestamp("2010-09-23"),
|
|
Timestamp("2011-09-23"),
|
|
Timestamp("2012-09-22"),
|
|
Timestamp("2013-09-23"),
|
|
Timestamp("2014-09-23"),
|
|
Timestamp("2015-09-23"),
|
|
Timestamp("2016-09-22"),
|
|
Timestamp("2017-09-23"),
|
|
Timestamp("2018-09-24"),
|
|
Timestamp("2019-09-23"),
|
|
Timestamp("2020-09-22"),
|
|
Timestamp("2021-09-23"),
|
|
Timestamp("2022-09-23"),
|
|
Timestamp("2023-09-23"),
|
|
Timestamp("2024-09-23"),
|
|
Timestamp("2025-09-23"),
|
|
Timestamp("2026-09-23"),
|
|
Timestamp("2027-09-23"),
|
|
Timestamp("2028-09-22"),
|
|
Timestamp("2029-09-24"),
|
|
Timestamp("2030-09-23"),
|
|
Timestamp("2031-09-23"),
|
|
Timestamp("2032-09-22"),
|
|
Timestamp("2033-09-23"),
|
|
Timestamp("2034-09-23"),
|
|
Timestamp("2035-09-24"),
|
|
Timestamp("2036-09-22"),
|
|
Timestamp("2036-09-22"),
|
|
Timestamp("2037-09-23"),
|
|
Timestamp("2038-09-23"),
|
|
Timestamp("2039-09-23"),
|
|
Timestamp("2040-09-22"),
|
|
]
|
|
|
|
# If the Autumnal Equinox falls on a Wednesday, the Tuesday before
|
|
# it is a holiday because it will be sandwiched between Respect for
|
|
# the Aged Day and the Autumnal Equinox. For more info, see:
|
|
# https://en.wikipedia.org/wiki/Silver_Week
|
|
CitizensHolidaySilverWeek = [
|
|
Timestamp("2009-09-22"),
|
|
Timestamp("2015-09-22"),
|
|
Timestamp("2026-09-22"),
|
|
Timestamp("2032-09-21"),
|
|
Timestamp("2037-09-22"),
|
|
]
|
|
|
|
RespectForTheAgedDayThrough2002 = Holiday(
|
|
"Respect for the Aged Day (through 2002)",
|
|
month=9,
|
|
day=15,
|
|
end_date="2003-01-01",
|
|
observance=sunday_to_monday,
|
|
)
|
|
|
|
RespectForTheAgedDay2003Onwards = Holiday(
|
|
"Respect for the Aged Day (2003 onwards)",
|
|
month=9,
|
|
day=1,
|
|
offset=DateOffset(weekday=MO(3)),
|
|
start_date="2003-01-01",
|
|
)
|
|
|
|
# https://en.wikipedia.org/wiki/Health_and_Sports_Day
|
|
HealthAndSportsDayThrough1999 = Holiday(
|
|
"Heakth and Sports Day (through 1999)",
|
|
month=10,
|
|
day=10,
|
|
start_date="1966-01-01",
|
|
end_date="2000-01-01",
|
|
observance=sunday_to_monday,
|
|
)
|
|
|
|
HealthAndSportsDay2000OnwardsThrough2019 = Holiday(
|
|
"Health and Sports Day (2000 - 2019)",
|
|
month=10,
|
|
day=1,
|
|
offset=DateOffset(weekday=MO(2)),
|
|
start_date="2000-01-01",
|
|
end_date="2020-01-01",
|
|
)
|
|
|
|
# Changed due to Tokyo Olympics
|
|
HealthAndSportsDay2020 = Holiday(
|
|
"Health and Sports Day (2020)",
|
|
month=7,
|
|
day=24,
|
|
year=2020,
|
|
)
|
|
|
|
HealthAndSportsDay2021 = Holiday(
|
|
"Health and Sports Day (2021)",
|
|
month=7,
|
|
day=23,
|
|
year=2021,
|
|
)
|
|
|
|
HealthAndSportsDay2022Onwards = Holiday(
|
|
"Health and Sports Day (2022 onwards)",
|
|
month=10,
|
|
day=1,
|
|
offset=DateOffset(weekday=MO(2)),
|
|
start_date="2022-01-01",
|
|
)
|
|
|
|
CultureDay = Holiday(
|
|
"Culture Day",
|
|
month=11,
|
|
day=3,
|
|
observance=sunday_to_monday,
|
|
)
|
|
|
|
LaborThanksgivingDay = Holiday(
|
|
"Labor Thanksgiving Day",
|
|
month=11,
|
|
day=23,
|
|
observance=sunday_to_monday,
|
|
)
|
|
|
|
# Emperor Akihito is due to retire on 30 April 2019, meaning the holiday
|
|
# will not be observed in 2019, and its next celebration will be on the
|
|
# birthday of Crown Prince Naruhito (23 February 2020).
|
|
EmperorAkihitoBirthday = Holiday(
|
|
"Emperor Akihito's Birthday",
|
|
month=12,
|
|
day=23,
|
|
end_date="2019-04-30",
|
|
observance=sunday_to_monday,
|
|
)
|
|
|
|
EmperorNaruhitoBirthday = Holiday(
|
|
"Emperor Naruhito's Birthday",
|
|
month=2,
|
|
day=23,
|
|
start_date="2019-04-30",
|
|
observance=sunday_to_monday,
|
|
)
|
|
|
|
NewYearsHolidayDec31 = Holiday(
|
|
"New Year's Holiday (Dec 31)",
|
|
month=12,
|
|
day=31,
|
|
)
|
|
|
|
Misc2019Holidays = [
|
|
Timestamp("2019-04-30"), # Abdication Day
|
|
Timestamp("2019-05-01"), # Accession Day
|
|
Timestamp("2019-05-02"), # Citizen's Holiday
|
|
Timestamp("2019-10-22"), # Enthronement Ceremony
|
|
]
|
|
|
|
EquityTradingSystemFailure = [
|
|
# https://www.jpx.co.jp/english/corporate/news/news-releases/0060/20201019-01.html
|
|
Timestamp("2020-10-01"),
|
|
]
|