diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/notebooks/Curve Trades.ipynb | 151 | ||||
| -rw-r--r-- | python/notebooks/Interest Statement.ipynb | 109 | ||||
| -rw-r--r-- | python/notebooks/Realized Vol.ipynb | 165 | ||||
| -rw-r--r-- | python/notebooks/swaption_risk.ipynb | 499 |
4 files changed, 37 insertions, 887 deletions
diff --git a/python/notebooks/Curve Trades.ipynb b/python/notebooks/Curve Trades.ipynb index d8d1b7ce..4165bd98 100644 --- a/python/notebooks/Curve Trades.ipynb +++ b/python/notebooks/Curve Trades.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -21,24 +21,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "48e324f064aa450f9ca82dd064a3082f", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Dropdown(description='Index:', options=('IG', 'EU'), value='IG')" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "w = widgets.Dropdown(\n", " options=['IG', 'EU'],\n", @@ -51,7 +36,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -61,34 +46,9 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "260c86a418564dbe92079d66f6da64d5", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "<matplotlib.axes._subplots.AxesSubplot at 0x7f6018e50e50>" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "#On the run spread differences\n", "spreads_diff = curve_spread_diff(index, 6)\n", @@ -97,104 +57,9 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "1f6848430d7c4cdca60133d2b6edf190", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>3-5</th>\n", - " <th>5-7</th>\n", - " <th>7-10</th>\n", - " <th>5-10</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>min</th>\n", - " <td>21.219659</td>\n", - " <td>20.056528</td>\n", - " <td>16.047530</td>\n", - " <td>40.126583</td>\n", - " </tr>\n", - " <tr>\n", - " <th>max</th>\n", - " <td>34.068608</td>\n", - " <td>27.193659</td>\n", - " <td>24.195653</td>\n", - " <td>48.782836</td>\n", - " </tr>\n", - " <tr>\n", - " <th>mean</th>\n", - " <td>29.106575</td>\n", - " <td>24.588519</td>\n", - " <td>20.883679</td>\n", - " <td>45.472198</td>\n", - " </tr>\n", - " <tr>\n", - " <th>current</th>\n", - " <td>21.603603</td>\n", - " <td>21.392519</td>\n", - " <td>23.498862</td>\n", - " <td>44.891380</td>\n", - " </tr>\n", - " <tr>\n", - " <th>zscore</th>\n", - " <td>-2.698133</td>\n", - " <td>-2.206748</td>\n", - " <td>1.378322</td>\n", - " <td>-0.287849</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " 3-5 5-7 7-10 5-10\n", - "min 21.219659 20.056528 16.047530 40.126583\n", - "max 34.068608 27.193659 24.195653 48.782836\n", - "mean 29.106575 24.588519 20.883679 45.472198\n", - "current 21.603603 21.392519 23.498862 44.891380\n", - "zscore -2.698133 -2.206748 1.378322 -0.287849" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "#Table of Spread Differences, and Z-score of current spread differences\n", "spreads_diff_table(spreads_diff)" diff --git a/python/notebooks/Interest Statement.ipynb b/python/notebooks/Interest Statement.ipynb index 69518dff..1db3978a 100644 --- a/python/notebooks/Interest Statement.ipynb +++ b/python/notebooks/Interest Statement.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -60,24 +60,9 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, - "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" - } - ], + "outputs": [], "source": [ "from ipywidgets import widgets, Layout\n", "import datetime\n", @@ -113,43 +98,9 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "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" - } - ], + "outputs": [], "source": [ "df_gs=df_balances[df_balances.broker == \"MS\"]\n", "df_gs.groupby(df_gs.index)['amount'].sum()[\"2019-12-01\":]" @@ -157,7 +108,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -186,51 +137,9 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "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" - } - ], + "outputs": [], "source": [ "f(df_balances, df_rates, \"GS\", \"2019-12-01\", \"2019-12-31\").sum(axis=1)" ] diff --git a/python/notebooks/Realized Vol.ipynb b/python/notebooks/Realized Vol.ipynb index 464b14d6..cfa46012 100644 --- a/python/notebooks/Realized Vol.ipynb +++ b/python/notebooks/Realized Vol.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -18,24 +18,9 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "b7808ffade83485bba8f589bedb10f68", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Dropdown(description='Index:', options=('IG', 'HY'), value='IG')" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "w = widgets.Dropdown(\n", " options=['IG', 'HY'],\n", @@ -48,7 +33,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -59,157 +44,27 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "4dfbcdf09a294dc781ad1a5b4c382c96", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "<matplotlib.axes._subplots.AxesSubplot at 0x7fe3eb2ad390>" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "onTR.plot()" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<table class=\"simpletable\">\n", - "<caption>Constant Mean - GARCH Model Results</caption>\n", - "<tr>\n", - " <th>Dep. Variable:</th> <td>spread_return</td> <th> R-squared: </th> <td> -0.001</td> \n", - "</tr>\n", - "<tr>\n", - " <th>Mean Model:</th> <td>Constant Mean</td> <th> Adj. R-squared: </th> <td> -0.001</td> \n", - "</tr>\n", - "<tr>\n", - " <th>Vol Model:</th> <td>GARCH</td> <th> Log-Likelihood: </th> <td> 94.1921</td>\n", - "</tr>\n", - "<tr>\n", - " <th>Distribution:</th> <td>Normal</td> <th> AIC: </th> <td> -180.384</td>\n", - "</tr>\n", - "<tr>\n", - " <th>Method:</th> <td>Maximum Likelihood</td> <th> BIC: </th> <td> -161.947</td>\n", - "</tr>\n", - "<tr>\n", - " <th></th> <td></td> <th> No. Observations: </th> <td>742</td> \n", - "</tr>\n", - "<tr>\n", - " <th>Date:</th> <td>Wed, Sep 11 2019</td> <th> Df Residuals: </th> <td>738</td> \n", - "</tr>\n", - "<tr>\n", - " <th>Time:</th> <td>10:44:17</td> <th> Df Model: </th> <td>4</td> \n", - "</tr>\n", - "</table>\n", - "<table class=\"simpletable\">\n", - "<caption>Mean Model</caption>\n", - "<tr>\n", - " <td></td> <th>coef</th> <th>std err</th> <th>t</th> <th>P>|t|</th> <th>95.0% Conf. Int.</th> \n", - "</tr>\n", - "<tr>\n", - " <th>mu</th> <td> -0.0178</td> <td>7.408e-03</td> <td> -2.400</td> <td>1.641e-02</td> <td>[-3.230e-02,-3.258e-03]</td>\n", - "</tr>\n", - "</table>\n", - "<table class=\"simpletable\">\n", - "<caption>Volatility Model</caption>\n", - "<tr>\n", - " <td></td> <th>coef</th> <th>std err</th> <th>t</th> <th>P>|t|</th> <th>95.0% Conf. Int.</th> \n", - "</tr>\n", - "<tr>\n", - " <th>omega</th> <td>3.6040e-03</td> <td>1.414e-03</td> <td> 2.548</td> <td>1.082e-02</td> <td>[8.322e-04,6.376e-03]</td>\n", - "</tr>\n", - "<tr>\n", - " <th>alpha[1]</th> <td> 0.1348</td> <td>4.345e-02</td> <td> 3.103</td> <td>1.914e-03</td> <td>[4.968e-02, 0.220]</td> \n", - "</tr>\n", - "<tr>\n", - " <th>beta[1]</th> <td> 0.7960</td> <td>5.441e-02</td> <td> 14.631</td> <td>1.774e-48</td> <td>[ 0.689, 0.903]</td> \n", - "</tr>\n", - "</table><br/><br/>Covariance estimator: robust" - ], - "text/plain": [ - "<class 'statsmodels.iolib.summary.Summary'>\n", - "\"\"\"\n", - " Constant Mean - GARCH Model Results \n", - "==============================================================================\n", - "Dep. Variable: spread_return R-squared: -0.001\n", - "Mean Model: Constant Mean Adj. R-squared: -0.001\n", - "Vol Model: GARCH Log-Likelihood: 94.1921\n", - "Distribution: Normal AIC: -180.384\n", - "Method: Maximum Likelihood BIC: -161.947\n", - " No. Observations: 742\n", - "Date: Wed, Sep 11 2019 Df Residuals: 738\n", - "Time: 10:44:17 Df Model: 4\n", - " Mean Model \n", - "==============================================================================\n", - " coef std err t P>|t| 95.0% Conf. Int.\n", - "------------------------------------------------------------------------------\n", - "mu -0.0178 7.408e-03 -2.400 1.641e-02 [-3.230e-02,-3.258e-03]\n", - " Volatility Model \n", - "============================================================================\n", - " coef std err t P>|t| 95.0% Conf. Int.\n", - "----------------------------------------------------------------------------\n", - "omega 3.6040e-03 1.414e-03 2.548 1.082e-02 [8.322e-04,6.376e-03]\n", - "alpha[1] 0.1348 4.345e-02 3.103 1.914e-03 [4.968e-02, 0.220]\n", - "beta[1] 0.7960 5.441e-02 14.631 1.774e-48 [ 0.689, 0.903]\n", - "============================================================================\n", - "\n", - "Covariance estimator: robust\n", - "\"\"\"" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "model.summary()" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'df' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m-----------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m<ipython-input-6-bc681e92175e>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m#compute lo and hi percentiles of atm volatility daily change (vol of vol)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mrvol\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvol_var\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m~/projects/code/python/exploration/option_trades.py\u001b[0m in \u001b[0;36mvol_var\u001b[0;34m(percentile, index, start_date)\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mwe\u001b[0m \u001b[0mshould\u001b[0m \u001b[0mgroup\u001b[0m \u001b[0mit\u001b[0m \u001b[0mby\u001b[0m \u001b[0mseries\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 112\u001b[0m \"\"\"\n\u001b[0;32m--> 113\u001b[0;31m \u001b[0mdf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0matm_vol\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstart_date\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 114\u001b[0m \u001b[0mdf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrolling_vol\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mterm\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 115\u001b[0m \u001b[0mdf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msort_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/projects/code/python/exploration/option_trades.py\u001b[0m in \u001b[0;36matm_vol\u001b[0;34m(index, date, series, moneyness)\u001b[0m\n\u001b[1;32m 87\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 88\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0matm_vol\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdate\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mseries\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmoneyness\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 89\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0matm_vol_calc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmoneyness\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 90\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 91\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrolling_vol\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcol\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'atm_vol'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mterm\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'df' is not defined" - ] - } - ], + "outputs": [], "source": [ "#compute lo and hi percentiles of atm volatility daily change (vol of vol)\n", "rvol.vol_var()" diff --git a/python/notebooks/swaption_risk.ipynb b/python/notebooks/swaption_risk.ipynb index c8e5c392..97f9a1c9 100644 --- a/python/notebooks/swaption_risk.ipynb +++ b/python/notebooks/swaption_risk.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 50, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -13,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -30,412 +30,9 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "Portfolio 2020-01-24\n", - "\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Product</th>\n", - " <th>Index</th>\n", - " <th>Notional</th>\n", - " <th>Ref</th>\n", - " <th>Strike</th>\n", - " <th>Direction</th>\n", - " <th>Type</th>\n", - " <th>Expiry</th>\n", - " <th>Vol</th>\n", - " <th>PV</th>\n", - " <th>Delta</th>\n", - " <th>Gamma</th>\n", - " <th>Theta</th>\n", - " <th>Vega</th>\n", - " <th>HY Equiv</th>\n", - " </tr>\n", - " <tr>\n", - " <th>ids</th>\n", - " <th></th>\n", - " <th></th>\n", - " <th></th>\n", - " <th></th>\n", - " <th></th>\n", - " <th></th>\n", - " <th></th>\n", - " <th></th>\n", - " <th></th>\n", - " <th></th>\n", - " <th></th>\n", - " <th></th>\n", - " <th></th>\n", - " <th></th>\n", - " <th></th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>SWPTN91</th>\n", - " <td>Swaption</td>\n", - " <td>IG33 5yr</td>\n", - " <td>200,000,000.00</td>\n", - " <td>46.59</td>\n", - " <td>45.0</td>\n", - " <td>Long</td>\n", - " <td>receiver</td>\n", - " <td>2020-02-19</td>\n", - " <td>40.83%</td>\n", - " <td>96,319.39</td>\n", - " <td>-26.75%</td>\n", - " <td>60.60%</td>\n", - " <td>-3,188.64</td>\n", - " <td>4,080.47</td>\n", - " <td>-15,787,111.54</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SWPTN92</th>\n", - " <td>Swaption</td>\n", - " <td>IG33 5yr</td>\n", - " <td>200,000,000.00</td>\n", - " <td>46.59</td>\n", - " <td>65.0</td>\n", - " <td>Short</td>\n", - " <td>payer</td>\n", - " <td>2020-02-19</td>\n", - " <td>74.83%</td>\n", - " <td>-23,794.79</td>\n", - " <td>-7.31%</td>\n", - " <td>-15.04%</td>\n", - " <td>2,128.60</td>\n", - " <td>-1,542.26</td>\n", - " <td>-4,314,115.94</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SWPTN97</th>\n", - " <td>Swaption</td>\n", - " <td>IG33 5yr</td>\n", - " <td>200,000,000.00</td>\n", - " <td>46.59</td>\n", - " <td>42.5</td>\n", - " <td>Long</td>\n", - " <td>receiver</td>\n", - " <td>2020-03-18</td>\n", - " <td>37.97%</td>\n", - " <td>63,066.05</td>\n", - " <td>-15.51%</td>\n", - " <td>36.70%</td>\n", - " <td>-1,502.93</td>\n", - " <td>4,332.40</td>\n", - " <td>-9,151,352.04</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SWPTN107</th>\n", - " <td>Swaption</td>\n", - " <td>IG33 5yr</td>\n", - " <td>200,000,000.00</td>\n", - " <td>46.59</td>\n", - " <td>42.5</td>\n", - " <td>Long</td>\n", - " <td>receiver</td>\n", - " <td>2020-03-18</td>\n", - " <td>37.97%</td>\n", - " <td>63,066.05</td>\n", - " <td>-15.51%</td>\n", - " <td>36.70%</td>\n", - " <td>-1,502.93</td>\n", - " <td>4,332.40</td>\n", - " <td>-9,151,352.04</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SWPTN108</th>\n", - " <td>Swaption</td>\n", - " <td>IG33 5yr</td>\n", - " <td>200,000,000.00</td>\n", - " <td>46.59</td>\n", - " <td>55.0</td>\n", - " <td>Short</td>\n", - " <td>payer</td>\n", - " <td>2020-03-18</td>\n", - " <td>54.38%</td>\n", - " <td>-152,837.83</td>\n", - " <td>-30.95%</td>\n", - " <td>-34.76%</td>\n", - " <td>2,916.80</td>\n", - " <td>-5,825.18</td>\n", - " <td>-18,264,316.98</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SWPTN98</th>\n", - " <td>Swaption</td>\n", - " <td>IG33 5yr</td>\n", - " <td>200,000,000.00</td>\n", - " <td>46.59</td>\n", - " <td>57.5</td>\n", - " <td>Short</td>\n", - " <td>payer</td>\n", - " <td>2020-03-18</td>\n", - " <td>57.60%</td>\n", - " <td>-124,368.10</td>\n", - " <td>-25.43%</td>\n", - " <td>-30.04%</td>\n", - " <td>2,793.20</td>\n", - " <td>-5,282.54</td>\n", - " <td>-15,009,920.16</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SWPTN93</th>\n", - " <td>Swaption</td>\n", - " <td>IG33 5yr</td>\n", - " <td>300,000,000.00</td>\n", - " <td>46.59</td>\n", - " <td>62.5</td>\n", - " <td>Short</td>\n", - " <td>payer</td>\n", - " <td>2020-03-18</td>\n", - " <td>63.32%</td>\n", - " <td>-128,800.98</td>\n", - " <td>-17.73%</td>\n", - " <td>-22.36%</td>\n", - " <td>3,702.11</td>\n", - " <td>-6,405.66</td>\n", - " <td>-15,692,360.25</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SWPTN103</th>\n", - " <td>Swaption</td>\n", - " <td>IG33 5yr</td>\n", - " <td>200,000,000.00</td>\n", - " <td>46.59</td>\n", - " <td>42.5</td>\n", - " <td>Long</td>\n", - " <td>receiver</td>\n", - " <td>2020-04-15</td>\n", - " <td>39.55%</td>\n", - " <td>95,237.93</td>\n", - " <td>-17.86%</td>\n", - " <td>30.89%</td>\n", - " <td>-1,363.28</td>\n", - " <td>5,704.92</td>\n", - " <td>-10,542,143.17</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SWPTN101</th>\n", - " <td>Swaption</td>\n", - " <td>IG33 5yr</td>\n", - " <td>100,000,000.00</td>\n", - " <td>46.58</td>\n", - " <td>42.5</td>\n", - " <td>Long</td>\n", - " <td>receiver</td>\n", - " <td>2020-04-15</td>\n", - " <td>39.56%</td>\n", - " <td>47,737.99</td>\n", - " <td>-17.90%</td>\n", - " <td>30.92%</td>\n", - " <td>-682.45</td>\n", - " <td>2,855.09</td>\n", - " <td>-5,281,382.51</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SWPTN99</th>\n", - " <td>Swaption</td>\n", - " <td>IG33 5yr</td>\n", - " <td>200,000,000.00</td>\n", - " <td>46.58</td>\n", - " <td>42.5</td>\n", - " <td>Long</td>\n", - " <td>receiver</td>\n", - " <td>2020-04-15</td>\n", - " <td>39.56%</td>\n", - " <td>95,475.99</td>\n", - " <td>-17.90%</td>\n", - " <td>30.92%</td>\n", - " <td>-1,364.90</td>\n", - " <td>5,710.18</td>\n", - " <td>-10,562,765.02</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SWPTN102</th>\n", - " <td>Swaption</td>\n", - " <td>IG33 5yr</td>\n", - " <td>100,000,000.00</td>\n", - " <td>46.58</td>\n", - " <td>57.5</td>\n", - " <td>Short</td>\n", - " <td>payer</td>\n", - " <td>2020-04-15</td>\n", - " <td>55.32%</td>\n", - " <td>-100,969.24</td>\n", - " <td>-32.34%</td>\n", - " <td>-28.64%</td>\n", - " <td>1,236.12</td>\n", - " <td>-3,680.38</td>\n", - " <td>-9,542,511.78</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SWPTN104</th>\n", - " <td>Swaption</td>\n", - " <td>IG33 5yr</td>\n", - " <td>200,000,000.00</td>\n", - " <td>46.58</td>\n", - " <td>57.5</td>\n", - " <td>Short</td>\n", - " <td>payer</td>\n", - " <td>2020-04-15</td>\n", - " <td>55.32%</td>\n", - " <td>-201,938.48</td>\n", - " <td>-32.34%</td>\n", - " <td>-28.64%</td>\n", - " <td>2,472.24</td>\n", - " <td>-7,360.76</td>\n", - " <td>-19,085,023.56</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SWPTN100</th>\n", - " <td>Swaption</td>\n", - " <td>IG33 5yr</td>\n", - " <td>200,000,000.00</td>\n", - " <td>46.58</td>\n", - " <td>60.0</td>\n", - " <td>Short</td>\n", - " <td>payer</td>\n", - " <td>2020-04-15</td>\n", - " <td>57.63%</td>\n", - " <td>-171,842.33</td>\n", - " <td>-27.86%</td>\n", - " <td>-25.74%</td>\n", - " <td>2,399.51</td>\n", - " <td>-6,871.65</td>\n", - " <td>-16,441,512.64</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SWPTN110</th>\n", - " <td>Swaption</td>\n", - " <td>HY33 5yr</td>\n", - " <td>50,000,000.00</td>\n", - " <td>108.92</td>\n", - " <td>105.0</td>\n", - " <td>Short</td>\n", - " <td>payer</td>\n", - " <td>2020-04-15</td>\n", - " <td>48.17%</td>\n", - " <td>-165,874.84</td>\n", - " <td>-21.56%</td>\n", - " <td>-4.50%</td>\n", - " <td>2,606.42</td>\n", - " <td>-8,963.31</td>\n", - " <td>-10,777,542.75</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SWPTN109</th>\n", - " <td>Swaption</td>\n", - " <td>HY33 5yr</td>\n", - " <td>50,000,000.00</td>\n", - " <td>108.92</td>\n", - " <td>109.5</td>\n", - " <td>Long</td>\n", - " <td>receiver</td>\n", - " <td>2020-04-15</td>\n", - " <td>28.93%</td>\n", - " <td>63,201.34</td>\n", - " <td>-13.82%</td>\n", - " <td>5.98%</td>\n", - " <td>-1,144.08</td>\n", - " <td>6,622.99</td>\n", - " <td>-6,908,992.84</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SWPTN105</th>\n", - " <td>Swaption</td>\n", - " <td>IG33 5yr</td>\n", - " <td>200,000,000.00</td>\n", - " <td>46.58</td>\n", - " <td>42.5</td>\n", - " <td>Long</td>\n", - " <td>receiver</td>\n", - " <td>2020-05-20</td>\n", - " <td>41.02%</td>\n", - " <td>127,547.56</td>\n", - " <td>-19.02%</td>\n", - " <td>25.85%</td>\n", - " <td>-1,214.84</td>\n", - " <td>6,979.90</td>\n", - " <td>-11,222,185.16</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SWPTN106</th>\n", - " <td>Swaption</td>\n", - " <td>IG33 5yr</td>\n", - " <td>200,000,000.00</td>\n", - " <td>46.58</td>\n", - " <td>60.0</td>\n", - " <td>Short</td>\n", - " <td>payer</td>\n", - " <td>2020-05-20</td>\n", - " <td>56.10%</td>\n", - " <td>-264,316.54</td>\n", - " <td>-34.57%</td>\n", - " <td>-24.46%</td>\n", - " <td>2,167.00</td>\n", - " <td>-9,068.51</td>\n", - " <td>-20,398,849.70</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>" - ], - "text/plain": [ - "Portfolio 2020-01-24\n", - "\n", - " Product Index Notional Ref Strike Direction Type Expiry Vol \\\n", - "ids \n", - "SWPTN91 Swaption IG33 5yr 200,000,000.00 46.59 45.0 Long receiver 2020-02-19 40.83% \n", - "SWPTN92 Swaption IG33 5yr 200,000,000.00 46.59 65.0 Short payer 2020-02-19 74.83% \n", - "SWPTN97 Swaption IG33 5yr 200,000,000.00 46.59 42.5 Long receiver 2020-03-18 37.97% \n", - "SWPTN107 Swaption IG33 5yr 200,000,000.00 46.59 42.5 Long receiver 2020-03-18 37.97% \n", - "SWPTN108 Swaption IG33 5yr 200,000,000.00 46.59 55.0 Short payer 2020-03-18 54.38% \n", - "SWPTN98 Swaption IG33 5yr 200,000,000.00 46.59 57.5 Short payer 2020-03-18 57.60% \n", - "SWPTN93 Swaption IG33 5yr 300,000,000.00 46.59 62.5 Short payer 2020-03-18 63.32% \n", - "SWPTN103 Swaption IG33 5yr 200,000,000.00 46.59 42.5 Long receiver 2020-04-15 39.55% \n", - "SWPTN101 Swaption IG33 5yr 100,000,000.00 46.58 42.5 Long receiver 2020-04-15 39.56% \n", - "SWPTN99 Swaption IG33 5yr 200,000,000.00 46.58 42.5 Long receiver 2020-04-15 39.56% \n", - "SWPTN102 Swaption IG33 5yr 100,000,000.00 46.58 57.5 Short payer 2020-04-15 55.32% \n", - "SWPTN104 Swaption IG33 5yr 200,000,000.00 46.58 57.5 Short payer 2020-04-15 55.32% \n", - "SWPTN100 Swaption IG33 5yr 200,000,000.00 46.58 60.0 Short payer 2020-04-15 57.63% \n", - "SWPTN110 Swaption HY33 5yr 50,000,000.00 108.92 105.0 Short payer 2020-04-15 48.17% \n", - "SWPTN109 Swaption HY33 5yr 50,000,000.00 108.92 109.5 Long receiver 2020-04-15 28.93% \n", - "SWPTN105 Swaption IG33 5yr 200,000,000.00 46.58 42.5 Long receiver 2020-05-20 41.02% \n", - "SWPTN106 Swaption IG33 5yr 200,000,000.00 46.58 60.0 Short payer 2020-05-20 56.10% \n", - "\n", - " PV Delta Gamma Theta Vega HY Equiv \n", - "ids \n", - "SWPTN91 96,319.39 -26.75% 60.60% -3,188.64 4,080.47 -15,787,111.54 \n", - "SWPTN92 -23,794.79 -7.31% -15.04% 2,128.60 -1,542.26 -4,314,115.94 \n", - "SWPTN97 63,066.05 -15.51% 36.70% -1,502.93 4,332.40 -9,151,352.04 \n", - "SWPTN107 63,066.05 -15.51% 36.70% -1,502.93 4,332.40 -9,151,352.04 \n", - "SWPTN108 -152,837.83 -30.95% -34.76% 2,916.80 -5,825.18 -18,264,316.98 \n", - "SWPTN98 -124,368.10 -25.43% -30.04% 2,793.20 -5,282.54 -15,009,920.16 \n", - "SWPTN93 -128,800.98 -17.73% -22.36% 3,702.11 -6,405.66 -15,692,360.25 \n", - "SWPTN103 95,237.93 -17.86% 30.89% -1,363.28 5,704.92 -10,542,143.17 \n", - "SWPTN101 47,737.99 -17.90% 30.92% -682.45 2,855.09 -5,281,382.51 \n", - "SWPTN99 95,475.99 -17.90% 30.92% -1,364.90 5,710.18 -10,562,765.02 \n", - "SWPTN102 -100,969.24 -32.34% -28.64% 1,236.12 -3,680.38 -9,542,511.78 \n", - "SWPTN104 -201,938.48 -32.34% -28.64% 2,472.24 -7,360.76 -19,085,023.56 \n", - "SWPTN100 -171,842.33 -27.86% -25.74% 2,399.51 -6,871.65 -16,441,512.64 \n", - "SWPTN110 -165,874.84 -21.56% -4.50% 2,606.42 -8,963.31 -10,777,542.75 \n", - "SWPTN109 63,201.34 -13.82% 5.98% -1,144.08 6,622.99 -6,908,992.84 \n", - "SWPTN105 127,547.56 -19.02% 25.85% -1,214.84 6,979.90 -11,222,185.16 \n", - "SWPTN106 -264,316.54 -34.57% -24.46% 2,167.00 -9,068.51 -20,398,849.70 " - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "portf = get_swaption_portfolio(value_date, conn, source_list=[\"GS\"])\n", "portf" @@ -443,7 +40,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -456,7 +53,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -467,74 +64,9 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>current hedge</th>\n", - " <th>current_delta</th>\n", - " <th>gamma</th>\n", - " <th>net_delta</th>\n", - " </tr>\n", - " <tr>\n", - " <th>Index</th>\n", - " <th></th>\n", - " <th></th>\n", - " <th></th>\n", - " <th></th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>HY33 5yr</th>\n", - " <td>18,500,000.00</td>\n", - " <td>-17,686,535.58</td>\n", - " <td>741,481.67</td>\n", - " <td>813,464.42</td>\n", - " </tr>\n", - " <tr>\n", - " <th>IG33 5yr</th>\n", - " <td>646,400,000.00</td>\n", - " <td>-645,431,240.73</td>\n", - " <td>61,135,754.02</td>\n", - " <td>968,759.27</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " current hedge current_delta gamma net_delta\n", - "Index \n", - "HY33 5yr 18,500,000.00 -17,686,535.58 741,481.67 813,464.42\n", - "IG33 5yr 646,400,000.00 -645,431,240.73 61,135,754.02 968,759.27" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "def f(s):\n", " l = s.split(\" \")\n", @@ -551,20 +83,9 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "10457.96370760693" - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "portf.theta" ] |
