예제 #1
0
def create_ts_calendar(df, ts_settings, additional_events=None):
    """
    df: pandas df
    ts_settings: dict
        Parameters for time series project
    additional_events: pandas df(optional)
        df of additional events to add to calendar

    Returns:
    --------
    Calendar of events

    """
    date_col = ts_settings['date_col']

    cal = USFederalHolidayCalendar(AbstractHolidayCalendar)

    black_friday = Holiday(
        "Black Friday",
        month=11,
        day=1,
        offset=[pd.DateOffset(weekday=TH(4)),
                pd.DateOffset(1)])
    cyber_monday = Holiday(
        "Cyber Monday",
        month=11,
        day=1,
        offset=[pd.DateOffset(weekday=TH(4)),
                pd.DateOffset(4)])
    cal.rules.append(black_friday)
    cal.rules.append(cyber_monday)

    cal.rules[9] = Holiday('Christmas', month=12, day=25)
    cal.rules[4] = Holiday('July 4th', month=7, day=4)

    events = pd.DataFrame(
        cal.holidays(
            start=pd.to_datetime(df[date_col].min()),
            end=pd.to_datetime(df[date_col].max()) + dt.timedelta(days=365),
            return_name=True,
        ))
    events = events.reset_index()
    events.columns = ['Date', 'Event']

    if additional_events is not None:
        assert additional_events.shape[
            1] == 2, 'additional events must be a df with 2 columns'
        additional_events.columns = ['Date', 'Event']
        additional_events['Date'] = pd.to_datetime(additional_events['Date'])
        events = events.append(additional_events)

    events['Date'] = [
        dt.datetime.strftime(pd.to_datetime(date), '%Y-%m-%d')
        for date in events['Date']
    ]
    return events.drop_duplicates().sort_values(by='Date').reset_index(
        drop=True)
예제 #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)
    ]
예제 #3
0
        # holiday. In this case, the smaller distance (182 days) is returned.
        return (index - holiday_date[0]).days

    return distance_to_day


EasterSunday = Holiday("Easter Sunday", month=1, day=1, offset=[Easter(), Day(0)])
NewYearsDay = Holiday("New Years Day", month=1, day=1)
SuperBowl = Holiday("Superbowl", month=2, day=1, offset=DateOffset(weekday=SU(1)))
MothersDay = Holiday("Mothers Day", month=5, day=1, offset=DateOffset(weekday=SU(2)))
IndependenceDay = Holiday("Independence Day", month=7, day=4)
ChristmasEve = Holiday("Christmas", month=12, day=24)
ChristmasDay = Holiday("Christmas", month=12, day=25)
NewYearsEve = Holiday("New Years Eve", month=12, day=31)
BlackFriday = Holiday(
    "Black Friday", month=11, day=1, offset=[pd.DateOffset(weekday=TH(4)), Day(1)]
)
CyberMonday = Holiday(
    "Cyber Monday",
    month=11,
    day=1,
    offset=[pd.DateOffset(weekday=TH(4)), Day(4)],
)


NEW_YEARS_DAY = "new_years_day"
MARTIN_LUTHER_KING_DAY = "martin_luther_king_day"
SUPERBOWL = "superbowl"
PRESIDENTS_DAY = "presidents_day"
GOOD_FRIDAY = "good_friday"
EASTER_SUNDAY = "easter_sunday"
예제 #4
0
    european_labour_day,
    maundy_thursday,
    new_years_day,
    new_years_eve,
    whit_monday,
)
from .exchange_calendar import HolidayCalendar, ExchangeCalendar

NewYearsDay = new_years_day()

# This falls on the first Thursday after 18 April.
FirstDayOfSummer = Holiday(
    "First Day of Summer",
    month=4,
    day=19,
    offset=DateOffset(weekday=TH(1)),
)

LabourDay = european_labour_day()

MaundyThursday = maundy_thursday()
AscensionDay = ascension_day()
WhitMonday = whit_monday()

NationalDay = Holiday("Icelandic Republic Day", month=6, day=17)

# This falls on the first Monday of August.
CommerceDay = Holiday(
    "Commerce Day",
    month=8,
    day=1,
예제 #5
0
SuperBowl = Holiday("Superbowl",
                    month=2,
                    day=1,
                    offset=DateOffset(weekday=SU(1)))
MothersDay = Holiday("Mothers Day",
                     month=5,
                     day=1,
                     offset=DateOffset(weekday=SU(2)))
IndependenceDay = Holiday("Independence Day", month=7, day=4)
ChristmasEve = Holiday("Christmas", month=12, day=24)
ChristmasDay = Holiday("Christmas", month=12, day=25)
NewYearsEve = Holiday("New Years Eve", month=12, day=31)
BlackFriday = Holiday("Black Friday",
                      month=11,
                      day=1,
                      offset=[pd.DateOffset(weekday=TH(4)),
                              Day(1)])
CyberMonday = Holiday(
    "Cyber Monday",
    month=11,
    day=1,
    offset=[pd.DateOffset(weekday=TH(4)), Day(4)],
)

NEW_YEARS_DAY = "new_years_day"
MARTIN_LUTHER_KING_DAY = "martin_luther_king_day"
SUPERBOWL = "superbowl"
PRESIDENTS_DAY = "presidents_day"
GOOD_FRIDAY = "good_friday"
EASTER_SUNDAY = "easter_sunday"
EASTER_MONDAY = "easter_monday"
# 2008 was the last year SIFMA observed early close the day prior to Columbus Day
FridayBeforeColumbusDayBefore2009 = Holiday(
    'Early Close Friday Before Columbus Day',
    month=10,
    day=1,
    offset=[DateOffset(weekday=MO(2)),
            DateOffset(-3)],
    end_date=Timestamp('2009-01-01'),
)

WednesdayBeforeThanksgiving = Holiday(
    'Early Close Wednesday Before Thanksgiving Day',
    month=11,
    day=1,
    offset=[DateOffset(weekday=TH(4)),
            DateOffset(-1)],
)

# 2008 was the last year SIFMA observed early close for Black Friday
BlackFridayBefore2009 = Holiday(
    'Early Close Wednesday Before Thanksgiving Day',
    month=11,
    day=1,
    offset=[DateOffset(weekday=TH(4)),
            DateOffset(1)],
    end_date=Timestamp('2009-01-01'),
)

ChristmasEve = Holiday(
    'Christmas Eve',