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.ipynb36
1 files changed, 31 insertions, 5 deletions
diff --git a/python/notebooks/Reto Report.ipynb b/python/notebooks/Reto Report.ipynb
index 43bcc0e4..63e5ab48 100644
--- a/python/notebooks/Reto Report.ipynb
+++ b/python/notebooks/Reto Report.ipynb
@@ -11,6 +11,7 @@
"import globeop_reports as go\n",
"import pandas as pd\n",
"import analytics\n",
+ "import numpy as np\n",
"\n",
"from analytics.index_data import get_index_quotes\n",
"from analytics.scenarios import run_portfolio_scenarios\n",
@@ -97,8 +98,8 @@
"outputs": [],
"source": [
"position_date = (datetime.date.today() - BDay(1)).date()\n",
- "spread_date = position_date\n",
"shock_date = (datetime.date.today() - BDay(1)).date()\n",
+ "spread_date = shock_date\n",
"(position_date, spread_date, shock_date)\n",
"analytics.init_ontr(spread_date)"
]
@@ -133,7 +134,7 @@
"#tranche positions\n",
"from risk.tranches import get_tranche_portfolio\n",
"conn = dawn_engine.raw_connection()\n",
- "portf = get_tranche_portfolio(position_date, conn, by_strat=True)\n",
+ "portf = get_tranche_portfolio(position_date, conn, False, 'SERCGMAST')\n",
"\n",
"#swaption positions\n",
"swaption_sql_string = (\"select id, folder, expiration_date from swaptions where expiration_date > %s \"\n",
@@ -163,7 +164,7 @@
"curve_portf.mark()\n",
"portf.add_trade(CreditIndex('HY', on_the_run('HY', spread_date), '5yr', \n",
" value_date=spread_date, \n",
- " notional=-curve_portf.hy_equiv), ('curve_trades', ''))\n",
+ " notional=curve_portf.hy_equiv), ('curve_trades', ''))\n",
" \n",
"#get bond risks:\n",
"rmbs_pos = go.rmbs_pos(position_date)\n",
@@ -209,7 +210,32 @@
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "#Run set of scenario\n",
+ "spread_shock = np.round(np.arange(-.2, 1, .025), 3)\n",
+ "scens = run_portfolio_scenarios(portf, date_range, params=['pnl', 'delta'],\n",
+ " spread_shock=spread_shock,\n",
+ " vol_shock=vol_shock,\n",
+ " corr_shock=[0],\n",
+ " vol_surface=vol_surface)\n",
+ "\n",
+ "scens = scens.xs('pnl', axis=1, level=2)\n",
+ "scens = scens.xs((0,0), level=['vol_shock', 'corr_shock'])\n",
+ "\n",
+ "scenarios = (scens.\n",
+ " reset_index(level=['date'], drop=True).\n",
+ " groupby(level=0, axis=1).sum())\n",
+ "\n",
+ "options = ['HYOPTDEL', 'HYPAYER', 'HYREC', 'IGOPTDEL', 'IGPAYER', 'IGREC']\n",
+ "tranches = ['HYMEZ', 'HYINX', 'HYEQY', 'IGMEZ', 'IGINX', 'IGEQY', 'IGSNR', 'IGINX', 'BSPK']\n",
+ "\n",
+ "scenarios['options'] = scenarios[set(scenarios.columns).intersection(options)].sum(axis=1)\n",
+ "scenarios['tranches'] = scenarios[set(scenarios.columns).intersection(tranches)].sum(axis=1)\n",
+ "\n",
+ "synthetic = scenarios[['options', 'tranches', 'curve_trades']]\n",
+ "synthetic['total'] = synthetic.sum(axis = 1)\n",
+ "synthetic.plot()"
+ ]
}
],
"metadata": {
@@ -228,7 +254,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.7.2"
+ "version": "3.7.3"
}
},
"nbformat": 4,