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))
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}
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}