diff options
Diffstat (limited to 'python/notebooks/Reto Report.ipynb')
| -rw-r--r-- | python/notebooks/Reto Report.ipynb | 36 |
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, |
