Ejemplo n.º 1
0
class Cal_EngWales(AbstractHolidayCalendar):
    rules = [
        GoodFriday, EasterMonday,
        Holiday('New Years Day', month=1, day=1, observance=next_monday),
        Holiday('Early May bank holiday',
                month=5,
                day=1,
                offset=DateOffset(weekday=MO(1))),
        Holiday('Spring bank holiday',
                month=5,
                day=31,
                offset=DateOffset(weekday=MO(-1))),
        Holiday('Summer bank holiday',
                month=8,
                day=31,
                offset=DateOffset(weekday=MO(-1))),
        Holiday('Christmas Day', month=12, day=25, observance=next_monday),
        Holiday('Boxing Day',
                month=12,
                day=26,
                observance=next_monday_or_tuesday)
    ]
    # assign id to each hol; non-hol will have id_hol = 0
    df_gen_hols = pd.DataFrame({
        'name_hol': [hol.name for hol in rules],
        'id_hol': range(1,
                        len(rules) + 1)
    })

    # get: name_hol; id_hol (assign '0' to non-hols); dow, doy, moy
    def get_hols(self, DF, col_date):
        series_hols = self.holidays(start=DF[col_date].min(),
                                    end=DF[col_date].max(),
                                    return_name=True)
        df_hols = pd.DataFrame({
            col_date:
            pd.DataFrame(series_hols.index)[0].dt.date,
            'name_hol':
            series_hols.tolist()
        })
        # merge to get name_ and id_hol; assign '0' to non-holidays
        DF[col_date] = pd.to_datetime(DF[col_date]).dt.date
        DF = pd.merge(pd.merge(DF,
                               df_hols[[col_date, 'name_hol']],
                               how='left',
                               on=col_date),
                      self.df_gen_hols,
                      how='left',
                      on='name_hol')
        DF['id_hol'].fillna(0, inplace=True)
        DF['dow'], DF['doy'], DF['moy'] = pd.to_datetime(
            DF[col_date]).dt.dayofweek, pd.to_datetime(
                DF[col_date]).dt.dayofyear, pd.to_datetime(
                    DF[col_date]).dt.month
        return DF
Ejemplo n.º 2
0
class US_Stocks_Trading_Calendar(AbstractHolidayCalendar):
    rules= [
        Holiday("New Year's Day", month=1, day=1, observance=sunday_to_monday), 
        Holiday("Martin Luther King, Jr. Day", month=1, day=1, offset=DateOffset(weekday=MO(3))), 
        Holiday("Washington’s Birthday", month=2, day=1, offset=DateOffset(weekday=MO(3))), 
        Holiday("Good Friday", month=1, day=1, offset=[Easter(),Day(-2)]), 
        Holiday("Memorial Day", month=5, day=31, offset=DateOffset(weekday=MO(-1))), 
        Holiday("Independence Day", month=7, day=4, observance=nearest_workday), 
        Holiday("Labor Day", month=9, day=1, offset=DateOffset(weekday=MO(1))), 
        Holiday("Thanksgiving Day", month=11, day=1, offset=DateOffset(weekday=TH(4))), 
        Holiday("Christmas Day", month=12, day=25, observance=nearest_workday), 
        Holiday("Day before Independence Day - Half day", month=7, day=3, observance=previous_friday), 
        Holiday("Day following Thanksgiving - Half day", month=11, day=1, offset=DateOffset(weekday=WE(4))), 
        Holiday("Christmas Eve - Half day", month=12, day=24, observance=previous_friday)
    ]
class EnglandAndWalesHolidayCalendar(AbstractHolidayCalendar):
    rules = [
        Holiday('New Years Day', month=1, day=1, observance=next_monday),
        GoodFriday,
        EasterMonday,
        Holiday('Early May bank holiday',
                month=5, day=1, offset=DateOffset(weekday=MO(1))),
        Holiday('Spring bank holiday',
                month=5, day=31, offset=DateOffset(weekday=MO(-1))),
        Holiday('Summer bank holiday',
                month=8, day=31, offset=DateOffset(weekday=MO(-1))),
        Holiday('Christmas Day', month=12, day=25, observance=next_monday),
        Holiday('Boxing Day',
                month=12, day=26, observance=next_monday_or_tuesday)
    ]
