def get_option_contract_list_4year_range(**kwargs): now = datetime.datetime.utcnow() start_year = kwargs["start_year"] end_year = kwargs["end_year"] tickerhead_list = cmi.cme_option_tickerhead_list contract_name_dict = cmi.contract_name ticker_class_dict = cmi.ticker_class year_list = range(start_year, end_year) ticker_list = [] for i in tickerhead_list: contract_months = cmi.get_option_contract_months(ticker_head=i) for j in contract_months: for k in year_list: ticker = i + j + str(k) print(ticker) ticker_list.append( ( ticker, i, k, cmi.letter_month_string.find(j) + 1, exp.get_options_expiration(ticker), "options", contract_name_dict[i], ticker_class_dict[i], "USD", now, now, ) ) return ticker_list
def generate_liquid_options_list_dataframe(**kwargs): settle_date = kwargs["settle_date"] con = msu.get_my_sql_connection(**kwargs) contract_list = [] for ticker_head in cmi.option_tickerhead_list: for ticker_month in cmi.get_option_contract_months(ticker_head=ticker_head): ticker_month_num = cmi.letter_month_string.find(ticker_month) + 1 max_cal_dte = cmi.get_max_cal_dte(ticker_head=ticker_head, ticker_month=ticker_month_num) contract_list.extend( get_db_contract_list_filtered( expiration_date_from=settle_date, expiration_date_to=cu.doubledate_shift(settle_date, -max_cal_dte), ticker_head=ticker_head, ticker_month=ticker_month_num, con=con, instrument="options", ) ) if "con" not in kwargs.keys(): con.close() return pd.DataFrame(contract_list, columns=["id", "ticker", "expiration_date"])
def generate_liquid_options_list_dataframe(**kwargs): settle_date = kwargs['settle_date'] con = msu.get_my_sql_connection(**kwargs) contract_list = [] for ticker_head in cmi.option_tickerhead_list: for ticker_month in cmi.get_option_contract_months(ticker_head=ticker_head): ticker_month_num = cmi.letter_month_string.find(ticker_month)+1 max_cal_dte = cmi.get_max_cal_dte(ticker_head=ticker_head, ticker_month=ticker_month_num) contract_list.extend(get_db_contract_list_filtered(expiration_date_from=settle_date, expiration_date_to=cu.doubledate_shift(settle_date, -max_cal_dte), ticker_head=ticker_head, ticker_month=ticker_month_num, con=con, instrument='options')) if 'con' not in kwargs.keys(): con.close() return pd.DataFrame(contract_list,columns=['id', 'ticker', 'expiration_date'])
def get_option_contract_list_4year_range(**kwargs): now = datetime.datetime.utcnow() start_year = kwargs['start_year'] end_year = kwargs['end_year'] tickerhead_list = cmi.cme_option_tickerhead_list contract_name_dict = cmi.contract_name ticker_class_dict = cmi.ticker_class year_list = range(start_year,end_year) ticker_list = [] for i in tickerhead_list: contract_months = cmi.get_option_contract_months(ticker_head=i) for j in contract_months: for k in year_list: ticker = i+j+str(k) print(ticker) ticker_list.append((ticker,i,k,cmi.letter_month_string.find(j)+1,exp.get_options_expiration(ticker), 'options',contract_name_dict[i],ticker_class_dict[i],'USD',now,now)) return ticker_list
def generate_test_cases_from_aligned_option_data(**kwargs): test_data_dir = dn.get_directory_name(ext='option_model_test_data') if os.path.isfile(test_data_dir + '/option_model_test_data.pkl'): data_frame_test = pd.read_pickle(test_data_dir + '/option_model_test_data.pkl') return data_frame_test ticker_head_list = cmi.cme_option_tickerhead_list tr_dte_center_list = [10, 15, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80, 90, 100, 120, 140, 180, 200, 220, 240, 260, 280, 300, 330, 360, 390] delta_list = [0.1, 0.15, 0.25, 0.35, 0.5, -0.1, -0.15, -0.25, -0.35, -0.5] data_frame_list = [] aligned_column_names = ['TickerYear','TickerMonth','settleDates','calDTE','rate2OptExp', 'theoValue' , 'impVol', 'atmVol', 'delta', 'strike', 'underlying', 'dollarVega', 'dollarTheta','gamma','dollarGamma', 'optionPnL', 'deltaPnL', 'gammaPnL', 'thetaPnL'] #ticker_head_list = ticker_head_list[3:5] for i in range(len(ticker_head_list)): if ticker_head_list[i] in ['ED', 'E0', 'E2', 'E3', 'E4', 'E5']: model = 'OU' else: model = 'BS' ticker_class = cmi.ticker_class[ticker_head_list[i]] contract_multiplier = cmi.contract_multiplier[ticker_head_list[i]] if ticker_class in ['Livestock', 'Ag'] or ticker_head_list[i] == 'NG': month_specificQ = True contract_month_list = cmi.get_option_contract_months(ticker_head=ticker_head_list[i]) else: month_specificQ = False for j in range(len(tr_dte_center_list)): for k in range(len(delta_list)): if month_specificQ: for contract_month in contract_month_list: data_frame = gop.load_aligend_options_data_file(ticker_head=ticker_head_list[i], tr_dte_center=tr_dte_center_list[j], delta_center=delta_list[k], contract_month_letter=contract_month, model=model) if data_frame.empty: continue else: x1 = round(len(data_frame.index)/4) x2 = round(2*len(data_frame.index)/4) x3 = round(3*len(data_frame.index)/4) data_frame_select = data_frame[aligned_column_names].iloc[[-x3, -x2, -x1, -1]] data_frame_select['tickerHead'] = ticker_head_list[i] data_frame_select['contractMultiplier'] = contract_multiplier data_frame_select['exercise_type'] = cmi.get_option_exercise_type(ticker_head=ticker_head_list[i]) data_frame_list.append(data_frame_select) else: data_frame = gop.load_aligend_options_data_file(ticker_head=ticker_head_list[i], tr_dte_center=tr_dte_center_list[j], delta_center=delta_list[k], model=model) if data_frame.empty: continue else: x1 = round(len(data_frame.index)/4) x2 = round(2*len(data_frame.index)/4) x3 = round(3*len(data_frame.index)/4) data_frame_select = data_frame[aligned_column_names].iloc[[-x3, -x2, -x1, -1]] data_frame_select['tickerHead'] = ticker_head_list[i] data_frame_select['contractMultiplier'] = contract_multiplier data_frame_select['exercise_type'] = cmi.get_option_exercise_type(ticker_head=ticker_head_list[i]) data_frame_list.append(data_frame_select) data_frame_test = pd.concat(data_frame_list) data_frame_test['optionPnL'] = data_frame_test['optionPnL']*data_frame_test['contractMultiplier'] data_frame_test['deltaPnL'] = data_frame_test['deltaPnL']*data_frame_test['contractMultiplier'] data_frame_test['ticker'] = [data_frame_test['tickerHead'].iloc[x] + cmi.letter_month_string[int(data_frame_test['TickerMonth'].iloc[x]-1)] + str(int(data_frame_test['TickerYear'].iloc[x])) for x in range(len(data_frame_test.index))] data_frame_test['option_type'] = 'C' data_frame_test['option_type'][data_frame_test['delta'] < 0] = 'P' data_frame_test.to_pickle(test_data_dir + '/option_model_test_data.pkl') return data_frame_test