aboutsummaryrefslogtreecommitdiffstats
path: root/python/notebooks/Reto Report.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'python/notebooks/Reto Report.ipynb')
-rw-r--r--python/notebooks/Reto Report.ipynb42
1 files changed, 11 insertions, 31 deletions
diff --git a/python/notebooks/Reto Report.ipynb b/python/notebooks/Reto Report.ipynb
index 5a95d1e0..d431f970 100644
--- a/python/notebooks/Reto Report.ipynb
+++ b/python/notebooks/Reto Report.ipynb
@@ -360,39 +360,19 @@
"metadata": {},
"outputs": [],
"source": [
- "################################## Leverage Ratio - Positive and negative PV trades. The only thing missing in the calc are the USD/EUR Loans\n",
+ "################################## Leverage Ratio - Asset/Liability Ratios\n",
+ "#Only look at trades by taking out cash (USD/EUR) and (USD/EURLoan). \n",
+ "#Positive_nav_ratio = Cash + Positive PV Trades\n",
"nav = go.get_net_navs()\n",
"portf = go.get_portfolio()\n",
- "df = portf.groupby(pd.Grouper(freq=\"M\"), group_keys=False).apply(\n",
- " lambda df: df.loc[df.index[-1]]\n",
- " )\n",
- "df = df[~df['invid'].isin(['USDLOAN', 'EURLOAN'])]\n",
- "df = df[~df['port'].isin(['SER_TEST__SER_TEST', 'GFS_HELPER_BUSINESS_UNIT'])]\n",
- "pvs = df.groupby(['periodenddate', df['endbooknav'] >0])['endbooknav'].sum().unstack().rename(\n",
+ "portf = portf.groupby(pd.Grouper(freq=\"M\"), group_keys=False).apply(lambda df: df.loc[df.index[-1]])\n",
+ "trades = portf[~portf['invid'].isin(['USDLOAN', 'EURLOAN', 'USD', 'EUR', 'CAD'])]\n",
+ "trades = trades.groupby(['periodenddate', trades['endbooknav'] >0]).sum(numeric_only=True).unstack(level=1).rename(\n",
" columns={True:'endbooknav_pos', False:'endbooknav_neg'})\n",
- "nav = nav.merge(pvs, left_index=True, right_index=True)\n",
- "nav['long_leverage'] = nav['endbooknav_pos']/nav.endbooknav\n",
- "nav['gross_leverage'] = (nav['endbooknav_pos']-nav['endbooknav_neg'])/nav.endbooknav\n",
- "print (\"positive pv/nav: \" + str(nav['long_leverage'].mean()), \"gross pv/nav: \" + str(nav['gross_leverage'].mean()))\n",
- "################################### Broken out by stratey too\n",
- "pvs = df.groupby(['periodenddate', 'port', df['endbooknav'] >0])['endbooknav'].sum().unstack().rename(\n",
- " columns={True:'endbooknav_pos', False:'endbooknav_neg'}).unstack(level=1)\n",
- "data={}\n",
- "for name in ['endbooknav_pos', 'endbooknav_neg']:\n",
- " pv_gross = pvs.xs(name, level = 'endbooknav', axis=1)\n",
- " pv_gross.loc[:, 'TRANCHE'] = pv_gross[['IG', 'HY', 'LQD_TRANCH','TRANCHE']].fillna(0).sum(axis=1)\n",
- " pv_gross.rename({'CURVE': 'CREDIT CURVES',\n",
- " 'HEDGE_MAC': 'MACRO HEDGE',\n",
- " 'IR': 'INTEREST RATE DERIVATIVES',\n",
- " 'MORTGAGES': 'MORTGAGE BONDS',\n",
- " 'OPTIONS': 'CREDIT OPTIONS',\n",
- " 'STRUCTURED': 'CSO BONDS',\n",
- " 'TRANCHE': 'CREDIT TRANCHES'}, axis=1, inplace=True)\n",
- " pv_gross.drop(['LQD_TRANCH', 'IG', 'HY'], inplace=True, axis=1)\n",
- " pv_gross = pv_gross.merge(nav['endbooknav'], left_index=True, right_index=True)\n",
- " data[name] = pv_gross.iloc[:,:-1].div(pv_gross['endbooknav'], axis=0)\n",
- "data['endbooknav_pos'].to_clipboard()\n",
- "data['endbooknav_neg'].to_clipboard()"
+ "trades = trades.xs('endbooknav', axis=1)\n",
+ "trades = trades.merge(nav['endbooknav'], left_index=True, right_index=True)\n",
+ "trades['cash'] = trades['endbooknav'] - (trades['endbooknav_pos'] + trades['endbooknav_neg'])\n",
+ "trades['positive_nav_ratio'] = (trades['cash'] + trades['endbooknav_pos'])/trades['endbooknav']"
]
},
{
@@ -559,7 +539,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.9"
+ "version": "3.11.3"
}
},
"nbformat": 4,