diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/exploration/VaR.py | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/python/exploration/VaR.py b/python/exploration/VaR.py index 6b8d6d66..d4ea72e3 100644 --- a/python/exploration/VaR.py +++ b/python/exploration/VaR.py @@ -1,8 +1,24 @@ import datetime from analytics.curve_trades import curve_pos from analytics.index_data import index_returns -portf = curve_pos(datetime.date(2018, 5, 3), "IG") +import pandas as pd -df = index_returns(index="IG", years=5, tenor=['3yr', '5yr', '7yr', '10yr']) -df = df.reset_index().set_index(['date', 'series', 'tenor']) -returns = df.spread_return.dropna().unstack(-1).groupby(level='date').nth(-1) +portf = curve_pos(datetime.date(2018, 5, 3), "ITRX") + +df = index_returns(index="EU", years=5, tenor=['3yr', '5yr', '7yr', '10yr']) +df = (df.reset_index(['index'], drop=True). + reorder_levels(['date', 'series', 'tenor'])) +returns_otr = (df.spread_return.dropna(). + unstack(-1). + groupby(level='date', as_index=False). + nth(-1)) + +portf.reset_pv() +spreads = pd.DataFrame({'spread': portf.spread, + 'tenor': [ind.tenor for ind in portf.indices]}) + +r = [] +for k, v in returns_otr.iterrows(): + portf.spread = spreads.spread.values * (1 + v.loc[spreads.tenor]) + r.append((k[0], portf.pnl)) +pnl = pd.DataFrame.from_records(r, columns=['date', 'pnl'], index=['date']) |
