{ "cells": [ { "cell_type": "markdown", "id": "f94054c6-5dca-4ced-8cf6-47b5f3e616cd", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "\n", "\n", "# Rates Volatility Modeling: An Overview\n" ] }, { "cell_type": "code", "execution_count": 1, "id": "19d8306a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import IPython; IPython.display.HTML('''
''')" ] }, { "cell_type": "markdown", "id": "2dfd7187", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Agenda\n", "\n", "### Part I: Vanilla Models\n", "\n", "* Option Pricing Basics, Binomial Tree\n", "* Vanilla Option Pricing Models\n", " * SABR\n", " * Displaced Lognormal\n", "* Change of Numeraire\n", "* Applications\n", " * Swaption Pricing In SABR\n", " * CMS Spread Option Pricing With Copula\n", "\n", "### Part II: Term Structure Models\n", "\n", "* HJM Framework, Forward Rate Vol\n", "* Hull-White Model\n", "* Cheyette" ] }, { "cell_type": "markdown", "id": "bb993a04", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Option Pricing Basics\n", "\n", "* The Fundamental Principle: In a no-arbitrage market, the price of any derivative with payoff $X$ is the **expectation of its discounted payoff under the risk-neutral measure** $P^M$\n", "* The Universal Formula: \n", " * $M_t$: Time-$t$ value of the money market account with $M_0 = 1$ (the numeraire)\n", " * $P^M$: The risk-neutral probability measure associated with $M$\n", "$$\n", "V_0 = M_0 E^M \\left[ M_T^{-1} X_T \\right]\n", "$$\n" ] }, { "cell_type": "markdown", "id": "a0a1ba34", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Binomial Option Pricing Model (BOPM) \n", "\n", "* We want to price an option on a stock trading at $S$ currently\n", "* Assumptions:\n", " * Only two discrete times (one time step): Today at $t=0$ and maturity at $t=1$\n", " * At $t=1$, the stock price can either go up to $S_u$ or go down to $S_d$ (two states), with corresponding option prices $C_u$ and $C_d$, respectively\n", " * A money market account **(MMA) with initial value 1 will become** $M$ **at** $t=1$" ] }, { "cell_type": "code", "execution_count": 2, "id": "d5d2aad9", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA84AAAEwCAYAAABmEigYAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWERJREFUeJzt3Qd0VOXWxvGdRpHeA4Tei7RQgkGlitixUy5iIYoNVBQLHwiKCio2LgpYsAEWxHIpglIUBCRBQAGRKiYQpCM9kPOt/cYzTNqkzWTa/7fWXCaTmTknJ97sed4aYlmWJQAAAAAAIEuhWT8MAAAAAAAIzgAAAAAA5IAeZwAAAAAAXCA4AwAAAADgAsEZAAAAAAAXCM4AAAAAALhAcAYAAAAAwAWCMwAAAAAALhCcAQAAAABwgeAMeFnt2rUlJCTE3J5++mlvnw4AAH5L66hdU7W+BruBAwc6rkfnzp29fTqAXyM4IyDMnDlTevbsKVWqVJGIiAgpU6aM1KlTxxSJIUOGyLfffpvpNXYh0du0adMkkOjP27t3b6levboUKVJESpUqJbVq1ZKLLrpIBg8eLJ988kmhBXi9ts7XGgAQGNatWyf33nuvXHjhhVK2bFlTb7QOd+3aVV566SU5cuSIW4/n76E4KSlJwsLCHD+DXrvsLF26NF3tfO211wr1XAFkFp7FY4BfGTBggHz44YfpHjt69Ki57dy50xSfP//80wTrYDBy5Eh55pln0j2WkpIix44dk127dsmKFSvM7ZZbbvHaOQIA/NfZs2flkUcekddffz3T9/7++29zW7x4sYwbN04+/vhjueyyywrt3PRYJUuWNPe1Ed2XaGN2jx49HI352oj96quvmgaHjJw/12iHQL9+/Qr1XAFkRnCGX5s/f3664hIdHW0CshbNffv2yZo1a0xIDBYbN26UZ5991vF1o0aN5Nprr5Vy5crJwYMHTe/AsmXLvHqOAAD/9sADD8hbb73l+LpatWpy8803S8WKFeXXX3+Vzz//XM6dOyf79++Xq6++WhYtWiSxsbGFcm46skpvvjx02g7OWpfnzJljRog5O3XqlLmGtiuvvNJcWwBeZgF+7KGHHrL0P2O91a9f3zp79mym5xw5csRatmyZ4+tLL73U8ZqsbrVq1Ur3+sTERGvYsGFW8+bNrRIlSlhFixY1z+nXr5+1atWqbM9t4cKF1s0332zVrFnTvKZ06dJWs2bNrMGDB1v79u1zPE/fyz72qFGjHI9v2rTJqlKliuN70dHR1oEDB1xej9dee83xfD3XY8eOZXrOiRMnrEWLFjm+vu2221xeD+c/E1988YXVv39/68ILL7QqV65sRUREmOM0adLEuu+++6wdO3Y4nqv3c3pf559X/fDDD9Ytt9xi1ahRwypSpIhVqlQpKyYmxpo4caJ15syZTD/L+vXrze9Br6E+v1ixYua1Xbp0sR5//HHzuwMAuM/y5cvT/R1v06aNqbPOvv/+eys0NNTxHK19586dy7IOaw3Senf99ddb5cqVs4oXL27FxsaaGmpbvHhxjvXkvffeM8/VupJdPVcHDx60Ro8ebWqq1mWtY9WqVbN69+5tLViwINPz9X2dj3Pq1Cnr2WeftRo0aGDqTvXq1a1HHnnEPJ4bJ0+etMqWLet4Pz1uRjNnzkx3zK+++spxHe644w6rdevWVmRkpDm+Xq969epZAwcONDUxI+car9c9uxqt7+0s4+8oo23btlkPPPCA1bhxY+uCCy4w9Vc/CwwfPjzdZxybPqbXqWnTpub5et31M067du3M54cVK1bk6voB3kRwhl/TP9r2H/aKFStaW7duzfE1eQnOS5cuNYU8u+fqB4OXX3453funpqZad911l8tj/PLLLy6D85YtW0whtx/v2LGjdfjw4Rx/Nj0X+zValFavXp3ja/ISnG+44QaXz9MPIXbhzmtwfvLJJ10+9+KLL07XELBhwwZTfF29Zt68eTn+/ACA3MtYM7777rssn9enT590z1uyZEmWddgOsFnV108//dStwXnjxo1WVFSUy/cZMmSIy+DcqVOnLF/3n//8J9fX8J577nG8TsNvxkbxK6+80vF9baROSUkxj2vwdHXu+l7ODQ6eCs5ffvmly/qrjQl6rZ0bCxo1auTy3DVwA76Oodrwa23atHHc1yFhDRs2lFatWkm7du3MsO0uXbpI/fr1071GF8e66qqr5NFHH3U8pvN927Ztm25O1OHDh+X666+XQ4cOma+LFy8ut99+u5QuXVpmzJhh5k2npqbKsGHDzLEuvfRS8zxdEOXtt992vHeFChXMEDZdMOWPP/6Qr776yuXPpPOydWGV3bt3m68vueQSM5TLnrOV2+uh85r1OjRt2lTat2/vOEddxMXZrbfeKs2bN5fn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xYoVM9eiXr16cskll8hTTz1lQmNqaqr4s1q1apnPEXFxcdk+Z8+ePdKpUyfzvPDwcHMNn376afO9YcOG+fw1CLG02wEAEFD27t1repo1IN91110ydepUl88/efKk+WADAEB+aYOsBiBtlHVWtmxZ+eeff9KF5aZNm8rnn38uTZo08bsLruFfp0C9+OKL5ud1Nepr8ODBpgHbVrp0aXMdjh8/7nisTJkycujQIb9twN6/f79pRFBvvfWW3H333Zme89NPP8mNN95owrM+95NPPjGN+nav87fffmsa/AcMGODyWBquDx48mO6xmTNnygMPPCD79u1L93hYWJiUK1dO3IUeZwAIQFqsNTSr0aNH5/h8QjMAoCA2btwobdu2NaFZe1W15/Hnn3+WEydOmFB45swZWbt2rQwfPlwuuOAC83z9nr9JSkqSjz/+WIoUKSJ33HFHts8LplFfa9ascdyPjo7O9P0333zTrKOioVn/G0lISHCEZnXPPfeYf8ePH5/jsXbt2mWCt/NNQ7PK+Hjr1q3FnVgcDAAC0O+//+64X758ea+eCwAgsG3dulUuvfRS0/MYFRUls2fPNgHJmS4+2bJlS3PT4c19+vSRCy+8UPyNjuDSHuOrr7462/qqo770Z9SBvdmN+qpatarceuut5qajvvxZQkKC+VcXHnX+nZ46dUruvfdeee+998zXt99+u0yaNMk0rDi74oorzLXcsGGDLF++XGJjY7M9VmRkpCxcuDDdYwsWLDC9/xkfd3enAMEZAAKQDvuyPfvss2aumRY0AADcKSUlRfr27WtCs87dXbJkiZm/64qG66VLl/rdTg4ahN955x1zX3/m7ATbqK81//Y4N2vWzCxAavcM33DDDRIfH28+f7z66qsmRGdFe+/1udrAMGXKFJfBWUN39+7dM805Vxkfdzf/+q8VAJArvXv3NgtvqLFjx5oFSbSl98MPP5S//vqLqwgAcIuJEyfK6tWrHUNycwrNNn8Lzeq3335zhDTdyjE7wTbqK+HfHmd7mLYudqb3NTRrz/rixYuzDc02XShN6VxnX+V//8UCAHJkzzOrUaOG+VoXzJg2bZpZdKNmzZrSokULeeWVV/x+eBgAwHtOnz4tL730krkfExMj/fr1C+hfxw8//GD+1dqqQ4ZzO+pLe+UD1aFDh2THjh3mfps2beTll1+Wyy67zIxA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b948Wb9+vRw4cEAiIiKkcuXKUr16dbn44oulW7du0rlzZwkNDS3c3xrgJgRlAO6mNXPWrFmycOFCSUpKkr///lvCw8OlWrVqEhMTIzfddJP06tVLwnwgoSQnJ8v7778vc+fOld9++02OHj0q5cqVM+f50EMPSRfdgwgoJARlwLcRnLPw2WefyeDBg01YtpUuXVrOnTsnx48fdzxWpkwZOXTokISEhBTObwsoIIIyAE/ZvXu3DBs2TGbMmJHu8bJly8o///xjaqitadOm8vnnn0uTJk289gtZt26ddOzYUU6ePGm+LlasmKnn9td6/6WXXpKHH37Ya+eIwEZQBvwLQ7Uz0Jbn22+/XSzLMi3Njz76qMTGxprgrPbs2SNLly41HwxOnTpFaIZPIygDKAwbN26U7t27mxqpAXTAgAFy1113SfPmzaV48eKSmpoqv/76q6mdb7zxhnn+iRMnvPrL0YZvHTGmPcta9y+88EJT+xMSEszX2gP92GOPyTXXXCP169f36rkiMBCUAf9Gj7OTvXv3muJ47NgxU/CnTp3q8uJpq7R+IAB8BUEZQGHbunWr6bndv3+/REVFyezZs6Vt27bZPj8xMVH69Okj33//vRQpUkS85a+//jL/1qhRI9P31q5dK611TyIRE/Tvv//+Qj8/+D+CMhBY6HHOMERbQ7MaPXp0jheP0AxvIygD8O7foBTp27evCc2lSpWSJUuWSL169Vy+RsO1jtzy9vogWQVmm3MPs44uA3KDoAwENoKzk99//91xv3z58t74fQAuEZQB+JKJEyfK6tWrzf0333wzx9Bs83ZozsnHH3/suH/ppZd69VzguwjKQHAhODvRxb5szz77rIwaNcqspA14C0EZgK86ffq0WTxL6SrU/fr1k0CwYMECGTp0qLmvc53btWvn7VOCjyAoA8GNOc5O4uPjzTyts2fPmq8rVaokV155pXTt2tVsO+VqWBfgDgRlAP7iiy++kBtuuMHc10W/br31Vre997Rp00xoza/Fixebup1X//vf/+TGG280jQJXXXWV+RlpQA9eBGUAzuhxdqKLmWjx160ndNGQffv2meKtN6Urbmohv+eee5jfDLcgKAPwV/Pnzzf/arC8+uqr3freuoZIlSpV8v36/Cw6tmjRItMQcObMGbnlllvkww8/JDQHGYIyAFfocc6C9jjrap9z5swx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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Single-step binomial tree visualization (stock + option payoff tree)\n", "import matplotlib.pyplot as plt\n", "\n", "fig, (ax_stock, ax_opt) = plt.subplots(1, 2, figsize=(10, 3.5))\n", "\n", "# Shared node positions\n", "t0_x, t0_y = 0, 0.5\n", "t1_u_x, t1_u_y = 1, 0.75\n", "t1_d_x, t1_d_y = 1, 0.25\n", "node_size = 400\n", "\n", "# -------- Left panel: stock tree --------\n", "ax_stock.plot([t0_x, t1_u_x], [t0_y, t1_u_y], 'b-', lw=2, label='Up move')\n", "ax_stock.plot([t0_x, t1_d_x], [t0_y, t1_d_y], 'r-', lw=2, label='Down move')\n", "ax_stock.scatter([t0_x], [t0_y], s=node_size, c='lightblue', edgecolors='black', zorder=5, linewidths=2)\n", "ax_stock.scatter([t1_u_x], [t1_u_y], s=node_size, c='lightgreen', edgecolors='black', zorder=5, linewidths=2)\n", "ax_stock.scatter([t1_d_x], [t1_d_y], s=node_size, c='lightcoral', edgecolors='black', zorder=5, linewidths=2)\n", "ax_stock.text(t0_x, t0_y + 0.12, r'$S$', fontsize=18, ha='center', va='center', fontweight='bold')\n", "ax_stock.text(t1_u_x, t1_u_y + 0.12, r'$S_u$', fontsize=18, ha='center', va='center', fontweight='bold')\n", "ax_stock.text(t1_d_x, t1_d_y + 0.12, r'$S_d$', fontsize=18, ha='center', va='center', fontweight='bold')\n", "ax_stock.text(0.5, 0.65, r'$p$', fontsize=14, ha='center', va='bottom', color='blue')\n", "ax_stock.text(0.5, 0.35, r'$1-p$', fontsize=14, ha='center', va='top', color='red')\n", "ax_stock.text(t0_x, 0.15, r'$t=0$', fontsize=12, ha='center', va='top')\n", "ax_stock.text(t1_u_x, 0.15, r'$t=1$', fontsize=12, ha='center', va='top')\n", "ax_stock.set_xlim(-0.2, 1.3)\n", "ax_stock.set_ylim(0.2, 0.9)\n", "ax_stock.set_aspect('equal')\n", "ax_stock.axis('off')\n", "ax_stock.set_title('Stock States', fontsize=14, fontweight='bold', pad=12)\n", "\n", "# -------- Right panel: option value tree --------\n", "ax_opt.plot([t0_x, t1_u_x], [t0_y, t1_u_y], 'b-', lw=2)\n", "ax_opt.plot([t0_x, t1_d_x], [t0_y, t1_d_y], 'r-', lw=2)\n", "ax_opt.scatter([t0_x], [t0_y], s=node_size, c='#d9d2e9', edgecolors='black', zorder=5, linewidths=2)\n", "ax_opt.scatter([t1_u_x], [t1_u_y], s=node_size, c='#b6d7a8', edgecolors='black', zorder=5, linewidths=2)\n", "ax_opt.scatter([t1_d_x], [t1_d_y], s=node_size, c='#f4cccc', edgecolors='black', zorder=5, linewidths=2)\n", "ax_opt.text(t0_x, t0_y + 0.12, r'$C=?$', fontsize=18, ha='center', va='center', fontweight='bold')\n", "ax_opt.text(t1_u_x, t1_u_y + 0.12, r'$C_u = (S_u - K)^+$', fontsize=18, ha='center', va='center', fontweight='bold')\n", "ax_opt.text(t1_d_x, t1_d_y + 0.12, r'$C_d = (S_d - K)^+$', fontsize=18, ha='center', va='center', fontweight='bold')\n", "ax_opt.text(0.5, 0.65, r'$p$', fontsize=14, ha='center', va='bottom', color='blue')\n", "ax_opt.text(0.5, 0.35, r'$1-p$', fontsize=14, ha='center', va='top', color='red')\n", "ax_opt.text(t0_x, 0.15, r'$t=0$', fontsize=12, ha='center', va='top')\n", "ax_opt.text(t1_u_x, 0.15, r'$t=1$', fontsize=12, ha='center', va='top')\n", "ax_opt.set_xlim(-0.2, 1.3)\n", "ax_opt.set_ylim(0.2, 0.9)\n", "ax_opt.set_aspect('equal')\n", "ax_opt.axis('off')\n", "ax_opt.set_title('Option Values', fontsize=14, fontweight='bold', pad=12)\n", "\n", "# fig.suptitle('One-Step Binomial Trees', fontsize=16, fontweight='bold', y=1.02)\n", "plt.tight_layout()\n", "plt.show()\n" ] }, { "cell_type": "markdown", "id": "8d4fc97c", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## BOPM No-Arbitrage Argument\n", "\n", "* **Replication Argument:** \n", " * Set up a portfolio so that its value at $t=1$ replicates the option in both states\n", " * By no-arbitrage, the option price and the portfolio value at $t=0$ should equal\n" ] }, { "cell_type": "markdown", "id": "2dcc5d9a", "metadata": { "editable": true, "slideshow": { "slide_type": "fragment" }, "tags": [] }, "source": [ "* The portfolio setup at $t=0$:\n", " * Buy $\\Delta {\\color{lightgray}~= (C_u - C_d)/(S_u - S_d)}$ shares of the stock at $S$\n", " * Deposit $B {\\color{lightgray}~= (C_dS_u - C_uS_d)/(M(S_u - S_d))}$ dollars into MMA\n", "* It can be easily verified that the portfolio value and option price agree at $t=1$ in both states:\n", "\\begin{align*}\n", "\\Delta S_u + BM &= C_u\\\\\n", "\\Delta S_d + BM &= C_d\n", "\\end{align*}\n" ] }, { "cell_type": "markdown", "id": "4f25c4d1", "metadata": { "editable": true, "slideshow": { "slide_type": "skip" }, "tags": [] }, "source": [ "* Initial portfolio value is $\\Delta S+B$:\n", "$$\n", "C = \\underbrace{\\color{lightgray}\\left(\\frac{SM - S_d}{S_u - S_d}\\right)}_{p^M} \\frac{C_u}{M} + \\underbrace{\\color{lightgray}\\left(\\frac{S_u - SM}{S_u - S_d}\\right)}_{1-p^M} \\frac{C_d}{M} = M_0E^M[M^{-1}_T X]\n", "$$" ] }, { "cell_type": "markdown", "id": "0a93ac27", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Risk-Neutral Probability in BOPM\n", "\n", "* $p^M \\ne p$ the physical probability which is not in the story\n", "* Even if an agent is confident about $p$, he/she should still quote the option at the fair price $M_0E^M[M_T^{-1} X]$, as that's **the price to guarantee no arbitrage**\n" ] }, { "cell_type": "markdown", "id": "18be189e", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Delta Hedge in BOPM\n", "\n", "* Replicating Portfolio\n", " * $\\Delta = (C_u - C_d)/(S_u - S_d)$ shares of the stock at $S$\n", " * Some MMA (risk free)" ] }, { "cell_type": "markdown", "id": "13741c81", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "\\begin{align*}\n", "\\text{Option} &= \\text{Replicating Portfolio}\\\\\n", "&= \\Delta\\text{ Shares of Stock} + \\text{MMA}\n", "\\end{align*}\n", "\n", "$$\n", "\\text{Option} - \\Delta\\text{ Shares of Stock} = \\text{MMA}\n", "$$" ] }, { "cell_type": "markdown", "id": "7db88c23", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Multi-Step BOPM\n", "\n", "* **Pricing:** Construct replicating portfolios at each one-step sub-tree, computing expectations under the risk-neutral probability backward in time from maturity $T$\n", "* **Dynamic Hedging:** Compute $\\Delta$ at each node and dynamically rebalance to ensure a locally risk-free portfolio across every time step" ] }, { "cell_type": "code", "execution_count": 3, "id": "a41575ba", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 3-step recombining binomial tree visualization\n", "import matplotlib.pyplot as plt\n", "\n", "fig, ax = plt.subplots(figsize=(5, 2.5))\n", "\n", "steps = 3\n", "node_size = 400\n", "\n", "# Draw recombining tree nodes and edges\n", "for i in range(steps):\n", " for j in range(i + 1):\n", " # Current node (t=i)\n", " curr_x = i\n", " curr_y = j * 2 - i\n", " \n", " # Up move (t=i+1)\n", " up_x = i + 1\n", " up_y = (j + 1) * 2 - (i + 1)\n", " ax.plot([curr_x, up_x], [curr_y, up_y], 'b-', lw=1.5, alpha=0.6)\n", " \n", " # Down move (t=i+1)\n", " down_x = i + 1\n", " down_y = j * 2 - (i + 1)\n", " ax.plot([curr_x, down_x], [curr_y, down_y], 'r-', lw=1.5, alpha=0.6)\n", "\n", "# Scatter plot for nodes to overlay on top of lines\n", "for i in range(steps + 1):\n", " for j in range(i + 1):\n", " x = i\n", " y = j * 2 - i\n", " ax.scatter(x, y, s=node_size, c='lightblue', edgecolors='black', zorder=5, linewidths=1.5)\n", " # Label each node generically, or using S_... string\n", " # Number of up moves = j, number of down moves = i - j\n", " # ax.text(x, y, f'{j}U\\n{i-j}D', fontsize=9, ha='center', va='center', fontweight='bold', zorder=10)\n", "\n", "ax.set_xticks(range(steps + 1))\n", "ax.set_xticklabels([f't={i}' for i in range(steps + 1)])\n", "ax.set_yticks([])\n", "ax.set_xlim(-0.5, steps + 0.5)\n", "ax.set_ylim(-steps - 0.5, steps + 0.5)\n", "ax.axis('off')\n", "\n", "# Explicitly add time labels at the bottom since axis is off\n", "for i in range(steps):\n", " ax.text(i, -steps - 0.8, f'$t=${i}', fontsize=12, ha='center', va='top')\n", "\n", "ax.text(steps, -steps - 0.8, f'$t=T$', fontsize=12, ha='center', va='top')\n", "\n", "# ax.set_title('3-Step Recombining Binomial Tree', fontsize=14, fontweight='bold', pad=15)\n", "\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "3eae11d2", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* With infinitely many time steps, the tree describes a continuous-time stochastic process, and with right assumptions the option price converges to the Black-Scholes formula" ] }, { "cell_type": "markdown", "id": "57de8b01-06a2-4793-ae4b-a38a6125a871", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Vanilla Option Pricing Models\n", "\n", "* **All we need is a terminal distribution** at the expiry $T$ if our goal is to price/hedge one single vanilla option\n", "* **Black Normal Model:** The underlying (say, a forward rate) follows a scaled Brownian motion\n", "$$\n", "dF_t = \\sigma\\,dW_t \\quad\\implies\\quad F_T\\sim N(0, \\sigma^2 T), \n", "$$\n", "which leads to nice closed form formulas\n", "* **The Reality:** Rates are not normally distributed. The market implied distribution has nonzero skewness and excess kurtosis\n", " * We need models, like SABR, that parameterize the first 4 moments of the distribution" ] }, { "cell_type": "markdown", "id": "e8634e7d", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Implied Volatility: Equating the Black normal formula and the market/model price and back out $\\sigma$" ] }, { "cell_type": "markdown", "id": "ab4873dc", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## SABR\n", "\n", "* $\\alpha$ controls overall **level** of the implied vol (2nd moment of the distribution)\n", "* $\\rho$ controls the implied vol **skew** (skewness of the distribution, the 3nd moment)\n", "* $\\nu$ (vol of vol) controls the implied vol **convexity** (kurtosis, the 4th moment)\n", "\\begin{align*}\n", "\\begin{cases}\n", "dF_t = \\alpha_tF_t^{\\beta}\\,dW_t\\\\\n", "d\\alpha_t = {\\color{red}\\nu} \\alpha_t\\,dZ_t, \\qquad {\\color{red}\\alpha_0 = \\alpha}\\\\\n", "dW_tdZ_t = {\\color{red}\\rho} dt\n", "\\end{cases}\n", "\\end{align*}\n" ] }, { "cell_type": "markdown", "id": "35b711b9", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## SABR (Cont.)\n", "\n", "* $\\alpha$ controls overall **level** of the implied vol (2nd moment of the distribution)\n", "* $\\rho$ controls the implied vol **skew** (skewness of the distribution, the 3nd moment)\n", "* $\\nu$ (vol of vol) controls the implied vol **convexity** (kurtosis, the 4th moment)\n", "\n" ] }, { "cell_type": "code", "execution_count": 4, "id": "092035de", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "def _f_minus_k_ratio(f, k, beta):\n", " \"\"\"Hagan's 2002 f minus k ratio - formula (B.67a).\"\"\"\n", " eps = 1e-07 # Numerical tolerance for f-k and beta\n", " if abs(f-k) > eps:\n", " if abs(1-beta) > eps:\n", " return (1 - beta) * (f - k) / (f**(1-beta) - k**(1-beta))\n", " else:\n", " return (f - k) / np.log(f / k)\n", " else:\n", " return k**beta\n", "\n", "\n", "def _zeta_over_x_of_zeta(k, f, t, alpha, beta, rho, volvol):\n", " \"\"\"Hagan's 2002 zeta / x(zeta) function - formulas (B.67a)-(B.67b).\"\"\"\n", " eps = 1e-07 # Numerical tolerance for zeta\n", " f_av = np.sqrt(f * k)\n", " zeta = volvol * (f - k) / (alpha * f_av**beta)\n", " if abs(zeta) > eps:\n", " return zeta / _x(rho, zeta)\n", " else:\n", " # The ratio converges to 1 when zeta approaches 0\n", " return 1.\n", "\n", "\n", "def _x(rho, z):\n", " \"\"\"Hagan's 2002 x function - formula (B.67b).\"\"\"\n", " a = (1 - 2*rho*z + z**2)**.5 + z - rho\n", " b = 1 - rho\n", " return np.log(a / b)\n", "\n", "\n", "def normal_vol(k, f, t, alpha, beta, rho, volvol):\n", " \"\"\"Hagan's 2002 SABR normal vol expansion - formula (B.67a).\"\"\"\n", " # We break down the complex formula into simpler sub-components\n", " f_av = np.sqrt(f * k)\n", " A = - beta * (2 - beta) * alpha**2 / (24 * f_av**(2 - 2 * beta))\n", " B = rho * alpha * volvol * beta / (4 * f_av**(1 - beta))\n", " C = (2 - 3 * rho**2) * volvol**2 / 24\n", " FMKR = _f_minus_k_ratio(f, k, beta)\n", " ZXZ = _zeta_over_x_of_zeta(k, f, t, alpha, beta, rho, volvol)\n", " # Aggregate all components into actual formula (B.67a)\n", " v_n = alpha * FMKR * ZXZ * (1 + (A + B + C) * t)\n", " return v_n" ] }, { "cell_type": "code", "execution_count": 5, "id": "854a423f", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c54371e01ac0442dbb1bda98240cb3c3", "version_major": 2, "version_minor": 0 }, "text/plain": [ "interactive(children=(FloatSlider(value=0.01, description='alpha', max=0.01, min=0.001, step=0.001), FloatSlid…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from scipy.stats import norm\n", "from pandas import DataFrame\n", "from ipywidgets import interact\n", "\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", "@interact(alpha=(0.001, 0.01, 0.001), rho=(-0.99, 0.99, 0.1), volvol=(0.01, 1, 0.1))\n", "def plot(alpha=0.01, rho=0., volvol=0.6):\n", " beta = 0.6\n", " F = 0.1\n", " T = 1\n", " a = 0.08\n", " b = 0.12\n", "\n", " fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 3))\n", " def call(K, F, T, A=1):\n", " iv = normal_vol(K, F, T, alpha, beta, rho, volvol)\n", " d = (F-K)/(iv*np.sqrt(T))\n", " return A*iv*np.sqrt(T)*(norm.pdf(d) + d*norm.cdf(d))\n", "\n", " def put(K, F, T, A=1):\n", " return call(K, F, T, A) + A*(K-F)\n", "\n", " DataFrame([(K, normal_vol(K, F, T, alpha, beta, rho, volvol)) for K in np.arange(a, b, 0.001)], columns=['K', 'Implied Vol']).set_index('K').plot(style='-.', legend=None, ax=ax1)\n", " ax1.set(ylim=(-0.001, 0.015), title='SABR Normal Implied Vol')\n", "\n", " DataFrame([(K, call(K, F, T) if K>F else put(K, F, T)) for K in np.arange(a, b, 0.001)], columns=['K', 'OTM Options']).set_index('K').plot(style='-.', legend=None, ax=ax2)\n", " ax2.set(ylim=(-0.0001, 0.0012), title='OTM Option PV')\n", " ax2.text(a + 0.001, 0.0001, 'put', fontsize=10, ha='left', va='bottom', color='gray')\n", " ax2.text(b - 0.001, 0.0001, 'call', fontsize=10, ha='right', va='bottom', color='gray')\n", " plt.show()" ] }, { "cell_type": "markdown", "id": "39e4e1c0", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## SABR $\\rho$: The Intuition\n", "\n", "* Why does $\\rho$, the rates vol correlation, control the IV skew? \n", " * Consider an OTM call and put at the same absolute moneyness. They are only trading positive because they might become ITM as the underlying moves\n", " * When $\\rho \\gg 0$ (and vice versa for $\\rho \\ll 0$)\n", " * Upside Move: Call becomes ITM, the vol increases\n", " * Downside Move: Put becomes ITM, the vol decreases\n", " * As option value increases with vol, the call is trading higher than the put" ] }, { "cell_type": "code", "execution_count": 6, "id": "a11c1bbd", "metadata": {}, "outputs": [ { "data": { "image/png": "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tk9OTlbzd3A7fvy4OrHis5C+dyc44SIVC8GLOfAZsbGx8tFHHxXaDkEDOoi4uDj1GuREI+0RX8RNFRlA6hg6zv/7v/8zSjs8efKkCrIeeughmT59uly7dk39G50d0siQHoBOBkEhgpHc3Fz9a5HigY5qyJAhKgWjf//+Ki3kwQcf1HdWJQH7hE4JQRM6TXRg+CykduAen4d0TXT8mD+H31t+2HcET/gZ0X7OnDkyfPhws/cFgQvS/5AuOmXKFHU8kfaJIHj79u1Gc/mQ3679fnCM0P7HH3+842eg88bvBO+Rf97C6tWr5erVq/oO0ty/AyIi0NLdcSHGFJzn8DxSyu4G+ln0C1qfgP70999/V+e4okC/tXbtWrWfCMxMefzxx1W/sHLlSqPtOTk5KmjDHCv0HbgoiPMwboBASutrkc6IlEXcHn300QL359lnn5XXXntNzVn973//qy6moV9BX5Qf+lf0SbiAi/nQ+D6AIC//ed2cvhA3XBAEHA+kNn777bfqZzWkBVhFPc7kIPRjVEQ3/f777zoXFxd1a9OmjW78+PG63377TZeZmWnyGL377rs6Ly8vXVJSknp8/PhxNUT+448/mkzzy39DmsFbb71lMj0Mw+5IF8DtwIEDuqefftrkMH1BDNved999urCwMF1aWlqBaX5ICQwJCdFduXJFv23fvn1qHwcOHHhbWtmAAQNM7jee27x5s34bjh+24TidPXtWv/3jjz9W23FsNNr+Gfrmm29Uuz///LNE0vw6duyoti1evFi/7ejRo/rfx9atW2/bd3xe/vd8+OGHjT7rX//6l9qOY1ZQmp/2d6D9zLm5uboaNWrounXrpv5teByio6N1999/v35b7969dZ6enkbH8PDhw+pvtSins0OHDql2EydONNrev39/9b6JiYlm/R0wzY+INNevX1fnl169ehV6UHDeRDutzzQ3zW/mzJm6gwcPqn8jfRnmzZunUuCRrofz7Z3S/JAiiNePHj260HYNGzbUVahQQf8Y743XjRo1Sr8N522k5Lu7u+v7mcLS/PKnZWv78uyzzxq1GzdunNqO6QP5+1fDvhDplB4eHrqxY8fq7gSvHTp0qNo/vG7btm26zp073zYVAMcT29D/aXJyctSUBHwvIjLEkSm6Da72bNmyRR5++GHZt2+fuvKEq/SoSrRixYrb2mO0pUePHuLn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0sfR1PO44aITFe+4A/ulsjuW7JvYN90N9k322zc53XwjIiIiIiIiMoNDzpkiIiIiIiK6WwymiIiIiIiIioHBFBERERERUTEwmCIiIiIiIioGBlNERERERETFwGCKiIiIiIioGBhMERERERERFQODKSIiIiIiomJgMEVERERERFQMDKaIrNjgwYOld+/eRtu+++478fT0lFmzZllsv4iIyHGxbyK6xdXg30Rk5T799FMZMWKEzJ8/X4YMGWLp3SEiImLfRA6NI1NENmLGjBkyatQoWbJkCQMpIiKyCuybyNFxZIrIBrz88svy4YcfysqVK6Vz586W3h0iIiL2TUQMpois36+//io//fSTrF27Vjp16mTp3SEiImLfRHQT0/yIrFzDhg2lSpUqMmXKFElJSbH07hAREbFvIrqJwRSRlYuIiJANGzbIhQsXpHv37pKcnGzpXSIiIgfHvokoD4MpIhtQuXJl2bhxo1y+fJkBFRERWQX2TUQMpohsRmRkpBqhiouLk27duklSUpKld4mIiBwc+yZydByZIrIhlSpVUgFVQkICAyoiIrIK7JvIkTnpdDqdpXeCiIiIiIjI1nBkioiIiIiIqBgYTBERERERERUDgykiIiIiIqJiYDBFRERERERUDAymiIiIiIiIioHBFBERERERUTEwmCIiIiIiIioGBlNERERERETFwGCKiIiIiIioGBhMERERERERFQODKSIiIiIiIjHf/wOihVTOeOjkcQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def plot_static(alpha=0.01, rho=0., volvol=0.6, figusize=(10, 3)):\n", " beta = 0.6\n", " F = 0.1\n", " T = 1\n", " a = 0.08\n", " b = 0.12\n", "\n", " fig, (ax1, ax2) = plt.subplots(1, 2, figsize=figusize)\n", " def call(K, F, T, A=1):\n", " iv = normal_vol(K, F, T, alpha, beta, rho, volvol)\n", " d = (F-K)/(iv*np.sqrt(T))\n", " return A*iv*np.sqrt(T)*(norm.pdf(d) + d*norm.cdf(d))\n", "\n", " def put(K, F, T, A=1):\n", " return call(K, F, T, A) + A*(K-F)\n", "\n", " DataFrame([(K, normal_vol(K, F, T, alpha, beta, rho, volvol)) for K in np.arange(a, b, 0.001)], columns=['K', 'Implied Vol']).set_index('K').plot(style='-.', legend=None, ax=ax1)\n", " ax1.set(ylim=(-0.001, 0.015), title='SABR Normal Implied Vol')\n", "\n", " DataFrame([(K, call(K, F, T) if K>F else put(K, F, T)) for K in np.arange(a, b, 0.001)], columns=['K', 'OTM Options']).set_index('K').plot(style='-.', legend=None, ax=ax2)\n", " ax2.set(ylim=(-0.0001, 0.0012), title='OTM Option PV')\n", " ax2.text(a + 0.001, 0.0001, 'put', fontsize=10, ha='left', va='bottom', color='gray')\n", " ax2.text(b - 0.001, 0.0001, 'call', fontsize=10, ha='right', va='bottom', color='gray')\n", " plt.show()\n", "\n", "plot_static(rho=0.8)" ] }, { "cell_type": "markdown", "id": "911f8270", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## SABR $\\nu$: The Intuition\n", "\n", "* The Asymmetric Impact of $\\nu$ (vol of vol) Shocks\n", " * Deep (20%) OTM: Requires a vol spike to expire ITM; highly dependent on $\\nu$\n", " * Near-the-Money (1% OTM): Insensitive to $\\nu$; outcome depends on today's $\\alpha$\n", "* Results\n", " * As $\\nu$ goes up, distant tails become more expensive relative to the center\n", " * $\\nu$ as the \"tail driver\", controls the probability of extreme volatility regimes" ] }, { "cell_type": "code", "execution_count": 7, "id": "27a8047b", "metadata": {}, "outputs": [ { "data": { "image/png": "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RERERESUDwymiIiIiIiI8oHBFBERERERUT4wmCIiIiIiIsoHBlNERERERET5wGCKiIiIiIgoHxhMERERERER5QODKSIiIiIionxgMEVkxl588UXp2bOn0bZff/1VXF1dZfr06cW2X0REZLvYNxHd42jwMxGZuW+//VaGDh0qc+bMkYEDBxb37hAREbFvIpvGkSkiCzF16lQZPny4LF68mIEUERGZBfZNZOs4MkVkAd5++2356quvZMWKFdKhQ4fi3h0iIiL2TUQMpojM36pVq+SPP/6QdevWSfv27Yt7d4iIiNg3Ed3FND8iM1e7dm0JCQmRSZMmya1bt4p7d4iIiNg3Ed3FYIrIzAUGBsrGjRvlypUr0qVLF0lISCjuXSIiIhvHvonoDgZTRBYgODhYNm3aJJGRkQyoiIjILLBvImIwRWQxgoKC1AhVdHS0dO7cWW7evFncu0RERDaOfRPZOo5MEVmQ8uXLq4AqNjaWARUREZkF9k1ky+x0Op2uuHeCiIiIiIjI0nBkioiIiIiIKB8YTBEREREREeUDgykiIiIiIqJ8YDBFRERERESUDwymiIiIiIiI8oHBFBERERERUT4wmCIiIiIiIsoHBlNERERERET5wGCKiIiIiIgoHxhMERERERER5QODKSIiIiIiIsm7/wedXhxyvMeXVQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_static(volvol=1, figusize=(10, 3))" ] }, { "cell_type": "markdown", "id": "5d8c5abc", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Displaced Lognormal Model\n", "\n", "* An alternative way to parameterize the first 4 moments\n", "* Volatility is a linear function of the underlying\n", "$$\n", "dF_t = (a_0 + {\\color{red}a_1} F_t)\\,dW_t\n", "$$\n", "* ${\\color{red}a_1}$ **controls the IV skew**, same as SABR's $\\rho$: \n", " * When $a_1 > 0$, the vol goes up as the underlying, same as the $\\rho \\gg 0$ case (and vice versa for $a_1 < 0$)" ] }, { "cell_type": "markdown", "id": "898b2869", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Approximation of the general local volatility model $dF_t = \\sigma(F_t)\\,dW_t$ as you can expand $\\sigma(\\cdot)$\n", "* Has closed form formulas for NPV and Greeks\n", "* Allows negative rates which lognormal does not " ] }, { "cell_type": "markdown", "id": "9376e1ad", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Extension to SV gives us a **vol of vol parameter** ${\\color{dodgerblue}\\nu}$ **to control the convexity of IV**, while still preserving semi-closed form formulas\n", "$$\n", "\\begin{align*}\n", "\\begin{cases}\n", "\\color{lightgray}dF_t = {\\color{black}\\alpha_t}(a_0 + a_1F_t)\\,dW_t\\\\\n", "d\\alpha_t = k(\\theta - \\alpha_t)\\,dt + {\\color{dodgerblue}\\nu}\\sqrt{\\alpha_t}\\,dZ_t\n", "\\end{cases}\n", "\\end{align*}\n", "$$" ] }, { "cell_type": "markdown", "id": "38cd9d41", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "## A Better Parametrization\n", "\n", "* The displaced lognormal model can be parameterized as\n", "$$\n", "dF_t = \\sigma( b F_t + (1-b) F_0)\\,dW_t\n", "$$" ] }, { "cell_type": "markdown", "id": "9e36e7f9", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "* **Why This Is Better:**\n", " * For small $t$ and vol, $b F_t + (1-b) F_0 \\approx F_0$ so $\\sigma$ has the same scale for all values of $b$\n", "* **Parameter Decoupling:**\n", " * When $\\sigma$ changes, only the IV level changes, not the skew\n", " * When $b$ changes, only the IV skew change, not the level" ] }, { "cell_type": "markdown", "id": "9922c886", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "* Extension to SV: \n", " * $\\sigma$ can be made a stochastic volatility process, giving us a vol of vol parameter to control the convexity of IV, while still preserving semi-closed form formulas" ] }, { "cell_type": "markdown", "id": "95d41645", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Change of Numeraire\n", "\n", "* **Numeraire:** A benchmark asset used as the denominator to price all other assets\n", "* **Change of Numeraire Formula:**\n", " * $N_t$: Time-$t$ value of the Numeraire\n", " * $P^N$: The probability measure associated with $N$\n", "$$\n", "V_0 = M_0 E^M \\left[ M_T^{-1} X_T \\right] = N_0 E^N \\left[ N_T^{-1} X_T \\right]\n", "$$" ] }, { "cell_type": "markdown", "id": "e5dfdf86", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## BOPM With Numeraire Asset" ] }, { "cell_type": "code", "execution_count": 8, "id": "fe437480", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAE0CAYAAAAxGlDlAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAUAlJREFUeJzt3Qd4VGXaxvEngYTeW4DQCV1aQEBAaUGBz8JaERbLShTFshZUZIOgWLCtDZfiCopgY1ERlCKggoAmQFBEDE1IIPSAICXAfNfzxjNMkkmfM5ny/13X6GRy5pyTGZ1n7vO2EIfD4RAAAAAAAOBxoZ7fJQAAAAAAIHQDAAAAAGAjWroBAAAAALAJoRsAAAAAAJsQugEAAAAAsAmhGwAAAAAAmxC6AQAAAACwCaEbAAAAAACbELoBAAAAALAJoRvwMQ0bNpSQkBBze/LJJ4v7dAAA8FvUVFh69erl/H5166238sLAqwjdCEgffPCBXH755VKrVi0JCwuTSpUqSaNGjcwH7v333y+LFi3K9hzrg1hvM2bMkECif+/gwYOlbt26Eh4eLhUqVJAGDRrIJZdcIiNHjpQPP/zQa19U9LV1fa0BINitWLEi0+diiRIl5Keffsq0zfHjxzNtw0VZ/3f69GmpVq1apve1U6dO4k80vFrnrt+x8mvNmjWZ/u5JkybluO3MmTMzbfvZZ5956OwB7ynpxWMBXjF8+HB57733Mj127Ngxc9u5c6d888038vvvv5tQHgzi4uLkqaeeyvRYenq6+QK3a9cuWb16tbndeOONxXaOAIALzp8/L2PHjiVceMATTzwhR48eNff1QrMv+fzzz+Xw4cOZHktISJCff/5Z2rRpI4Gsa9eu0qJFC/n111/Nz/q9bfTo0W63df1OV6NGDRk4cKDXzhPwFEI3AspXX32V6cM5OjrahOvy5cvLgQMHZN26dSZgBotffvlFnn76aefPzZs3l6uvvlqqVKliCn1iYqKsXLmyWM8RAOA+kK1du1a6dOkS1C/PuXPnTItw2bJlC/X8ESNGFOp5eqG+YsWKYqecetXp4y+++KIEultuuUUef/xxc18vNKxfv146dOiQaZvk5GRZvny58+ehQ4eaHoyA33EAAeSf//ynQ/+z1lvTpk0dZ8+ezbbN0aNHHStXrnT+fNlllzmf4+7WoEGDTM9PTk52PPzww442bdo4ypUr5yhVqpTZZujQoY61a9fmeG5Llixx3HDDDY769eub51SsWNHRunVrx8iRIx0HDhxwbqf7so49btw45+ObN2921KpVy/m76Ohox6FDh3J9PV599VXn9nqux48fz7bNn3/+6Vi2bJnz51tuuSXX18P1Y+N///ufY9iwYY6LLrrIUbNmTUdYWJg5TsuWLR333HOPY8eOHc5t9X5e+3X9e9W3337ruPHGGx316tVzhIeHOypUqODo2rWr44033nCcOXMm29+yceNG8z7oa6jbly5d2jy3d+/ejscee8y8dwDga5YvX+72M7FPnz7Obf74448cPy+zPt/1sze3upL1eb/++qsjLi7O1KkyZco4Onfu7Pjyyy/Ntvv373fcfvvtjurVq5vP1u7du5vPaHdSU1Mdjz/+uKNdu3aO8uXLm5rXpEkTx9133+34/fffs23vWne0Jus2Wlu0roSEhDjmzZtntnv77bcd119/vaNFixaOatWqOUqWLGnqgh5n9OjRmWppQf/2pKQkxwsvvGD2rfXj6quvdm577tw5x7vvvuuIiYlx1KhRw9Q6fR0GDhzoWLBggaMw9uzZ4yhRooTz+M2aNXPe11qfnp7u9nnvvPOOeY2sv79y5crmufr94s0338y07c6dOx2xsbHm+5C+Z/o+1KlTx3HJJZeY70u//PJLtv3nt+7qeeRV0/U1zk1KSkqm10DPKavnnnsu0z4TExML/P3D3fc9/W+uqP//WDZs2OC47bbbHI0bNzavs55H+/btHRMnTnT7vasw7wv8H6EbAeXee+91fjBqQdy6dWuezylI6P7mm28cVapUyXHb0NBQx0svvZRp/+fPn3fccccduR5j/fr1uX6465cB/UC2Hu/WrZsjLS0tz79Nz8V6jhakH3/8Mc/nFCR0X3vttblupxcWNAgXJnSPGTMm12179uyZqZht2rTJUbZs2VyfY315BABfkvVLf0REhPO+XrD1VujWi7nu6toHH3zgaNSoUbbfaVjIGhC+//57U39z+hyuVKlStrDuWneioqIy/f16s0K3u/NzvdWtW9cEucL87VpTXH+2QrdemO7Xr1+ux33wwQcL/J4///zzzudr8NLGANd9fv7559meo+ef23loWLfs27fPXCDIbfu33nor0/4LUnc9EbrVFVdckem/+6yNJdo4Yf2+Q4cOhfr+YWfo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0HPtLm6N0ba6mGtLt7Z459QVHb6J0A0AQaRTp05mZvJ69eqZnw8cOCAzZsyQ4cOHS/369aVt27byyiuvZCvoAADAO6wQXblyZWd38Z49e5olxHRZTx3bbdGVR7Zt22buE7p9F6EbAIKMruW5fft2+eqrr+Tee++VNm3aOLuj/fTTT/Lggw9K586d5Y8//ijuUwUAIGhDt3YXt5QoUUKuvvrqbF3M169fb1YkUUyi5rsI3QAQhLSL+eWXXy6vvfaaCdq6lNi0adOcV9Q3bdokEyZMKO7TBAAgqCdRc2V1Mf/iiy/Mut2u25YvX16aNWvm9XNF/hC6AQCmy5qu2718+XIJCwszr8h3333HKwMAgBcdO3ZMtm7d6jZ09+3b10yIql3KlyxZkqlVvH379hIaSrTzVbwzAAAnHettjffWcWOutNtat27dsr1aOgmbdk9fs2YNryQAAEXg2l08a+jWi+JXXnmluT937txcW8Wp276F0A0AcPrzzz8lNTXV3G/VqpXzcV1a7Oeff3Zb1PUqu15d10nYAABA4Vkt1zl1F7e6mH/22WdmabGkpCS347mp276F0A0AQWDjxo2yZ8+ePLd75JFHTPBW2t3c8ssvv5jxYzmF7qioKClbtqyHzxoAgOBitVzn1F1c52MpV66cHD582Kw2cv78efN41vpM3fYthG4ACALTp083k6TdcsstZo3PtLQ05++0cOsV8x49esjkyZPNY6NGjZKYmJhM3d2yzqSqtAvchg0bpF27dl77WwAACFR5rbldpkwZGTBggLmvodt6rGXLlpm2o277lpLFfQIAAPtpMD516pS8++675qYqVKhgrpC7jt3Wwh0XFyePPfZYtuKtY8l0eTFXujaoTvqiV+QBAEDhaT3esmVLnmtuaxdzXTbs+PHj5me98K1LilG3fRehGwCCgLZu6+3rr782V9F37txpZj/VrmsRERHSunVr6devnwwfPlzq1KnjNrTrNuHh4ZketyZPo6UbAICi0VqbU3dxV4MGDZJSpUrJ6dOnc9yWuu1bCN0AEAR0QpYbbrjB3ApDx4b1798/2+Mffvih+Tct3QAAFE337t2dM5fnRnuqae+13FC3fQtjugEA+erylnUJMe2m/sUXX5g1vt21jgMAgOJB3fYttHQDAPLUpUsXmT9/vtx3333SqFEjWblypWzevFmqV69O13IAAHwMddu30NINAMjTtGnT5NJLL5W3335bXn75ZRO8dXy4znxO13IAAHwLddu3hDjyM3AAAAAAAAAUGC3dAAAAAADYhNANAAAAAIBNCN0AAAAAANiE0A0AAAAAgE0I3QAAAAAA2ITQDQAAAACATQjdAAAAAADYhNANAAAAAIBNCN0AAAAAANiE0A0AAAAAgE0I3QAAAAAA2ITQDQAAAACATUratWMAgP9IT0+XNWvWSHx8vKxbt06Sk5PlzJkzEh4eLpGRkdKxY0fp1KmTdO3aVcLCwor7dAEACFrUbP8T4nA4HMV9EgCA4pGSkiJTpkyRadOmSWpqap7bR0RESGxsrLnVrVvXK+cIAACo2f6M0A0AQejs2bPy/PPPy4QJE0yLdkFpC3hcXJw8+uijUrIknaYAALALNdv/EboBIMgkJSXJkCFDJCEhwflYaIlQaTOgjbTo00Lqta8nNaNqSliZMEk/mS77k/bL7g275ddlv8rPX/4s58+ddz4vOjpa5syZI1FRUcX01wAAEHw1u2vvaInu2U6atm4s9RrVkfDS4XLm1BnZvWOPbN20XRK+S5Q1yxOo2T6C0A0AQSQxMVFiYmLkwIED5ueQ0BDpNbKXXDbyMqlcp3Kez0/bkyYrJq+Qb/7zjTjOZ4xOqlmzpixevFjatWtn+/kDABCsNTs0NESuuWWgXHPLIKleq2qezz+477DMm7FAPnt3oZynZhcrQjcABNHV8u7duzuLt7ZmD508VBpENyjwvnbG75TZ98w2reCqRo0asmrVKlq8AQCwoWZHNqojDz13tzRv27TA+/o1MUlefvwtSd6xh5pdTAjdABAkM51269bN2T2tQacGcufHd0rZSmULvc8/0/6UKddPkd8Tfjc/6+zmq1evZow3AAAerNkt2kXJhKmPSfmK5Qq9zz+OHpe42Odky8at1OxiwDrdABAEJk2a5Cze2sJ950dFC9yqbOWyJrjr/pQuN6bHAQAAnqnZ2sI9fsqjRQrcqkKl8ia46/4UNdu7aOkGgCBYFqxx48ZmlnIdw/3AogcK1aU8t67mr17xqhnjrbOab9++neXEAAAoYs3WMdwvzXmqUF3Kc+tq/vDNcWaMNzXbe2jpBoAAp+twW8uC6aRpngzcqmGnhnLZXZeZ+3qcqVOnenT/AAAEY83WSdM8GbitrupXDx9o7lOzvYeWbgAI8HFh9evXl9TUVLPESFxiXL5mKS+otJQ0mdB+glmaJCIiQnbt2iVhYWEePw4AAMFSs2d8/Ua+ZikvqIOph+TWfvdSs72Ilm4ACGBr1qwxxVvpOtx2BG5VuW5ls3+lx1u7dq0txwEAIBhqtq7DbUfgVtUjqpn9K2q2dxC6ASCA6UQplhZ9Wth6rOZ9mrs9LgAAyJtr7Yzu2c7Wl6xjjwv7p2bbj9ANAAFs3bp1zvv12tez9Vj12l3YvzXrKgAAKHjNbtq6sa0vW9PWjZz3qdn2I3QDQABLTk523reW9rJLrWa13B4XAADkzbV21vtraS+71G9c1+1xYQ9CNwAEMGsGVBVWxt6JzcJKh7k9LgAAyJtr7QwvHW7rSxZW6sL+qdn2I3QDQADTNTgt6SfTbT1W+ql0t8cFAAB5c62dZ07Ze/E6/bRLwKdm266k/YcAAHjTkSMi334rsmKFSGJipPPx/Un7bR3Xve+3fc77kZEXjgsAALI7f17kp58y6rXevv/+Qu3cvWOPRNk4rnvX9hTnfWq2/QjdABBAITsjaIs4HNZvO4rILHNv94bdtobu3Ym7nfejozOWIgEAAO5Dttbuw4ddX50LNXvrpu22hu6tm3ZQs72I0A0AARWys+rkvPfrsl/lklsvse28tizbcuGonS4cFwCAYJR3yM6sQoVO8scfGfcTvkuUATf0s+3c1q1MdN6nZtuP0A0AARSyQ0JE2rcX6dUr49a1a1dp1y5CUlNT5ecvf5a0PWlSuU5lj59jWkqa2b+KiIiQLl26ePwYAAAEUsiuWlXksssu1OzmzbtKw4YZNXvN8gQ5uO+wVK9V1ePneTD1kNm/omZ7B6EbAAIoZPfsKVKliusWYTJixAh56qmn5Py58/LNW9/I1U9d7fFzXvHWCrN/FRsbK2Fh9s6UDgCAv4fsNm1EQkNzrtmfzlwgd4z+u8fPe97MhdRsLwtxOHLulAgA8LeQnV1KSoo0btzYLAkSEhoiDyx6QBpEN/DY+e+M3ymvXvGqOM47zAyo27dvl7p1L6z/CQBAIPB8yM69ZoeGhshLc56S5m2beuxv+DUxSR6+OU7OU7O9ipZuAAiwkJ2VBuC4uDgZO3asCcbv3/2+Cd5lK5ct8t/yZ9qfMvue2Wa/aty4cQRuAEBA8EbIzq1mazB+6bHJ8tKcCVKhUvki/z1/HD0uLz/+ltmvomZ7Dy3dABBgIduds2fPmvHdCQkZY7gadGogd350Z5GCtwbuKddPkd8TfndOxLJ69WopWZLruQAA/1McITs/NbtFuygZP+XRIgVvDdxxsc/Jlo1bzc/UbO8idANAAIZsd5KSkqR79+5y4MAB83PNqJoydPLQQnU11y7l2sKta3+bfdWsKStXrpSoqCiPnzcAAIEcsvNTsyMb1ZGHnru7UF3NtUu5tnAn79hjfqZmex+hGwACNGS7k5iYKDExMc4irmO8L7vrMuk1spdUrls5X7OU66Rp3/znG2eXci3eS5YskbZt29p+/gAABGLIzk/N1jHeVw8fKINvGSjVI6rla5ZynTTts3cXOruUU7OLB6EbAAI4ZOd09XzIkCHObmsqtESotBnQRpr3aS712tWTWs1qSVjpMEk/lS77ftsnuxN3m3W4dVkwa5Zyq3va7NmzaeEGAPgcfwvZBanZXXtHS8ce7aRp60ZSv3FdCSsVLumnz8iu7SmyddMOsw63LgtGzfYNhG4ACPCQndN4sUmTJsn48ePNDKkFpbOU6wQso0ePZgw3AMAnBELIdoea7f8I3QAQBCE7t6VJpk6dam6pqal5bl+7dm2zDreuI8qyYACA4hSoITsn1Gz/RegGfMyXX4oMHCjyzDMi5cqJzJghsmVLRrjr21fk9ddF6tcv7rMMLMEUsnOSnp4ua9eulfj4eNOFLTk52bSAa4t2ZGSkREdHm67kXbp0kbCwsOI+XQDwCdRs7wq2kJ0Tarb/IXQDPkbD9hNPiDRvLrJrl8jgwdq6KLJkicjGjSIdOojosB4NfygcQjYAwBOo2fYiZCNQsJgq4GPWr8/497FjIuvWibRokfFzerpI9+4iP/4osny5SJ8+xXqafoWQDQCwAzXbswjZCFSEbsBHC/jMmRcCt9IevcOGZYTuX38ldOeGkA0A8AZqdtEQshEsCN2AD9HW7e3bRTp2FImJyf77an8tyViIyaYDGiEbAOBt1OyCI2QjWBG6AR+yYUPGBF6XX+7+97//nvHvYJ9IjZANAChu1Oy8EbKBDIRuwAe7qTVokPMsqSVKZMzAGUwI2QAAX0PNzo6QDbhH6AZ8sIAfPZr9d2vWiKxcKTJ0aMYSGIGMkA0A8HXUbEI2kF8sGQb4kHbtLiwLtnZtxuRpavdukd69M9ai1CKfU0u4vyJkAwD8TTDWbFqygcIhdAM+4vRpkfLlRTp1Etm2TaRWrYyx3YcOicydK3LunMjnn4v07St+j5ANAPBnwVKzCdmAZ9C9HPARP/8scvasyKWXikyeLPLAAyJvvSVSurTIFVeIPPmkSKtW4pcI2QCAQBKoNZuQDdiD0A342Ngw7a6mXdW++Ub8FiEbABDIAqVmE7IB7yB0Az5WwNu3F79DyAYABBN/rdmEbKB4ELoBHyrg2i2teXPxeYRsAEAw85eaTcgGfAOhG/CRoqgzoLZpk7EOt68hZAMA4Ps1m5AN+CZmLweQDSEbAADfR8gG/AMt3blIS0uTd999V7788kvZuHGjHDp0SMLCwqRmzZpSt25d6dmzp/Tt21d69eoloaGh3nvXAA8jZAPwRw0aNJBdu3aZ+wMHDpQFCxbkuO2zzz4rY8aMkapVq5p6DvgjQjbgn2jpzsHHH38sI0eOzFSYK1asKOfOnZMTJ044H6tUqZIcOXJEQkJC7H+3AA8hZAPwdwcPHpQaNWo4fw4PD5f9+/ebuuzOddddJ3PnzjUXy5cuXerFMwUKj5ANBAZaut2YOXOm3HbbbeJwOKR3797yyCOPSPfu3U3oVnv37pVvvvlG5syZI6dOnSJww+cRsgEEmnXr1jnva+v14cOHZf78+TJs2DC32yckJJh/R0dHe+0cgYIiZAOBidCdxb59+2TUqFEmcN9xxx0ybdq0bC9a7dq15aabbjK3kydPeuu9AvKNkA0g0Fkhunr16nLrrbfKiy++aFqy3YVuDeQ7d+409zt27Oj1cwVyQsgGggOh20238uPHj5v748ePz/MFLFOmjD3vDFAAhGwAwdrSrSH62muvNaF70aJFpoaXL1/e7baKlm4UJ0I2EJwI3Vn8+uuvmbqrAb6IkA0g2Fkt3Rq6u3TpYiY4TUlJkYULF8oNN9zgNnTreO8mTZoUy/kiOBGyAShCdxauE7A8/fTTMm7cODNjOVCcCNkA4PqZeER27NjhDN06mengwYPljTfekE8++SRb6LYCeocOHZiHBbYiZANwh9nLs4iPj5du3brJ2bNnzc86M+qgQYOkT58+ZmmwevXquX0hAU8iZANAzr7++mvp16+fub9161bTer1ixQoz+Wm5cuXkwIEDmYZ/RUVFme0efPBBeemll3hp4TGEbAD5Qeh2Q6+Sa2HevXt3tt9ddNFFZmbzu+66i/Hc8BhCNgDk3wsvvCCjR4+WypUrm1ZvpUt66kSnGrjnzZsn11xzjXn86NGjUqVKFTNB6qxZs2To0KG81Cg0QjaAwiB050BbuvVK+oIFC2T58uWyadMmU7AtrVu3ltWrV0uFChUK9cIjuBGyAaDwhgwZIh988IFp2V62bJnz8REjRsj06dNNsNaArawWcLV582Zp0aIFLz3yjZANwBMY053TC1OypFx++eXmpvTK+WeffSbPPfecbNu2zYTwCRMmmKvtQF4I2QBgzyRqrnQWcw3dX3zxhZw5c0bCw8Od2+qM5s2aNeNtQK4I2QDsQOjOJx3bret2awjXsWPp6eny3Xff2fKmwP8RsgHAHseOHTPjs92F7r59+5oJUbVL+ZIlS8ycLNbM5e3bt5fQ0FDeFmRCyAbgDYTuAtKJ1PS2fft2OXHihD3vCvwOIRsAvGP9+vXO4V5ZQ7euNnLllVearuVz5841oTunVnEEJ0I2gOJA6C6gP//8U1JTU839Vq1a2fGewA8QsgGgeFgt1zl1F9cu5hq6dUiYTrKWlJRkHo+Ojvb6uaL4EbIB+AJC9182btwo1atXlzp16uT6gj3yyCMmeCvtbo7gQMgGAN9gtVzn1F1ch4HpsmGHDx+WV155Rc5r6qKlO2gQsgH4IkL3X3TilWnTpskNN9wgN954o1xyySVmKRKlhVvHb+ukaatWrTKPjRo1SmJiYorvnYOtCNkA4Nst3Tl1F9f1uQcMGGCW/9TQbT3WsmVLr54nvIOQDcAfELr/smHDBjl16pS8++675qZ0OTC9Qu46dlsLd1xcnDz22GPF847BFoRsAPB9Wo+3bNmS5xht7WKuofv48ePm53bt2kmJEiW8dp6wDyEbgD8idP9l4cKF5qZrc+tV9J07d5rZT7XrWkREhFmXu1+/fjJ8+PA8u6DD9xGyAcA/L5Dnp7u4TqBWqlQpOX36dJ7bwrcRsgEEghCHNQUoEMAI2QAA+D5CNoBAREs3AhIhGwAA30fIBhAMCN0ICIRsAAB8HyEbQDAidMMvEbIBAPB9hGwAIHTDTxCyAQDwfYRsAMiOlm74JEI2AAC+j5ANAHkjdMMnELIBAPB9hGwAKDhCN4oFIRsAAN9HyAaAoiN0wysI2QAA+D5CNgB4HqEbtiBkAwDg+wjZAGA/Qjc8gpANAIDvI2QDgPcRulEohGwAAHwfIRsAih+hG/lCyAYAwPcRsgHA9xC64RYhGwAA30fIBgDfR+iGQcgGAMD3EbIBwP8QuoMUIRsAAN9HyAYA/0fodiM9PV3WrFkj8fHxsm7dOklOTpYzZ85IeHi4REZGSseOHaVTp07StWtXCQsLE39AyAYABJpArNeEbAAIPCEOh8NR3CfhK1JSUmTKlCkybdo0SU1NzXP7iIgIiY2NNbe6deuKLyFkAwACVSDVa0I2AAQ+QreInD17Vp5//nmZMGGCuUJeUHpFPS4uTh599FEpWbJ4Og8QsgEAgS4Q6jUhGwCCT9CH7qSkJBkyZIgkJCQ4X5TQEiWkc5/+0r5Hb2nSuq3UbdxUwkuXljOnTknK9q2ybdNG2bByufy4bLGcP3fO+bzo6GiZM2eOREVF2f7GEbIBAMFer0uUKCF9el0uPbv3ltat2knjhk2ldOkycurUSdm+c6ts+iVRvlu1XJatWCTniqleE7IBAEEduhMTEyUmJkYOHDhgfg4NDZX/u2WE/N+tsVKtVu08n39o316Z/85UWfDuNDmvVVVEatasKYsXL5Z27dp59FwJ2QCAYOWuXt867E659e93Sq181Ot9+/bKO+/9R2bOmmp7vSZkAwCyCtrQrVfMu3fv7izgdRo1kfuef02i2nYo8L5+S1wnrz92v+zZsc38XKNGDVm1alWRrqATsgEAyF6vGzVsKpMmvi5tL+pY4JcncWOCPDr2Ptmxc6vH6jUhGwCQl6AM3Trbabdu3Zxd1Jq1i5ax02ZJuYqVCr3P40fT5OnYYZKUuM78rLOlrl69Ot9jxgjZAADkXq/bt42WaZPnSMUi1Oujx9JkxMghkvhT4eo1IRsAUFBBGbonTpwoY8eOdbZwP/vBfClfqXKR96vB+/GbrnS2eOtxxowZ43ZbQjYAAPmv19rC/eGsBVKpYtHrtQbvG4cNcrZ451avCdkAgKIKutCty4w0btzYzHqqY8Ke+WB+obqU59bV/IkhV5kxYzpL6vbt283yJIRsAAAKX68/fG9BobqU59bV/Kbh/5etXhOyAQCeVjzrZRQjXdfTWmZEJ03zZOBWzdp1lEHDR8j8GRnHufbaqXL69HhJTBTJ6fJGSIhI+/YivXpl3Hr2FKlSxaOnBQCA39ZrnTTNk4FbtWsbLbcMi5V33v2POc4//jFVypQZL99+K3L4cM7Pq1pV5LLLLtTsNm10YjePnhoAIMAEVUu3jg2rX7++pKammmXB/rPsh3zNUl5Qh1L3yF19u/y1nFiEiOwSkTDn7wnZAADkr17rsmDLv0rI1yzlBZWaukf6DOj013Ji2eu1ImQDAIoqqFq616xZYwq40nW47QjcqlpEHbP/tUu+1JIuImulQ4cetGQDAJAPrvVa1+G2I3CriIg6Zv9Lvl7orNdVq/agJRsA4FFBFbrj4+Od99v36G3rsdp37/VX6NYJWuJlzJgeth4PAIBArNc9u9tbr3tc0vuv0C3yyCPx8txzPeguDgDwqKAahbRuXcbyIKpJ67a2Hquxy/43b85Y6gQAABSsXrdu1c7Wl6x1qwv1eu/eBAI3AMDjgip0JycnO+/XbdzU1mNFNolye1wAAJA717rZuKG99bpJI+o1AMBeQRW6rVlQVXjp0rYeK6xUKbfHBQAAuXOtm6VLl7H15SpV6sL3Aeo1AMAOQRW6dR1Oy5lTp2w9Vvrp026PCwAAcudaN0+dOmnry3X69IXvA+ElSth6LABAcAqq0B0ZGem8n7J9q63HSt6WdOG4a9eKDBsmMn26yNatOS/YDQAAMtXr7TvtrdfbdrjU65UrRXr0EBk7VmTpUpETJ3g3AABFFlShu2PHjs772zZttPVY2132H33ypMj774uMGCESFSVSrx4hHACAfNTrTb8k2vo6bfrFpV7rRfFVq3TZEZGYGJEqVQjhAIAiC6rQ3alTJ+f9DSuX23qsDatWXDiuy/huIyWFEA4AQD7q9Xer7K3XK7+/sP9OelHcVXo6IRwAUGQhDkfw9HVOT0+X+vXrS2pqqoSWKCH/WfaDVKtV2+PHOZS6R+7q20XOnzsnERERsmvbNglLTBRZsSLjpt3X/vwz5x3UrSvSq9eFW5MmIiEhHj9PAAB8vV6XKFFCln+VILVsqNepqXukz4BOcs6q17t2SdiBAyLffHOhZv/2W847CAsTufjiC/W6WzeRcuU8fp4AAP8WVC3dYWFhMkK7eIuYQPzFjKm2HGf+jGlm/yo2NlbCypbNKMSPPy6yaJFIWprI99+LPPOMSP/+Ivp7V7SEAwCCmGu91kA8470pthxnxqwpZv/Oeq0huk4dkSFDRKZMEdmyJaMmz56tG4g0a5Z5B7SEAwDyIahaulVKSoo0btzYLAsSGhoqz3wwX6LadvDY/n9LXCdPDLlKzp8/b2Zf3b59u9TVluvcaNGOj6clHACAHOr1h+8tkLYXXRjrXVSJGxPkpuH/V7B6rfbsoSUcAFAgQRe61cSJE2WszkwqInUaNZFnP5gv5StVLvJ+jx9Nk8dvulL27NjmPM6YMWMKviNCOAAAmep1o4ZN5cNZC6RSxaLX66PH0uTGYYNkx18zoxe6XitCOAAgD0EZus+ePStdu3aVhIQE83OzdtHyxNT3ihS8NXA/HTtMkhLXOSeBWb16tZQsWbLoJ0wIBwAEoaz1un3baJk6eXaRgrcG7hEjh0jiTzbUa0UIBwBkEZShWyUlJUn37t3lgE6Y8leL933Pv1aorubapfz1x+53tnDXrFlTVq5cKVG6PJgdCOEAgCCt19riPWni64Xqaq5dyh8de5+zhdv2eq0I4QAQ9II2dKvExESJiYlxFnIdMzZo+Ai58tYRUi2iTr5mKddJ0xa8O82MCbMK+JIlS6Rt27biNYRwAECQ1etbhsXKrcPulIh81GudpVwnTZs5a2rx1mtFCAeAoBPUodu6gj5kyBBn1zWly4l17tNf2nfvJY1bt5XIJlESVqqUpJ8+LcnbkmT7po1mHe4fly12zlJudVGbPXu2vVfM84MQDgAIgnqty4n16XW59Likt7Ru1VaaNIqSUqVKy+nTp2TbjiTZ9MtGsw73shWLnLOU+1S9VoRwAAh4QR+6rTFjkyZNkvHjx5tZUgtKZz0dN26cjB492nNjwjyJEA4ACAABX68VIRwAAg6hO8vyJFOnTjW31NTUPF+82rVrm3U9dS3RfC0z4isI4QAAPxY09VoRwgHA7xG63UhPT5e1a9dKfHy86caWnJxsrqjrFfLIyEiJjo42XdO6dOkiYWFh4vcI4QAAPxR09VoRwgHA7xC6kR0hHAAA/0AIBwCfR+hG3gjhAAD4B0I4APgcQjcKjhAOAIB/IIQDQLEjdKPoCOEAAPgHQjgAeB2hG55HCAcAwD8QwgHAdoRu2I8QDgCAfyCEA4DHEbrhfYRwAAD8AyEcAIqM0I3iRwgHAMA/EMIBoMAI3fA9hHAAAPwDIRwA8kTohu8jhAMA4B8I4QCQDaEb/ocQDgCAfyCEAwChGwGAEA4AgH8ghAMIQrR0I/AQwgEA8A+EcABBgNCNwEcIB7JJS0uTd999V7788kvZuHGjHDp0SMLCwqRmzZpSt25d6dmzp/Tt21d69eoloaGhvIIAvIMQDjg1aNBAdu3aZe4PHDhQFixYkOOr8+yzz8qYMWOkatWqpqbDtxC6EXwI4QhyH3/8sYwcOTJTUa5YsaKcO3dOTpw44XysUqVKcuTIEQkJCSmmMwUQ9AjhCFIHDx6UGjVqOH8ODw+X/fv3m9rsznXXXSdz5841F8yXLl3qxTNFfhC6AUI4gsjMmTPltttuE4fDIb1795ZHHnlEunfvbkK32rt3r3zzzTcyZ84cOXXqlCxatKi4TxkALiCEI0gsXrxYLr/8cnNfW68PHz4s7733ngwbNszt9o0aNZKdO3fK6NGj5fnnn/fy2SIvhG4gK0I4AtS+ffukadOmcvz4cbnjjjtk2rRpuW5/8uRJKVOmjNfODwAKjBCOAGV1F69evbrceuut8uKLL8o111wj8+bNy7atBvJq1aqZ+x988IHceOONxXDGyA2hG8gLIRwB4o033pB7773X3E9JSZE6deoU9ykBgGcRwhEgrr/+evnkk0+kf//+Mn78eOnWrZu5EK5dzMuXL59pW+1OHhMTY+4nJSWZC+zwLYRuoKAI4fBTo0aNkjfffNPZil26dOniPiUAsBchHH6qcePGsmPHDnnsscfkmWeekXr16pkL5h9++KHccMMNmbadNGmSPProo8zF4sOYkhYoqLAwkW7dRB5/XETHu6aliXz/vcgzz4j07y9Stmzm7VNSRN5/X2TECJGoKJF69UR0PM706SJbt4o4HLwH8ArXyVeefvppSdcLSAAQyLRHz5AhIlOmiGzZklGTZ88WiY0VadYs87b6mbhqlcjEiSLaalilikiPHiJjx2pToojLRJOAnXQSUw3cqmPHjmZC08GDB5uftfU7q4SEBPPvDh06MPmpj6KlG/A0WsLho+Lj4033tLNnz5qfdVbUQYMGSZ8+fczSYHoVHQCCCi3h8EFff/219OvXz9zfunWrNGnSRFasWGEmQC1XrpwcOHAg05wrUVFRZrsHH3xQXnrppWI8c+SE0A3YjRAOH6JXyLUo7969O9vvLrroIjOz+V133VWgCdQmTpwoY8eONTOfR0REePiMAcCLCOHwAS+88IKZhbxy5cqm1Vvpsp61a9c2gVsnU9NJ1dTRo0elSpUqZlWSWbNmydChQ/N1DGq3dxG6AW8jhKOYaUu3XkVfsGCBLF++XDZt2mSKtaV169ayevVqqVChQr72p7Ok6jJjqampNp41ABQDQjiKwZAhQ8ws5NqyvWzZMufjI0aMkOnTp5tgrQFbWS3gavPmzdKiRYt8HYPa7V2EbqC4EcJRzPSq+WeffSbPPfecbNu2zTz28MMPmyvt+dGyZUupX78+a3oDCHyEcHhBs2bNzCzkDz30kFkqzPLVV1/JgAEDzBwtOot5eHi46U6uNVtnNNdW79DQ/E3ZRe32LkI34GsI4Sgm2uVcx43pBGtdunSRNWvW5PmcU6dOmUKvXwyef/55r5wnAPgMQjg87NixY6ZbufZAe//99+Xmm292/k7rs87HouH6iy++MPOyaKv37NmzpUePHvLdd9/l6xjUbu9j9nLA1zA7OoqJTqRmTaZ2ws0svStXrpS+ffuaSVx0jW8N2do1XceZtWvXrhjOGACKGbOjw8PWr1/vHPKlM5e7CgsLkyuvvNLcnzt3bqaZy7Nua6F2+wZaugF/Q0s4bPLnn3+aK+j6b10DVNcCtfzvf/8z4790OZK///3vcvr0aXn55ZfNOqKrVq0y4btVq1a8NwDgipZwFNArr7xiJjzNqbv4p59+apYPq1q1qpmxvHr16nL+/HmZOXOmDB8+PNO21G7fQegG/B0hHHnYuHGjKcraOp2be+65RyZPnmzuL168WGJ0nVoR+f3336VNmzamlVsLuPUFQK+ud+rUSUqXLi3Hjx+XEiVK8F4AQG4I4cjDsGHDTLfynLqLnzx50lwg1x5p//rXv+Spp54yj//000+mVluo3b6F0A0EGkI4srjvvvtk2rRppvVaW6svueQSM15MHT582BR1nTRNW6zVqFGj5PXXX3c+PzY2Vv773//Kli1bzJhvV7qfpk2bmjXAAQAFRAhHFtprTGch19r96quvun19rr/+erMEqLaG60VvXebzjz/+yHTxm9rtWwjdQKAjhAe9Sy+9NNvVcl0OTLujuY7d1qIdFxcnjz32mPMxHa9ds2ZN6d69u3z++efZXkvdjwZ5XcIEAFBEhPCgpjW5YsWKpj7PmDFDbrnlFrfb6XJiuqyYpWvXrmapTwu12/eULO4TAGAza2I2vT3+eN4hPCVF5P33M26qbl2RXr0u3LSlMySEt82PLFy40Nx0be5169bJzp07nePEIiIizLrc/fr1M2PBsnZB1xnNtTW8c+fO2far47j1CjuTqAGAhydmswJVbiFc67n2UNLbxIkZ9f7iiy/Ua6375crx1viRDRs2mMCd28RoSmctL1WqlJlfxd221G7fQ+gGgg0hPOho9zPtWq63gnI3i7nl3//+t/l3+/bti3R+AIAcEMKDivYqs2Yuz432MtNlv3JC7fY9dC8HkBnd0eFCW7K1q5tO6PLtt986H9c1vLXb+tmzZ+XIkSNSqVIlXjcA8Da6o8MNarfvIXQDyB0hPOjpmO2PPvrILFFyxRVXmAnVpk6dKuHh4SZsb9++PehfIwDwCYRw/IXa7VsI3YCnzJolopNVJSToug0iZ86IvPOOyK23BtZrTAgPOmlpaWYWVR0Xrt3ZdK3uMWPGyJ133inR0dEyb9684j5FAMi/YKnXihAetKjdvoXQDXhKw4a6KKJI9eoZE5fo/UAt4q4I4QAAfxKs9VoRwoFiQegGPGXpUpGoKJEGDUSeey5jpvBgKeKuCOEAAF9Gvb6AEA54BaEbsIMvhO4vvxQZOFDkmWcyruTPmCGyZUvGcl99+4q8/rpI/fr2nwchHADgq6jXmRHCAVuwZBgQqNavz/j3zJkiu3aJDB4s0qePyJIlIp9/ros4Zoxns3vNbZYoAwDA9+u1YokywBaEbiDQi/ixYyLr1om0aHGh5bl7d5EffxRZvjyjsHsTIRwAAN+v14oQDnhEqGd2A8Cnr5xbBdwKvcOGZdz/9VcpdlYI1+74ixbpdJsi33+f0S2+f3+RsmUzb5+SIvL++yIjRmSMoa9XL+PvmT5dZOtWEYejuP4SAAACt167hvApUzKGrGlNnj1bJDZWpFmzzNvqRYNVq0QmThSJiRGpUkWkRw+RsWMzxtWfOFFcfwXgdbR0A77ioYdETp/O//b3358ROt3Rq+W6dnLHjhmFLqtq1TL+rcuk+BpawgEAvox6fQEt4UC+ELoBX6FXjQty1fe663IO3Rs2ZLT4Xn65+9/r8ijKGxOpFRUhHADgS6jXOSOEA24RugFfcfy457uq6fJlOc1sXqKESK9e4ncI4QCA4kS9zj9COGAQuoFAZIXuo0ez/27NGpGVK0WGDhWpWlX8HiEcAOCvgqleK0I4ghTrdAOBuO5nu3YiGzeKdOggsnZtRjBVuuxI794ihw9nFPqcWsIDCeuEAwByQr32LawTjgBF6AY8RWfP1ivS6qefMpb90KU+mjbNeExn7LzjDvtfb52MrXx5kU6dRLZtE6lVK2Ns96FDInPnipw7l7HuZ9++EpQI4QAQ3KjX/oMQjgBB6AY8RVu0dbmPnNxyi8iMGfa/3gkJGYF79GiRm24SeeABkfh4kdKlM4L2k0+KtGpl/3n4C0I4AAQX6rX/IoTDTxG6gUC8gq9rWOta1jffXNxn43+CNISnp6fLmjVrJD4+XtatWyfJycly5swZCQ8Pl8jISOnYsaN06tRJunbtKmHWcAUAQOFRr4suSEM4Ndv/ELqBQHPPPSKTJ4ts2kSLticEeAhPSUmRKVOmyLRp0yQ1NTXP7SMiIiQ2Ntbc6urfCgAoHOq15wV4CKdm+y9CNxBoLrkkY5I0XdJElwWDZwVICD979qw8//zzMmHCBNOiXVDaAh4XFyePPvqolCzJQhgAUGDUa/sFSAinZvs/QjcQSM6fF6lYUaRlS5EffyzuswkOfhjCk5KSZMiQIZKg4///UiIkRAY0by79mjaV9nXqSFT16lKmZEk5efasJB08KBv27JGlW7fKl1u2yDmHw/m86OhomTNnjkRFRXn1bwAAv0a9Lh5+GMLd1uwSJWTgpZdKTLdu0qFlS2nWsKGUKVVKTp4+Lb/t3CnrN2+WJatXy8Jvv5VzOoHuX6jZxYfQDQBBFMITExMlJiZGDhw4YH4ODQmRu7t2lbu7dZM6esEmD3uOHZM3V6+Wt9askfN/he+aNWvK4sWLpZ0uVQcAgL/w8RCerWaHhsqom282tzo1a+b5/D3798vr778vb86ZI+f1Qg81u9gQugEgSEK4Xi3v3r27s3hHVasm/xk8WKIjIwu8r/jkZBk5b54k6VJ0IlKjRg1ZtWoVLd4AAP/lQyE8W81u0ECmjR8vndq0KfC+fvz5Z4kdN06Sfv/d/EzN9j5CNwAEQQjXmU67devm7J7WOTJSPh46VCqXKVPoPyXt5Em5btYsiU9JMT/r7OarV69mjDcAIDAUUwjPWrMvvugi+d9rr0nlChUK+5fIkWPH5G/33WcCuKJmexehGwCCIIRPnDhRxo4d62zhXnLHHUUK3K7BO2b6dGeLtx5nzJgxRd4vAADBGsIz1ewGDWTZO+9IlXwMActP8O5z223OFm9qtvcQugEgwEO4LjHSuHFjM0u5juFe8o9/FKpLeW5dzfu//bYZ462zmm/fvp3lxAAAgc+GEJ6pZoeGyrL//rdQXcpzoi3dfW+/3YzxpmZ7T6gXjwUAyIsWZS3Ejz8usmiRSFqayPffizzzjEj//iJly2beXrt2v/++yIgRIjqDeL16IsOGiUyfLrJ1q4jDYdbhtpYF00nTPBm4VafISBnZtau5r8eZOnUq7zMAIPDVqSMyZIjIlCkiW7Zk1OTZs0ViY0WaNct+UX3VKm1eFomJEalSRaRHDxFt0V66VOTECbOZa83WCdM8GbhV5zZt5B49Z2q2V9HSDQAB3BKeXqeO1D98WFJPnTLLgv30z3/ma5bygko5elTa/vvfZjmxiIgI2bVrl4TpBQQAAIJVAVvC0zt1kvobN0rqiRNmWbDN8+fna5bygkrZt09aXXWVWU6Mmu0dtHQDQAC3hK/Zs8cEbqXrcNsRuFXdSpXM/lVqaqqsXbvWluMAABCoLeFrVq82gVvpOtx2BG5Vt1Yts39FzfYOQjcABHAIj3dpbe7XtKmtp9LXZf/x2hoPAADyHcJdK2eM1nYb9ftrWBg12zsI3QAQwCF83fXXO3/VXou9jdrXru28by1zAgAA8hfC1/3tb85fdWjZ0taXzXX/1Gz7EboBIIAl63iyv0RVr27rsZrVqHHhuMnJth4LAIBAk3z4sPN+s4YNbT1W80aNLhyXmm07QjcABDBrBlRVpmRJW49V2mX/rscFAAAFrNmlStn6kpUOD3d7XNiD0A0AAUzX4LScPHvW1mOdctm/63EBAEABa/bp07a+ZKdcgjY1236EbgAIYJEua3InHTxo67F+O3DA7XEBAEDeXGvnbzt32vqSbdmxw+1xYQ9CNwAEsI4dOzrvb3AZ322HDXv3Ou9HR0fbeiwAAAK5Zq/fvNnWY7nun5ptP0I3AASwTp06Oe8v3brV1mN97bJ/1+MCAIC8udbOJatX2/qSLV2zxu1xYQ9CNwAEsK5du0pERIS5/+WWLbLn2DFbjpNy9KjZv9LjdenSxZbjAAAQDDV74bffyp79+205Tsq+fWb/iprtHYRuAAhgYWFhMmLECHP/nMMhk226cj55zRqzfxUbG2uOCwAAClmzz52TN2bPtuXl0/3q/hU12ztCHI6/viUBAAJSSkqKNG7c2CwJEhoSIkv+8Q+J9uCkKfHJydL/7bflvMNhZkDdvn271K1b12P7BwAgKGt2aKgs++9/pVObNh7b/48//yx9b79dzp8/T832Ilq6ASDAaQCOi4sz9zUY3zVvnqSdPOmRfet+Rs6bZ/arxo0bR+AGAMATNfv8eRkxbpwc8dDQMN1P7LhxZr+Kmu09tHQDQBA4e/asGSuWkJBgfu4cGSkfDx0qlcuUKVLgvm7WLIlPSXFOxLJ69WopWbKkx84bAIBgr9kXX3SRzH31ValSsWKRAvff7rvPtHQrarZ30dINAEFAg/CcOXOkRo0a5ucfk5MlZvp0SUhOLnSXcn2+Fbhr1qwps2fPJnADAODhmv3DTz9Jn9tuk/i/AnNBadDW51uBm5rtfbR0A0AQSUxMlJiYGDlw4ID5Wcd4j+zaVe7u2lXqVqqUr1nKddK0t9ascXYp1+K9ZMkSadu2re3nDwBA0Nbs0FC5Z8gQGXXzzVK3Vq18zVKuk6a9OWeOs0s5Nbt4ELoBIMgkJSXJkCFDnN3WVImQEBnQvLn0bdpU2teuLc1q1JDSJUvKqbNn5bcDB2TD3r1mHW5dFsyapdzqnqYt3FFRUcX01wAAEGQ1u0QJGXjppdKva1fp0LKlNG/USEqHh8upM2dky44dsn7zZrMOty4LZs1SrqjZxYfQDQBBOl5s0qRJMn78eDNDakHpLOU6Acvo0aPpUg4AgI2o2f6P0A0AQb40ydSpU80tNTU1z+1r165t1vTUdURZFgwAAO+hZvsvQjcAQNLT02Xt2rUSHx9vurAlJyebFnBt0Y6MjJTo6GjTLa1Lly4SFhbGKwYAQDGhZvsfQjcAAAAAADZhyTAAAAAAAGxC6AYAAAAAwCaEbgAAAAAAbELoBgAAAADAJoRuAAAAAABsQugGAAAAAMAmhG4AAAAAAGxC6AYAAAAAwCaEbgAAAAAAbELoBgAAAADAJoRuAAAAAABsQugGAAAAAMAmhG4AAAAAAGxC6AYAAAAAwCaEbgAAAAAAbELoBgAAAADAJkERuh0Oh0yYMEG+++47W49z+vRpefTRR6VOnTpSpkwZ6dKliyxZssTWYwJAcX72HT9+XMaNGydXXHGFVK1aVUJCQmTGjBm8KSg0ajaAYEO9DnxBEbp/++0386Vw7969th7n1ltvlZdfflmGDh0qr776qpQoUUIGDhwoK1eutPW4AFBcn30HDx40wX7z5s3Srl073ggUGTUbQLChXge+khIEEhISzL87duxo2zF++OEH+eCDD+SFF16Qhx9+2Dw2fPhwadOmjYwePVq+//57244NAMX12Ve7dm0T6iMiIiQ+Pl46d+7Mm4EioWYDCDbU68AX8C3dF198sWl5VlFRUabrY+XKlT1+nE8++cS0bMfGxjofK126tPzjH/+Q1atXy+7duz1+TAAo7s++UqVKmcANeAI1G0CwoV4Hh4Bv6dYx1k8++aQZbx0XF2cey/rFMz09XY4ePZqv/emYxdDQ7Ncq1q9fL82aNZOKFStm+x9JbdiwQerVq1eEvwQAfO+zD/AkajaAYEO9Dg4BH7qvvfZaefDBB6VPnz4ybNgwt9usWrVKevfuna/97dixQxo2bJjtce1eqd0ss7Ie27NnT4HPHQB8/bMP8CRqNoBgQ70ODgEfurUVZ9euXdK2bdsct9HJf/I7y3hO3ShPnjxpullmpV3Mrd8DQKB99gGeRM0GEGyo18Eh4EP3xo0bzb9z++JZpUoV6devX5GOo0uEaTfOrE6dOuX8PQAE2mcf4EnUbADBhnodHIImdOe2lM2ZM2fk8OHD+dpfjRo1zIRp7rqRp6SkZHvcWqpH1+4GgED77AM8iZoNINhQr4NDUIRuDcTVq1fPcRtdzquo4xrbt28vy5cvl2PHjmWaTG3t2rXO3wNAoH32AZ5EzQYQbKjXwSHgQ7eOaYyMjMx1G0+Ma7zuuuvkxRdflKlTpzrX6dbu5u+884506dKFmcsBBORnH+BJ1GwAwYZ6HRwCPnQ3atRIli1bJpMmTTJdvFu2bCnR0dEeH9eowfr666+Xxx9/XPbv3y9NmzaVmTNnys6dO+Xtt98u4l8BAL752afeeOMNSUtLc67SMH/+fElOTjb37733XqlUqRJvH3zqv1tqNgBfQb0OEo4Al5KS4rj88ssd5cuXd+if+9prr9l2rJMnTzoefvhhR0REhKNUqVKOzp07O7766ivbjgcAvvDZ16BBA3MMd7cdO3bwJiHfqNkAgg31OjiE6D+KO/gDAAAAABCIQov7BAAAAAAACFSEbgAAAAAAbELoBgAAAADAJoRuAAAAAABsQugGAAAAAMAmhG4AAAAAAGxC6AYAAAAAwCaEbgAAAAAAbELoBgAAAADAJoRuAAAAAABsQugGAAAAAMAmhG4AAAAAAGxC6AYAAAAAQOzx/xChzoqJRsf1AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Single-step binomial tree visualization (stock + option payoff tree)\n", "import matplotlib.pyplot as plt\n", "\n", "fig, (ax_stock, ax_opt) = plt.subplots(1, 2, figsize=(10, 3.5))\n", "\n", "# Shared node positions\n", "t0_x, t0_y = 0, 0.5\n", "t1_u_x, t1_u_y = 1, 0.75\n", "t1_d_x, t1_d_y = 1, 0.25\n", "node_size = 400\n", "\n", "# -------- Left panel: stock tree --------\n", "ax_stock.plot([t0_x, t1_u_x], [t0_y, t1_u_y], 'b-', lw=2, label='Up move')\n", "ax_stock.plot([t0_x, t1_d_x], [t0_y, t1_d_y], 'r-', lw=2, label='Down move')\n", "ax_stock.scatter([t0_x], [t0_y], s=node_size, c='lightblue', edgecolors='black', zorder=5, linewidths=2)\n", "ax_stock.scatter([t1_u_x], [t1_u_y], s=node_size, c='lightgreen', edgecolors='black', zorder=5, linewidths=2)\n", "ax_stock.scatter([t1_d_x], [t1_d_y], s=node_size, c='lightcoral', edgecolors='black', zorder=5, linewidths=2)\n", "ax_stock.text(t0_x, t0_y + 0.12, r'$S$', fontsize=18, ha='center', va='center', fontweight='bold')\n", "ax_stock.text(t1_u_x, t1_u_y + 0.12, r'$S_u$', fontsize=18, ha='center', va='center', fontweight='bold')\n", "ax_stock.text(t1_d_x, t1_d_y + 0.12, r'$S_d$', fontsize=18, ha='center', va='center', fontweight='bold')\n", "ax_stock.text(0.5, 0.65, r'$p$', fontsize=14, ha='center', va='bottom', color='blue')\n", "ax_stock.text(0.5, 0.35, r'$1-p$', fontsize=14, ha='center', va='top', color='red')\n", "ax_stock.text(t0_x, 0.15, r'$t=0$', fontsize=12, ha='center', va='top')\n", "ax_stock.text(t1_u_x, 0.15, r'$t=1$', fontsize=12, ha='center', va='top')\n", "ax_stock.set_xlim(-0.2, 1.3)\n", "ax_stock.set_ylim(0.2, 0.9)\n", "ax_stock.set_aspect('equal')\n", "ax_stock.axis('off')\n", "ax_stock.set_title('Stock States', fontsize=14, fontweight='bold', pad=12)\n", "\n", "# -------- Right panel: option value tree --------\n", "ax_opt.plot([t0_x, t1_u_x], [t0_y, t1_u_y], 'b-', lw=2)\n", "ax_opt.plot([t0_x, t1_d_x], [t0_y, t1_d_y], 'r-', lw=2)\n", "ax_opt.scatter([t0_x], [t0_y], s=node_size, c='#d9d2e9', edgecolors='black', zorder=5, linewidths=2)\n", "ax_opt.scatter([t1_u_x], [t1_u_y], s=node_size, c='#b6d7a8', edgecolors='black', zorder=5, linewidths=2)\n", "ax_opt.scatter([t1_d_x], [t1_d_y], s=node_size, c='#f4cccc', edgecolors='black', zorder=5, linewidths=2)\n", "ax_opt.text(t0_x, t0_y + 0.12, r'$N$', fontsize=18, ha='center', va='center', fontweight='bold')\n", "ax_opt.text(t1_u_x, t1_u_y + 0.12, r'$N_u$', fontsize=18, ha='center', va='center', fontweight='bold')\n", "ax_opt.text(t1_d_x, t1_d_y + 0.12, r'$N_d$', fontsize=18, ha='center', va='center', fontweight='bold')\n", "ax_opt.text(0.5, 0.65, r'$p$', fontsize=14, ha='center', va='bottom', color='blue')\n", "ax_opt.text(0.5, 0.35, r'$1-p$', fontsize=14, ha='center', va='top', color='red')\n", "ax_opt.text(t0_x, 0.15, r'$t=0$', fontsize=12, ha='center', va='top')\n", "ax_opt.text(t1_u_x, 0.15, r'$t=1$', fontsize=12, ha='center', va='top')\n", "ax_opt.set_xlim(-0.2, 1.3)\n", "ax_opt.set_ylim(0.2, 0.9)\n", "ax_opt.set_aspect('equal')\n", "ax_opt.axis('off')\n", "ax_opt.set_title('Numeraire Asset Values', fontsize=14, fontweight='bold', pad=12)\n", "\n", "# fig.suptitle('One-Step Binomial Trees', fontsize=16, fontweight='bold', y=1.02)\n", "plt.tight_layout()\n", "plt.show()\n" ] }, { "cell_type": "markdown", "id": "bae37917", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## BOPM With Numeraire Asset (Cont.)\n", "\n", "* If the MMA is replaced by a numeraire asset, the portfolio set up at $t=0$: \n", " * Hold $h$ share of the stock at $S$\n", " * Hold $k$ units of the numeraire asset at $N$\n", "* Equate the portfolio value and option price at $t=1$ in both states:\n", "\\begin{align*}\n", "hS_u + kN_u &= C_u\\\\\n", "hS_d + kN_d &= C_d\n", "\\end{align*}\n", "* Initial portfolio value is $h S + k N$: \n", "$$\n", "C = N\\left[\\underbrace{\\color{lightgray}\\left(\\frac{SN_uN_d - S_dNN_u}{S_u NN_d - S_d NN_u}\\right)}_{p^N} \\frac{C_u}{N_u} + \\underbrace{\\color{lightgray}\\left(\\frac{-SN_uN_d + S_uNN_d}{S_u NN_d - S_d NN_u}\\right)}_{1-p^N} \\frac{C_d}{N_d} \\right] = N_0E^N[N_T^{-1} X]\n", "$$" ] }, { "cell_type": "markdown", "id": "9df91bab", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Swaption Pricing " ] }, { "cell_type": "code", "execution_count": 9, "id": "d48e30a2", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def plot_swaption_timeline():\n", "\n", " import numpy as np\n", " import matplotlib.pyplot as plt\n", "\n", " fig, ax = plt.subplots(figsize=(11, 2.5))\n", "\n", " # Timeline coordinates\n", " x_t = 0.0\n", " timeline_x = [3.0, 4.0, 5.0, 6.0, 8.0] # T0, T1, T2, T3, TN\n", " labels = [r\"$T = T_0$\", r\"$T_1$\", r\"$T_2$\", r\"$T_3$\", r\"$T_N$\"]\n", "\n", " # Draw main timeline with arrowhead at the end\n", " ax.annotate(\"\", xy=(8.7, 0), xytext=(-0.4, 0),\n", " arrowprops=dict(arrowstyle=\"->\", color=\"black\", lw=2))\n", " ax.text(8.75, 0.12, r\"$t$\", ha=\"left\", va=\"center\", fontsize=14)\n", "\n", " # Mark today 0\n", " ax.vlines(x_t, -0.12, 0.12, color=\"black\", linewidth=2)\n", " ax.text(x_t, -0.22, r\"$0$\", ha=\"center\", va=\"top\", fontsize=14)\n", "\n", " # Helper to draw a wiggly (floating-leg) arrow\n", " def draw_wiggly_arrow(ax, x, y0=0.05, y1=0.65, amp=0.05, waves=3.5, color=\"#1f77b4\", lw=2):\n", " y = np.linspace(y0, y1, 180)\n", " phase = 2 * np.pi * waves * (y - y0) / (y1 - y0)\n", " taper = np.linspace(1.0, 0.0, y.size)\n", " x_wave = x + amp * np.sin(phase) * taper\n", " ax.plot(x_wave, y, color=color, linewidth=lw)\n", " ax.annotate(\n", " \"\",\n", " xy=(x, y1),\n", " xytext=(x, y1 - 0.08),\n", " arrowprops=dict(arrowstyle=\"->\", color=color, lw=lw),\n", " )\n", "\n", " # Draw all timeline marks and labels\n", " for x, lab in zip(timeline_x, labels):\n", " ax.vlines(x, -0.12, 0.12, color=\"black\", linewidth=2)\n", " ax.text(x, -0.22, lab, ha=\"center\", va=\"top\", fontsize=14)\n", "\n", " # Add accrual fractions between T0-T1, T1-T2, T2-T3\n", " tau_midpoints = [3.5, 4.5, 5.5]\n", " tau_labels = [r\"$\\tau_0$\", r\"$\\tau_1$\", r\"$\\tau_2$\"]\n", " for x_tau, tau_lab in zip(tau_midpoints, tau_labels):\n", " ax.text(x_tau, 0.16, tau_lab, ha=\"center\", va=\"center\", fontsize=13, color=\"dimgray\")\n", "\n", " # No payments at T0; payments start from T1\n", " payment_dates = timeline_x[1:]\n", " for x in payment_dates:\n", " draw_wiggly_arrow(ax, x)\n", " ax.annotate(\n", " \"\",\n", " xy=(x, -0.65),\n", " xytext=(x, -0.05),\n", " arrowprops=dict(arrowstyle=\"->\", color=\"#d62728\", lw=2),\n", " )\n", "\n", " # Show omitted intermediate payment dates between T3 and TN\n", " ax.text(7.0, 0.40, r\"$\\cdots$\", color=\"#1f77b4\", fontsize=20, ha=\"center\", va=\"center\")\n", " ax.text(7.0, -0.40, r\"$\\cdots$\", color=\"#d62728\", fontsize=20, ha=\"center\", va=\"center\")\n", "\n", " # Legend-like labels\n", " ax.text(8.35, 0.80, \"Floating leg\", color=\"#1f77b4\", ha=\"right\", fontsize=12)\n", " ax.text(8.35, -0.80, \"Fixed leg\", color=\"#d62728\", ha=\"right\", fontsize=12)\n", "\n", " ax.set_xlim(-0.4, 8.8)\n", " ax.set_ylim(-1.15, 1.15)\n", " ax.axis(\"off\")\n", " # ax.set_title(\"Swaption Cashflow Timeline\", fontsize=16, pad=10)\n", "\n", " plt.show()\n", "\n", "plot_swaption_timeline()\n" ] }, { "cell_type": "markdown", "id": "164d0be6", "metadata": {}, "source": [ "\\begin{align*}\n", "\\text{Time-$t$ Forward Swap NPV} &= \\sum_{n=0}^{N-1}\\tau_n P(t, T_{n+1})({\\color{darkcyan}L(t, T_n, T_{n+1}) \\color{red}- K})\\\\\n", "&= \\underbrace{\\left(\\sum_{n=0}^{N-1}\\tau_n P(t, T_{n+1})\\right)}_{A(t)}\\left(\\underbrace{\\frac{\\sum_{n=0}^{N-1}\\tau_n P(t, T_{n+1})L(t, T_n, T_{n+1})}{\\sum_{n=0}^{N-1}\\tau_n P(t, T_{n+1})}}_{S(t)}- K\\right)\n", "\\end{align*}" ] }, { "cell_type": "markdown", "id": "c262da5c", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Swaption Pricing (Cont.)\n", "\n", "* Step 1: Change numeraire to the annuity\n", "\\begin{align*}\n", "\\text{Payer Swaption NPV } &= M_0E^M[M_T^{-1} {\\color{lightgray}(A_T (S_T - K))^+}]\\\\\n", "&= A_0E^A[A_T^{-1} {\\color{lightgray}(A_T (S_T - K))^+}]\\\\\n", "&= A_0E^A[(S_T - K)^+]\n", "\\end{align*}" ] }, { "cell_type": "markdown", "id": "aac19684", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Step 2: Make assumption about $S_t$ dynamics **under the annuity measure**, say to follow SABR\n", "\\begin{align*}\n", "\\begin{cases}\n", "dS_t = \\alpha_tS_t^{\\beta}\\,dW_t^A\\\\\n", "d\\alpha_t = \\nu \\alpha_t\\,dZ_t^A, \\qquad \\alpha_0 = \\alpha\\\\\n", "dW_t^AdZ_t^A = \\rho dt\n", "\\end{cases}\n", "\\end{align*}\n", "The assumption only gives us $E^A[(S_T - K)^+]$. We still need to get $A_0$ from today's curve" ] }, { "cell_type": "markdown", "id": "871bfe4c", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## CMS Spread Option Pricing" ] }, { "cell_type": "code", "execution_count": 10, "id": "8cf0e3b8", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def plot_cms_timeline(cashflow_text=r\"$(S_{\\text{10Y}}(T) - S_{\\text{2Y}}(T) - K)^+$\", T_text=r\"$T$\", direction=1, figsize=(8, 2.5)):\n", " import matplotlib.pyplot as plt\n", " \n", " fig, ax = plt.subplots(figsize=figsize)\n", "\n", " # Time axis\n", " min_t, max_t = 0, 10\n", " \n", " # Draw main timeline with arrowhead at the end\n", " ax.annotate(\"\", xy=(max_t + 0.5, 0), xytext=(-0.4, 0),\n", " arrowprops=dict(arrowstyle=\"->\", color=\"black\", lw=2))\n", " ax.text(max_t + 0.55, 0.12, r\"$t$\", ha=\"left\", va=\"center\", fontsize=14)\n", "\n", " # Markers for t=0, T, T_p\n", " T_val = 6\n", " T_p = 8\n", " \n", " ax.vlines(0, -0.07, 0.07, color=\"black\", linewidth=2)\n", " ax.text(0, direction*(-0.22), \"$0$\", ha='center', va=\"top\", fontsize=14)\n", "\n", " ax.vlines(T_val, -0.07, 0.07, color=\"black\", linewidth=2)\n", " ax.text(T_val, direction*(-0.22), T_text, ha='center', va=\"top\", fontsize=14)\n", "\n", " ax.vlines(T_p, -0.07, 0.07, color=\"black\", linewidth=2)\n", " ax.text(T_p, direction*(-0.22), \"$T_p$\", ha='center', va=\"top\", fontsize=14)\n", "\n", " # Helper to draw a wiggly (floating-leg) arrow\n", " def draw_wiggly_arrow(ax, x, y0=0.0, y1=0.5, amp=0.15, waves=3.5, color=\"darkcyan\", lw=2.5):\n", " import numpy as np\n", " y = np.linspace(y0, y1, 180)\n", " phase = 2 * np.pi * waves * (y - y0) / (y1 - y0)\n", " taper = np.linspace(1.0, 0.0, y.size)\n", " x_wave = x + amp * np.sin(phase) * taper\n", " ax.plot(x_wave, y, color=color, linewidth=lw)\n", " ax.annotate(\n", " \"\",\n", " xy=(x, y1),\n", " xytext=(x, y1 - np.sign(y1 - y0) * 0.08),\n", " arrowprops=dict(arrowstyle=\"->\", color=color, lw=lw),\n", " )\n", "\n", " # Drawing the cashflow\n", " cashflow_y = direction * 0.5\n", " draw_wiggly_arrow(ax, T_p, y0=0, y1=cashflow_y, amp=0.15, waves=3.5, color=\"darkcyan\", lw=2.5)\n", " \n", " ax.text(T_p, cashflow_y + direction * 0.2, cashflow_text, \n", " ha='center', va='bottom', fontsize=12, color=\"darkcyan\")\n", " \n", " if direction == 1:\n", " ax.set_ylim(-0.4, 1)\n", " else:\n", " ax.set_ylim(-1, 0.4)\n", " ax.set_xlim(-0.5, max_t + 1)\n", " ax.axis(\"off\")\n", "\n", " plt.show()\n", "\n", "plot_cms_timeline()" ] }, { "cell_type": "markdown", "id": "9e916d72", "metadata": {}, "source": [ "* All we need is a distribution $\\color{red}f_{S_{\\text{10Y}}, S_{\\text{2Y}}}(s_1, s_2)$: \n", "\\begin{align*}\n", "\\text{Cash Flow NPV} &= P(0, T_p) E^{T_p}[(S_{\\text{10Y}}(T) - S_{\\text{2Y}}(T) - K)^+]\\\\\n", "&= P(0, T_p) \\int\\int(s_1 - s_2 - K)^+ {\\color{red}f_{S_{\\text{10Y}}, S_{\\text{2Y}}}(s_1, s_2)}\\,ds_1ds_2\n", "\\end{align*}\n", "* If the joint distribution is known in closed form, NPV can be found by numerical integration" ] }, { "cell_type": "markdown", "id": "2a58fe7a", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Delta Hedging CMS Spread Option\n", "\n", "* Once we can find NPV $V$, the spread Delta is the directional derivative of $V$ along $\\vec u = \\frac{1}{\\sqrt{2}}(1, -1)$: \n", "$$\n", "\\frac{\\partial V}{\\partial (S_1 - S_2)} = \\nabla V \\cdot u = \\frac{\\Delta_1 - \\Delta_2}{\\sqrt{2}}, \n", "$$\n", "where the gradient is \n", "$$\n", "\\nabla V = \\left( \\frac{\\partial V}{\\partial S_1}, \\frac{\\partial V}{\\partial S_2} \\right) = (\\Delta_1, \\Delta_2), \n", "$$\n", "the single rate Deltas\n" ] }, { "cell_type": "markdown", "id": "3080f3ce", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Copula\n", "\n", "* While $f_{S_{\\text{10Y}}, S_{\\text{2Y}}}(s_1, s_2)$ is unknown, its marginal distributions $f_{S_{\\text{10Y}}}(s)$ and $f_{S_{\\text{2Y}}}(s)$ are known (more on this later)\n", "* When modeling a joint distribution, copula lets you specify the marginal distributions, while leaving parameters for correlation control\n" ] }, { "cell_type": "markdown", "id": "869d7aa9", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "\n", "* Example with marginal distributions $\\chi^2(3)$ and $\\exp(1)$: " ] }, { "cell_type": "code", "execution_count": 11, "id": "97c7d408", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from scipy.stats import norm, multivariate_normal, chi2, expon\n", "from pandas import DataFrame\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import seaborn as sns\n", "\n", "def plot_data_side_by_side(data1, data2, title1, title2):\n", " '''Plot two joint distributions side-by-side using nested subgridspec to emulate jointplots closely'''\n", " fig = plt.figure(figsize=(8, 3.5))\n", " outer_gs = fig.add_gridspec(1, 2, wspace=0.35)\n", "\n", " # --- Panel 1 ---\n", " gs1 = outer_gs[0].subgridspec(5, 5, wspace=0.3, hspace=0.3)\n", " ax1 = fig.add_subplot(gs1[1:5, 0:4])\n", " ax1_x = fig.add_subplot(gs1[0, 0:4], sharex=ax1)\n", " ax1_y = fig.add_subplot(gs1[1:5, 4], sharey=ax1)\n", " ax1_x.axis('off')\n", " ax1_y.axis('off')\n", "\n", " sns.kdeplot(x='x', y='y', data=data1, ax=ax1, fill=True, cmap='Blues')\n", " sns.kdeplot(x=data1['x'], ax=ax1_x, fill=True, color='tab:blue')\n", " sns.kdeplot(y=data1['y'], ax=ax1_y, fill=True, color='tab:blue')\n", " ax1_x.set_title(title1, pad=10)\n", "\n", " # --- Panel 2 ---\n", " gs2 = outer_gs[1].subgridspec(5, 5, wspace=0.3, hspace=0.3)\n", " ax2 = fig.add_subplot(gs2[1:5, 0:4], sharex=ax1, sharey=ax1)\n", " ax2_x = fig.add_subplot(gs2[0, 0:4], sharex=ax2)\n", " ax2_y = fig.add_subplot(gs2[1:5, 4], sharey=ax2)\n", " ax2_x.axis('off')\n", " ax2_y.axis('off')\n", "\n", " sns.kdeplot(x='x', y='y', data=data2, ax=ax2, fill=True, cmap='Reds')\n", " sns.kdeplot(x=data2['x'], ax=ax2_x, fill=True, color='tab:red')\n", " sns.kdeplot(y=data2['y'], ax=ax2_y, fill=True, color='tab:red')\n", " ax2_x.set_title(title2, pad=10)\n", "\n", " # Remove extra ticks\n", " for ax in [ax1, ax2]:\n", " ax.tick_params(top=False, right=False)\n", "\n", " # Set explicit limits with some margin\n", " ax1.set_xlim(-2, 18.0)\n", " ax1.set_ylim(-1, 6)\n", "\n", " import warnings\n", " with warnings.catch_warnings():\n", " warnings.simplefilter(\"ignore\", category=UserWarning)\n", " plt.tight_layout()\n", " \n", " plt.show()\n", "\n", "\n", "rho1 = -0.8\n", "rho2 = 0.8\n", "n = 2000\n", "\n", "np.random.seed(0)\n", "# First dataset with rho = -0.8\n", "data1 = DataFrame(multivariate_normal(cov=[[1.0, rho1], [rho1, 1.0]]).rvs(n), columns=['x', 'y'])\n", "data1['x'] = chi2(df=3).ppf(norm.cdf(data1['x']))\n", "data1['y'] = expon.ppf(norm.cdf(data1['y']))\n", "\n", "# Second dataset with rho = +0.8\n", "data2 = DataFrame(multivariate_normal(cov=[[1.0, rho2], [rho2, 1.0]]).rvs(n), columns=['x', 'y'])\n", "data2['x'] = chi2(df=3).ppf(norm.cdf(data2['x']))\n", "data2['y'] = expon.ppf(norm.cdf(data2['y']))\n", "\n", "plot_data_side_by_side(\n", " data1, data2, \n", " title1=rf'Gauss Copula $\\rho = {rho1}$', \n", " title2=rf'Gauss Copula $\\rho = +{rho2}$'\n", ")" ] }, { "cell_type": "markdown", "id": "72ed5a19", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Gauss Copula\n", "\n", "* Defined as\n", "$$\n", "C_\\rho(u, v) = N_\\rho(N^{-1}(u), N^{-1}(v))\n", "$$\n", "* $N(x)$ is the standard normal CDF, and $N^{-1}(u)$ its inverse function\n", "* $N_\\rho(x, y)$ is the bivariate normal CDF with covariance matrix\n", "$$\n", "\\begin{pmatrix}\n", "1 & \\rho\\\\\n", "\\rho & 1\n", "\\end{pmatrix}\n", "$$" ] }, { "cell_type": "markdown", "id": "3267a797", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "\n", "* How to use: It can be shown that the CDF function \n", "$$\n", "F_{X, Y}(x, y) = C_{\\color{red}\\rho}({\\color{dodgerblue}F_X(x), F_Y(y)})\n", "$$\n", "has marginal CDFs $F_X(y)$ and $F_Y(y)$\n", "* Copula lets you specify the marginal distributions, while leaving parameters for correlation control, which we will calibrate to the market" ] }, { "cell_type": "markdown", "id": "bd128b93", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## What About Marginal Distributions? \n", "\n", "* We need CMS rate distribution in the $T_p$ forward measure, but we only have it in the annuity measure (from SABR), there needs to be an adjustment\n", "* Let's just look at one single CMS rate: Why is there an adjustment? " ] }, { "cell_type": "code", "execution_count": 12, "id": "65e9d0b9", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_cms_timeline(cashflow_text=r\"$S_{\\text{10Y}}(T)$\", T_text=r\"$T=1Y$\", direction=-1)" ] }, { "cell_type": "markdown", "id": "68a3d01a", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## CMS Convexity Adjustment: The Intuition\n", "\n", "* If you are obligated to pay $S_{\\text{10Y}}$, you'd natually hedge the obligation with a 10Y payer swap\n", "* At $t=0$, set up the hedged portfolio\n", "$$\n", "\\underbrace{-P(0, T_p) S_{\\text{10Y}}(0)}_{\\text{CMS}} + h \\underbrace{A(0) S_{\\text{10Y}}(0)}_{\\text{Vanilla Swap}}, \\qquad h=\\frac{P(0, T_p)}{A(0)}\n", "$$ \n", "* **When rates rise**\n", " * The discount factor $P(0, T_p)$ drops but $A(0)$ drops more, as it has a longer duration\n", " * To rebalance, **buy more swap**\n", "* **When rates fall**\n", " * The discount factor $P(0, T_p)$ goes up but $A(0)$ goes up more\n", " * **Sell some swap**\n" ] }, { "cell_type": "markdown", "id": "b31aaf2b", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* The adjustment is the cost constantly buy payer swaps at high rates and sell at low\n" ] }, { "cell_type": "markdown", "id": "a513ca95", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Convexity Adjusted CMS Rate" ] }, { "cell_type": "markdown", "id": "1f66e059", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "* The formula: \n", "$$\n", "E^{T_p}[S(T)] = \\frac{A(0)}{P(0, T_p)} E^A\\left[\\frac{P(T, T_p)}{A(T)} S(T)\\right]\n", "$$" ] }, { "cell_type": "markdown", "id": "73228dc8", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "* Recall the change of numeraire formula: \n", "$$\n", "M_0 E^M [ \\underbrace{M_T^{-1} X_T}_{Y} ] = N_0 E^N \\left[ N_T^{-1} X_T \\right]\n", "$$" ] }, { "cell_type": "markdown", "id": "2b7b832c", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "* Set $Y = M_T^{-1} X_T$ and divide through by $M_0$: \n", "$$\n", "E^M \\left[ Y \\right] = \\frac{N_0}{M_0} E^N \\left[ \\frac{M_T}{N_T} Y \\right]\n", "$$\n" ] }, { "cell_type": "markdown", "id": "6e7f2891", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Convexity Adjusted CMS Rate Distribution\n", "\n", "* Convexity Adjusted CMS Rate: \n", "$$\n", "E^{T_p}[S(T)] = \\frac{A(0)}{P(0, T_p)} E^A\\left[{\\color{dodgerblue}\\frac{P(T, T_p)}{A(T)}} S(T)\\right]\n", "$$\n", "* Write $P(T, T_p)/A(T)$ as a function of $S(T)$, known as the **annuity mapping function**: \n", "$$\n", "{\\color{dodgerblue}\\alpha(S(T)) = \\frac{P(T, T_p)}{A(T)}}\n", "$$\n", "and thus \n", "$$\n", "E^{T_p}[S(T)] = \\frac{A(0)}{P(0, T_p)} E^A\\left[{\\color{dodgerblue}\\alpha(S(T))} S(T)\\right]\n", "$$\n" ] }, { "cell_type": "markdown", "id": "5406c6ce", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "* Convexity Adjusted CMS Rate Distribution: \n", "$$\n", "f^{T_p}_{S(T)}(s) = \\frac{A(0)}{P(0, T_p)} {\\color{dodgerblue}\\alpha(s)} \\underbrace{f^{A}_{S(T)}(s)}_{\\text{from SABR}}\n", "$$" ] }, { "cell_type": "markdown", "id": "018f582c", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Delta-Neutral Break\n", "\n", "### No directional movement for a few minutes" ] }, { "cell_type": "markdown", "id": "e996fd1d", "metadata": {}, "source": [ "## Agenda\n", "\n", "### Part II: Term Structure Models\n", "\n", "* HJM Framework, Forward Rate Vol\n", "* Hull-White Model\n", "* Cheyette" ] }, { "cell_type": "markdown", "id": "46c006a0-f447-4ad4-867b-eeceb4fc5bd0", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Term Structure Models\n", "\n", "* In a rates exotics desk, we manage the joint movement of the entire curve\n", "* **The Challenge:** We need one single model to parameterize the first 4 moments of distribution not just at one point, but the entire yield curve" ] }, { "cell_type": "code", "execution_count": 13, "id": "e789b2f9", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def plot_forward_curve_with_vols(figsize=(6, 3.3)):\n", " import numpy as np\n", " import matplotlib.pyplot as plt\n", " from scipy.interpolate import CubicSpline\n", "\n", " fwd_knots = np.array([0.0, 0.5, 1.5, 2.5, 4.0, 6.0, 8.5, 15.0, 25.0, 30.0])\n", " fwd_vals = np.array([0.0355, 0.0365, 0.0375, 0.04055, 0.04255, 0.0449, 0.04773, 0.0544, 0.0494, 0.0490])\n", " cs = CubicSpline(fwd_knots, fwd_vals, bc_type='not-a-knot')\n", " maturity = np.linspace(0, 30, 1201)\n", " forward_curve = cs(maturity)\n", "\n", " fig, ax = plt.subplots(figsize=figsize)\n", " ax.plot(maturity, forward_curve, color='#8c2d04', linewidth=3)\n", "\n", " pillars = np.array([2, 5, 10, 20, 28], dtype=float)\n", " pillar_forwards = cs(pillars)\n", " vols = np.array([0.0030, 0.0042, 0.0035, 0.0028, 0.0023])\n", " width_scale = 1.3\n", "\n", " for pillar, center, vol in zip(pillars, pillar_forwards, vols):\n", " move = np.linspace(-3 * vol, 3 * vol, 250)\n", " density = np.exp(-0.5 * (move / vol) ** 2)\n", " density /= density.max()\n", " x_right = pillar + width_scale * density\n", " ax.fill_betweenx(center + move, pillar, x_right, color='#6baed6', alpha=0.45)\n", " ax.plot(x_right, center + move, color='#2171b5', linewidth=1.5)\n", " ax.scatter([pillar], [center], color='#8c2d04', s=28, zorder=3)\n", "\n", " ax.set_xlim(0, 31.5)\n", " ax.set_ylim(0.032, 0.0585)\n", " ax.set_xlabel('Term', fontsize=13)\n", " ax.set_ylabel('Interest Rate', fontsize=13)\n", " ax.grid(alpha=0.2)\n", " for spine in ['top', 'right']:\n", " ax.spines[spine].set_visible(False)\n", " plt.show()\n", "\n", "plot_forward_curve_with_vols()" ] }, { "cell_type": "markdown", "id": "62e33a9a-102e-49a9-bf15-d6708c02c32e", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Heath–Jarrow–Morton (HJM) Framework\n", "\n", "* Under the risk-neutral probability, **once forward rate vol is determined, so is its drift** \n", "* $f(t, T)$: Instantaneous forward rate for the reference period $[T, T+\\epsilon]$ observed at $t$\n", "* $\\sigma(t, T)$: Forward rate vol\n", "* ${\\color{lightgray}\\Sigma(t, T) = \\int_t^T\\sigma(t, u)\\,du: \\text{zero coupon bond vol}}$\n", "$$\n", "df(t, T) = {\\color{lightgray} \\sigma(t, T)\\Sigma(t, T)\\,dt} + \\sigma(t, T)\\,d\\widetilde W(t), \\qquad t" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_forward_curve_with_vols(figsize=(5, 1.5))\n" ] }, { "cell_type": "markdown", "id": "a02fbee6", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "* Think of a fixed $T$, say 10Y\n", "$$\n", "df_{\\text{10Y}}(t) = {\\color{lightgray} \\sigma_{\\text{10Y}}(t)\\Sigma_{\\text{10Y}}(t)\\,dt} + \\sigma_{\\text{10Y}}(t)\\,d\\widetilde W(t), \\qquad t<\\text{10Y}\n", "$$\n", " " ] }, { "cell_type": "markdown", "id": "ca4ca011", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## HJM Is Not Optional\n", "\n", "* **To guarantee no arbitrage**, any model for the instantaneous forward rate must have the drift term in the form as specified in the HJM framework" ] }, { "cell_type": "markdown", "id": "ddeb5b33", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* But if you don't model instantaneous forward rate, then HJM is irrelevant\n", " * An example is the LIBOR Market Model" ] }, { "cell_type": "markdown", "id": "680b6e8b", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* We only have to specify a $\\sigma(t, T)$ to obtain a concrete HJM model for pricing and hedging\n", "* So how can we specify a $\\sigma(t, T)$? Some properties: \n", " * Separable\n", " * Time stationary\n", " * Deterministic" ] }, { "cell_type": "markdown", "id": "be968090", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Separable Vol\n", "\n", "* A special class of HJM models where the volatility function is in the form \n", "$$\n", "\\sigma(t, T) = g(t)h(T)\n", "$$ \n", "* Why does it matter? " ] }, { "cell_type": "markdown", "id": "39d20fa6", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* **In an HJM model with separable vol, the forward rate is Markovian**\n", "* **Markov Process:** A random process's future state only depends on its current state, not the past\n", " * Markovian example: \n", " $$\n", " E[X_{t+1}|\\mathcal F_t] = E[X_{t+1}|X_t]\n", " $$\n", " * Non-Markovian example: \n", " $$\n", " E[X_{t+1}|\\mathcal F_t] = E[X_{t+1}~|~X_t, X_{t-1}, X_{t-2}]\n", " $$" ] }, { "cell_type": "markdown", "id": "7fb1cf34", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Non-Markovian rates are path-dependent: **dynamic hedging is infeasible**, pricing is computationally explosive, and rate predictability opens the door to statistical arbitrage" ] }, { "cell_type": "markdown", "id": "a2ebcf13", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Time Stationary Vol\n", "\n", "* If the forward rate vol is a function of $\\tau = (T-t)$, we say it's time stationary\n", "* Why does it matter? " ] }, { "cell_type": "markdown", "id": "04fd5466", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "\n", "* Today's 10Y forward rate vol is $\\sigma(0, 10)$\n", "* 1M from now, the same model gives the 10Y forward rate vol $\\sigma(\\frac{1}{12}, 10 + \\frac{1}{12})$\n", "* When $\\sigma(t, T)$ is time stationary, they are the same" ] }, { "cell_type": "markdown", "id": "7bbba14e", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* $\\tau = (T-t)$ is the term in a term structure model\n", "* Time stationary vol means the vol stays constant for the same term when time $t$ moves forward" ] }, { "cell_type": "markdown", "id": "edc1475a", "metadata": { "editable": true, "slideshow": { "slide_type": "fragment" }, "tags": [] }, "source": [ "* **Without further information, time stationary vol is a good assumption**" ] }, { "cell_type": "markdown", "id": "803eed3a", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Gaussian HJM Model\n", "\n", "* Assume that $\\sigma(t, T)$ is deterministic, giving normally distributed forward rates\n", "$$\n", "f(t, T) = {\\color{lightgray} f(0, T) + \\int_0^t\\sigma(s, T)\\Sigma(s, T)\\,ds} + \\int_0^t\\sigma(s, T)\\,d\\widetilde W(s), \\qquad twhere ${\\color{lightgray}x(0) = y(0) = 0,}$\n", "\\begin{align*}\n", "{\\color{lightgray}\n", "\\begin{cases}\n", "dx(t) = (y(t) - \\kappa x(t))dt + \\sigma d\\widetilde W(t)\\\\\n", "dy(t) = (\\sigma^2 - 2\\kappa y(t)) dt\n", "\\end{cases}. \n", "}\n", "\\end{align*}\n", "The ODE of ${\\color{lightgray}y(t)}$ can be solved explicitly to obtain\n", "$$\n", "{\\color{lightgray}y(t) = \\frac{\\sigma^2\\left(1-e^{-2\\kappa t}\\right)}{2\\kappa}, }\n", "$$\n", "and the state variable $x(t)$ is normally distributed. \n" ] }, { "cell_type": "markdown", "id": "6fce0f26", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Curve Movement in HW1F\n", "\n", "At $t=0$, tomorrow's curve movement is\n", "\\begin{align*}\n", "df(t, T) \\approx \\underbrace{\\frac{\\sigma^2(1-e^{-k\\tau})}{k} \\Delta t}_{\\color{dodgerblue}(1)} + \\underbrace{\\sigma e^{-k\\tau} \\widetilde W(\\Delta t)}_{\\color{red}(2)}\n", "\\end{align*}\n", "\n", "* ${\\color{red}(1)}$: Deterministic curve steepening\n", "* ${\\color{dodgerblue}(2)}$: Curve movement with random magnitude ($\\widetilde W(\\Delta t) = \\sqrt{\\Delta t}Z$ below)" ] }, { "cell_type": "code", "execution_count": null, "id": "e7210e9e", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "609e57f0ea424af2b0d7816cb768ad07", "version_major": 2, "version_minor": 0 }, "text/plain": [ "interactive(children=(FloatSlider(value=0.2, description='sigma', max=0.5, min=0.01, step=0.01), FloatSlider(v…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from ipywidgets import interact\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", "tau = np.linspace(0, 20, 1000)\n", "\n", "@interact(sigma=(0.01, 0.5, 0.01), k=(0.01, 1, 0.01), Z=(-3, 3, 0.1))\n", "def plot_curve_movement(sigma=0.2, k=0.4, Z=-1):\n", " s = sigma\n", " dt = 1/365\n", " \n", " drift = (s**2) * (1 - np.exp(-k * tau)) * dt / k\n", " diffusion = s * np.sqrt(dt) * np.exp(-k * tau) * Z\n", " total_movement = drift + diffusion\n", " \n", " fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(15, 3.5))\n", " \n", " ax1.plot(tau, drift, linewidth=2, color='darkcyan')\n", " ax1.set_title('(1) Deterministic Steepening', color='darkcyan')\n", " ax1.set_xlim(0, 20)\n", " ax1.set_ylim(-0.1, 0.1)\n", " ax1.grid(True, alpha=0.3)\n", " ax1.set_xlabel(r'$\\tau$')\n", " ax1.set_ylabel('Curve Movement')\n", " \n", " ax2.plot(tau, diffusion, linewidth=2, color='red')\n", " ax2.set_title('(2) Random Movement', color='red')\n", " ax2.set_xlim(0, 20)\n", " ax2.set_ylim(-0.1, 0.1)\n", " ax2.grid(True, alpha=0.3)\n", " ax2.set_xlabel(r'$\\tau$')\n", " \n", " ax3.plot(tau, total_movement, linewidth=2, color='blue')\n", " ax3.set_title('Total Curve Movement', color='blue')\n", " ax3.set_xlim(0, 20)\n", " ax3.set_ylim(-0.1, 0.1)\n", " ax3.grid(True, alpha=0.3)\n", " ax3.set_xlabel(r'$\\tau$')\n", " \n", " plt.tight_layout()\n", " plt.show()" ] }, { "cell_type": "markdown", "id": "b45b0405", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## HW2F and PCA\n", "\n", "* At $t=0$, tomorrow's curve movement is\n", "\\begin{align*}\n", "{\\small\n", "df(t, T) \\approx (\\text{Deterministic Term}) + \\underbrace{\\left(\\sigma_1 e^{-k_1\\tau} + \\rho\\sigma_2e^{-k_2\\tau}\\right) \\widetilde W_1(\\Delta t)}_{\\color{red}(1)} + \\underbrace{\\left(\\sigma_2\\sqrt{1-\\rho^2} e^{-k_2\\tau}\\right) \\widetilde W_2(\\Delta t)}_{\\color{dodgerblue}(2)}, \n", "}\n", "\\end{align*}\n", "where $\\widetilde W_1(\\Delta t) \\perp\\!\\!\\!\\perp \\widetilde W_2(\\Delta t)$. \n", "* ${\\color{red}(1)}$: Curve movement contributed by PC1\n", "* ${\\color{dodgerblue}(2)}$: Curve movement contributed by PC2\n" ] }, { "cell_type": "markdown", "id": "0a11d8d8", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Bond Reconstruction Formula\n", "\n", "* In the Hull-White model, the zero coupon bond (ZCB) price $P(t, T)$ is known in closed form in terms of the state variable(s)\n", "$$\n", "P(t, T) = P(t, T, x_t) {\\color{lightgray} = \\frac{P(0, T)}{P(0, t)} \\exp\\left(-G(t, T)x_t - \\frac{1}{2}G^2(t, T)y_t\\right), }\n", "$$\n", "where \n", "$$\n", "{\\color{lightgray} G(t, T) = \\frac{1-e^{k(T-t)}}{k}, \\qquad y_t = \\frac{\\sigma^2(1-e^{2kt})}{2k}}\n", "$$\n", "* Why is this useful? \n" ] }, { "cell_type": "markdown", "id": "6aca365b", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Many important quantities can be written in terms of ZCBs, including:\n", " * Forward rate $L(t, T, T+\\tau) = (P(t, T)/P(t, T+\\tau) - 1)/\\tau$\n", " * Swap rate, as it's a weighted average of forward rates. We denote this by $S(t, x_t)$\n", " * Annuity, as it's a basket of ZCBs. We denote this by $A(t, x_t)$" ] }, { "cell_type": "markdown", "id": "ca6d2b28", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Problem With HW\n", "\n", "* Despite all the benefits of the Hull-White model, it doesn't give us control over the 3rd and the 4th moments (IV skews and convexity)\n", "* $f(t, T)$ is normally distributed\n", "* The swap rate $S(t, x_t)$ is not, but there is no parameter for IV skew control" ] }, { "cell_type": "code", "execution_count": 16, "id": "7eadadfa", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_forward_curve_with_vols()" ] }, { "cell_type": "markdown", "id": "f9e2d416", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## From HW to Cheyette\n", "\n", "\\begin{align*}\n", "\\begin{cases}\n", "dx_t = (y_t - \\kappa x_t)dt + {\\color{red}\\sigma} d\\widetilde W_t\\\\\n", "dy_t = ({\\color{red}\\sigma}^2 - 2\\kappa y_t) dt\n", "\\end{cases}\n", "\\end{align*}" ] }, { "cell_type": "markdown", "id": "73750c89-3a9e-43d2-836a-0ce955f5b7d2", "metadata": {}, "source": [ "* HW: Constant $\\sigma$\n", "* Cheyette: $\\sigma(t, x_t, y_t) = a_0 + a_1 x_t$\n", "* Similar to the displaced lognormal model, there is now a **skew parameter** $a_1$" ] }, { "cell_type": "markdown", "id": "a42acfb2", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Since $\\sigma$ is random now, so is $y_t$\n" ] }, { "cell_type": "markdown", "id": "e2f5b742", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Bond reconstruction formula still holds but with random $y_t$: \n", "$$\n", "P(t, T) = P(t, T, x_t, y_t) {\\color{lightgray} = \\frac{P(0, T)}{P(0, t)} \\exp\\left(-G(t, T)x_t - \\frac{1}{2}G^2(t, T)y_t\\right), }\n", "$$\n", "where \n", "$$\n", "{\\color{lightgray} G(t, T) = \\frac{1-e^{k(T-t)}}{k}}\n", "$$" ] }, { "cell_type": "markdown", "id": "2293b711", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Cheyette Model With Stochastic Volatility\n", "\n", "* Extension to SV gives us a **vol of vol parameter** ${\\color{dodgerblue}\\nu}$ **to control the convexity of IV**\n", "\\begin{align*}\n", "\\begin{cases}\n", "\\color{lightgray}dx_t = (y_t - \\kappa x_t)dt + {\\color{black}\\sqrt{\\alpha_t}}\\sigma(t, x_t, y_t) d\\widetilde W_t\\\\\n", "\\color{lightgray}dy_t = ({\\color{black}\\alpha_t}\\sigma^2(t, x_t, y_t) - 2\\kappa y_t) dt\\\\\n", "d\\alpha_t = k(\\theta - \\alpha_t)\\,dt + {\\color{dodgerblue}\\nu}\\sqrt{\\alpha_t}\\,dZ_t\n", "\\end{cases}\n", "\\end{align*}" ] }, { "cell_type": "markdown", "id": "6bd2a938", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Appendix: Swaption Pricing in Cheyette\n", "\n", "* Swap rate is now $S(t, x_t, y_t)$, where $S(\\cdot, \\cdot, \\cdot)$ is a lengthy formula but in closed form\n", "* To find swaption NPV approximation, we find swap rate dynamics approximation: \n", "\\begin{align*}\n", "dS_t &= \\frac{\\partial S}{\\partial x}(t, x_t, y_t)\\,dx_t \\\\\n", "&= \\frac{\\partial S}{\\partial x}(t, x_t, y_t)\\sigma(t, x_t, y_t)\\,dW^A_t\n", "\\end{align*}" ] }, { "cell_type": "markdown", "id": "e7c6064c", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Replace $y_t$ by $\\color{red}\\bar y_t$, the deterministic function in HW: \n", "$$\n", "dS_t \\approx \\frac{\\partial S}{\\partial x}(t, x_t, {\\color{red}\\bar y_t})\\sigma(t, x_t, {\\color{red}\\bar y_t})\\,dW^A_t\n", "$$\n", "* The right hand side is in terms of $x_t$, not $S_t$, which is undesired" ] }, { "cell_type": "markdown", "id": "fbb2a879", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "$$\n", "dS_t \\approx \\frac{\\partial S}{\\partial x}(t, x_t, \\bar y_t)\\sigma(t, x_t, \\bar y_t)\\,dW^A_t\n", "$$\n" ] }, { "cell_type": "markdown", "id": "d0ecc3d0", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Expand $S(t, x, y)$ in $x$ to the first order and find the inverse function as an approximation of $x(t, S)$. Denote the inverse function by $\\xi(t, s)$. Next write\n", "$$\n", "dS_t \\approx \\underbrace{\\frac{\\partial S}{\\partial x}(t, \\xi(t, S_t), \\bar y_t)\\sigma(t, \\xi(t, S_t), \\bar y_t)}_{\\text{RHS vol}}\\,dW^A_t\n", "$$" ] }, { "cell_type": "markdown", "id": "2336b279", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Find first order approximation $\\text{RHS vol} \\approx a_0(t) + a_1(t) S_t$. Now we have a swap rate dynamics approximation which is displaced lognormal and can be used in pricing: \n", "$$\n", "dS_t \\approx (a_0(t) + a_1(t) S_t)\\,dW^A_t\n", "$$" ] }, { "cell_type": "code", "execution_count": 17, "id": "6ecaa631", "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "# import numpy as np\n", "# import matplotlib.pyplot as plt\n", "\n", "# fig, ax = plt.subplots(figsize=(7, 5))\n", "\n", "# # Use y = -T so the T-axis points downward on the page.\n", "# t_max = 10\n", "# T_max = 10\n", "\n", "# t = np.linspace(0, t_max, 400)\n", "# y_line = -t\n", "\n", "# # Shade the region below the line t = T in the fourth quadrant.\n", "# ax.fill_between(t, y_line, -T_max, color=\"#9ecae1\", alpha=0.6)\n", "# ax.plot(t, y_line, color=\"#08519c\", linewidth=2.5)\n", "\n", "# # Clean frame and draw custom axes.\n", "# for spine in ax.spines.values():\n", "# spine.set_visible(False)\n", "\n", "# ax.set_xlim(-0.5, t_max + 0.8)\n", "# ax.set_ylim(-T_max - 0.8, 0.8)\n", "# ax.set_xticks([])\n", "# ax.set_yticks([])\n", "\n", "# ax.annotate(\"\", xy=(t_max + 0.5, 0), xytext=(0, 0),\n", "# arrowprops=dict(arrowstyle=\"->\", linewidth=2, color=\"black\"))\n", "# ax.annotate(\"\", xy=(0, -T_max - 0.5), xytext=(0, 0),\n", "# arrowprops=dict(arrowstyle=\"->\", linewidth=2, color=\"black\"))\n", "\n", "# ax.text(t_max + 0.55, 0.15, r\"$t$\", fontsize=16)\n", "# ax.text(-0.35, -T_max - 0.55, r\"$T$\", fontsize=16)\n", "# ax.text(6.2, -5.3, r\"$t = T$\", color=\"#08519c\", fontsize=14)\n", "# ax.text(6.3, -8.8, \"HJM domain\", color=\"#08306b\", fontsize=13)\n", "\n", "# plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.3" } }, "nbformat": 4, "nbformat_minor": 5 }