私はPandasを使用してTradingカレンダーを作成しようとしています。 USFederalHolidayCalendarに基づいてcalインスタンスを作成できます。 USFederalHolidayCalendarは、取引カレンダーにコロンブスの日と退役軍人の日が含まれていない点で、取引カレンダーと一致しません。ただし、トレーディングカレンダーにはグッドフライデーが含まれています(USFederalHolidayCalendarには含まれていません)。次のコードの最後の行を除くすべては動作します:Pandasで取引休日カレンダーを作成
from pandas.tseries.holiday import get_calendar, HolidayCalendarFactory, GoodFriday
from datetime import datetime
cal = get_calendar('USFederalHolidayCalendar') # Create calendar instance
cal.rules.pop(7) # Remove Veteran's Day rule
cal.rules.pop(6) # Remove Columbus Day rule
tradingCal = HolidayCalendarFactory('TradingCalendar', cal, GoodFriday)
私はホリデールールを見ることができるという点でtradingCalインスタンスが機能しているようです。
In[10]: tradingCal.rules
Out[10]:
[Holiday: Labor Day (month=9, day=1, offset=<DateOffset: kwds={'weekday': MO(+1)}>),
Holiday: Presidents Day (month=2, day=1, offset=<DateOffset: kwds={'weekday': MO(+3)}>),
Holiday: Good Friday (month=1, day=1, offset=[<Easter>, <-2 * Days>]),
Holiday: Dr. Martin Luther King Jr. (month=1, day=1, offset=<DateOffset: kwds={'weekday': MO(+3)}>),
Holiday: New Years Day (month=1, day=1, observance=<function nearest_workday at 0x000000000A190BA8>),
Holiday: Thanksgiving (month=11, day=1, offset=<DateOffset: kwds={'weekday': TH(+4)}>),
Holiday: July 4th (month=7, day=4, observance=<function nearest_workday at 0x000000000A190BA8>),
Holiday: Christmas (month=12, day=25, observance=<function nearest_workday at 0x000000000A190BA8>),
Holiday: MemorialDay (month=5, day=31, offset=<DateOffset: kwds={'weekday': MO(-1)}>)]
私は日付範囲での休日を一覧表示しようとすると、私は次のエラーを取得する:
In[11]: tradingCal.holidays(datetime(2014, 12, 31), datetime(2016, 12, 31))
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\IPython\core\interactiveshell.py", line 3035, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-12-2708cd2db7a0>", line 1, in <module>
tradingCal.holidays(datetime(2014, 12, 31), datetime(2016, 12, 31))
TypeError: unbound method holidays() must be called with TradingCalendar instance as first argument (got datetime instance instead)
任意のアイデア?
パーフェクト、jezrael。ありがとうございました。 – vlmercado
これには大きな欠点があると私は思います! '.pop'を使うことは、" in-place "操作(用語が分からないため)であるため、基本クラス' pandas.tseries.holiday.USFederalHolidayCalendar'に影響します。つまり、 'get_calendar( 'USFederalHolidayCalendar')'からcal2を試して再作成すると、ルールは 'cal'と同じになります。つまり、もう存在しないので、あなたは 'USFederalHolidayCalendar'のクリーンなバージョンを手に入れません。それを修正しました! – evan54
@ evan54私はこれにも気づいた。解決策はありますか? – WillZ