Example #1
0
def test_combine_date_time():
    date = 20170101
    time = 145930
    assert jutil.combine_date_time(date, time) == 20170101145930

    a = np.arange(20170101, 20170101 + 500, dtype=np.int64)
    b = np.arange(93000, 93000 + 500, dtype=np.int64)
    assert np.all(jutil.combine_date_time(a, b) == a * 1000000 + b)
Example #2
0
def test_dtutil():
    import datetime
    date = 20170105
    dt = jutil.convert_int_to_datetime(date)

    assert jutil.shift(date, 2) == 20170119
    assert jutil.convert_datetime_to_int(jutil.shift(dt, 2)) == 20170119

    t = 145539
    dt = jutil.combine_date_time(date, t)
    assert jutil.split_date_time(dt) == (date, t)

    assert jutil.get_next_period_day(date, 'day', 1, 1) == 20170109
    assert jutil.get_next_period_day(date, 'week', 2, 0) == 20170116
    assert jutil.get_next_period_day(date, 'month', 1, 0) == 20170201

    date = 20170808
    assert jutil.get_next_period_day(20170831, 'day',
                                     extra_offset=1) == 20170904
    assert jutil.get_next_period_day(20170831, 'day', n=2,
                                     extra_offset=0) == 20170904
    assert jutil.get_next_period_day(20170831, 'day', n=7,
                                     extra_offset=0) == 20170911
    assert jutil.get_next_period_day(20170831, 'week',
                                     extra_offset=1) == 20170905
    assert jutil.get_next_period_day(20170831, 'month',
                                     extra_offset=0) == 20170901

    monthly = 20170101
    while monthly < 20180301:
        monthly = jutil.get_next_period_day(monthly, 'month', extra_offset=0)
        assert datetime.datetime.strptime(str(monthly), "%Y%m%d").weekday() < 5
Example #3
0
 def _init_trades(self, df):
     """Add datetime column. """
     df.loc[:, 'fill_dt'] = jutil.combine_date_time(df.loc[:, 'fill_date'], df.loc[:, 'fill_time'])
     
     df = df.set_index(['symbol', 'fill_dt']).sort_index(axis=0)
     
     # self._trades = jutil.group_df_to_dict(df, by='symbol')
     self._trades = df
Example #4
0
    def _init_trades(self, df):
        """
        Modify trading records dataframe. (Add datetime column)
        
        Parameters
        ----------
        df : pd.DataFrame
            Each row represents a single trading record.
        
        """
        df.loc[:, 'fill_dt'] = jutil.combine_date_time(df.loc[:, 'fill_date'],
                                                       df.loc[:, 'fill_time'])

        df = df.set_index(['symbol', 'fill_dt']).sort_index(axis=0)

        # self._trades = jutil.group_df_to_dict(df, by='symbol')
        self._trades = df
Example #5
0
 def _init_trades(self, df):
     """
     Modify trading records dataframe. (Add datetime column)
     
     Parameters
     ----------
     df : pd.DataFrame
         Each row represents a single trading record.
     
     """
     self._raw_trades = df.copy()
     
     df.loc[:, 'fill_dt'] = jutil.combine_date_time(df.loc[:, 'fill_date'], df.loc[:, 'fill_time'])
     
     df = df.set_index(['symbol', 'fill_dt']).sort_index(axis=0)
     
     # self._trades = jutil.group_df_to_dict(df, by='symbol')
     self._trades = df
Example #6
0
 def _create_time_symbol_bars(self, date):
     from collections import defaultdict
     
     # query quotes data
     symbols_str = ','.join(self.ctx.universe)
     df_quotes, msg = self.ctx.data_api.bar(symbol=symbols_str, start_time=200000, end_time=160000,
                                            trade_date=date, freq=self.bar_type)
     if msg != '0,':
         print msg
     if df_quotes is None or df_quotes.empty:
         return dict()
 
     # create nested dict
     quotes_list = Bar.create_from_df(df_quotes)
     
     dic = defaultdict(dict)
     for quote in quotes_list:
         dic[jutil.combine_date_time(quote.date, quote.time)][quote.symbol] = quote
     return dic