Ejemplo n.º 4
0
class ExampleCalendar(AbstractHolidayCalendar):
    rules = [
        USMemorialDay,
        Holiday('July 4th', month=7, day=4, observance=nearest_workday),
        Holiday('Columbus Day',
                month=10,
                day=1,
                offset=pd.DateOffset(weekday=MO(2)))
    ]
Ejemplo n.º 5
0
    def test_special_holidays(self):
        base_date = [datetime(2012, 5, 28)]
        holiday_1 = Holiday('One-Time', year=2012, month=5, day=28)
        holiday_2 = Holiday('Range', month=5, day=28,
                            start_date=datetime(2012, 1, 1),
                            end_date=datetime(2012, 12, 31),
                            offset=DateOffset(weekday=MO(1)))

        assert base_date == holiday_1.dates(self.start_date, self.end_date)
        assert base_date == holiday_2.dates(self.start_date, self.end_date)
Ejemplo n.º 6
0
class ASXTradingCalendar(AbstractHolidayCalendar):
    rules = [
        Holiday('New Year\'s Day', month=1, day=1, observance=next_monday),
        Holiday('Australia Day', month=1, day=26, observance=next_monday),
        GoodFriday,
        EasterMonday,
        Holiday('ANZAC Day', month=4, day=25),
        Holiday('Queen\'s Birthday',
                month=6,
                day=1,
                offset=DateOffset(weekday=MO(2))),
        Holiday('Christmas Day',
                month=12,
                day=25,
                observance=my_next_monday_or_tuesday),
        Holiday('Boxing Day',
                month=12,
                day=26,
                observance=my_next_monday_or_tuesday),
    ]
    month=6,
    day=12,
    start_date='2011',
)

NinoyAquinoDay = Holiday(
    'Ninoy Aquino Day',
    month=8,
    day=21,
    start_date='2011',
)

NationalHeroesDay = Holiday('National Heroes Day',
                            month=8,
                            day=31,
                            offset=DateOffset(weekday=MO(-1)),
                            start_date='2011')

AllSaintsDay = all_saints_day(start_date='2011')

AllSaintsDayExtra = Holiday(
    "Friday after All Saint's Day",
    month=11,
    day=2,
    start_date='2011',
    observance=only_friday,
)

BonifacioDay = Holiday(
    'Bonifacio Day',
    month=11,
Ejemplo n.º 8
0
    WeekendBoxingDay
)

