aboutsummaryrefslogtreecommitdiffstats
path: root/python/notebooks
diff options
context:
space:
mode:
Diffstat (limited to 'python/notebooks')
-rw-r--r--python/notebooks/Reto Report.ipynb58
1 files changed, 27 insertions, 31 deletions
diff --git a/python/notebooks/Reto Report.ipynb b/python/notebooks/Reto Report.ipynb
index f1a8d9e8..f45b54ce 100644
--- a/python/notebooks/Reto Report.ipynb
+++ b/python/notebooks/Reto Report.ipynb
@@ -7,21 +7,15 @@
"outputs": [],
"source": [
"import datetime\n",
- "import pandas.tseries.offsets as off\n",
+ "from pandas.tseries.offsets import BDay, MonthEnd\n",
"import globeop_reports as go\n",
"import pandas as pd\n",
- "import matplotlib.pyplot as plt\n",
- "import numpy as np\n",
- "import exploration.VaR as var\n",
"import analytics\n",
"\n",
- "from analytics.curve_trades import curve_pos, on_the_run\n",
"from analytics.index_data import get_index_quotes\n",
- "from analytics.scenarios import run_portfolio_scenarios, run_swaption_scenarios\n",
- "from analytics import Swaption, BlackSwaption, CreditIndex, BlackSwaptionVolSurface, Portfolio, ProbSurface, DualCorrTranche\n",
- "from db import serenitas_engine, dawn_engine\n",
- "\n",
- "analytics.init_ontr()"
+ "from analytics.scenarios import run_portfolio_scenarios\n",
+ "from analytics import BlackSwaption, CreditIndex, BlackSwaptionVolSurface, Portfolio,DualCorrTranche\n",
+ "from db import dawn_engine"
]
},
{
@@ -31,8 +25,8 @@
"outputs": [],
"source": [
"#PNL Allocation\n",
- "date = datetime.date.today() - off.BDay(1)\n",
- "report_date = date - off.MonthEnd(1)\n",
+ "date = datetime.date.today() - BDay(1)\n",
+ "report_date = date - MonthEnd(1)\n",
"report_date"
]
},
@@ -70,7 +64,7 @@
"nav = go.get_net_navs()\n",
"sql_string = \"SELECT * FROM bonds WHERE buysell IS False\"\n",
"df = pd.read_sql_query(sql_string, dawn_engine,\n",
- " parse_dates={'lastupdate':'utc=True', 'trade_date':'', 'settle_date':''},\n",
+ " parse_dates={'lastupdate':{'utc':True}, 'trade_date': {}, 'settle_date':{}},\n",
" index_col = 'trade_date')\n",
"df = df.groupby(pd.Grouper(freq='M')).sum()\n",
"#Now get portfolio paydown per month\n",
@@ -102,6 +96,19 @@
"metadata": {},
"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",
+ "(position_date, spread_date, shock_date)\n",
+ "analytics.init_ontr(spread_date)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
"#Calculate amount of stress for reports\n",
"df = get_index_quotes('HY', list(range(on_the_run('HY') - 10, on_the_run('HY') + 1)),\n",
" tenor=['5yr'], years=5)\n",
@@ -122,18 +129,6 @@
"metadata": {},
"outputs": [],
"source": [
- "position_date = (datetime.date.today() - pd.tseries.offsets.BDay(1)).date()\n",
- "spread_date = position_date\n",
- "shock_date = (datetime.date.today() - pd.tseries.offsets.BDay(1)).date()\n",
- "(position_date, spread_date, shock_date)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
"#tranche positions\n",
"df_tranches = pd.read_sql_query(\"SELECT * from list_tranche_positions_by_strat(%s)\",\n",
" dawn_engine, params=(position_date,))\n",
@@ -172,19 +167,17 @@
" for t in df_curve.itertuples(index=False)])\n",
"curve_portf.value_date = spread_date\n",
"curve_portf.mark()\n",
- "portf.add_trade(CreditIndex('HY', on_the_run('HY'), '5yr', \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",
" \n",
"#get bond risks:\n",
"rmbs_pos = go.rmbs_pos(position_date)\n",
"clo_pos = go.clo_pos(position_date)\n",
- "r = serenitas_engine.execute(\"select duration from on_the_run where index = 'HY' and date = %s\",\n",
- " spread_date)\n",
- "duration, = next(r)\n",
+ "duration = analytics._ontr.risky_annuity\n",
"rmbs_pos['hy_equiv'] = rmbs_pos['delta_yield']/duration * 100\n",
"notional = rmbs_pos['hy_equiv'].sum() + clo_pos['hy_equiv'].sum()\n",
- "portf.add_trade(CreditIndex('HY', on_the_run('HY'), '5yr', \n",
+ "portf.add_trade(CreditIndex('HY', on_the_run('HY', spread_date), '5yr', \n",
" value_date = spread_date, \n",
" notional = -notional), ('bonds', ''))\n",
" \n",
@@ -213,6 +206,7 @@
" groupby(level=0, axis=1).sum())\n",
"attrib.columns.name = 'strategy'\n",
"results = attrib.xs((widen[2], 0.), level=['spread_shock', 'corr_shock']).unstack('strategy')\n",
+ "results.name = 'pnl'\n",
"#results.to_clipboard(header=True)"
]
},
@@ -221,7 +215,9 @@
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "results.to_clipboard(header=True)"
+ ]
}
],
"metadata": {