def nDayOfWeek(pydate, n=-1, isoweekday=3): ''' isoweekday: Monday=1, Tuesday=2, Wednesday=3, Thursday=4, Friday-5 Defaults to previous ''' pydate = parse_date(pydate) return pd.DateOffset(pydate, days=isoweekday-pydate.isoweekday())
def test_date_creation(self): tests = [ (19600809, date(1960, 8, 9)), ("9/7/1980", date(1980, 9, 7)), ("xxx", None), ] for test in tests: self.assertEquals(parse_date(test[0]), test[1])
def nOffset(pydate, n=-1, offsetClass=BDay): ''' Generate offset python datetime.date based on pandas offset class offsetClass: BDay (default), MonthEnd, or YearEnd ''' pydate = parse_date(pydate) offSet = offsetClass(n) return pd.Timestamp((datetime.fromordinal(pydate.toordinal()) + offSet))
def __init__(self, strike, expiration, dividend=None, putcall=OptionType.CALL, settlementDays=1, calendar=Calendars.UnitedStates(Calendars.NYSE)): self._strike = float(strike) self._expiration = parse_date(expiration) self._dividend = dividend if dividend else 0.0 self._putcall = putcall self._calendar = calendar self._settlementDays = settlementDays self._settlement = None
def __init__(self, strike, expiration, dividend=None, putcall=OptionType.CALL, settlementDays = 1, calendar=Calendars.UnitedStates(Calendars.NYSE) ): self._strike = float(strike) self._expiration = parse_date(expiration) self._dividend = dividend if dividend else 0.0 self._putcall = putcall self._calendar = calendar self._settlementDays = settlementDays self._settlement = None
def is_business_day(cls, pydate, calendar=None): if not calendar: calendar = cls.TARGET() elif not hasattr(calendar, "advance"): return None qldate = qldate_from_pydate(parse_date(pydate)) try: return calendar.is_business_day(qldate) except: try: return calendar().is_business_day(qldate) except: return None
def adjust(cls, pydate, calendar=None, convention=None): if not calendar: calendar = cls.TARGET() elif not hasattr(calendar, "adjust"): return None if not convention: convention = BusinessDayConventions.Following qldate = qldate_from_pydate(parse_date(pydate)) try: return pydate_from_qldate(calendar.adjust(qldate, convention)) except: try: return pydate_from_qldate(calendar().adjust(qldate, convention)) except: return None
def advance(cls, pydate, n, timeunit=None, calendar=None, convention=None): """ Advance pydate according the specified calendar and convention :pydate: e.g. 19600809, date(1964, 9, 29), '5-23-1993' :n: integer :timeunit: e.g., enums.TimeUnits.Days usage ----- Note 9/6/1980 is a weekend >>> Calendars.advance(19800906, 1) datetime.date(1980, 9, 8) """ if not calendar: calendar = cls.TARGET() elif not hasattr(calendar, "advance"): return None if not convention: convention = BusinessDayConventions.Following if not timeunit: timeunit = TimeUnits.Days qldate = qldate_from_pydate(parse_date(pydate)) try: return pydate_from_qldate(calendar.advance(qldate, n, timeunit)) except: try: return pydate_from_qldate( calendar().advance(qldate, n, timeunit) ) except: print("failure {}".format(qldate)) return None
def adjust(cls, pydate, calendar=None, convention=None): if not calendar: calendar = cls.TARGET() elif not hasattr(calendar, "adjust"): return None if not convention: convention = BusinessDayConventions.Following qldate = qldate_from_pydate(parse_date(pydate)) try: return pydate_from_qldate(calendar.adjust(qldate, convention)) except: try: return pydate_from_qldate(calendar().adjust( qldate, convention)) except: return None
def advance(cls, pydate, n, timeunit=None, calendar=None, convention=None): """ Advance pydate according the specified calendar and convention :pydate: e.g. 19600809, date(1964, 9, 29), '5-23-1993' :n: integer :timeunit: e.g., enums.TimeUnits.Days usage ----- Note 9/6/1980 is a weekend >>> Calendars.advance(19800906, 1) datetime.date(1980, 9, 8) """ if not calendar: calendar = cls.TARGET() elif not hasattr(calendar, "advance"): return None if not convention: convention = BusinessDayConventions.Following if not timeunit: timeunit = TimeUnits.Days qldate = qldate_from_pydate(parse_date(pydate)) try: return pydate_from_qldate(calendar.advance(qldate, n, timeunit)) except: try: return pydate_from_qldate(calendar().advance( qldate, n, timeunit)) except: print("failure {}".format(qldate)) return None
def row_data(x): if len(x) < 2: return None return parse_date(x[0]), float(x[1])
def pdparse_date(ndate): xdt = parse_date(ndate) return pd.Timestamp(xdt)