from glob import iglob import os import pandas as pd from itertools import chain from dates import bus_day import pdb def get_globs(fname, years=['2013', '2014', '2015', '2016']): basedir = '/home/share/Daily' globs = [iglob(os.path.join(basedir, year, "{0}_*/{0}*/Reports/{1}.csv".format(year, fname))) for year in years] for year in years[-2:]: globs.append(iglob(os.path.join(basedir, '{0}-*/Reports/{1}.csv'.format(year, fname)))) return globs def valuation_reports(): df = pd.DataFrame() for f in chain.from_iterable(get_globs('Valuation_Report')): try: date = pd.Timestamp(f.split('/')[6]) except ValueError: date = pd.Timestamp(f.split('/')[4]) if date>=pd.Timestamp('2013-02-06'): newdf = pd.read_csv(f, parse_dates=['KnowledgeDate','PeriodEndDate']) else: newdf = pd.read_csv(f) newdf['KnowledgeDate'] = date newdf['PeriodEndDate'] = date - bus_day if newdf.empty or ('PeriodEndDate' in df and \ not df[df.PeriodEndDate == newdf.PeriodEndDate.iat[0]].empty): continue df = df.append(newdf) del df['AccountingPeriod'] for col in ['Strat','InvCcy','Fund','Port']: df[col] = df[col].astype('category') df.to_hdf('globeop.hdf', 'valuation_report', format='table', complib='blosc') def pnl_reports(): df = {} for f in chain.from_iterable(get_globs('Pnl')): try: date = pd.Timestamp(f.split('/')[6]) except ValueError: date = pd.Timestamp(f.split('/')[4]) date = date - bus_day if date in df: print(date) df[date] = pd.read_csv(f) df = pd.concat(df) for col in ['Fund', 'Strat', 'Port', 'LongShortIndicator', 'InvCcy']: df[col] = df[col].astype('category') df.to_hdf('globeop.hdf', 'pnl', format='table', complib='blosc') if __name__=='__main__': valuation_reports() pnl_reports() df_val = pd.read_hdf('globeop.hdf', 'valuation_report') df_pnl = pd.read_hdf('globeop.hdf', 'pnl') nav = df_val[df_val.Fund=='SERCGMAST'].groupby('PeriodEndDate')['EndBookNAV'].sum() subprime_strats = ['SERCGMAST__M_MTG_GOOD', 'SERCGMAST__M_MTG_RW', 'SERCGMAST__M_MTG_IO','SERCGMAST__M_MTG_THRU', 'SERCGMAST__M_MTG_B4PR'] clo_strats = ['SERCGMAST__M_CLO_BBB', 'SERCGMAST__M_CLO_AAA', 'SERCGMAST__M_CLO_BB20'] subprime = df_pnl[df_pnl.Strat.isin(subprime_strats)] subprime_monthly_pnl = subprime.groupby(level=0).sum()['MTD TotalBookPL'].resample('M', how='last') clo = df_pnl[df_pnl.Strat.isin(clo_strats)] clo_monthly_pnl = clo.groupby(level=0).sum()['MTD TotalBookPL'].resample('M', how='last') clo.groupby(level=0).sum()['2015-12-01':'2015-12-31']