# New Year's Day
TSXNewYearsDay = Holiday(
    "New Year's Day",
    month=1,
    day=1,
    observance=weekend_to_monday,
)
# Ontario Family Day
FamilyDay = Holiday(
    "Family Day",
    month=2,
    day=1,
    offset=DateOffset(weekday=MO(3)),
    start_date='2008-01-01',
)
# Victoria Day
VictoriaDay = Holiday(
    'Victoria Day',
    month=5,
    day=25,
    offset=DateOffset(weekday=MO(-1)),
)
# Canada Day
CanadaDay = Holiday(
    'Canada Day',
    month=7,
    day=1,
    observance=weekend_to_monday,
from .common_holidays import (
    epiphany,
    immaculate_conception,
    maundy_thursday,
    new_years_day,
    new_years_eve,
    european_labour_day,
    christmas,
)
from .trading_calendar import (
    TradingCalendar,
    HolidayCalendar,
)

# Used for "first Monday on or after date"
next_monday_offset = DateOffset(weekday=MO(1))

NewYearsDay = new_years_day()

Epiphany = epiphany(observance=next_monday_offset)

StJosephsDay = Holiday(
    "St. Joseph's Day (next Monday)",
    month=3,
    day=19,
    offset=next_monday_offset,
)

MaundyThursday = maundy_thursday()

LabourDay = european_labour_day()
StPatricksDay = Holiday(
    "St. Patrick's Day",
    month=3,
    day=17,
    end_date='2001',
    observance=weekend_to_monday,
)

LabourDay = european_labour_day(end_date='2010', observance=weekend_to_monday)

MayBankHoliday = Holiday(
    'May Bank Holiday',
    month=5,
    day=1,
    offset=DateOffset(weekday=MO(1)),
)
JuneBankHoliday = Holiday(
    'June Bank Holiday',
    month=6,
    day=1,
    offset=DateOffset(weekday=MO(1)),
)

LastTradingDayBeforeChristmas = Holiday(
    'Last Trading Day Before Christmas',
    month=12,
    day=24,
    start_date='2010',
    observance=previous_friday,
)
Ejemplo n.º 11
0
@pytest.mark.parametrize(
    "name,kwargs",
    [
        ("One-Time", {
            "year": 2012,
            "month": 5,
            "day": 28
        }),
        (
            "Range",
            {
                "month": 5,
                "day": 28,
                "start_date": datetime(2012, 1, 1),
                "end_date": datetime(2012, 12, 31),
                "offset": DateOffset(weekday=MO(1)),
            },
        ),
    ],
)
def test_special_holidays(name, kwargs):
    base_date = [datetime(2012, 5, 28)]
    holiday = Holiday(name, **kwargs)

    start_date = datetime(2011, 1, 1)
    end_date = datetime(2020, 12, 31)

    assert base_date == holiday.dates(start_date, end_date)


def test_get_calendar():
    offset=[Easter(), -Day(47)],
)

TruthAndJusticeMemorialDay = Holiday(
    'Truth and Justice Memorial Day',
    month=3,
    day=24,
    start_date='2005',
)

MalvinasDayTo2004 = Holiday(
    'Malvinas Day (up to 2004)',
    month=3,
    day=31,
    end_date='2005',
    offset=pd.DateOffset(weekday=MO(1)),
)

MalvinasDayFrom2005 = Holiday(
    'Malvinas Day (2005-present)',
    month=4,
    day=2,
    start_date='2005'
)

MaundyThursday = maundy_thursday()

LabourDay = european_labour_day()

MayDayRevolution = Holiday(
    'May Day Revolution',
import pandas as pd
import datetime
from pandas.tseries.holiday import Holiday, nearest_workday, MO

ts = pd.date_range(start='1/1/2019', freq='H', end='12/31/2019')

holidays = [
    Holiday('xyz', month=12, day=5),
    Holiday('July 4th', month=7, day=4, observance=nearest_workday),
    Holiday('Columbus Day',
            month=10,
            day=1,
            offset=pd.DateOffset(weekday=MO(2)))
]

ts = pd.bdate_range(start='1/1/2019',
                    freq='H',
                    end='12/31/2019',
                    holidays=holidays)
print(ts)
    observance=weekend_to_monday,
)

# ANZAC Day
AnzacDay = Holiday(
    "ANZAC Day",
    month=4,
    day=25,
)

# Queen's Birthday
QueensBirthday = Holiday(
    "Queen's Birthday",
    month=6,
    day=1,
    offset=DateOffset(weekday=MO(2)),
)

# Christmas
Christmas = Holiday(
    "Christmas",
    month=12,
    day=25,
    observance=weekend_to_monday,
)

# Boxing day
BoxingDay = Holiday(
    "Boxing Day",
    month=12,
    day=26,
Ejemplo n.º 15
0
def closest_previous_monday(dt):
    """Observance for previous Monday"""
    return dt + DateOffset(weekday=MO(-1))
Ejemplo n.º 16
0
def closest_next_monday(dt):
    """Observance for next_monday"""
    return dt + DateOffset(weekday=MO(1))