aboutsummaryrefslogtreecommitdiffstats
path: root/python/notebooks/Valuation Backtest.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'python/notebooks/Valuation Backtest.ipynb')
-rw-r--r--python/notebooks/Valuation Backtest.ipynb48
1 files changed, 20 insertions, 28 deletions
diff --git a/python/notebooks/Valuation Backtest.ipynb b/python/notebooks/Valuation Backtest.ipynb
index 698a25f1..870fb33d 100644
--- a/python/notebooks/Valuation Backtest.ipynb
+++ b/python/notebooks/Valuation Backtest.ipynb
@@ -6,13 +6,15 @@
"metadata": {},
"outputs": [],
"source": [
- "import matplotlib.pyplot as plt\n",
- "from matplotlib.ticker import FuncFormatter \n",
"from datetime import datetime\n",
- "import pandas as pd\n",
+ "from db import dbengine\n",
"\n",
"import mark_backtest_underpar as mark\n",
- "import globeop_reports as ops"
+ "import globeop_reports as ops\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "engine = dbengine('dawndb')"
]
},
{
@@ -205,29 +207,19 @@
"metadata": {},
"outputs": [],
"source": [
- "pnl_breakdown = ops.curr_port_PNL()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "#Unrealized MTM Gains/Loss\n",
- "breakdown_summary = pd.DataFrame(index = {'unreal mark-to-market'}, columns={'Gains','Loss','Net'})\n",
- "breakdown_summary['Gains'] = pnl_breakdown[pnl_breakdown['mtdbookunrealmtm']>=0].sum()['mtdbookunrealmtm']\n",
- "breakdown_summary['Loss'] = pnl_breakdown[pnl_breakdown['mtdbookunrealmtm']<0].sum()['mtdbookunrealmtm']\n",
- "breakdown_summary['Net'] = pnl_breakdown.sum()['mtdbookunrealmtm']"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "breakdown_summary / nav[-1]"
+ "#Portfolio MTM Gains/Loss/Net\n",
+ "df_pnl = ops.get_monthly_pnl()[:date]\n",
+ "r=[]\n",
+ "for d, g in df_pnl.reset_index('identifier').groupby(pd.Grouper(freq='M')):\n",
+ " sql_string = \"SELECT * FROM risk_positions(%s, 'Subprime') WHERE notional > 0\"\n",
+ " pos = pd.read_sql_query(sql_string, engine, params=[g.index[-1].date()])\n",
+ " pos.identifier = pos.identifier.str[:9]\n",
+ " pos = pos.merge(df_pnl.groupby('identifier').cumsum().loc[g.index[-1]],\n",
+ " on='identifier')['mtdtotalbookpl'] / nav.loc[d]\n",
+ " r.append([g.index[-1], pos[pos>=0].sum(), pos[pos<0].sum()])\n",
+ "summary = pd.DataFrame.from_records(r, index='date', columns=['date','gains','loss'])\n",
+ "summary['Net'] = summary.gains + summary.loss\n",
+ "summary.plot()"
]
},
{
@@ -267,7 +259,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.6.4"
+ "version": "3.6.6"
}
},
"nbformat": 4,