def update_options_greeks_4date(**kwargs): options_frame = cl.generate_liquid_options_list_dataframe(**kwargs) [ update_options_greek_database_4ticker(ticker=x, **kwargs) for x in options_frame['ticker'] ]
def update_options_price_database_from_cme_files(**kwargs): if 'settle_date' in kwargs.keys(): settle_date = kwargs['settle_date'] else: settle_date = int(time.strftime('%Y%m%d')) kwargs['settle_date'] = settle_date if 'con' not in kwargs.keys(): close_connection_before_exit = True con = msu.get_my_sql_connection(**kwargs) kwargs['con'] = con else: close_connection_before_exit = False if not exp.is_business_day(double_date=settle_date): if close_connection_before_exit: con.close() return data_read_out = {} data_read_out['commodity'] = rcf.read_cme_settle_txt_files( file_name='commodity', report_date=settle_date) data_read_out['equity'] = rcf.read_cme_settle_txt_files( file_name='equity', report_date=settle_date) data_read_out['fx'] = rcf.read_cme_settle_txt_files( file_name='fx', report_date=settle_date) data_read_out['interest_rate'] = rcf.read_cme_settle_txt_files( file_name='interest_rate', report_date=settle_date) options_frame = cl.generate_liquid_options_list_dataframe(**kwargs) for i in range(len(options_frame.index)): ticker = options_frame['ticker'].iloc[i] expiration_date = options_frame['expiration_date'].iloc[i] update_options_price_database_from_cme_files_4ticker( ticker=ticker, expiration_date=expiration_date, data_read_out=data_read_out, **kwargs) if close_connection_before_exit: con.close()
def update_options_price_database_from_cme_files(**kwargs): if 'settle_date' in kwargs.keys(): settle_date = kwargs['settle_date'] else: settle_date = int(time.strftime('%Y%m%d')) kwargs['settle_date'] = settle_date if 'con' not in kwargs.keys(): close_connection_before_exit = True con = msu.get_my_sql_connection(**kwargs) kwargs['con'] = con else: close_connection_before_exit = False if not exp.is_business_day(double_date=settle_date): if close_connection_before_exit: con.close() return data_read_out = {} data_read_out['commodity'] = rcf.read_cme_settle_txt_files(file_name='commodity', report_date=settle_date) data_read_out['equity'] = rcf.read_cme_settle_txt_files(file_name='equity', report_date=settle_date) data_read_out['fx'] = rcf.read_cme_settle_txt_files(file_name='fx', report_date=settle_date) data_read_out['interest_rate'] = rcf.read_cme_settle_txt_files(file_name='interest_rate', report_date=settle_date) options_frame = cl.generate_liquid_options_list_dataframe(**kwargs) for i in range(len(options_frame.index)): ticker = options_frame['ticker'].iloc[i] expiration_date = options_frame['expiration_date'].iloc[i] print(ticker) update_options_price_database_from_cme_files_4ticker(ticker=ticker, expiration_date=expiration_date, data_read_out=data_read_out, **kwargs) if close_connection_before_exit: con.close()
def generate_test_file_4stir_rates(**kwargs): output_dir = dn.get_directory_name(ext='test_data') full_dates = exp.get_bus_day_list(date_from=20100101, date_to=20160821) #full_dates = exp.get_bus_day_list(date_from=20160812,date_to=20160821) bus_dates_select = full_dates[0::6] data_frame_list = [] #bus_dates_select = bus_dates_select[:200] for i in range(len(bus_dates_select)): #print(bus_dates_select[i]) date_file_name = output_dir + '/' + str(bus_dates_select[i]) + '.pkl' if os.path.isfile(date_file_name): liquid_options = pd.read_pickle(date_file_name) else: liquid_options = cl.generate_liquid_options_list_dataframe( settle_date=bus_dates_select[i]) liquid_options.drop_duplicates('expiration_date', inplace=True) liquid_options = liquid_options[['expiration_date']] liquid_options['settle_date'] = bus_dates_select[i] liquid_options['exp_date'] = liquid_options[ 'expiration_date'].apply( lambda x: 10000 * x.year + 100 * x.month + x.day) liquid_options['int_rate'] = liquid_options.apply( lambda x: grfs.get_simple_rate(as_of_date=x['settle_date'], date_to=x['exp_date'])[ 'rate_output'], axis=1) liquid_options.to_pickle(date_file_name) data_frame_list.append(liquid_options) merged_data = pd.concat(data_frame_list) merged_data.reset_index(inplace=True, drop=True) merged_data = merged_data[['settle_date', 'exp_date', 'int_rate']] writer = pd.ExcelWriter(output_dir + '/' + 'stir_option_rate_test' + '.xlsx', engine='xlsxwriter') merged_data.to_excel(writer, sheet_name='all')
def generate_test_file_4stir_rates(**kwargs): output_dir = dn.get_directory_name(ext="test_data") full_dates = exp.get_bus_day_list(date_from=20100101, date_to=20160821) # full_dates = exp.get_bus_day_list(date_from=20160812,date_to=20160821) bus_dates_select = full_dates[0::6] data_frame_list = [] # bus_dates_select = bus_dates_select[:200] for i in range(len(bus_dates_select)): # print(bus_dates_select[i]) date_file_name = output_dir + "/" + str(bus_dates_select[i]) + ".pkl" if os.path.isfile(date_file_name): liquid_options = pd.read_pickle(date_file_name) else: liquid_options = cl.generate_liquid_options_list_dataframe(settle_date=bus_dates_select[i]) liquid_options.drop_duplicates("expiration_date", inplace=True) liquid_options = liquid_options[["expiration_date"]] liquid_options["settle_date"] = bus_dates_select[i] liquid_options["exp_date"] = liquid_options["expiration_date"].apply( lambda x: 10000 * x.year + 100 * x.month + x.day ) liquid_options["int_rate"] = liquid_options.apply( lambda x: grfs.get_simple_rate(as_of_date=x["settle_date"], date_to=x["exp_date"])["rate_output"], axis=1, ) liquid_options.to_pickle(date_file_name) data_frame_list.append(liquid_options) merged_data = pd.concat(data_frame_list) merged_data.reset_index(inplace=True, drop=True) merged_data = merged_data[["settle_date", "exp_date", "int_rate"]] writer = pd.ExcelWriter(output_dir + "/" + "stir_option_rate_test" + ".xlsx", engine="xlsxwriter") merged_data.to_excel(writer, sheet_name="all")
def load_ticker_signals_4settle_date(**kwargs): if 'con' not in kwargs.keys(): close_connection_before_exit = True con = msu.get_my_sql_connection(**kwargs) kwargs['con'] = con else: close_connection_before_exit = False con = kwargs['con'] if not exp.is_business_day(double_date=kwargs['settle_date']): if close_connection_before_exit: con.close() return options_frame = cl.generate_liquid_options_list_dataframe(**kwargs) futures_data_dictionary = { x: gfp.get_futures_price_preloaded(ticker_head=x) for x in cmi.get_tickerhead_list('cme_futures') } real_vol_output = [ ops.calc_realized_vol_4options_ticker( ticker=x, futures_data_dictionary=futures_data_dictionary, settle_date=kwargs['settle_date']) for x in options_frame['ticker'] ] delta_vol_output = [ ops.calc_delta_vol_4ticker(ticker=x, settle_date=kwargs['settle_date'], delta_target=0.5) for x in options_frame['ticker'] ] volume_interest_output = [ ops.calc_volume_interest_4ticker(ticker=x, settle_date=kwargs['settle_date']) for x in options_frame['ticker'] ] atm_vol_frame = pd.concat([ options_frame, pd.DataFrame(delta_vol_output), pd.DataFrame(volume_interest_output) ], axis=1) atm_vol_frame['real_vol'] = real_vol_output contract_specs_output = [ cmi.get_contract_specs(x) for x in atm_vol_frame['ticker'] ] atm_vol_frame['ticker_head'] = [ x['ticker_head'] for x in contract_specs_output ] atm_vol_frame['ticker_month'] = [ x['ticker_month_num'] for x in contract_specs_output ] atm_vol_frame['ticker_year'] = [ x['ticker_year'] for x in contract_specs_output ] column_names = atm_vol_frame.columns.tolist() ticker_indx = column_names.index('ticker') cal_dte_indx = column_names.index('cal_dte') tr_dte_indx = column_names.index('tr_dte') ticker_head_indx = column_names.index('ticker_head') ticker_month_indx = column_names.index('ticker_month') ticker_year_indx = column_names.index('ticker_year') imp_vol_indx = column_names.index('delta_vol') strike_indx = column_names.index('strike') theta_indx = column_names.index('theta') open_interest_indx = column_names.index('open_interest') volume_indx = column_names.index('volume') real_vol_indx = column_names.index('real_vol') now = dt.datetime.now() settle_datetime = cu.convert_doubledate_2datetime(kwargs['settle_date']) tuples = [ tuple([ x[ticker_indx], x[ticker_head_indx], x[ticker_month_indx], x[ticker_year_indx], None if np.isnan(x[cal_dte_indx]) else x[cal_dte_indx], None if np.isnan(x[tr_dte_indx]) else x[tr_dte_indx], None if np.isnan(x[imp_vol_indx]) else 100 * x[imp_vol_indx], 0.5, None if np.isnan(x[theta_indx]) else x[theta_indx], None if np.isnan(x[strike_indx]) else x[strike_indx], None if np.isnan(x[real_vol_indx]) else x[real_vol_indx], None if np.isnan(x[open_interest_indx]) else x[open_interest_indx], None if np.isnan(x[volume_indx]) else x[volume_indx], settle_datetime.date(), now, now ]) for x in atm_vol_frame.values ] column_str = "ticker, ticker_head, ticker_month, ticker_year, " \ " cal_dte, tr_dte, imp_vol, delta, theta, strike, " \ "close2close_vol20, open_interest, volume, price_date, created_date, last_updated_date" insert_str = ("%s, " * len(column_str.split(',')))[:-2] final_str = "REPLACE INTO option_ticker_indicators (%s) VALUES (%s)" % ( column_str, insert_str) msu.sql_execute_many_wrapper(final_str=final_str, tuples=tuples, con=con) load_pnls_4settle_date(**kwargs) if close_connection_before_exit: con.close()
def get_vcs_pairs_4date_legacy(**kwargs): settle_date = kwargs['settle_date'] settle_datetime = cu.convert_doubledate_2datetime(settle_date) con = msu.get_my_sql_connection(**kwargs) liquid_options_frame = cl.generate_liquid_options_list_dataframe(settle_date=settle_date,con=con) contract_specs_output = [cmi.get_contract_specs(x) for x in liquid_options_frame['ticker']] liquid_options_frame['ticker_head'] = [x['ticker_head'] for x in contract_specs_output] liquid_options_frame['ticker_month'] = [x['ticker_month_num'] for x in contract_specs_output] liquid_options_frame['ticker_class'] = [x['ticker_class'] for x in contract_specs_output] liquid_options_frame['cal_dte'] = [(x-settle_datetime.date()).days for x in liquid_options_frame['expiration_date']] liquid_options_frame = liquid_options_frame[((liquid_options_frame['ticker_head'] == 'LN')&(liquid_options_frame['cal_dte'] <= 360))| ((liquid_options_frame['ticker_head']=='LC')&(liquid_options_frame['cal_dte']<=360)& (liquid_options_frame['ticker_month']%2==0))| ((liquid_options_frame['ticker_head']=='LC')&(liquid_options_frame['cal_dte']<=40)& (liquid_options_frame['ticker_month']%2==1))| ((liquid_options_frame['ticker_head']=='ES')&(liquid_options_frame['cal_dte']<=270))| ((liquid_options_frame['ticker_class']=='FX')&(liquid_options_frame['cal_dte']<=270)& (liquid_options_frame['ticker_month']%3==0))| ((liquid_options_frame['ticker_class']=='FX')&(liquid_options_frame['cal_dte']<=70)& (liquid_options_frame['ticker_month']%3!=0))| ((liquid_options_frame['ticker_head']=='GC')&(liquid_options_frame['cal_dte']<=360)& (liquid_options_frame['ticker_month'].isin([6,12])))| ((liquid_options_frame['ticker_head']=='GC')&(liquid_options_frame['cal_dte']<=270)& (liquid_options_frame['ticker_month'].isin([2,4,8,10])))| ((liquid_options_frame['ticker_head']=='GC')&(liquid_options_frame['cal_dte']<=70))| ((liquid_options_frame['ticker_head']=='SI')&(liquid_options_frame['cal_dte']<=360)& (liquid_options_frame['ticker_month'].isin([7,12])))| ((liquid_options_frame['ticker_head']=='SI')&(liquid_options_frame['cal_dte']<=270)& (liquid_options_frame['ticker_month'].isin([1,3,5,9])))| ((liquid_options_frame['ticker_head']=='SI')&(liquid_options_frame['cal_dte']<=70))| ((liquid_options_frame['ticker_class']=='Treasury')&(liquid_options_frame['cal_dte']<=180)& (liquid_options_frame['ticker_month']%3==0))| ((liquid_options_frame['ticker_class']=='Treasury')&(liquid_options_frame['cal_dte']<=70)& (liquid_options_frame['ticker_month']%3!=0))| ((liquid_options_frame['ticker_head']=='C')&(liquid_options_frame['cal_dte']<=540)& (liquid_options_frame['ticker_month']==12))| ((liquid_options_frame['ticker_head']=='C')&(liquid_options_frame['cal_dte']<=360)& (liquid_options_frame['ticker_month']==7))| ((liquid_options_frame['ticker_head']=='C')&(liquid_options_frame['cal_dte']<=270)& (liquid_options_frame['ticker_month'].isin([3,5,9])))| ((liquid_options_frame['ticker_head']=='C')&(liquid_options_frame['cal_dte']<=40))| ((liquid_options_frame['ticker_head']=='S')&(liquid_options_frame['cal_dte']<=540)& (liquid_options_frame['ticker_month']==11))| ((liquid_options_frame['ticker_head']=='S')&(liquid_options_frame['cal_dte']<=360)& (liquid_options_frame['ticker_month']==7))| ((liquid_options_frame['ticker_head']=='S')&(liquid_options_frame['cal_dte']<=270)& (liquid_options_frame['ticker_month'].isin([1,3,5,8,9])))| ((liquid_options_frame['ticker_head']=='S')&(liquid_options_frame['cal_dte']<=40))| ((liquid_options_frame['ticker_head']=='SM')&(liquid_options_frame['cal_dte']<=360)& (liquid_options_frame['ticker_month']==12))| ((liquid_options_frame['ticker_head']=='SM')&(liquid_options_frame['cal_dte']<=270)& (liquid_options_frame['ticker_month']==7))| ((liquid_options_frame['ticker_head']=='SM')&(liquid_options_frame['cal_dte']<=180)& (liquid_options_frame['ticker_month'].isin([1,3,5,8,9,10])))| ((liquid_options_frame['ticker_head']=='SM')&(liquid_options_frame['cal_dte']<=40))| ((liquid_options_frame['ticker_head']=='BO')&(liquid_options_frame['cal_dte']<=360)& (liquid_options_frame['ticker_month']==12))| ((liquid_options_frame['ticker_head']=='BO')&(liquid_options_frame['cal_dte']<=270)& (liquid_options_frame['ticker_month']==7))| ((liquid_options_frame['ticker_head']=='BO')&(liquid_options_frame['cal_dte']<=180)& (liquid_options_frame['ticker_month'].isin([1,3,5,8,9,10])))| ((liquid_options_frame['ticker_head']=='BO')&(liquid_options_frame['cal_dte']<=40))| ((liquid_options_frame['ticker_head']=='W')&(liquid_options_frame['cal_dte']<=360)& (liquid_options_frame['ticker_month']==12))| ((liquid_options_frame['ticker_head']=='W')&(liquid_options_frame['cal_dte']<=270)& (liquid_options_frame['ticker_month']==7))| ((liquid_options_frame['ticker_head']=='W')&(liquid_options_frame['cal_dte']<=180)& (liquid_options_frame['ticker_month'].isin([3,5,9])))| ((liquid_options_frame['ticker_head']=='W')&(liquid_options_frame['cal_dte']<=40))| ((liquid_options_frame['ticker_head']=='CL')&(liquid_options_frame['cal_dte']<=720)& (liquid_options_frame['ticker_month']==12))| ((liquid_options_frame['ticker_head']=='CL')&(liquid_options_frame['cal_dte']<=540)& (liquid_options_frame['ticker_month']==6))| ((liquid_options_frame['ticker_head']=='CL')&(liquid_options_frame['cal_dte']<=180))| ((liquid_options_frame['ticker_head']=='NG')&(liquid_options_frame['cal_dte']<=360))] liquid_options_frame.sort(['ticker_head','cal_dte'],ascending=[True,True],inplace=True) liquid_options_frame['tr_dte'] = [exp.get_days2_expiration(date_to=settle_date,con=con,instrument='options',ticker=x)['tr_dte'] for x in liquid_options_frame['ticker']] if 'con' not in kwargs.keys(): con.close() option_frame = liquid_options_frame[liquid_options_frame['tr_dte'] >= 35] option_frame.reset_index(drop=True,inplace=True) unique_ticker_heads = option_frame['ticker_head'].unique() tuples = [] for ticker_head_i in unique_ticker_heads: ticker_head_data = option_frame[option_frame['ticker_head'] == ticker_head_i] ticker_head_data.sort('cal_dte', ascending=True, inplace=True) if len(ticker_head_data.index) >= 2: for i in range(len(ticker_head_data.index)-1): for j in range(i+1,len(ticker_head_data.index)): tuples = tuples + [(ticker_head_data.index[i], ticker_head_data.index[j])] return pd.DataFrame([(option_frame['ticker'][indx[0]], option_frame['ticker'][indx[1]], option_frame['ticker_head'][indx[0]], option_frame['ticker_class'][indx[0]], option_frame['tr_dte'][indx[0]], option_frame['tr_dte'][indx[1]]) for indx in tuples],columns=['ticker1','ticker2','tickerHead','tickerClass','trDte1','trDte2'])
def get_vcs_pairs_4date_legacy(**kwargs): settle_date = kwargs['settle_date'] settle_datetime = cu.convert_doubledate_2datetime(settle_date) con = msu.get_my_sql_connection(**kwargs) liquid_options_frame = cl.generate_liquid_options_list_dataframe( settle_date=settle_date, con=con) contract_specs_output = [ cmi.get_contract_specs(x) for x in liquid_options_frame['ticker'] ] liquid_options_frame['ticker_head'] = [ x['ticker_head'] for x in contract_specs_output ] liquid_options_frame['ticker_month'] = [ x['ticker_month_num'] for x in contract_specs_output ] liquid_options_frame['ticker_class'] = [ x['ticker_class'] for x in contract_specs_output ] liquid_options_frame['cal_dte'] = [ (x - settle_datetime.date()).days for x in liquid_options_frame['expiration_date'] ] liquid_options_frame = liquid_options_frame[ ((liquid_options_frame['ticker_head'] == 'LN') & (liquid_options_frame['cal_dte'] <= 360)) | ((liquid_options_frame['ticker_head'] == 'LC') & (liquid_options_frame['cal_dte'] <= 360) & (liquid_options_frame['ticker_month'] % 2 == 0)) | ((liquid_options_frame['ticker_head'] == 'LC') & (liquid_options_frame['cal_dte'] <= 40) & (liquid_options_frame['ticker_month'] % 2 == 1)) | ((liquid_options_frame['ticker_head'] == 'ES') & (liquid_options_frame['cal_dte'] <= 270)) | ((liquid_options_frame['ticker_class'] == 'FX') & (liquid_options_frame['cal_dte'] <= 270) & (liquid_options_frame['ticker_month'] % 3 == 0)) | ((liquid_options_frame['ticker_class'] == 'FX') & (liquid_options_frame['cal_dte'] <= 70) & (liquid_options_frame['ticker_month'] % 3 != 0)) | ((liquid_options_frame['ticker_head'] == 'GC') & (liquid_options_frame['cal_dte'] <= 360) & (liquid_options_frame['ticker_month'].isin([6, 12]))) | ((liquid_options_frame['ticker_head'] == 'GC') & (liquid_options_frame['cal_dte'] <= 270) & (liquid_options_frame['ticker_month'].isin([2, 4, 8, 10]))) | ((liquid_options_frame['ticker_head'] == 'GC') & (liquid_options_frame['cal_dte'] <= 70)) | ((liquid_options_frame['ticker_head'] == 'SI') & (liquid_options_frame['cal_dte'] <= 360) & (liquid_options_frame['ticker_month'].isin([7, 12]))) | ((liquid_options_frame['ticker_head'] == 'SI') & (liquid_options_frame['cal_dte'] <= 270) & (liquid_options_frame['ticker_month'].isin([1, 3, 5, 9]))) | ((liquid_options_frame['ticker_head'] == 'SI') & (liquid_options_frame['cal_dte'] <= 70)) | ((liquid_options_frame['ticker_class'] == 'Treasury') & (liquid_options_frame['cal_dte'] <= 180) & (liquid_options_frame['ticker_month'] % 3 == 0)) | ((liquid_options_frame['ticker_class'] == 'Treasury') & (liquid_options_frame['cal_dte'] <= 70) & (liquid_options_frame['ticker_month'] % 3 != 0)) | ((liquid_options_frame['ticker_head'] == 'C') & (liquid_options_frame['cal_dte'] <= 540) & (liquid_options_frame['ticker_month'] == 12)) | ((liquid_options_frame['ticker_head'] == 'C') & (liquid_options_frame['cal_dte'] <= 360) & (liquid_options_frame['ticker_month'] == 7)) | ((liquid_options_frame['ticker_head'] == 'C') & (liquid_options_frame['cal_dte'] <= 270) & (liquid_options_frame['ticker_month'].isin([3, 5, 9]))) | ((liquid_options_frame['ticker_head'] == 'C') & (liquid_options_frame['cal_dte'] <= 40)) | ((liquid_options_frame['ticker_head'] == 'S') & (liquid_options_frame['cal_dte'] <= 540) & (liquid_options_frame['ticker_month'] == 11)) | ((liquid_options_frame['ticker_head'] == 'S') & (liquid_options_frame['cal_dte'] <= 360) & (liquid_options_frame['ticker_month'] == 7)) | ((liquid_options_frame['ticker_head'] == 'S') & (liquid_options_frame['cal_dte'] <= 270) & (liquid_options_frame['ticker_month'].isin([1, 3, 5, 8, 9]))) | ((liquid_options_frame['ticker_head'] == 'S') & (liquid_options_frame['cal_dte'] <= 40)) | ((liquid_options_frame['ticker_head'] == 'SM') & (liquid_options_frame['cal_dte'] <= 360) & (liquid_options_frame['ticker_month'] == 12)) | ((liquid_options_frame['ticker_head'] == 'SM') & (liquid_options_frame['cal_dte'] <= 270) & (liquid_options_frame['ticker_month'] == 7)) | ((liquid_options_frame['ticker_head'] == 'SM') & (liquid_options_frame['cal_dte'] <= 180) & (liquid_options_frame['ticker_month'].isin([1, 3, 5, 8, 9, 10]))) | ((liquid_options_frame['ticker_head'] == 'SM') & (liquid_options_frame['cal_dte'] <= 40)) | ((liquid_options_frame['ticker_head'] == 'BO') & (liquid_options_frame['cal_dte'] <= 360) & (liquid_options_frame['ticker_month'] == 12)) | ((liquid_options_frame['ticker_head'] == 'BO') & (liquid_options_frame['cal_dte'] <= 270) & (liquid_options_frame['ticker_month'] == 7)) | ((liquid_options_frame['ticker_head'] == 'BO') & (liquid_options_frame['cal_dte'] <= 180) & (liquid_options_frame['ticker_month'].isin([1, 3, 5, 8, 9, 10]))) | ((liquid_options_frame['ticker_head'] == 'BO') & (liquid_options_frame['cal_dte'] <= 40)) | ((liquid_options_frame['ticker_head'] == 'W') & (liquid_options_frame['cal_dte'] <= 360) & (liquid_options_frame['ticker_month'] == 12)) | ((liquid_options_frame['ticker_head'] == 'W') & (liquid_options_frame['cal_dte'] <= 270) & (liquid_options_frame['ticker_month'] == 7)) | ((liquid_options_frame['ticker_head'] == 'W') & (liquid_options_frame['cal_dte'] <= 180) & (liquid_options_frame['ticker_month'].isin([3, 5, 9]))) | ((liquid_options_frame['ticker_head'] == 'W') & (liquid_options_frame['cal_dte'] <= 40)) | ((liquid_options_frame['ticker_head'] == 'CL') & (liquid_options_frame['cal_dte'] <= 720) & (liquid_options_frame['ticker_month'] == 12)) | ((liquid_options_frame['ticker_head'] == 'CL') & (liquid_options_frame['cal_dte'] <= 540) & (liquid_options_frame['ticker_month'] == 6)) | ((liquid_options_frame['ticker_head'] == 'CL') & (liquid_options_frame['cal_dte'] <= 180)) | ((liquid_options_frame['ticker_head'] == 'NG') & (liquid_options_frame['cal_dte'] <= 360))] liquid_options_frame.sort(['ticker_head', 'cal_dte'], ascending=[True, True], inplace=True) liquid_options_frame['tr_dte'] = [ exp.get_days2_expiration(date_to=settle_date, con=con, instrument='options', ticker=x)['tr_dte'] for x in liquid_options_frame['ticker'] ] if 'con' not in kwargs.keys(): con.close() option_frame = liquid_options_frame[liquid_options_frame['tr_dte'] >= 35] option_frame.reset_index(drop=True, inplace=True) unique_ticker_heads = option_frame['ticker_head'].unique() tuples = [] for ticker_head_i in unique_ticker_heads: ticker_head_data = option_frame[option_frame['ticker_head'] == ticker_head_i] ticker_head_data.sort('cal_dte', ascending=True, inplace=True) if len(ticker_head_data.index) >= 2: for i in range(len(ticker_head_data.index) - 1): for j in range(i + 1, len(ticker_head_data.index)): tuples = tuples + [ (ticker_head_data.index[i], ticker_head_data.index[j]) ] return pd.DataFrame( [(option_frame['ticker'][indx[0]], option_frame['ticker'][indx[1]], option_frame['ticker_head'][indx[0]], option_frame['ticker_class'][indx[0]], option_frame['tr_dte'][indx[0]], option_frame['tr_dte'][indx[1]]) for indx in tuples], columns=[ 'ticker1', 'ticker2', 'tickerHead', 'tickerClass', 'trDte1', 'trDte2' ])
def update_options_greeks_4date(**kwargs): options_frame = cl.generate_liquid_options_list_dataframe(**kwargs) [update_options_greek_database_4ticker(ticker=x, **kwargs) for x in options_frame['ticker']]