diff options
Diffstat (limited to 'python/notebooks/Interest Statement.ipynb')
| -rw-r--r-- | python/notebooks/Interest Statement.ipynb | 158 |
1 files changed, 147 insertions, 11 deletions
diff --git a/python/notebooks/Interest Statement.ipynb b/python/notebooks/Interest Statement.ipynb index cf0c64bd..69518dff 100644 --- a/python/notebooks/Interest Statement.ipynb +++ b/python/notebooks/Interest Statement.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ @@ -60,9 +60,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "a0d5bf2d610b480f918704e73e02309a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "VBox(children=(HBox(children=(Dropdown(description='Broker:', index=3, options=('BAML_FCM', 'BAML_ISDA', 'BNP'…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "from ipywidgets import widgets, Layout\n", "import datetime\n", @@ -75,12 +90,12 @@ "start_date = widgets.DatePicker(\n", " description='start:',\n", " disabled=False,\n", - " value=datetime.date(2019, 9, 1)\n", + " value=datetime.date(2019, 12, 1)\n", ")\n", "end_date = widgets.DatePicker(\n", " description='end:',\n", " disabled=False,\n", - " value=datetime.date(2019, 9, 30)\n", + " value=datetime.date(2019, 12, 31)\n", ")\n", "output = widgets.interactive_output(f_print, {'broker': broker_widget, 'start_date': start_date, 'end_date': end_date})\n", "output.layout= Layout(margin='auto auto auto 90px')\n", @@ -93,18 +108,139 @@ "metadata": {}, "outputs": [], "source": [ - "df_balances[df_balances.broker=='BAML_ISDA'].loc[\"2019-06-10\"]" + "df_balances[df_balances.broker=='GS'].loc[\"2019-06-10\"]" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "date\n", + "2019-12-02 -8,800,000.00\n", + "2019-12-03 -8,800,000.00\n", + "2019-12-04 -8,800,000.00\n", + "2019-12-05 -8,800,000.00\n", + "2019-12-06 -8,800,000.00\n", + "2019-12-09 -8,800,000.00\n", + "2019-12-10 -8,800,000.00\n", + "2019-12-11 -9,070,000.00\n", + "2019-12-12 -9,070,000.00\n", + "2019-12-13 -9,070,000.00\n", + "2019-12-16 -9,070,000.00\n", + "2019-12-17 -9,070,000.00\n", + "2019-12-18 -9,070,000.00\n", + "2019-12-19 -9,070,000.00\n", + "2019-12-20 -9,070,000.00\n", + "2019-12-23 -9,070,000.00\n", + "2019-12-26 -9,070,000.00\n", + "2019-12-27 -9,070,000.00\n", + "2019-12-30 -9,070,000.00\n", + "2020-01-01 -9,070,000.00\n", + "2020-01-02 -9,070,000.00\n", + "2020-01-03 -9,070,000.00\n", + "Name: amount, dtype: float64" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_gs=df_balances[df_balances.broker == \"MS\"]\n", + "df_gs.groupby(df_gs.index)['amount'].sum()[\"2019-12-01\":]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ - "df_baml=df_balances[df_balances.broker == \"BAML_ISDA\"]\n", - "df_baml.groupby(df_baml.index)['amount'].sum()[\"2019-08-30\":]" + "def f(df_balances, df_rates, broker, start_date, end_date):\n", + " df = (df_balances[df_balances.broker == broker].\n", + " set_index(\"strategy\", append=True)[\"amount\"].\n", + " unstack(\"strategy\"))\n", + " df[df.isnull()] = 0.\n", + " drange = pd.date_range(pd.Timestamp(start_date) - BDay(), end_date)\n", + " rates = df_rates.reindex(drange, method=\"ffill\") /100 /360\n", + " df = df.reindex(drange, method=\"ffill\")\n", + " if broker in [\"BAML_ISDA\", \"CITI\"]:\n", + " d = {}\n", + " for strat in df:\n", + " s = df.loc[start_date:, strat]\n", + " ir_bal = 0.\n", + " for bal, r in zip(s.values, rates.loc[start_date:, 'rate'].values):\n", + " bal += ir_bal\n", + " ir_bal += bal * r\n", + " d[strat] = ir_bal\n", + " result = pd.Series(d, name='amount')\n", + " else:\n", + " result = df.loc[start_date:] * rates.loc[start_date:].values\n", + " return result" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2019-12-01 -1,217.99\n", + "2019-12-02 -1,217.99\n", + "2019-12-03 -1,210.18\n", + "2019-12-04 -1,210.18\n", + "2019-12-05 -1,210.18\n", + "2019-12-06 -1,440.10\n", + "2019-12-07 -1,440.10\n", + "2019-12-08 -1,440.10\n", + "2019-12-09 -1,440.10\n", + "2019-12-10 -1,440.10\n", + "2019-12-11 -1,440.10\n", + "2019-12-12 -1,474.54\n", + "2019-12-13 -1,474.54\n", + "2019-12-14 -1,474.54\n", + "2019-12-15 -1,474.54\n", + "2019-12-16 -1,484.06\n", + "2019-12-17 -1,484.06\n", + "2019-12-18 -1,474.54\n", + "2019-12-19 -1,474.54\n", + "2019-12-20 -1,474.54\n", + "2019-12-21 -1,474.54\n", + "2019-12-22 -1,474.54\n", + "2019-12-23 -1,474.54\n", + "2019-12-24 -1,474.54\n", + "2019-12-25 -1,474.54\n", + "2019-12-26 -1,474.54\n", + "2019-12-27 -1,474.54\n", + "2019-12-28 -1,474.54\n", + "2019-12-29 -1,474.54\n", + "2019-12-30 -1,474.54\n", + "2019-12-31 -1,474.54\n", + "Freq: D, dtype: float64" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f(df_balances, df_rates, \"GS\", \"2019-12-01\", \"2019-12-31\").sum(axis=1)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -123,7 +259,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.4" + "version": "3.8.1" } }, "nbformat": 4, |
