def get_intraday_outright_covariance(**kwargs):

    date_to = kwargs['date_to']
    num_days_back_4intraday = 20

    liquid_futures_frame = cl.get_liquid_outright_futures_frame(settle_date=date_to)

    date_list = [exp.doubledate_shift_bus_days(double_date=date_to,shift_in_days=x) for x in reversed(range(1,num_days_back_4intraday))]
    date_list.append(date_to)
    intraday_data = opUtil.get_aligned_futures_data_intraday(contract_list=liquid_futures_frame['ticker'].values,date_list=date_list)
    intraday_data['time_stamp'] = [x.to_datetime() for x in intraday_data.index]
    intraday_data['hour_minute'] = [100*x.hour+x.minute for x in intraday_data['time_stamp']]
    intraday_data = intraday_data.resample('30min',how='last')
    intraday_data = intraday_data[(intraday_data['hour_minute'] >= 830) &
                                  (intraday_data['hour_minute'] <= 1200)]
    intraday_data_shifted = intraday_data.shift(1)
    selection_indx = intraday_data['hour_minute']-intraday_data_shifted['hour_minute'] > 0

    num_contracts = len(liquid_futures_frame.index)

    diff_frame = pd.DataFrame()

    for i in range(num_contracts):

        mid_p = (intraday_data['c' + str(i+1)]['best_bid_p']+
                         intraday_data['c' + str(i+1)]['best_ask_p'])/2
        mid_p_shifted = (intraday_data_shifted['c' + str(i+1)]['best_bid_p']+
                                 intraday_data_shifted['c' + str(i+1)]['best_ask_p'])/2

        diff_frame[liquid_futures_frame['ticker_head'].iloc[i]] = (mid_p-mid_p_shifted)*cmi.contract_multiplier[liquid_futures_frame['ticker_head'].iloc[i]]

    diff_frame = diff_frame[selection_indx]

    return {'cov_matrix': diff_frame.cov(),
     'cov_data_integrity': 100*diff_frame.notnull().sum().sum()/(len(diff_frame.columns)*20*6)}
def get_intraday_outright_covariance(**kwargs):

    date_to = kwargs['date_to']
    num_days_back_4intraday = 20

    liquid_futures_frame = cl.get_liquid_outright_futures_frame(
        settle_date=date_to)

    date_list = [
        exp.doubledate_shift_bus_days(double_date=date_to, shift_in_days=x)
        for x in reversed(range(1, num_days_back_4intraday))
    ]
    date_list.append(date_to)
    intraday_data = opUtil.get_aligned_futures_data_intraday(
        contract_list=liquid_futures_frame['ticker'].values,
        date_list=date_list)

    if len(intraday_data.index) == 0:
        return {'cov_matrix': pd.DataFrame(), 'cov_data_integrity': 0}

    intraday_data['time_stamp'] = [
        x.to_datetime() for x in intraday_data.index
    ]
    intraday_data['hour_minute'] = [
        100 * x.hour + x.minute for x in intraday_data['time_stamp']
    ]
    intraday_data = intraday_data.resample('30min', how='last')
    intraday_data = intraday_data[(intraday_data['hour_minute'] >= 830)
                                  & (intraday_data['hour_minute'] <= 1200)]
    intraday_data_shifted = intraday_data.shift(1)
    selection_indx = intraday_data['hour_minute'] - intraday_data_shifted[
        'hour_minute'] > 0

    num_contracts = len(liquid_futures_frame.index)

    diff_frame = pd.DataFrame()

    for i in range(num_contracts):

        mid_p = (intraday_data['c' + str(i + 1)]['best_bid_p'] +
                 intraday_data['c' + str(i + 1)]['best_ask_p']) / 2
        mid_p_shifted = (
            intraday_data_shifted['c' + str(i + 1)]['best_bid_p'] +
            intraday_data_shifted['c' + str(i + 1)]['best_ask_p']) / 2

        diff_frame[liquid_futures_frame['ticker_head'].iloc[i]] = (
            mid_p - mid_p_shifted) * cmi.contract_multiplier[
                liquid_futures_frame['ticker_head'].iloc[i]]

    diff_frame = diff_frame[selection_indx]

    return {
        'cov_matrix':
        diff_frame.cov(),
        'cov_data_integrity':
        100 * diff_frame.notnull().sum().sum() /
        (len(diff_frame.columns) * 20 * 6)
    }
示例#3
0
def get_tickers_4date(**kwargs):

    liquid_futures_frame = cl.get_liquid_outright_futures_frame(
        settle_date=kwargs['date_to'])

    liquid_futures_frame = liquid_futures_frame[
        ~liquid_futures_frame['ticker_head'].isin(['ED', 'TU'])]

    liquid_futures_frame.reset_index(drop=True, inplace=True)
    return liquid_futures_frame[['ticker', 'ticker_head']]
def get_tickers_4date(**kwargs):

    liquid_futures_frame = cl.get_liquid_outright_futures_frame(settle_date=kwargs['date_to'])
    liquid_futures_frame.reset_index(drop=True,inplace=True)
    return liquid_futures_frame[['ticker', 'ticker_head']]