Untitled

 avatar
unknown
plain_text
a month ago
1.7 kB
2
Indexable
    def transform_file(self):

        self.df = self.df[["YIELD_RETURN", "MUREX_instrument"]]
        self.df['YIELD_RETURN'] = self.df['YIELD_RETURN'].str.split(";")
        self.df = self.df.explode('YIELD_RETURN').reset_index(drop=True)
        self.df['YIELD_RETURN'] = pd.to_numeric(self.df['YIELD_RETURN'], errors='coerce')
        self.df['YIELD_RETURN'] = self.df['YIELD_RETURN'].apply(lambda x: f'{x:.10f}').str.rstrip('0').str.rstrip('.')

        start = 4046
        add = 519
        vectorscenarios = np.arange(start, start+add+1)
        Instruments = self.df["MUREX_instrument"].drop_duplicates().tolist()
        data ={
            "MUREX_instrument": [v1 for v1 in Instruments for v2 in vectorscenarios],
            'Scenario Number': [v2 for v1 in Instruments for v2 in vectorscenarios]
        }
        scenarios = pd.DataFrame(data)

        self.market = self.market[['DISPLAYED', 'MARKET']]
        self.df = pd.merge(self.df, self.market, how='left', left_on=['MUREX_instrument'], right_on=['DISPLAYED']).drop(columns=['DISPLAYED'])

        print(len(scenarios))
        print(len(self.df))

        #self.df = pd.merge(self.df, scenarios, how='left', left_on=['MUREX_instrument'], right_on=['MUREX_instrument'])

        self.df_out['Instrument Label'] = self.df['MUREX_instrument']
        self.df_out['Scenario Number'] = scenarios['Scenario Number']
        self.df_out['Market Label'] = self.df['MARKET']
        self.df_out['Maturity Label'] = ""
        self.df_out['Quotation Mode'] = "YIELD"
        self.df_out['Shift Type'] = "Std"
        self.df_out['Shift Value'] = self.df['YIELD_RETURN']
        self.df_out['Initial Value'] =""
        self.df_out['Router'] =""
Leave a Comment