diff options
Diffstat (limited to 'python/notebooks/Reto Report.ipynb')
| -rw-r--r-- | python/notebooks/Reto Report.ipynb | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/python/notebooks/Reto Report.ipynb b/python/notebooks/Reto Report.ipynb index f4f194f8..a906291c 100644 --- a/python/notebooks/Reto Report.ipynb +++ b/python/notebooks/Reto Report.ipynb @@ -20,7 +20,9 @@ "from serenitas.analytics.index_data import load_all_curves\n", "from serenitas.analytics.scenarios import run_portfolio_scenarios\n", "from serenitas.analytics.basket_index import BasketIndex\n", - "from serenitas.utils.db import dbconn, dbengine, serenitas_engine, dawn_engine, serenitas_pool\n", + "from serenitas.analytics.base import Trade\n", + "from serenitas.utils.db2 import dbconn, serenitas_pool, dawn_pool\n", + "from serenitas.utils.db import serenitas_engine, dawn_engine\n", "#from dates import bond_cal" ] }, @@ -34,8 +36,8 @@ "position_date = (datetime.date.today() - BDay(1)).date()\n", "spread_date = (datetime.date.today() - BDay(1)).date()\n", "ana._local = False\n", - "ana.init_ontr(spread_date)\n", - "fund='SERCGMAST'" + "Trade.init_ontr(spread_date)\n", + "fund ='SERCGMAST'" ] }, { @@ -46,7 +48,7 @@ "source": [ "################################### Run scenarios\n", "spread_shock = np.array([-100., -25., 1., +25. , 100., 200., 300.])\n", - "spread_shock /= ana._ontr['HY'].spread\n", + "spread_shock /= Trade._ontr['HY'].spread\n", "portf, _ = build_portfolio(position_date, spread_date, fund)\n", "vol_surface = generate_vol_surface(portf, 10, 'MS')\n", "portf.reset_pv()\n", @@ -101,9 +103,8 @@ "source": [ "#####our jump risks\n", "jtd = portf.jtd_single_names()\n", - "conn = serenitas_pool.getconn()\n", - "surv_curves = load_all_curves(conn, spread_date)\n", - "serenitas_pool.putconn(conn)\n", + "with serenitas_pool.connection() as conn:\n", + " surv_curves = load_all_curves(conn, spread_date)\n", "surv_curves['spread'] = surv_curves['curve'].apply(lambda sc: sc.to_series(forward=False)[5] * (1-sc.recovery_rates[5]))\n", "jtd_sabo = jtd[[jtd.columns[0]]].join(surv_curves.groupby(level=0).first()[['name', 'company_id', 'spread']])\n", "jtd_sabo.columns = ['jtd', 'name', 'company_id', 'spread']\n", @@ -302,23 +303,23 @@ "outputs": [], "source": [ "################################## Calculate Historical Bond Duration/Yield\n", - "dawnconn = dbconn(\"dawndb\")\n", "fund = 'SERCGMAST'\n", "CBM = CustomBusinessMonthEnd(calendar=np.busdaycalendar())\n", "dates = pd.bdate_range(\"2015-1-31\", datetime.date.today() - MonthEnd(1), \n", " freq=CBM)\n", "bond_stats=pd.DataFrame()\n", - "for d in dates:\n", - " sub = subprime_risk(d.date(), dawnconn , dbengine(\"rmbs_model\"), fund=fund)\n", - " sub=sub[sub.pv1>0]\n", - " crt = crt_risk(d.date(), dawnconn , dbengine(\"crt\"), fund=fund)\n", - " clo = clo_risk(d.date(), dawnconn , dbconn(\"etdb\"), fund=fund)\n", - " bonds = pd.concat([sub,crt,clo]).dropna(subset=['modDur', 'usd_market_value'])\n", - " bond_stats.at[d, 'dur']= sum(bonds.notional * bonds.factor * bonds.modDur)/sum(bonds.notional * bonds.factor)\n", - " bond_stats.at[d, 'yield'] = (sum(bonds.usd_market_value * bonds.modDur * bonds.bond_yield) /\n", - " sum(bonds.usd_market_value * bonds.modDur))\n", - " bond_stats.at[d, 'swap_rate'] = (sum(bonds.usd_market_value * bonds.modDur * bonds.swap_rate) /\n", - " sum(bonds.usd_market_value * bonds.modDur))\n", + "with dawn_pool.connection() as conn, dbconn(\"etdb\") as et_conn:\n", + " for d in dates:\n", + " sub = subprime_risk(d.date(), dawnconn , dbengine(\"rmbs_model\"), fund=fund)\n", + " sub=sub[sub.pv1>0]\n", + " crt = crt_risk(d.date(), dawnconn , dbengine(\"crt\"), fund=fund)\n", + " clo = clo_risk(d.date(), dawnconn , dbconn(\"etdb\"), fund=fund)\n", + " bonds = pd.concat([sub,crt,clo]).dropna(subset=['modDur', 'usd_market_value'])\n", + " bond_stats.at[d, 'dur']= sum(bonds.notional * bonds.factor * bonds.modDur)/sum(bonds.notional * bonds.factor)\n", + " bond_stats.at[d, 'yield'] = (sum(bonds.usd_market_value * bonds.modDur * bonds.bond_yield) /\n", + " sum(bonds.usd_market_value * bonds.modDur))\n", + " bond_stats.at[d, 'swap_rate'] = (sum(bonds.usd_market_value * bonds.modDur * bonds.swap_rate) /\n", + " sum(bonds.usd_market_value * bonds.modDur))\n", "bond_stats['dm'] = bond_stats['yield'] - bond_stats['swap_rate']" ] }, |
