Skip to content

Instantly share code, notes, and snippets.

@wpla
Last active March 7, 2020 01:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save wpla/435437ddc5bcb1f6bdcae274117725e7 to your computer and use it in GitHub Desktop.
Save wpla/435437ddc5bcb1f6bdcae274117725e7 to your computer and use it in GitHub Desktop.
Hull White
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Hull/White One-Factor-Model"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"%pylab inline\n",
"import pandas as pd\n",
"import scipy.stats"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Read yield curve"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>yield</th>\n",
" </tr>\n",
" <tr>\n",
" <th>t</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0.25</th>\n",
" <td>0.0020</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.50</th>\n",
" <td>0.0050</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.75</th>\n",
" <td>0.0070</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1.00</th>\n",
" <td>0.0110</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1.50</th>\n",
" <td>0.0150</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2.00</th>\n",
" <td>0.0180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3.00</th>\n",
" <td>0.0200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4.00</th>\n",
" <td>0.0220</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5.00</th>\n",
" <td>0.0250</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10.00</th>\n",
" <td>0.0288</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20.00</th>\n",
" <td>0.0310</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30.00</th>\n",
" <td>0.0340</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" yield\n",
"t \n",
"0.25 0.0020\n",
"0.50 0.0050\n",
"0.75 0.0070\n",
"1.00 0.0110\n",
"1.50 0.0150\n",
"2.00 0.0180\n",
"3.00 0.0200\n",
"4.00 0.0220\n",
"5.00 0.0250\n",
"10.00 0.0288\n",
"20.00 0.0310\n",
"30.00 0.0340"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y = pd.read_excel(\"M4L2 - yield curve.xlsx\", \"Tabelle1\", index_col=0)\n",
"y"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"Z = []\n",
"logZ = []\n",
"for t in y.index:\n",
" Z.append(exp(-y[\"yield\"][t]*t))\n",
" logZ.append(-y[\"yield\"][t]*t)\n",
"Z = pd.Series(Z, index=y.index)\n",
"logZ = pd.Series(logZ, index=y.index)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Model parameters"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# Model parameters\n",
"\n",
"a = 10 # Speed of reversion\n",
"c = 0.1 # Volatility\n",
"r = 0.03 # spot interest rates\n",
"\n",
"gamma = 1/a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Yield curve"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"ax.plot(y.index, y[\"yield\"], 'o-')\n",
"ax.set(xlabel='time (y)', ylabel='yield (%)',\n",
" title='Yield curve')\n",
"ax.grid()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def make_spline(x, a):\n",
" n = len(x) - 1\n",
" h = []\n",
" alpha = zeros(n)\n",
" for i in range(n):\n",
" h.append(x[i+1] - x[i])\n",
"\n",
" for i in range(1, n):\n",
" alpha[i] = 3 / h[i] * (a[i+1] - a[i]) - 3 / h[i-1] * (a[i] - a[i-1])\n",
"\n",
" l = zeros(n+1)\n",
" l[0] = 1\n",
" mu = zeros(n+1)\n",
" z = zeros(n+1)\n",
" for i in range(1, n):\n",
" l[i] = 2 * (x[i+1] - x[i-1]) - h[i-1] * mu[i-1]\n",
" mu[i] = h[i] / l[i]\n",
" z[i] = (alpha[i] - h[i-1] * z[i-1]) / l[i]\n",
"\n",
" l[n] = 1\n",
" z[n] = 0\n",
" b = zeros(n)\n",
" c = zeros(n+1)\n",
" d = zeros(n)\n",
"\n",
" for j in range(n-1, -1, -1):\n",
" c[j] = z[j] - mu[j] * c[j+1]\n",
" b[j] = (a[j+1] - a[j])/h[j] - h[j]*(c[j+1] + 2*c[j])/3\n",
" d[j] = (c[j+1] - c[j])/(3*h[j])\n",
" \n",
" def spline(t):\n",
" if t < x[0]:\n",
" t = x[0]\n",
" if t >= x[-1]:\n",
" t = x[-1]\n",
" for j in range(n):\n",
" if t >= x[j] and t <= x[j+1]:\n",
" s = a[j] + b[j]*(t-x[j]) + c[j]*(t - x[j])**2 + d[j]*(t - x[j])**3\n",
" s1 = b[j] + 2 * c[j] * (t - x[j]) + 3 * d[j] * (t - x[j])**2\n",
" s2 = 2 * c[j] + 6 * d[j] * (t - x[j])\n",
" return (s, s1, s2)\n",
" return None\n",
" return spline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Interpolate yield curve with cubic spline"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"yield_spline = make_spline(array(y.index), array(y[\"yield\"]))\n",
"\n",
"T = arange(y.index[0], y.index[-1], 0.1)\n",
"S = []\n",
"for t in T:\n",
" (s, s1, s2) = yield_spline(t)\n",
" S.append(s)\n",
" \n",
"fig, ax = plt.subplots()\n",
"ax.plot(y.index, y[\"yield\"], 'o', T, S)\n",
"ax.set(xlabel='time (y)', ylabel='yield (%)',\n",
" title='Yield curve (Spline interpolated)')\n",
"ax.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Zero coupon prices"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"ax.plot(y.index, Z, 'o-')\n",
"\n",
"ax.set(xlabel='time (y)', ylabel='Z',\n",
" title='zero coupon prices')\n",
"ax.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## calculate log(Z)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"ax.plot(y.index, logZ, 'o-')\n",
"\n",
"ax.set(xlabel='time (y)', ylabel='log(Z)',\n",
" title='log Z')\n",
"ax.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Interpolate log(Z) with cubic splines"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Z_spline = make_spline(array(y.index), array(Z))\n",
"logZ_spline = make_spline(array(y.index), array(logZ))\n",
"\n",
"T = arange(y.index[0], y.index[-1], 0.1)\n",
"S = []\n",
"S1 = []\n",
"S2 = []\n",
"for t in T:\n",
" (s, s1, s2) = logZ_spline(t)\n",
" S.append(s)\n",
" S1.append(s1)\n",
" S2.append(s2)\n",
" \n",
"fig, ax = plt.subplots()\n",
"ax.plot(y.index, logZ, 'o', T, S)\n",
"ax.set(xlabel='time (y)', ylabel='log Z',\n",
" title='log Z (Spline interpolated)')\n",
"ax.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Instantaneous forward rates"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"T = arange(y.index[0], y.index[-1], 0.01)\n",
"S1 = []\n",
"for t in T:\n",
" (s, s1, s2) = logZ_spline(t)\n",
" S1.append(-s1)\n",
" \n",
"fig, ax = plt.subplots()\n",
"ax.plot(T, S1, y.index, y[\"yield\"])\n",
"ax.set(xlabel='time (y)', ylabel='f',\n",
" title='Inst. forward rates')\n",
"ax.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Set model parameters\n",
"\n",
"Hull-White SDE for evolution of interest rates:\n",
"$$\n",
"\\mathrm d r = \\left(\\eta(t) - \\gamma r\\right)\\mathrm d t + c\\, \\mathrm d X\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Calculate $\\eta(t)$\n",
"\n",
"$$\n",
"\\eta^*(t) = - \\frac{\\partial^2}{\\partial t^2}\\operatorname{log}(Z_M(t^*; t)) - \\gamma\\frac{\\partial}{\\partial t}\\operatorname{log}(Z_M(t^*; t)) + \\frac{c^2}{2\\gamma}\\left(1-\\operatorname{e}^{-2\\gamma(t-t^*)}\\right)\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def eta(t):\n",
" (s, s1, s2) = logZ_spline(t)\n",
" return -s2 - gamma*s1 + c**2/(2*gamma)*(1-np.exp(-2*gamma*t))\n",
"\n",
"T = arange(y.index[0], y.index[-1], 0.1)\n",
"E = []\n",
"for t in T:\n",
" E.append(eta(t))\n",
" \n",
"fig, ax = plt.subplots()\n",
"ax.plot(T, E)\n",
"ax.set(xlabel='time (y)', ylabel='eta(t)',\n",
" title='Eta')\n",
"ax.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plot long term mean level"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"T = arange(y.index[0], y.index[-1], 0.1)\n",
"r_mean = []\n",
"for t in T:\n",
" r_mean.append(eta(t)*a)\n",
" \n",
"fig, ax = plt.subplots()\n",
"ax.plot(T, r_mean)\n",
"ax.set(xlabel='time (y)', ylabel='eta(t)',\n",
" title='r_mean')\n",
"ax.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Evolution of interest rates"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dt = 0.1\n",
"\n",
"times = arange(y.index[0], y.index[-1], dt)\n",
"rates = []\n",
"\n",
"rates = []\n",
"r_ = r \n",
"for t in times:\n",
" dr = (eta(t) - gamma * r_) * dt + c * np.sqrt(dt) * np.random.normal()\n",
" r_ = r_ + dr\n",
" rates.append(r_)\n",
"\n",
"fig, ax = plt.subplots()\n",
"ax.plot(times, rates)\n",
"ax.set(xlabel='time (y)', ylabel='r',\n",
" title='interest rates')\n",
"ax.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Zero curve according to Hull White model"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def B(t, T):\n",
" return 1/gamma*(1-exp(-gamma*(T-t)))\n",
"\n",
"def A(t, T):\n",
" Z_T = Z_spline(T)[0]\n",
" Z_t = Z_spline(t)[0]\n",
" logZ_t1 = logZ_spline(t)[1]\n",
" return log(Z_T/Z_t)-B(t, T)*logZ_t1 - c**2/(4*gamma**3)*(np.exp(-gamma*T) - np.exp(-gamma*t))**2*(np.exp(2*gamma*t)-1)\n",
"\n",
"def HullWhite_Z(t, T):\n",
" return exp(A(t, T) - r*B(t, T))\n",
"\n",
"times = arange(y.index[0], y.index[-1], 0.1)\n",
"HWZ = []\n",
"\n",
"for t in times:\n",
" HWZ.append(HullWhite_Z(0, t))\n",
" \n",
"fig, ax = plt.subplots()\n",
"ax.plot(y.index, Z, 'o', T, HWZ)\n",
"ax.set(xlabel='time (y)', ylabel='Z',\n",
" title='Hull White Z')\n",
"ax.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Implementation according to Brigo"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def eta(t):\n",
" (s, s1, s2) = logZ_spline(t)\n",
" return s2 + gamma*s1 + c**2/(2*gamma)*(1-np.exp(-2*gamma*t))\n",
"\n",
"T = arange(y.index[0], y.index[-1], 0.1)\n",
"E = []\n",
"for t in T:\n",
" E.append(eta(t))\n",
" \n",
"fig, ax = plt.subplots()\n",
"ax.plot(T, E)\n",
"ax.set(xlabel='time (y)', ylabel='eta(t)',\n",
" title='Eta')\n",
"ax.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Bond pricing"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEWCAYAAACJ0YulAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xl4FGW2x/HvSQiLhF2NEBUQkRFBiUFcGJXgAuooiKCg4jICMoq7jDjXbVAHr6ijIuq4rxhREZFBcSGMiisIisDg4E5w1yhx2Dn3j2py2xiyV6q78/s8Tz92Vb1dfV4L+vBWvYu5OyIiIgBpUQcgIiKJQ0lBRERKKCmIiEgJJQURESmhpCAiIiWUFEREpISSgkgVmNmdZnZ51HGIhMU0TkHqKzP7FMgCNgEbgNeB0e7+RQSxFJexuxHwhbvvUtfxSP2lloLUd0e7eybQFvgamLS1gmaWHlYQ7p4Z/wJ2A34ArgnrO0XKoqQgArj7WuBJoOuWfWb2gJndYWazzOwXIC+275q4Mn82sy/NbJWZjTAzN7NdY8damNlDZvatmX1mZpeZWYV/58ysATAVeNbd76v1yoqUQ0lBBDCzbYATgDdLHToRuBZoBrxW6jP9gQuBQ4FdgYNLfXYS0ALYJXbsFOD0SoRzPdAUGFOlSojUggZRByASselmthHIBL4B+pU6/oy7z4u9X2tm8ceOB+539yUAZvZX4OTY+3SCJJPj7quB1WZ2IzAcuHdrwZjZcQSJIzfWehGpU2opSH030N1bEjzUHQP8y8x2iDte3kPndqWOx7/fFmgIfBa37zMge2snM7POBAnjNHf/uHLhi9QuJQURwN03ufs0gp5Iv48/VM7HvgR2jNveKe79dwQ9mtrH7dsZKCzrRLHbV08Bd7r7M1UIXaRWKSmIABYYALQCllXyY1OB081s99iP+hVbDrj7ptjxa82smZm1J3j+8MhWznUHQW+j/6luHURqg54pSH33rJltImgRfAacuuUZQUXc/TkzuxUoADYDVxM8M1gXK3IOwcPmj4G1wN3Ab3oTmdnOBA+h1wE/lXpuQayLqkid0OA1kVpiZrsDHwCN3H1j1PGIVIduH4nUgJkda2YNzawV8L8EYwuUECRpKSmI1MyZwLfARwQPqf8UbTgiNaPbRyIiUkItBRERKZF0vY+23XZb79ChQ5U+88svv9C0adNwAqpjqktiUl0SVyrVpyZ1WbBgwXfuvl1F5ZIuKXTo0IH58+dX6TNz586lT58+4QRUx1SXxKS6JK5Uqk9N6mJmn1VcSrePREQkjpKCiIiUUFIQEZESSgoiIlJCSUFEREqElhTM7D4z+8bMPtjKcTOzW81shZm9b2Z7hxXL66s20Pu6OXQc9096XzeH6QvLnL1YRKTeC7Ol8ADQv5zjRwCdY69RBFMH17rpCwt54IP1FBatwYHCojVc8PgiOihBiIj8RmhJwd1fIZgffmsGAA954E2gpZm1re04Js5ezvrNpWKL/bewaA3nP76InPEvKDmIiBDy3Edm1gGY6e7dyjg2E7jO3V+Lbb8MXOLuvxmZZmajCFoTZGVl5ebn51c6htOe/wWABmxkV1vFv33ncsu3aWwct1sGB7TLqPR31KXi4mIyM1Njen3VJTGlUl0gtepTk7rk5eUtcPeeFZWLckSzlbGvzAzl7ncBdwH07NnTqzKiL/vNORQWreGcBtMZnf4s4zaM4OnNB261/PdrnYeXbaLr7l0ZmLPV5XQjo9GZiUl1SVypVJ+6qEuUvY9W8us1bXcEVtX2l4zt14WGaXD/xn4s2NyZvze8g3ENppDG5q1+Zs2GTUycvby2QxERSXhRJoUZwCmxXkj7AT+5+5e1/SUDc7I5rVtDmrbcnlM2jOOhjYcxusFM7s2YSDP+u9XPFRatUY8lEal3wuyS+hjwBtDFzFaa2RlmNtrMRseKzCJYu3YFwdq1Z4UVywHtMpg3ri8rrhtA8+Nu4WpG8fu0D5je8HI6Wtl5yOBXPZYunbZYiUFEUl5ozxTcfVgFxx04O6zv35qBOdkMzJnIqy/+nm7zxjC94eUMW38ZS71DSRnjtw83ttxSSsTnDCIitaXejmg+8LABtDrvNVq0aMVTLW4mp8UvGJDdsknZT7uBVUVr6jJEEZE6V2+TAgCt2sNJT9DE1/J085v45MrezBvXl+yWTcos3qJJhp4ziEhKq99JASBrDzjhEfh+BTx+Mmxcx9h+XWiSkf6rYhlpxi/rN+o5g4ikNCUFgF0OhgG3waevwjNjGLhXWyYM6k52yyYlt5QyGzdgw6Zf31hS11URSTVJtxxnaPYaCj+thDlXQ4tsBh561a8eKncc988yP6bnDCKSSpQU4h14Efz0Bbz2d2ieDb1Glhxq17IJhWUkgHZbef4gIpKMdPsonhkceSPsdgTMGgvLni05VNZzhiYZ6Yzt16WuoxQRCY2SQmnpDWDwfZCdC0+eAZ+9AQTjG0o/Z5gwqHuZ4xamLyxULyURSUq6fVSWhtvAiVPhvsPhsaHwx9mw/e9iA9/KH7w2fWEhl05bzJoNm4D/76UEaOCbiCQ8tRS2pmkbOPkpaNAIHjkOfq7cXH0TZy8vSQhbqJeSiCQLJYXytOoAJz0Ba4tgyvGwbnWFH9labyT1UhKRZKCkUJG2e8GQB+HrpfDE6bBpY7nFt9YbSb2URCQZKClURudD4agbYcWL8NxYKGe1OvVSEpFkpgfNldXzdCj6LBjD0KoD9D6vzGJbHiZPnL2cVUVraNeyCWP7ddFDZhFJCkoKVdH3CvjxM3jxCmi5M+xxbJnFKtNLSUQkESkpVEVaGgy8I+iJNO1MyNwB2u9fo1NOX1ioVoWIJAw9U6iqjMYwdAq03AkeHQKFC6p9qi1jGjTzqogkCiWF6mjaBk6ZAdu0hocHwVeLq3UajWkQkUSjpFBdLbLh1GehYSY8NAC++XeVT6ExDSKSaEJNCmbW38yWm9kKMxtXxvH2Zvaymb1vZnPNbMcw46l1rdrDqTMgLQMeOga+W1Glj2tMg4gkmtCSgpmlA5OBI4CuwDAz61qq2A3AQ+6+JzAemBBWPKFp0wlOeQY2b4IH/wDff1Tpj2pMg4gkmjBbCr2AFe7+sbuvB/KBAaXKdAVejr0vKON4ctj+d8GtpE3r4YGjKp0YqjLzqohIXTAvZ3RujU5sNhjo7+4jYtvDgX3dfUxcmSnAW+5+i5kNAp4CtnX370udaxQwCiArKys3Pz+/SrEUFxeTmZlZo/pURtPiz9jrvctwa8CiHteyZpt2tf4ddVWXuqC6JKZUqgukVn1qUpe8vLwF7t6zwoLuHsoLGALcE7c9HJhUqkw7YBqwELgFWAm0KO+8ubm5XlUFBQVV/ky1fbXE/X87ut/Qxf27FbV++jqtS8hUl8SUSnVxT6361KQuwHyvxG93mLePVgI7xW3vCPxq/ml3X+Xug9w9B/if2L6fQowpfFld4dSZsGlDlW4lVWTLwj2nPf+LFu4RkdCEmRTeATqbWUczawgMBWbEFzCzbc1sSwyXAveFGE/dyeoae8YQSwxV7JVUWvwgN9AgNxEJT2hJwd03AmOA2cAyYKq7LzGz8WZ2TKxYH2C5mX0IZAHXhhVPnYtPDA/+oUaJQYPcRKSuhDpOwd1nuftu7t7J3a+N7bvC3WfE3j/p7p1jZUa4+7ow46lztZQYNMhNROqKRjSHrRYSgwa5iUhdUVKoC1ld4bSZ1U4MGuQmInVFSaGubL97tRND/CA30CA3EQmPkkJd+lViOBqKPq/0RwfmZDNvXF8e6N+UeeP6KiGISCiUFOra9rsHk+ht+AUePhZ++S7qiERESigpRCFrDzhxKvxUCI8cB+tWRx2RiAigpBCdnfeD4x+Crz+A/BNhw9qoIxIRUVKI1G6HB2s+f/IKTBsRTL8tIhIhJYWo7Xk89JsAy56FF6+IOhoRqecaRB2AAPufBT9+Cm/cBq06QK+RUUckIvWUkkKi6D8h6KL63J+hZfvg1pKISB3T7aNEkZYOx90DWd3gydPhq8VRRyQi9ZCSQiJplBl0VW3cAh49Hn5eVfFnRERqkZJComneNkgM636GKcfDuuKoIxKRekRJIRHt0A2GPAhfL4Un/wibNkYdkYjUE0oKiarzoXDkRPjP7ODhc7CmtYhIqNT7KJHtcwYUfQbzboFW7aH3eVFHJCIpTkkh0R1yFRR9EQxsa7Ej0CbqiEQkhen2UaJLSwumwtj5AHh6NC2KlkQdkYiksFCTgpn1N7PlZrbCzMaVcXxnMysws4Vm9r6ZHRlmPEkrozEMfRRatqfbB3+Dbz+MOiIRSVGhJQUzSwcmA0cAXYFhZta1VLHLgKnungMMBW4PK56kt01rOOkJ3NLh0cFQ/E3UEYlICgqzpdALWOHuH7v7eiAfGFCqjAPNY+9bABqtVZ7WHVnc/fIgIWgMg4iEwDykro5mNhjo7+4jYtvDgX3dfUxcmbbAC0AroClwqLsvKONco4BRAFlZWbn5+flViqW4uJjMzMzqViWhFBcX037tErp9cB0/turO4u6X42kZUYdVLal2XVSXxJRK9alJXfLy8ha4e88KC7p7KC9gCHBP3PZwYFKpMhcCF8Xe7w8sBdLKO29ubq5XVUFBQZU/k6hK6vLuI+5XNnd/7ET3jRsijam6UvK6pIBUqot7atWnJnUB5nslfrvDvH20EtgpbntHfnt76AxgKoC7vwE0BrYNMabUkXMS9P9f+PdMmDEGNm+OOiIRSQFhJoV3gM5m1tHMGhI8SJ5RqsznwCEAZrY7QVL4NsSYUst+oyHvf+C9x+D5cRr1LCI1FtrgNXffaGZjgNlAOnCfuy8xs/EEzZgZwEXA3WZ2AcFD59NizRyprIPGwtqfggV6GjeHvpdFHZGIJLFQRzS7+yxgVql9V8S9Xwr0DjOGlGcGh18TJIZXJkKDxnDQxVFHJSJJStNcpAIzOPoW2LgO5lwNeNCCEBGpIiWFVJGWDsfeGSSIOdcEN+MOVmIQkapRUkglaenBPEkYFFwDOBz856ijEpEkoqSQatLSYeDtQYuh4NqgR1KfS6KOSkSShJJCKkpLhwGTAYO5f4NN64NeSWZRRyYiCU5JIVWlpcOA2yC9Abx6Q9A76Yjrg6m4IzZ9YSETZy+nsGgN2W/OYWy/LgzMyY46LBFBSSG1paXD0bdC4xbw+iRY93PQgkiPbq6k6QsLuXTaYtZs2ARAYdEaLp22GECJQSQBRP/PRgmXGRx2NfS9HN5/HKaeAhvWRhbOxNnLSxLCFms2bGLi7OURRSQi8ZQU6gOzYEDbkTfA8lnBegzrVkcSyqqiNVXaLyJ1S0mhPuk1EgbdDZ+9Dg8cBau/rvMQ2rVsUqX9IlK3lBTqmz2PhxMfh+9WwD2Hwrd1e9tmbL8uNMlI/9W+JhnpjO3XpU7jEJGyKSnUR50Pg9P/CRvXwr2HBy2HOjIwJ5sJg7qTHWsZZLdswoRB3fWQWSRBKCnUV+1yYMRLkLk9PDQAPphWZ189MCebeeP68kD/pswb11cJQSSBKCnUZ63awx9nQ3ZPePJ0eO1mrckgUs8pKdR327SG4U/DHoPgpSth+lnBbKsiUi9p8JpARmMYfB9sv3swX9L3K2Doo8GtJRGpV9RSkIBZMKPqkAfhq8VwVx58+X7UUYlIHVNSkF/bYyCcMRtwuK8fLC29rLaIpDIlBfmttnvByALI2gOmDoe518HmzVFHJSJ1INSkYGb9zWy5ma0ws3FlHP+7mS2KvT40s6Iw45EqaJYFp86EvYbB3Anw2FBY82PUUYlIyEJLCmaWDkwGjgC6AsPMrGt8GXe/wN17uHsPYBJQd53lpWIZjYOV3I68AT6aA3f1CZ43iEjKCrOl0AtY4e4fu/t6IB8YUE75YcBjIcYj1WEWzJl0+nOwcX0wNcYiXSaRVGUe0mAlMxsM9Hf3EbHt4cC+7j6mjLLtgTeBHd19UxnHRwGjALKysnLz8/OrFEtxcTGZmZlVr0QCirIuGeuL6Lr0BloVLaaw3RGs2PUMPK36azPouiSmVKoLpFZ9alKXvLy8Be7es8KC7h7KCxgC3BO3PRyYtJWyl2ztWOlXbm6uV1VBQUGVP5OoIq/Lxg3uL1zufmVz97vy3H/4pNqnirwutUh1SVypVJ+a1AWY75X4jQ3z9tFKYKe47R2BVVspOxTdOkoO6Q3gsPFw/MPw3X/gzoNgyfSooxKRWhJmUngH6GxmHc2sIcEP/286vZtZF6AV8EaIsUht63oMjH4Vtt0VnjgVZl4AG7RQjkiyCy0puPtGYAwwG1gGTHX3JWY23syOiSs6DMiPNW8kmbTqAKc/DwecA/Pvi63P8GHUUYlIDYQ695G7zwJmldp3Rantq8KMQULWoCEcfg10PBiePhPuOjjowtrjxKDnkogkFY1oltrR+TAYPQ+yc+GZs4IEsfbnqKMSkSpSUpDa07wtnPIM9PkLLH4C7uxdp6u6iUjNKSlI7UpLhz6XBIv3WBo8cBS8PD4Y+CYiCU9JQcKxUy8Y/Rr0OAlevRHu1UNokWSgpCDhadQMBtwGJzwCRV/APw6Ct+/Wkp8iCUxJQcK3+9Fw1hvQ/gCYdTE8OgRWfx11VCJSBiUFqRvNdoCTn4IjJsKnr8Lt+7HdN/OijkpESik3KZhZv3KODan9cCSlmcG+o+DMV6Dlzuyx9Hp44nT47w9RRyYiMRW1FGaZWYGZZZdx7NIwApJ6YLsuMOIlPulwEix7FibvC//+Z9RRiQgVJ4X3gSnAm2W0DDRcVaovPYPPOhwPowogMwvyT4Rpo7S6m0jEKkoK7u53A4cAfzaz+81smy3Hwg1N6oUdusPIOXDwJbD4SZi8H3w4O+qoROqtSj1odvcPgf2Br4GFZrZvqFFJ/dKgIeT9JUgO27SGKcfD9LNh7U9RRyZS71SUFEpuEbn7RncfB5xJsPZB5zADk3qoXQ8YNRcOvAjemwK37w8rXoo6KpF6paKk8NfSO9x9LpALXBtGQFLPNWgEh1wBI16ChpnwyHHwzBg9axCpI+UmBXcvc0ktd//R3a8LJyQRgtlWz3wFep8Pi6YEPZSW/maNJhGpZRq8JokrozEc9tfgWUPm9jB1ODx+Mqz+KurIRFKWkoIkvnY9YGQBHHIlfPgCTO4F7z6kOZREQqCkIMkhPQMOvBD+9DpkdYMZ58BDx8APH0cdmUhKUVKQ5LLtrnDqTDjqJihcCLcfAK9Pgk0bo45MJCWEmhTMrL+ZLTezFWY2bitljjezpWa2xMymhBmPpIi0NNjnDDj7LdilD7xwWbBew1eLo45MJOmFlhTMLB2YDBwBdAWGmVnXUmU6E8yh1Nvd9wDODyseSUEtsmHYYzD4vth6DQcHCWL9L1FHJpK0wmwp9AJWuPvH7r4eyAcGlCozEpjs7j8CuPs3IcYjqcgMuh0HY96BnJOCW0mT94Xlz0UdmUhSMg+pB4eZDQb6u/uI2PZwYF93HxNXZjrwIdAbSAeucvfnyzjXKGAUQFZWVm5+fn6VYikuLiYzM7O6VUkoqkv5WhQtZbcP76Dpfz/n2233Y8WuI1jXeLta/Y6y6LokrlSqT03qkpeXt8Dde1ZY0N1DeQFDgHvitocDk0qVmQk8DWQAHYGVQMvyzpubm+tVVVBQUOXPJCrVpRI2rHN/5Ub3q7Pcr23n/vpt7hs3hPNdMbouiSuV6lOTugDzvRK/3WHePloJ7BS3vSOwqowyz7j7Bnf/BFiO5lSSmmrQMOi+evabsPP+MPsvcHcfWLkg6shEEl6YSeEdoLOZdTSzhsBQoPQ8BdOBPAAz2xbYDVDHc6kdrTrASU/AkAfhl+/gnkPgnxdr9lWRcoSWFNx9IzAGmA0sA6a6+xIzG29mx8SKzQa+N7OlQAEw1t2/DysmqYfMYI+BcPbb0GsUzL8XbtsH3svXiGiRMjQI8+TuPguYVWrfFXHvHbgw9hIJT+PmcOT1sNdQmHUxPH0mLHgAjpwYLPQjIoBGNEt9k703nPESHH0rfLsc/nEQzBoLa4qijkwkISgpSP2Tlga5p8I5C6DnH+Gde2BSLrz7MGzeHHV0IpFSUpD6a5vWcNSNwWpvbTrBjDFw72FQ+G7UkYlERklBpO1e8MfZMPBOKPoc7u4Lz54H//0h6shE6pySgggEvZR6DINz5sN+fwpuJU3aG965FzZvijo6kTqjpCASr3EL6D8BRr8K2+8B/7wweBj9yStRRyZSJ5QURMqStQecNhMG3w9rf4YHj4b8k7Soj6Q8JQWRrTGDboNgzNvQ9zL4qCCYgfXFK4JEIZKClBREKpLRBA4aG3Rh7TYY5t0SPG9Y8EBKPW+YvrCQ3tfN4bTnf6H3dXOYvrAw6pAkAkoKIpXVvC0ceweMLIDWnYIeSv84GD55NerIamz6wkIunbaYwqI1ABQWreHSaYuVGOohJQWRqsreG/74fLDi29oiePAP7PHBdfDDJ1FHVm0TZy9nzYZft3rWbNjExNnLI4pIoqKkIFId8Su+9b2M1j8shMm9guVA1/wYdXRVtirWQqjsfkldSgoiNRF73vDWvrdD9yHw+m1wSw94YzJsXBd1dJXWrmWTKu2X1KWkIFIL1jdqAwNvD8Y3ZO8dLOxz2z6w+MmkmKJ7bL8uNMlI/9W+JhnpjO3XJaKIJCpKCiK1aYfuMPxpOHkaNGoGT50RTJvx6byoIyvXwJxsJgzqTnasZZDdsgkTBnVnYE52xJFJXQt1PQWRemvXQ2CXPvD+4zDnGnjgSOhyJBx6FWyXmP/6HpiTzcCcbObOnUufPn2iDkciopaCSFjS0qHHicH4hkOuCLqu3r4/PHs+rP466uhEyqSkIBK2jCZw4EVw3iLYZwQsfBhuzYG518G61VFHJ/IrSgoidaXptsGSoGe/HdxemjsBbtkr6Km0YW3U0YkAIScFM+tvZsvNbIWZjSvj+Glm9q2ZLYq9RoQZj0hCaNMJTngYRs4JHkzP/kts5beHYNPGqKOTei60pGBm6cBk4AigKzDMzLqWUfRxd+8Re90TVjwiCSc7F055Bk6ZAc2yYMY5cPt+sGR6UnRjldQUZkuhF7DC3T929/VAPjAgxO8TSU67HAwjXoYTHg0eTj9xKtzVB1a8rOQgdc48pD90ZjYY6O/uI2Lbw4F93X1MXJnTgAnAt8CHwAXu/kUZ5xoFjALIysrKzc/Pr1IsxcXFZGZmVrMmiUV1SUy1VhffRNbX/6LjJ4/ReN03/NiyG590PIWfW9RdN9ZUui6QWvWpSV3y8vIWuHvPCgu6eygvYAhwT9z2cGBSqTJtgEax96OBORWdNzc316uqoKCgyp9JVKpLYqr1umxY6/7mne7Xd3K/srn7lKHuXy2p3e/YilS6Lu6pVZ+a1AWY75X47Q7z9tFKYKe47R2BVaUS0vfuvmWCmLuB3BDjEUkeDRrBvmfCuYuCBX4+nQd3HABP/hG+1cylEp4wk8I7QGcz62hmDYGhwIz4AmbWNm7zGGBZiPGIJJ9GmcECP+ctggMvhOXPB6u/PTUSvlsRdXSSgkJLCu6+ERgDzCb4sZ/q7kvMbLyZHRMrdq6ZLTGz94BzgdPCikckqW3TOhgVff5i6H0e/HsmTN4Hnh4N338UdXSSQkKd+8jdZwGzSu27Iu79pcClYcYgklKatoHD/gr7j4F5N8M798L7U2GvYXDQxdC6Y9QRSpLTiGaRZJS5HfS7Fs57L3j2sPgJuK1nMNah6POoo5MkpqQgksyaZUH/CUFy6HkGvJcPt+4NMy+An1ZGHZ0kISUFkVTQvG0wr9K5i2DvU+Dd2KR7My+AHz+LOjpJIkoKIqmkRTb84SY4913ocRIsfAQm7Q3Tz1JvJakUJQWRVNRyZzj65uC20j4j4YNpQW+lJ8+Ar5dGHZ0kMCUFkVTWvB0ccR2c/z4ccC58+DzcsT/knwSrFkYdnSQgJQWR+iBz+6Ar6/mL4eBL4NNXg0n3Hh0CX7wddXSSQJQUROqTbVpD3l+C5HDIFVC4AO49DB48Gj55RbOyipKCSL3UuEWwROj5i+Hwa4P5lB48Gu49nDbfvQWbN0cdoURESUGkPmvYFA4YA+e9D0feAMVf0/2DvwWL/Sx8BDaujzpCqWNKCiICGY2h10g4512W7n4RpDeEZ84O1pB+fRKsWx11hFJHlBRE5P+lN+CbrINg9Ktw8lPBetIvXAZ/3wNeHg/F30QdoYRMSUFEfssMdj0UTpsJI+dAx4Ph1Zvg5u4w80L44ZOoI5SQKCmISPmyc+GEh2HMfNjzBFj4cDBK+onTYdWiqKOTWqakICKVs+2ucMytQY+lA86BFS/BXQfDA38IFv9Rj6WUoKQgIlXTbAc4bDxc8AEcfk1wK+mxE2ByL5h/H6z/b9QRSg0oKYhI9TRuEbQYzlsEx90bLB0684LgofSca2D111FHKNWgpCAiNZOeAd0Hw8gCOP052Hl/eOUGuLkbTD9bE/AlmVCX4xSResQM2h8QvL7/CN68HRY+CosegU59gyVEO/UNyknCCrWlYGb9zWy5ma0ws3HllBtsZm5mPcOMR0TqSJtOcNSNcOFS6Hs5fL0EHhkEt+8fLAC0YW3UEcpWhJYUzCwdmAwcAXQFhplZ1zLKNQPOBd4KKxYRicg2reGgi4MeSwPvgLR0mDEG/t4VXr4afl4VdYRSSpgthV7ACnf/2N3XA/nAgDLKXQ1cD+ifDiKpqkEj6HEijH4NTnkGdtoPXr0xGAz3xOnw+VuaoTVBmId0IcxsMNDf3UfEtocD+7r7mLgyOcBl7n6cmc0FLnb3+WWcaxQwCiArKys3Pz+/SrEUFxeTmZlZ7bokEtUlMakuVdd4zVdkFz5H2y9fpMGmX1id2YmVO/6Bb7Y/EE/LqLXv0bUJ5OXlLXD3im/Ru3soL2AIcE/c9nBgUtx2GjAX6BDbngv0rOi8ubm5XlUFBQVV/kyiUl0Sk+pSA2tXu799t/uknu5XNne/vpP7y9e4/7SqVk6vaxMA5nslfrvDvH20EtgpbntHIP4GYjOgGzDXzD4F9gNm6GGzSD3TKBP2GQFnvw3Dnw6m1XhlYtCl9akRsPI3Nw8kRGF2SX0H6GxmHYFCYChw4paD7v4TsO00GpOzAAAL1UlEQVSW7fJuH4lIPWAWdFnt1Dfo0vrOPcGaDoufCBLFvqOh64Dg+YSEJrSWgrtvBMYAs4FlwFR3X2Jm483smLC+V0RSQJtO0H9C0KX1yBtg7U8wbeT/T+Fd9EXUEaasUAevufssYFapfVdspWyfMGMRkSTUqFmw+E/PM+DjOfDOvfDa34PXbv2D20675EGaJmeoLRrRLCKJLy0tWN9h10Oh6HOYfz+8+xAsnwWtdwmSRo8Tg3ERUiNKryKSXFruDIdeGdxaGnQPNN0eXvgfuGn3YK6lwnejjjCpqaUgIsmpQSPYc0jw+mpxcGvp/anBXEvZucGtpT2OjTrKWjF9YSETZy+nsGgN2W/OYWy/LgzMyQ7lu9RSEJHkt0N3OPpmuGgZHHE9rFsN0/8EN+3OLh/dDz98HHWE1TZ9YSGXTltMYdEaAAqL1nDptMVMX1gYyvcpKYhI6mjcAvY9MxjzcOqz0PEgdvpiBty6NzwyGJY/B5s2Rh1llUycvZw1Gzb9at+aDZuYOHt5KN+n20ciknrMoONB0PEg3pj9FAc0/BAWPACPDYXm2ZAzHPY+BVqEcwumNq2KtRAqu7+m1FIQkZS2vlEbyLs0WD70+Idhuy7wr+uCEdNThsKHs2HzpopPFJF2LZtUaX9NKSmISP2QngFdjwmm0jh3EfQ+Dwrnw5Tj4Za94F/XJ+RU3mP7daFJRvqv9jXJSGdsvy6hfJ+SgojUP607wqFXwQVLYciDwQjqgmvh793gsRPhPy8mTOthYE42EwZ1JzvWMshu2YQJg7qH1vtIzxREpP5q0BD2GBi8vv8I3n0wWEJ0+T+hxc6Qe0rw/KHZDpGGOTAnm4E52cydO5c+ffqE+l1qKYiIQNBaOGw8XLgMBt8PrTvAnGuC+ZYePxlWvASbN0cdZejUUhARidegIXQbFLy+/wgW3A+LpsCyZ6Fle8g9FXqcDM2yoo40FGopiIhsTZtOcPg1QevhuHuDKTZeHh+sMf34yQn17KG2qKUgIlKRBo2g++Dg9d1/gjEP7+UHrYfm2ZBzcvBquXPUkdaYWgoiIlWxbWfod23QehjyIGz3u6A76817wsPHwpKnYeP6qKOsNrUURESqI77nUtHnQa+lhY/AE6fBNm1gr2HBqOntwhlPEBa1FEREaqrlzsGo6fPfh5Oegva94a07YXIvuLdfkDDW/xJ1lJWiloKISG1JS4fOhwav4m/hvceCxYCeOQueuyR4JrH3KdAuJ5ifKQEpKYiIhCFzO+h9LhxwDnz+ZpAc3ssPurhmdQ+Sw55DoEmrqCP9lVBvH5lZfzNbbmYrzGxcGcdHm9liM1tkZq+ZWdcw4xERqXNm0H5/OPYOuHg5HHVT0KJ4bizc0AWeGgmfvAruUUcKhNhSMLN0YDJwGLASeMfMZrj70rhiU9z9zlj5Y4CbgP5hxSQiEqnGLWCfM4LXl+/Buw8Hq8UtnhqsNZ0zHHqcFOnAuDBbCr2AFe7+sbuvB/KBAfEF3P3nuM2mQGKkShGRsLXdC466AS76Nxz7D2jWFl7+a7DW9GMnRrYgkHlITRYzGwz0d/cRse3hwL7uPqZUubOBC4GGQF93/08Z5xoFjALIysrKzc/Pr1IsxcXFZGZmVqseiUZ1SUyqS+JKpvo0+e9K2n75Ejt8NYeGG35iXcNWfLVDX77a4VDWbNOuRnXJy8tb4O49Kyzo7qG8gCHAPXHbw4FJ5ZQ/EXiwovPm5uZ6VRUUFFT5M4lKdUlMqkviSsr6bFzvvvRZ90ePd7+qpfuVzd3vP8rnvvxCtU8JzPdK/HaH2ftoJbBT3PaOQHkrWOQDd4QYj4hIckjPgN3/ELx+/hLemwJFn+NpGaF/dZjPFN4BOptZRzNrCAwFZsQXMLPOcZtHAb+5dSQiUq81bwsHXgRH31InXxdaS8HdN5rZGGA2kA7c5+5LzGw8QTNmBjDGzA4FNgA/AqeGFY+IiFQs1MFr7j4LmFVq3xVx788L8/tFRKRqNPeRiIiUUFIQEZESSgoiIlJCSUFEREooKYiISAklBRERKRHa3EdhMbNvgc+q+LFtge9CCCcKqktiUl0SVyrVpyZ1ae/u21VUKOmSQnWY2XyvzERQSUB1SUyqS+JKpfrURV10+0hEREooKYiISIn6khTuijqAWqS6JCbVJXGlUn1Cr0u9eKYgIiKVU19aCiIiUglKCiIiUiKlk4KZ9Tez5Wa2wszGRR1PTZnZp2a22MwWmdn8qOOpCjO7z8y+MbMP4va1NrMXzew/sf+2ijLGytpKXa4ys8LYtVlkZkdGGWNlmdlOZlZgZsvMbImZnRfbn3TXppy6JN21MbPGZva2mb0Xq8tfY/s7mtlbsevyeGwBs9r97lR9pmBm6cCHwGEES4O+Awxz96WRBlYDZvYp0NPdk24gjpkdBBQDD7l7t9i+64Ef3P26WNJu5e6XRBlnZWylLlcBxe5+Q5SxVZWZtQXauvu7ZtYMWAAMBE4jya5NOXU5niS7NmZmQFN3LzazDOA14DzgQmCau+eb2Z3Ae+5eq8sYp3JLoRewwt0/dvf1BGtAD4g4pnrL3V8Bfii1ewDwYOz9gwR/gRPeVuqSlNz9S3d/N/Z+NbAMyCYJr005dUk6HiiObWbEXg70BZ6M7Q/luqRyUsgGvojbXkmS/gGJ48ALZrbAzEZFHUwtyHL3LyH4Cw1sH3E8NTXGzN6P3V5K+NstpZlZByAHeIskvzal6gJJeG3MLN3MFgHfAC8CHwFF7r4xViSU37RUTgpWxr5kv1fW2933Bo4Azo7dxpDEcAfQCegBfAncGG04VWNmmcBTwPnu/nPU8dREGXVJymvj7pvcvQewI8Gdj93LKlbb35vKSWElsFPc9o7AqohiqRXuvir232+Apwn+oCSzr2P3gbfcD/4m4niqzd2/jv0l3gzcTRJdm9g966eAR919Wmx3Ul6bsuqSzNcGwN2LgLnAfkBLM2sQOxTKb1oqJ4V3gM6xp/UNgaHAjIhjqjYzaxp7eIaZNQUOBz4o/1MJbwZwauz9qcAzEcZSI1t+QGOOJUmuTeyB5r3AMne/Ke5Q0l2brdUlGa+NmW1nZi1j75sAhxI8IykABseKhXJdUrb3EUCs69nNQDpwn7tfG3FI1WZmuxC0DgAaAFOSqT5m9hjQh2Dq36+BK4HpwFRgZ+BzYIi7J/wD3K3UpQ/B7QkHPgXO3HJPPpGZ2e+BV4HFwObY7r8Q3ItPqmtTTl2GkWTXxsz2JHiQnE7wj/ep7j4+9juQD7QGFgInu/u6Wv3uVE4KIiJSNal8+0hERKpISUFEREooKYiISAklBRERKaGkICIiJZQUpF4zs5Zmdlbcdjsze7K8z9Tguwaa2RUVlLnBzPqG8f0ilaEuqVKvxebImbllttOQv+t14JjyZrk1s/bA3e5+eNjxiJRFLQWp764DOsXm2Z9oZh22rJNgZqeZ2XQze9bMPjGzMWZ2oZktNLM3zax1rFwnM3s+NlHhq2b2u9JfYma7Aevc/TszaxY7X0bsWHML1srIcPfPgDZmtkMd/j8QKaGkIPXdOOAjd+/h7mPLON4NOJFgvpxrgf+6ew7wBnBKrMxdwDnungtcDNxexnl6A/HTOs8FjoodGwo85e4bYtvvxsqL1LkGFRcRqdcKYj/iq83sJ+DZ2P7FwJ6xGTkPAJ4Ipt4BoFEZ52kLfBu3fQ/wZ4KpPk4HRsYd+wZoV2s1EKkCJQWR8sXPK7M5bnszwd+fNII57ntUcJ41QIstG+4+L3ar6mAg3d3jJ2lrHCsvUud0+0jqu9VAs+p+ODZf/ydmNgSCmTrNbK8yii4Ddi217yHgMeD+Uvt3Iwlm8pTUpKQg9Zq7fw/MM7MPzGxiNU9zEnCGmb0HLKHsZV9fAXIs7h4T8CjQiiAxACXrAewKzK9mLCI1oi6pInXEzG4BnnX3l2Lbg4EB7j48rsyxwN7ufnlEYUo9p2cKInXnb8C+AGY2iWBZ1SNLlWlAkiwXKalJLQURESmhZwoiIlJCSUFEREooKYiISAklBRERKaGkICIiJf4PMaroq+UCgp8AAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"a = gamma # Gamma is named a in Brigo\n",
"\n",
"dt = 0.1\n",
"\n",
"def B_(t, T):\n",
" global a\n",
" return 1/a*(1-exp(-a*(T-t)))\n",
"\n",
"def A_(t, T):\n",
" P_T = Z_spline(T)[0]\n",
" P_t = Z_spline(t)[0]\n",
" f_t = -logZ_spline(t)[1]\n",
" return P_T/P_t*exp(B_(t, T)*f_t - c**2/(4*a)*(1-exp(-2*a*t))*B_(t, T)**2)\n",
"\n",
"def Brigo_Z(t, T):\n",
" return A_(t, T)*exp(-r*B_(t, T))\n",
"\n",
"times = arange(y.index[0], y.index[-1], dt)\n",
"BZ = []\n",
"\n",
"for t in times:\n",
" BZ.append(Brigo_Z(0, t))\n",
" \n",
"fig, ax = plt.subplots()\n",
"ax.plot(y.index, Z, 'o', T, BZ)\n",
"ax.set(xlabel='time (y)', ylabel='Z',\n",
" title='Brigo Z')\n",
"ax.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Yield curve"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dt = 0.1\n",
"times = arange(y.index[0], y.index[-1], dt)\n",
"BY = []\n",
"\n",
"for t in times:\n",
" z = Brigo_Z(0, t)\n",
" by = -log(z)/t\n",
" BY.append(by)\n",
" \n",
"fig, ax = plt.subplots()\n",
"ax.plot(y.index, y[\"yield\"], 'o', times, BY)\n",
"ax.set(xlabel='time (y)', ylabel='Z',\n",
" title='Hull White (Brigo) yield curve')\n",
"ax.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Option pricing"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"20.899908991971405"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# European Bond Option for Zero coupon bond\n",
"def ZBC(t, T, S, X):\n",
" sigma_p = c * sqrt((1-exp(-2*a*(T-t)))/(2*a)) * B_(T, S)\n",
" h = 1/sigma_p * log(Brigo_Z(t, S)/(Brigo_Z(t, T) * X)) + sigma_p / 2\n",
" return Brigo_Z(t, S) * scipy.stats.norm.cdf(h) - X * Brigo_Z(t, T) * scipy.stats.norm.cdf(h - sigma_p)\n",
"\n",
"def ZBP(t, T, S, X):\n",
" sigma_p = c * sqrt((1-exp(-2*a*(T-t)))/(2*a)) * B_(T, S)\n",
" h = 1/sigma_p * log(Brigo_Z(t, S)/(Brigo_Z(t, T) * X)) + sigma_p / 2\n",
" return X * Brigo_Z(t, T) * scipy.stats.norm.cdf(-h + sigma_p) - Brigo_Z(t, S) * scipy.stats.norm.cdf(-h)\n",
"\n",
"def Cap(t, T, N, X):\n",
" # t = settlement date\n",
" # T = array of reset dates (> t)\n",
" # N = Nominal\n",
" # X = Strike \n",
" s = 0\n",
" for i in range(1, len(T)):\n",
" tau = T[i-1] - T[i]\n",
" s += (1 + X*tau) * ZBP(t, T[i-1], T[i], 1/(1+X*tau))\n",
" return N * s\n",
"\n",
"ZBC(0, 1, 2, 0.4)\n",
"\n",
"Cap(0, [0.25, 0.5, 0.75, 1], 100, 0.25)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment