aboutsummaryrefslogtreecommitdiffstats
path: root/python/notebooks
diff options
context:
space:
mode:
Diffstat (limited to 'python/notebooks')
-rw-r--r--python/notebooks/risk_sabo.ipynb43
1 files changed, 37 insertions, 6 deletions
diff --git a/python/notebooks/risk_sabo.ipynb b/python/notebooks/risk_sabo.ipynb
index c220d23c..20813d2f 100644
--- a/python/notebooks/risk_sabo.ipynb
+++ b/python/notebooks/risk_sabo.ipynb
@@ -45,7 +45,7 @@
"outputs": [],
"source": [
"scenarios = []\n",
- "for position_date in pd.date_range((datetime.date.today() - BMonthEnd(2)), (datetime.date.today() - BMonthEnd(1)), freq=\"BM\"):\n",
+ "for position_date in pd.date_range((datetime.date.today() - BMonthEnd(6)), (datetime.date.today() - BMonthEnd()), freq=\"BM\"):\n",
" spread_date = position_date\n",
" spread_shock = np.array([-100., -25., 1., +25. , 100.])\n",
" serenitas.analytics.init_ontr(spread_date)\n",
@@ -53,12 +53,34 @@
" portf, _ = build_portfolio(position_date.date(), spread_date.date())\n",
" vol_surface = generate_vol_surface(portf, 5)\n",
" portf.reset_pv()\n",
- " scens = run_portfolio_scenarios(portf, date_range=[pd.Timestamp(spread_date)], params=['pnl'],\n",
+ " scens = run_portfolio_scenarios(portf, date_range=[pd.Timestamp(spread_date)], params=['pnl', 'hy_equiv'],\n",
" spread_shock=spread_shock,\n",
- " vol_shock= [0.0],\n",
+ " vol_shock=[0.0],\n",
" corr_shock=[0.0],\n",
" vol_surface=vol_surface)\n",
- " scenarios.append(scens.sum(axis=1))\n",
+ "\n",
+ " strategies = {}\n",
+ " strategies['options'] = ['HYOPTDEL', 'HYPAYER', 'HYREC', \n",
+ " 'IGOPTDEL', 'IGPAYER', 'IGREC']\n",
+ " strategies['tranches'] = ['HYSNR', 'HYMEZ', 'HYINX', 'HYEQY', \n",
+ " 'IGSNR', 'IGMEZ', 'IGINX', 'IGEQY', \n",
+ " 'EUSNR', 'EUMEZ', 'EUINX', 'EUEQY', \n",
+ " 'XOSNR', 'XOMEZ', 'XOINX', 'XOEQY', \n",
+ " 'BSPK']\n",
+ "\n",
+ " scens = scens.xs((0.0, 0.0), level=['vol_shock', 'corr_shock'])\n",
+ " scens.columns.names=['strategy', 'trade_id', 'scen_type']\n",
+ "\n",
+ " results = {}\n",
+ " for i, g in scens.groupby(level='scen_type', axis =1):\n",
+ " temp = g.groupby(level='strategy', axis =1).sum()\n",
+ " for key, item in strategies.items():\n",
+ " exist_columns = set(temp.columns).intersection(item)\n",
+ " temp[key] = temp[exist_columns].sum(axis=1)\n",
+ " temp.drop(exist_columns, axis=1, inplace=True)\n",
+ " temp['total'] = temp.sum(axis = 1)\n",
+ " results[i] = temp\n",
+ " scenarios.append(pd.concat(results))\n",
"pd.concat(scenarios).to_csv(base_dir / f\"csscen_{run_date:%Y%m%d}.csv\")"
]
},
@@ -72,10 +94,12 @@
{
"cell_type": "code",
"execution_count": null,
- "metadata": {},
+ "metadata": {
+ "tags": []
+ },
"outputs": [],
"source": [
- "for position_date in pd.date_range((datetime.date.today() - BMonthEnd(12)), (datetime.date.today() - BMonthEnd(1)), freq=\"BM\"):\n",
+ "for position_date in pd.date_range((datetime.date.today() - BMonthEnd(2)), (datetime.date.today() - BMonthEnd(1)), freq=\"BM\"):\n",
" spread_date = position_date\n",
" _, portf = build_portfolio(position_date.date(), spread_date.date())\n",
" jtd = portf.jtd_single_names()\n",
@@ -95,6 +119,13 @@
"metadata": {},
"outputs": [],
"source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
}
],
"metadata": {