df = pd.read_csv(in_folder + in_file, index_col='trade_id') df_netting_set = pd.read_csv(in_folder + in_file_netting_set, index_col='netting_set') df_sa_table2_supervisory_parameters = pd.read_csv( in_folder + in_file_sa_table2_supervisory_parameters, index_col='asset_class_cd') #get the Asset Class # SD_i = supervisory duration # d_i = adjusted notional df['asset_cd'] = df.apply(lambda x: df_sa_table2_supervisory_parameters.at[x[ 'asset_class_cd'], 'asset_cd'], axis=1) df['SD_i'] = df.apply( lambda x: sa_calcs.supervisory_duration(x['S_i'], x['E_i'], x['asset_cd']), axis=1) df['d_i'] = df.apply(lambda x: sa_calcs.adjusted_notional( x['notional'], x['S_i'], x['E_i'], x['asset_cd']), axis=1) df['hedging_factor_cd'] = df['asset_class_cd'] + '_' + df[ 'hedging_set'] + '_' + df['hedging_factor'] df['hedging_set_cd'] = df['asset_class_cd'] + '_' + df['hedging_set'] #get MPOR for the netting set, then associate this value with the respective trades df_netting_set['MPOR'] = df_netting_set.apply( lambda x: sa_calcs.MPOR(x['margin_freq_days']), axis=1) df['MPOR_i'] = df.apply(lambda x: df_netting_set.at[x['netting_set'], 'MPOR'], axis=1) df['MF_i'] = df.apply(lambda x: sa_calcs.MF_i(x['E_i'], x['MPOR_i']), axis=1)
#out files out_folder = in_folder out_file = 'out_' + in_file.replace('.csv','.xlsx') df = pd.read_csv(in_folder + in_file,index_col='trade_id') df_netting_set = pd.read_csv(in_folder + in_file_netting_set,index_col='netting_set') df_sa_table2_supervisory_parameters = pd.read_csv(in_folder + in_file_sa_table2_supervisory_parameters,index_col='asset_class_cd') #get the Asset Class # SD_i = supervisory duration # d_i = adjusted notional #get MPOR for the netting set, then associate this value with the respective trades df['asset_cd'] = df.apply(lambda x: df_sa_table2_supervisory_parameters.at[x['asset_class_cd'],'asset_cd'], axis=1) df['SD_i'] = df.apply(lambda x: sa_calcs.supervisory_duration(x['S_i'], x['E_i'], x['asset_cd']), axis=1) df['d_i'] = df.apply(lambda x: sa_calcs.adjusted_notional(x['notional'],x['S_i'], x['E_i'], x['asset_cd']), axis=1) df['hedging_factor_cd'] = df['asset_cd'] + '_' + df['hedging_set'] + '_' + df['hedging_factor'] df['hedging_set_cd'] = df['asset_cd'] + '_' + df['hedging_set'] df_netting_set['MPOR'] = df_netting_set.apply(lambda x: sa_calcs.MPOR(x['margin_freq_days']), axis=1) df['MPOR_i'] = df.apply(lambda x: df_netting_set.at[x['netting_set'],'MPOR'], axis=1) df['MF_i'] = df.apply(lambda x: sa_calcs.MF_i(x['E_i'],x['MPOR_i']), axis=1) print df #aggregate by hedge_factor # hedge factor for ir = time_bucket #D_jk = effective_notional #D_jk = sum( delta_i * d_i * MF_i ) df_hedging_factor = df.groupby(['hedging_factor_cd'])[['netting_set','asset_cd','asset_class_cd','hedging_set_cd','hedging_set','hedging_factor']].first() df_hedging_factor['D_jk'] = ([sum(df[df['hedging_factor_cd']==hedging_factor] .apply(lambda x: x['delta_i'] * x['d_i'] * x['MF_i'], axis=1))
#all trades are contract_type = Interest_Rate df['asset_class_cd'] = ['interest_rate', 'interest_rate', 'interest_rate'] #assign trades to hedging set by the base currency df['hedging_set'] = df['base_currency'] #assign to {0Y_1Y, 1Y+_5Y, 5Y+} df['maturity_bucket'] = ['5Y+', '1Y+_5Y', '5Y+'] #assign start and end date df['S_i'] = [0, 0, 1] df['E_i'] = [10, 4, 11] #assign supervisory duration df['SD_i'] = df.apply( lambda x: sa_calcs.supervisory_duration(x['S_i'], x['E_i']), axis=1) #d_i = adjusted notional df['d_i'] = df.apply( lambda x: sa_calcs.adjusted_notional(x['notional'], x['S_i'], x['E_i']), axis=1) #supervisory delta, plus other jumps ############################################################## TBD ########################################################## # delta_i = supervisory delta df['delta_i'] = [1, -1, -0.27] df['MF_i'] = [1, 1, 1] #aggregate by bucket, hedging_set df['bucket_cd'] = df['asset_class_cd'] + '_' + df['hedging_set'] + '_' + df[ 'maturity_bucket']