Beispiel #1
0
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())
Beispiel #2
0
 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])
Beispiel #3
0
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))
Beispiel #4
0
    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
Beispiel #5
0
 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
Beispiel #6
0
 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            
Beispiel #7
0
    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
Beispiel #8
0
 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
Beispiel #9
0
    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
Beispiel #10
0
    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
Beispiel #11
0
    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
Beispiel #12
0
 def row_data(x): 
     if len(x) < 2:
         return None
     return parse_date(x[0]), float(x[1])
Beispiel #13
0
def pdparse_date(ndate):
    xdt = parse_date(ndate)
    return pd.Timestamp(xdt)