diff options
| -rw-r--r-- | python/notebooks/Realized Vol.ipynb | 175 | ||||
| -rw-r--r-- | python/notebooks/swaption_risk.ipynb | 392 |
2 files changed, 380 insertions, 187 deletions
diff --git a/python/notebooks/Realized Vol.ipynb b/python/notebooks/Realized Vol.ipynb index 39bfac6e..464b14d6 100644 --- a/python/notebooks/Realized Vol.ipynb +++ b/python/notebooks/Realized Vol.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -10,7 +10,7 @@ "import datetime\n", "import pandas as pd\n", "\n", - "from exploration.curve_trades import on_the_run\n", + "from analytics import on_the_run\n", "from scipy.interpolate import interp1d\n", "from matplotlib import pyplot as plt\n", "from ipywidgets import widgets" @@ -18,9 +18,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "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" + } + ], "source": [ "w = widgets.Dropdown(\n", " options=['IG', 'HY'],\n", @@ -33,38 +48,168 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "index = w.value\n", "start_date=datetime.date(2014, 6, 11)\n", - "onTR, model = rvol.realized_vol(index, on_the_run('IG'), \"5yr\", years=3)" + "onTR, model = rvol.realized_vol(index, tenor=\"5yr\", years=3)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "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" + } + ], "source": [ - "#onTR.plot()" + "onTR.plot()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "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" + } + ], "source": [ "model.summary()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "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" + ] + } + ], "source": [ "#compute lo and hi percentiles of atm volatility daily change (vol of vol)\n", "rvol.vol_var()" @@ -137,9 +282,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.1" + "version": "3.7.4" } }, "nbformat": 4, - "nbformat_minor": 1 + "nbformat_minor": 4 } diff --git a/python/notebooks/swaption_risk.ipynb b/python/notebooks/swaption_risk.ipynb index ce860db3..c8e5c392 100644 --- a/python/notebooks/swaption_risk.ipynb +++ b/python/notebooks/swaption_risk.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 50, "metadata": {}, "outputs": [], "source": [ @@ -13,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 51, "metadata": {}, "outputs": [], "source": [ @@ -30,13 +30,13 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "Portfolio 2020-01-22\n", + "Portfolio 2020-01-24\n", "\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", @@ -83,315 +83,355 @@ " <td>Swaption</td>\n", " <td>IG33 5yr</td>\n", " <td>200,000,000.00</td>\n", - " <td>45.13</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.74%</td>\n", - " <td>150,061.67</td>\n", - " <td>-37.06%</td>\n", - " <td>66.00%</td>\n", - " <td>-3,327.79</td>\n", - " <td>4,576.20</td>\n", - " <td>-21,825,100.50</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>45.13</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>75.62%</td>\n", - " <td>-20,633.56</td>\n", - " <td>-6.40%</td>\n", - " <td>-13.42%</td>\n", - " <td>1,809.79</td>\n", - " <td>-1,399.72</td>\n", - " <td>-3,765,995.13</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>45.13</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>38.45%</td>\n", - " <td>96,216.26</td>\n", - " <td>-21.68%</td>\n", - " <td>43.36%</td>\n", - " <td>-1,761.48</td>\n", - " <td>5,166.44</td>\n", - " <td>-12,768,492.88</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>45.13</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>38.45%</td>\n", - " <td>96,216.26</td>\n", - " <td>-21.68%</td>\n", - " <td>43.36%</td>\n", - " <td>-1,761.48</td>\n", - " <td>5,166.44</td>\n", - " <td>-12,768,492.88</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>45.13</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.75%</td>\n", - " <td>-123,985.48</td>\n", - " <td>-26.66%</td>\n", - " <td>-32.67%</td>\n", - " <td>2,590.27</td>\n", - " <td>-5,340.77</td>\n", - " <td>-15,699,000.27</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>45.13</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.96%</td>\n", - " <td>-101,557.29</td>\n", - " <td>-21.92%</td>\n", - " <td>-27.94%</td>\n", - " <td>2,453.43</td>\n", - " <td>-4,793.54</td>\n", - " <td>-12,910,454.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>45.13</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.80%</td>\n", - " <td>-107,301.85</td>\n", - " <td>-15.41%</td>\n", - " <td>-20.60%</td>\n", - " <td>3,231.38</td>\n", - " <td>-5,769.27</td>\n", - " <td>-13,613,875.38</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>45.13</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.95%</td>\n", - " <td>130,102.18</td>\n", - " <td>-22.89%</td>\n", - " <td>35.40%</td>\n", - " <td>-1,518.80</td>\n", - " <td>6,419.89</td>\n", - " <td>-13,477,124.52</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>45.13</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.95%</td>\n", - " <td>65,051.09</td>\n", - " <td>-22.89%</td>\n", - " <td>35.40%</td>\n", - " <td>-759.40</td>\n", - " <td>3,209.94</td>\n", - " <td>-6,738,562.26</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>45.12</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.96%</td>\n", - " <td>130,399.30</td>\n", - " <td>-22.93%</td>\n", - " <td>35.43%</td>\n", - " <td>-1,520.20</td>\n", - " <td>6,424.14</td>\n", - " <td>-13,500,437.56</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>45.12</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.99%</td>\n", - " <td>-86,043.53</td>\n", - " <td>-28.92%</td>\n", - " <td>-27.46%</td>\n", - " <td>1,137.31</td>\n", - " <td>-3,432.55</td>\n", - " <td>-8,516,333.11</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>45.12</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.99%</td>\n", - " <td>-172,087.07</td>\n", - " <td>-28.92%</td>\n", - " <td>-27.46%</td>\n", - " <td>2,274.63</td>\n", - " <td>-6,865.09</td>\n", - " <td>-17,032,666.22</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>45.12</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>58.42%</td>\n", - " <td>-147,765.75</td>\n", - " <td>-24.99%</td>\n", - " <td>-24.50%</td>\n", - " <td>2,198.93</td>\n", - " <td>-6,373.46</td>\n", - " <td>-14,714,847.97</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>45.12</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.20%</td>\n", - " <td>161,429.07</td>\n", - " <td>-23.06%</td>\n", - " <td>29.16%</td>\n", - " <td>-1,309.02</td>\n", - " <td>7,595.96</td>\n", - " <td>-13,577,001.50</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>45.12</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.55%</td>\n", - " <td>-229,470.13</td>\n", - " <td>-31.54%</td>\n", - " <td>-23.91%</td>\n", - " <td>2,020.49</td>\n", - " <td>-8,542.41</td>\n", - " <td>-18,570,543.35</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-22\n", + "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 45.13 45.0 Long receiver 2020-02-19 40.74% \n", - "SWPTN92 Swaption IG33 5yr 200,000,000.00 45.13 65.0 Short payer 2020-02-19 75.62% \n", - "SWPTN97 Swaption IG33 5yr 200,000,000.00 45.13 42.5 Long receiver 2020-03-18 38.45% \n", - "SWPTN107 Swaption IG33 5yr 200,000,000.00 45.13 42.5 Long receiver 2020-03-18 38.45% \n", - "SWPTN108 Swaption IG33 5yr 200,000,000.00 45.13 55.0 Short payer 2020-03-18 54.75% \n", - "SWPTN98 Swaption IG33 5yr 200,000,000.00 45.13 57.5 Short payer 2020-03-18 57.96% \n", - "SWPTN93 Swaption IG33 5yr 300,000,000.00 45.13 62.5 Short payer 2020-03-18 63.80% \n", - "SWPTN103 Swaption IG33 5yr 200,000,000.00 45.13 42.5 Long receiver 2020-04-15 39.95% \n", - "SWPTN101 Swaption IG33 5yr 100,000,000.00 45.13 42.5 Long receiver 2020-04-15 39.95% \n", - "SWPTN99 Swaption IG33 5yr 200,000,000.00 45.12 42.5 Long receiver 2020-04-15 39.96% \n", - "SWPTN102 Swaption IG33 5yr 100,000,000.00 45.12 57.5 Short payer 2020-04-15 55.99% \n", - "SWPTN104 Swaption IG33 5yr 200,000,000.00 45.12 57.5 Short payer 2020-04-15 55.99% \n", - "SWPTN100 Swaption IG33 5yr 200,000,000.00 45.12 60.0 Short payer 2020-04-15 58.42% \n", - "SWPTN105 Swaption IG33 5yr 200,000,000.00 45.12 42.5 Long receiver 2020-05-20 41.20% \n", - "SWPTN106 Swaption IG33 5yr 200,000,000.00 45.12 60.0 Short payer 2020-05-20 56.55% \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 150,061.67 -37.06% 66.00% -3,327.79 4,576.20 -21,825,100.50 \n", - "SWPTN92 -20,633.56 -6.40% -13.42% 1,809.79 -1,399.72 -3,765,995.13 \n", - "SWPTN97 96,216.26 -21.68% 43.36% -1,761.48 5,166.44 -12,768,492.88 \n", - "SWPTN107 96,216.26 -21.68% 43.36% -1,761.48 5,166.44 -12,768,492.88 \n", - "SWPTN108 -123,985.48 -26.66% -32.67% 2,590.27 -5,340.77 -15,699,000.27 \n", - "SWPTN98 -101,557.29 -21.92% -27.94% 2,453.43 -4,793.54 -12,910,454.18 \n", - "SWPTN93 -107,301.85 -15.41% -20.60% 3,231.38 -5,769.27 -13,613,875.38 \n", - "SWPTN103 130,102.18 -22.89% 35.40% -1,518.80 6,419.89 -13,477,124.52 \n", - "SWPTN101 65,051.09 -22.89% 35.40% -759.40 3,209.94 -6,738,562.26 \n", - "SWPTN99 130,399.30 -22.93% 35.43% -1,520.20 6,424.14 -13,500,437.56 \n", - "SWPTN102 -86,043.53 -28.92% -27.46% 1,137.31 -3,432.55 -8,516,333.11 \n", - "SWPTN104 -172,087.07 -28.92% -27.46% 2,274.63 -6,865.09 -17,032,666.22 \n", - "SWPTN100 -147,765.75 -24.99% -24.50% 2,198.93 -6,373.46 -14,714,847.97 \n", - "SWPTN105 161,429.07 -23.06% 29.16% -1,309.02 7,595.96 -13,577,001.50 \n", - "SWPTN106 -229,470.13 -31.54% -23.91% 2,020.49 -8,542.41 -18,570,543.35 " + "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": 3, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" } @@ -403,7 +443,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 53, "metadata": {}, "outputs": [], "source": [ @@ -416,7 +456,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 54, "metadata": {}, "outputs": [], "source": [ @@ -427,7 +467,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 55, "metadata": {}, "outputs": [ { @@ -466,23 +506,31 @@ " </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>681,400,000.00</td>\n", - " <td>-677,507,134.07</td>\n", - " <td>151,731,367.46</td>\n", - " <td>3,892,865.93</td>\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", - "IG33 5yr 681,400,000.00 -677,507,134.07 151,731,367.46 3,892,865.93" + " 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": 6, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -503,16 +551,16 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "5758.050875686662" + "10457.96370760693" ] }, - "execution_count": 7, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } |
