def get_intraday_vcs(**kwargs):

    if 'report_date' in kwargs.keys():
        report_date = kwargs['report_date']
    else:
        report_date = exp.doubledate_shift_bus_days()

    atm_vol_ratio = kwargs['atm_vol_ratio']

    vcs_output = vcs.generate_vcs_sheet_4date(date_to=report_date)
    vcs_pairs = vcs_output['vcs_pairs']

    if 'id' in kwargs.keys():
        id = kwargs['id']
        ticker1 = vcs_pairs['ticker1'].iloc[id]
        ticker2 = vcs_pairs['ticker2'].iloc[id]
    else:
        ticker1 = kwargs['ticker1']
        ticker2 = kwargs['ticker2']

    ticker_head = cmi.get_contract_specs(ticker1)['ticker_head']
    ticker_class = cmi.ticker_class[ticker_head]

    vcs_output = ops.get_vcs_signals(ticker_list=[ticker1, ticker2],
                                     settle_date=report_date,
                                     atm_vol_ratio=atm_vol_ratio)

    q = vcs_output['q']
    q1 = vcs_output['q1']

    filter_out = of.get_vcs_filters(data_frame_input=pd.DataFrame.from_dict({
        'tickerHead': [ticker_head],
        'tickerClass': [ticker_class],
        'Q': [q],
        'Q1': [q1]
    }),
                                    filter_list=['long2', 'short2'])

    if filter_out['selected_frame'].empty:
        validQ = False
    else:
        validQ = True

    return {
        'ticker1': ticker1,
        'ticker2': ticker2,
        'Q': q,
        'Q1': q1,
        'validQ': validQ
    }
def get_intraday_vcs(**kwargs):

    if 'report_date' in kwargs.keys():
        report_date = kwargs['report_date']
    else:
        report_date = exp.doubledate_shift_bus_days()

    id = kwargs['id']
    atm_vol_ratio = kwargs['atm_vol_ratio']

    vcs_output = vcs.generate_vcs_sheet_4date(date_to=report_date)
    vcs_pairs = vcs_output['vcs_pairs']

    ticker1 = vcs_pairs['ticker1'].iloc[id]
    ticker2 = vcs_pairs['ticker2'].iloc[id]

    ticker_head = cmi.get_contract_specs(ticker1)['ticker_head']
    ticker_class = cmi.ticker_class[ticker_head]

    vcs_output = ops.get_vcs_signals(ticker_list=[ticker1, ticker2],settle_date=report_date,atm_vol_ratio=atm_vol_ratio)

    q = vcs_output['q']
    q1 = vcs_output['q1']

    filter_out = of.get_vcs_filters(data_frame_input=pd.DataFrame.from_items([('tickerHead', [ticker_head]),
                                                                              ('tickerClass', [ticker_class]),
                                                                              ('Q', [q]), ('Q1', [q1])]), filter_list=['long2', 'short2'])

    if filter_out['selected_frame'].empty:
        validQ = False
    else:
        validQ = True

    print(ticker1)
    print(ticker2)
    print('Q: ' + str(q))
    print('Q1: ' + str(q1))
    print('Valid?: ' + str(validQ))
Ejemplo n.º 3
0
def generate_vcs_sheet_4date(**kwargs):

    kwargs['settle_date'] = kwargs['date_to']
    num_cal_days_back = 20*365

    output_dir = ts.create_strategy_output_dir(strategy_class='vcs', report_date=kwargs['date_to'])

    if os.path.isfile(output_dir + '/summary.pkl'):
        vcs_pairs = pd.read_pickle(output_dir + '/summary.pkl')
        return {'vcs_pairs': vcs_pairs,'success': True}

    vcs_pairs = get_vcs_pairs_4date(**kwargs)

    num_pairs = len(vcs_pairs.index)

    unique_ticker_heads = list(set(vcs_pairs['tickerHead']))

    con = msu.get_my_sql_connection(**kwargs)
    option_ticker_indicator_dictionary = {x: ops.get_option_ticker_indicators(ticker_head=x,
                                                                              settle_date_to=kwargs['date_to'],
                                                                              num_cal_days_back=num_cal_days_back,
                                                                              con=con) for x in unique_ticker_heads}

    if 'con' not in kwargs.keys():
            con.close()

    q_list = [None]*num_pairs
    q1_list = [None]*num_pairs
    fwd_vol_q_list = [None]*num_pairs
    downside_list = [None]*num_pairs
    upside_list = [None]*num_pairs
    atm_vol_ratio_list = [None]*num_pairs
    real_vol_ratio_list = [None]*num_pairs
    atm_real_vol_ratio_list = [None]*num_pairs
    theta_list = [None]*num_pairs
    fwd_vol = [None]*num_pairs

    for i in range(num_pairs):

        vcs_output = ops.get_vcs_signals(ticker_list=[vcs_pairs['ticker1'].iloc[i], vcs_pairs['ticker2'].iloc[i]],
                            option_ticker_indicator_dictionary=option_ticker_indicator_dictionary,
                            settle_date=kwargs['date_to'])

        q_list[i] = vcs_output['q']
        q1_list[i] = vcs_output['q1']
        fwd_vol_q_list[i] = vcs_output['fwd_vol_q']
        downside_list[i] = vcs_output['downside']
        upside_list[i] = vcs_output['upside']
        atm_vol_ratio_list[i] = vcs_output['atm_vol_ratio']
        fwd_vol[i] = vcs_output['fwd_vol']
        real_vol_ratio_list[i] = vcs_output['real_vol_ratio']
        atm_real_vol_ratio_list[i] = vcs_output['atm_real_vol_ratio']
        theta_list[i] = vcs_output['theta']

    vcs_pairs['Q'] = q_list
    vcs_pairs['Q1'] = q1_list
    vcs_pairs['fwdVolQ'] = fwd_vol_q_list
    vcs_pairs['downside'] = downside_list
    vcs_pairs['upside'] = upside_list
    vcs_pairs['atmVolRatio'] = atm_vol_ratio_list
    vcs_pairs['fwdVol'] = fwd_vol
    vcs_pairs['realVolRatio'] = real_vol_ratio_list
    vcs_pairs['atmRealVolRatio'] = atm_real_vol_ratio_list
    vcs_pairs['theta'] = theta_list

    vcs_pairs['downside'] = vcs_pairs['downside'].round(3)
    vcs_pairs['upside'] = vcs_pairs['upside'].round(3)
    vcs_pairs['atmVolRatio'] = vcs_pairs['atmVolRatio'].round(3)
    vcs_pairs['fwdVol'] = vcs_pairs['fwdVol'].round(3)
    vcs_pairs['realVolRatio'] = vcs_pairs['realVolRatio'].round(3)
    vcs_pairs['atmRealVolRatio'] = vcs_pairs['atmRealVolRatio'].round(3)
    vcs_pairs['theta'] = vcs_pairs['theta'].round(3)

    vcs_pairs.to_pickle(output_dir + '/summary.pkl')

    return {'vcs_pairs': vcs_pairs,'success': True}
