diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/load_globeop_report.py | 62 |
1 files changed, 47 insertions, 15 deletions
diff --git a/python/load_globeop_report.py b/python/load_globeop_report.py index 90ece895..6b926ba7 100644 --- a/python/load_globeop_report.py +++ b/python/load_globeop_report.py @@ -2,20 +2,24 @@ from glob import iglob import os import pandas as pd from itertools import chain -from pandas.tseries.offsets import BDay +from dates import bus_day import pdb -def daily_reports(fname, years=['2013', '2014', '2015']): - df = pd.DataFrame() +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)))) + globs = [iglob(os.path.join(basedir, + year, + "{0}_*/{0}*/Reports/{1}.csv".format(year, fname))) for year in years] - globs.append(iglob(os.path.join(basedir, - '{0}-*/Reports/{1}.csv'.format(years[-1], + for year in years[-2:]: + globs.append(iglob(os.path.join(basedir, + '{0}-*/Reports/{1}.csv'.format(year, fname)))) - for f in chain.from_iterable(globs): + 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: @@ -26,7 +30,7 @@ def daily_reports(fname, years=['2013', '2014', '2015']): else: newdf = pd.read_csv(f) newdf['KnowledgeDate'] = date - newdf['PeriodEndDate'] = date - BDay(1) + newdf['PeriodEndDate'] = date - bus_day if newdf.empty or ('PeriodEndDate' in df and \ not df[df.PeriodEndDate == newdf.PeriodEndDate.iat[0]].empty): continue @@ -34,10 +38,38 @@ def daily_reports(fname, years=['2013', '2014', '2015']): del df['AccountingPeriod'] for col in ['Strat','InvCcy','Fund','Port']: df[col] = df[col].astype('category') - df.to_hdf('globeop.hdf', fname.lower(), format='table', complib='blosc') + 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__': - #daily_reports('Pnl') - daily_reports('Valuation_Report') - df = pd.read_hdf('globeop.hdf', 'valuation_report') - nav = df[df.Fund=='SERCGMAST'].groupby('PeriodEndDate')['EndBookNAV'].sum() + 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'] |
