aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/load_globeop_report.py62
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']