Ejemplo n.º 4
0
def generate_vcs_sheet_4date(**kwargs):

    kwargs['settle_date'] = kwargs['date_to']
    num_cal_days_back = 20 * 365

    output_dir = ts.create_strategy_output_dir(strategy_class='vcs',
                                               report_date=kwargs['date_to'])

    if os.path.isfile(output_dir + '/summary.pkl'):
        vcs_pairs = pd.read_pickle(output_dir + '/summary.pkl')
        return {'vcs_pairs': vcs_pairs, 'success': True}

    vcs_pairs = get_vcs_pairs_4date(**kwargs)

    num_pairs = len(vcs_pairs.index)

    unique_ticker_heads = list(set(vcs_pairs['tickerHead']))

    con = msu.get_my_sql_connection(**kwargs)
    option_ticker_indicator_dictionary = {
        x:
        ops.get_option_ticker_indicators(ticker_head=x,
                                         settle_date_to=kwargs['date_to'],
                                         num_cal_days_back=num_cal_days_back,
                                         con=con)
        for x in unique_ticker_heads
    }

    if 'con' not in kwargs.keys():
        con.close()

    q_list = [None] * num_pairs
    q1_list = [None] * num_pairs
    fwd_vol_q_list = [None] * num_pairs
    downside_list = [None] * num_pairs
    upside_list = [None] * num_pairs
    atm_vol_ratio_list = [None] * num_pairs
    real_vol_ratio_list = [None] * num_pairs
    atm_real_vol_ratio_list = [None] * num_pairs
    theta_list = [None] * num_pairs
    fwd_vol = [None] * num_pairs

    for i in range(num_pairs):

        vcs_output = ops.get_vcs_signals(ticker_list=[
            vcs_pairs['ticker1'].iloc[i], vcs_pairs['ticker2'].iloc[i]
        ],
                                         option_ticker_indicator_dictionary=
                                         option_ticker_indicator_dictionary,
                                         settle_date=kwargs['date_to'])

        q_list[i] = vcs_output['q']
        q1_list[i] = vcs_output['q1']
        fwd_vol_q_list[i] = vcs_output['fwd_vol_q']
        downside_list[i] = vcs_output['downside']
        upside_list[i] = vcs_output['upside']
        atm_vol_ratio_list[i] = vcs_output['atm_vol_ratio']
        fwd_vol[i] = vcs_output['fwd_vol']
        real_vol_ratio_list[i] = vcs_output['real_vol_ratio']
        atm_real_vol_ratio_list[i] = vcs_output['atm_real_vol_ratio']
        theta_list[i] = vcs_output['theta']

    vcs_pairs['Q'] = q_list
    vcs_pairs['Q1'] = q1_list
    vcs_pairs['fwdVolQ'] = fwd_vol_q_list
    vcs_pairs['downside'] = downside_list
    vcs_pairs['upside'] = upside_list
    vcs_pairs['atmVolRatio'] = atm_vol_ratio_list
    vcs_pairs['fwdVol'] = fwd_vol
    vcs_pairs['realVolRatio'] = real_vol_ratio_list
    vcs_pairs['atmRealVolRatio'] = atm_real_vol_ratio_list
    vcs_pairs['theta'] = theta_list

    vcs_pairs['downside'] = vcs_pairs['downside'].round(3)
    vcs_pairs['upside'] = vcs_pairs['upside'].round(3)
    vcs_pairs['atmVolRatio'] = vcs_pairs['atmVolRatio'].round(3)
    vcs_pairs['fwdVol'] = vcs_pairs['fwdVol'].round(3)
    vcs_pairs['realVolRatio'] = vcs_pairs['realVolRatio'].round(3)
    vcs_pairs['atmRealVolRatio'] = vcs_pairs['atmRealVolRatio'].round(3)
    vcs_pairs['theta'] = vcs_pairs['theta'].round(3)

    vcs_pairs.to_pickle(output_dir + '/summary.pkl')

    return {'vcs_pairs': vcs_pairs, 'success': True}