diff options
| -rw-r--r-- | python/notebooks/Reto Report.ipynb | 27 | ||||
| -rw-r--r-- | python/risk/bonds.py | 6 |
2 files changed, 26 insertions, 7 deletions
diff --git a/python/notebooks/Reto Report.ipynb b/python/notebooks/Reto Report.ipynb index 12f3f3af..03e5c06f 100644 --- a/python/notebooks/Reto Report.ipynb +++ b/python/notebooks/Reto Report.ipynb @@ -66,6 +66,15 @@ "metadata": {}, "outputs": [], "source": [ + "rolling_return" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ "################################### Average Portfolio Sales Turnover - as of last monthend from today\n", "#(total Bond Sales Proceeds + paydown)/average starting 12 months NAV\n", "#Actually: Rolling 12 months sum of (total bond sales proceeds + paydown)/monthly NAV\n", @@ -403,7 +412,7 @@ " params=[position_date, position_date - pd.tseries.offsets.DateOffset(15, \"D\")])\n", " rmbs_pos = subprime_risk(position_date, dawnconn, mysql_engine, timestamps.iloc[0][0].date())\n", " clo_pos = clo_risk(position_date, dawnconn, etconn)\n", - " crt_pos = crt_risk(position_date, dawnconn, mysqlcrt_engine)\n", + " crt_pos = crt_risk(position_date, dawnconn, mysqlcrt_engine, model_version = 'hpi5_ir3_btm')\n", " rmbs_notional = 0\n", " for pos in [rmbs_pos, crt_pos]:\n", " rmbs_notional += pos['hy_equiv'].sum() if pos is not None else 0\n", @@ -445,6 +454,7 @@ "df = get_index_quotes('HY', list(range(on_the_run('HY', spread_date) - 10, on_the_run('HY', spread_date) + 1)),\n", " tenor=['5yr'], years=5)\n", "df = df.xs('5yr', level='tenor')['close_spread'].groupby(['date', 'series']).last()\n", + "df=df.loc[:'2020-2-28']\n", "\n", "widen, tighten = [], []\n", "#approximately 1,3,6 months move (22 each months)\n", @@ -492,7 +502,16 @@ "metadata": {}, "outputs": [], "source": [ - "results.to_clipboard(header=True)" + "results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "results.to_csv('/home/serenitas/edwin/Python/reto_results.csv')" ] }, { @@ -505,7 +524,7 @@ "spread_shock = np.round(np.arange(-.2, 1, .05), 3)\n", "scens = run_portfolio_scenarios(portf, date_range=[pd.Timestamp(spread_date)], params=['pnl', 'delta'],\n", " spread_shock=spread_shock,\n", - " vol_shock=[0],\n", + " vol_shock=[.5],\n", " corr_shock=[0],\n", " vol_surface=vol_surface)\n", "\n", @@ -559,7 +578,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.0" + "version": "3.8.1" } }, "nbformat": 4, diff --git a/python/risk/bonds.py b/python/risk/bonds.py index c17901d2..9ee98a20 100644 --- a/python/risk/bonds.py +++ b/python/risk/bonds.py @@ -221,15 +221,15 @@ def get_portfolio(date, conn, asset_class: AssetClass, fund="SERCGMAST"): return df.set_index("cusip") -def crt_risk(date, dawn_conn, engine): +def crt_risk(date, dawn_conn, engine, model_version="hpi5_ir3_btm"): df = get_portfolio(date, dawn_conn, AssetClass.CRT) df_model = pd.read_sql_query( "SELECT * from priced_at_market WHERE " "timestamp BETWEEN %s AND date_add(%s, INTERVAL 1 DAY) " - "AND model_des = 'hpi3_ir3'", + "AND model_des = %s", engine, "cusip", - params=(date, date), + params=(date, date, model_version), ) df = df.join(df_model) df["curr_ntl"] = df.notional * df.factor |
