aboutsummaryrefslogtreecommitdiffstats
path: root/python/notebooks/swaption_risk.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'python/notebooks/swaption_risk.ipynb')
-rw-r--r--python/notebooks/swaption_risk.ipynb499
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"
]