diff options
Diffstat (limited to 'python/notebooks/swaption_risk.ipynb')
| -rw-r--r-- | python/notebooks/swaption_risk.ipynb | 499 |
1 files changed, 10 insertions, 489 deletions
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" ] |
