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"])
Example #3
0
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'])
Example #4
0
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