Skip to content

Instantly share code, notes, and snippets.

Created January 2, 2016 01:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/0f5a99aa1de0492abada to your computer and use it in GitHub Desktop.
Save anonymous/0f5a99aa1de0492abada to your computer and use it in GitHub Desktop.
{
"metadata": {
"name": "Finite Difference Methods"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": "Trinomial Trees and Finite Difference Methods\n=================================================\n\nWe showed how to solve option pricing problems using binomial tree methods in an earlier note. However, we showed that the choice of either equal probabilities or equal step sizes impacted the price of the option. This is not a desirable property. As well, it was challenging to deal with time varying parameters since the tree was not always recombining. To overcome these difficulties we will introduce a trinomial tree method in this note. This imporoves the accuracy of the approximation.\n\nNext we go on to solve the Black-Scholes Partial Differential Equation with finite difference methods. It turns out this is analgous to using a trinomial tree. However, we may also view this as solving the PDE:\n\n$$-\\frac{\\partial C(x,t)}{\\partial t} +rC(x,t)= \\nu\\frac{\\partial C(x,t)}{\\partial x} + \\frac{1}{2}\\sigma^2\\frac{\\partial^2 C(x,t)}{\\partial x^2} $$\n\nSubject to appropriate boundary conditions.\n\nTo understand how finite difference methods work recall the definition of a derivative:\n\n$$\\frac{d f(x)}{dx} = \\lim_{\\Delta x \\to 0} \\frac{f(x+\\Delta x) - f(x)}{\\Delta x} $$\n\nIf we take the domain of the function to be $[0,1]$ and divide into $N$ discrete grid points we can think of \n\nExample\n----------\n\nLet's solve the ODE:\n\n$$\\frac{df(x)}{dx} = e^x \\qquad \\mbox{s.t.} \\;\\; f(0) = 1 $$\n\nWe know the solution to the ODE is:\n\n$$f(x) = e^x $$\n\nThus, we can see how well a finite difference scheme works.\n\nWe can write out the approximation as:\n\n$$\\frac{f_{i+1} - f_i}{\\Delta x} = e^{x_i} $$\n\nOr:\n\n$$f_{i+1} = f_i + \\Delta x e^{x_i} $$\n\nSubject to $f_0 = 1$. We can then compare the approximation to the known solution. We would hope for arbitrarily small $\\Delta x$ the solution would converge to the true one."
},
{
"cell_type": "code",
"collapsed": false,
"input": "import numpy as np\nfrom matplotlib import pyplot as plt \n%matplotlib inline\n\nxmin = 0.0\nxmax = 1.0\nN = 3\n\nxgrid = np.linspace(xmin, xmax, N)\ndx = 1.0 * (xmax - xmin) / (N - 1.0)\nf = np.ones(N)\n\nfor i in range(1,N):\n f[i] = f[i-1] + dx * np.exp(xgrid[i-1])\n \nftrue = np.exp(xgrid)\n\nplt.plot(xgrid, ftrue, 'r--', linewidth = 4, label = 'Actual Solution')\nplt.plot(xgrid, f, 'b-', linewidth = 4, label = 'Approximate Solution')\nplt.legend(loc = 'upper left')\nplt.xlabel('x')\nplt.ylabel('f(x)')\nplt.title('Finite Difference Solution: N = 3')\nplt.show()\n\nxmin = 0.0\nxmax = 1.0\nN = 30\n\nxgrid = np.linspace(xmin, xmax, N)\ndx = 1.0 * (xmax - xmin) / (N - 1.0)\nf = np.ones(N)\n\nfor i in range(1,N):\n f[i] = f[i-1] + dx * np.exp(xgrid[i-1])\n \nftrue = np.exp(xgrid)\n\nplt.plot(xgrid, ftrue, 'r--', linewidth = 4, label = 'Actual Solution')\nplt.plot(xgrid, f, 'b-', linewidth = 4, label = 'Approximate Solution')\nplt.legend(loc = 'upper left')\nplt.xlabel('x')\nplt.ylabel('f(x)')\nplt.title('Finite Difference Solution: N = 30')\nplt.show()",
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": "<matplotlib.figure.Figure at 0x86a9278>"
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEZCAYAAAB4hzlwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlYVOXbwPEviAsKKKAiCIgi7gKGhbiFWobmvu+gueaS\nleWeuOcWqZW75pZlvuaelgvmkqm5lZnlMoKgJKECLsjyvH9Mzs9hBhVkGJb7c11zXcycZ8655zie\ne86zWiilFEIIIQRgae4AhBBC5B6SFIQQQuhIUhBCCKEjSUEIIYSOJAUhhBA6khSEEELoSFLIR2xt\nbdFoNNleNjusX7+eN954Q/f8yJEjeHl5YWtry7Zt24iJiaFx48bY2dnxwQcf5FhcuYWHhwf79u3L\n0nsjIiKwtbVFepeL7CBJIQ/y8PCgePHi2NraYmtri52dHTdv3iQhIQEPD4/n2seTZUNCQpg4cWKW\n4wkJCaFo0aLY2dlhZ2dH7dq1GTduHPHx8boyPXv2ZM+ePbrnH330ESNGjCAhIYE2bdqwdOlSypYt\nS3x8PHPmzMlyLOZ0/fp1OnbsSJkyZShVqhS1a9dm9erVz/VeCwsLLCwsnqush4cH+/fv1z13d3cn\nISHhud//IiwtLfH29tZLQBMmTKBv377ZepwDBw7g7e2Nvb09Dg4ONG/enD/++EO3PSkpiX79+lGy\nZEmcnZ0JCwvL1uMXZJIU8iALCwt27NhBQkICCQkJxMfHU65cObPGM3r0aOLj44mNjWXVqlUcO3aM\nBg0acP/+faPviYiIoEaNGrrn165do3r16lk6fkpKSpbel9169+5NhQoViIiIIC4ujrVr1+Lk5JTt\nx7GwsDDrXcGNGzf4+uuv9eLJbjVr1uT777/n9u3bxMTEUKdOHfr166fbHhoayuXLl4mIiODAgQPM\nnj1b70eHeAFK5DkeHh5q3759Bq9bWFioy5cvK6WUCg4OVm+//bZ68803la2trfL399dte1z20qVL\nasmSJapw4cKqSJEiysbGRrVp00YppVRUVJTq0KGDKlOmjKpYsaJasGBBhvGEhISoCRMm6L2WkJCg\nnJ2d1WeffaaUUmrVqlWqYcOGSimlKlWqpCwtLZW1tbWysbFR3bt314th3759Ki0tTc2cOVN5enoq\nR0dH1aVLFxUXF6eUUurq1avKwsJCrVixQrm7u6tXX31VKaXUihUrVPXq1ZW9vb1644031LVr1/Q+\n7+LFi5WXl5cqVaqUGjp0qF68S5cuVdWrV1e2traqRo0a6tSpU5k+DzY2Nurs2bMZbt+6dauqUaOG\nKlWqlAoMDFQXLlzQbXvy3zQ4OFjvfB44cEC5uroqpZTq1auX3rmbM2eO7nykpqbqYm7durVycHBQ\nlStXVsuWLdPta9KkSapz586qT58+ytbWVtWsWVOdPHkyw5jTs7CwULNnz1ZeXl4qJSVFKaXUhAkT\nVEhIyHPvI7MePnyoxowZo9q1a6d7zcXFRf3444+65x999JHq1q2byWIoSCQp5EEeHh5q7969Bq+n\nTwqOjo7qxIkTKiUlRfXs2VPvP82TZUNCQtTEiRN121JTU9VLL72kpk6dqpKTk9WVK1dUpUqV1J49\ne4zGYywpKKVUnz59VNeuXZVS+knh8Wd4MrGlj+HTTz9VAQEBKioqSj169EgNGjRIde/eXSn1v6QQ\nHBys7t+/rx48eKC2bNmiKleurP7880+Vmpqqpk2bpurXr6/3eVu3bq3u3r2rIiIiVJkyZdTu3buV\nUkpt3LhRlS9fXndxvHTpkrp27Vqmz8Nrr72mGjRooL7++mu9hKSUUhcvXlQlSpRQe/fuVSkpKWr2\n7NmqcuXKKjk52eB8pD8XTyYFY+cufVJo1KiRGjp0qEpKSlJnzpxRZcqUUfv371dKaZNCsWLF1Pff\nf6/S0tLU2LFjVb169XT7evvtt9Xbb79t9PM9Po9///238vPzU8uXL1dKKTV+/PgMk8K1a9dUqVKl\nMnxs2LAhw2M9fq+lpaWqXbu2io2NVUopFRcXpywsLNQ///yjK7tp0yZVu3btDPclnp9UH+VBSina\ntWuHvb099vb2dOjQwaCMhYUFHTp0oG7duhQqVIiePXty5syZp+7zsRMnThAbG8uECROwsrKiYsWK\n9O/fX6/K4Hk4OzsTFxeXqc/12JIlS5g2bRouLi4ULlyYSZMmsWnTJtLS0nRlQkNDsba2plixYixe\nvJixY8dStWpVLC0tGTt2LGfOnCEyMlJXfsyYMdjZ2eHm5kaTJk04e/YsAMuXL2f06NH4+fkB4Onp\nibu7e6bPw7fffkujRo2YOnUqlSpVok6dOpw8eRKAb775hlatWtGsWTMKFSrEqFGjePDgAUePHn3m\nuciMyMhIjh49yqxZsyhSpAg+Pj7079+fNWvW6Mo0atSIoKAgLCws6NWrl+48AHz++ed8/vnnTz2G\npaUlU6dOZerUqSQnJz+1rLu7O7dv387w0a1bt2e+NzY2Fh8fH131UWJiIgAlS5bUlbWzsyMhIeGp\nsYjnY2XuAETmWVhYsHXrVpo2bfrUck/WZ1tbW+v+Mz3LtWvXiI6Oxt7eXvdaamoqjRs3zlScUVFR\nODo6Zuo9j2k0Gtq3b4+l5f9+t1hZWRETE6N77ubmphfzO++8w/vvv28Qw+NyT7a7FC9eXHc+rl+/\njqenp0EMmT0PpUqVYubMmcycOZN///2XUaNG0a5dO65fv050dDTu7u66shYWFri5uREVFfVc5+N5\nRUdH4+DgQIkSJXSvubu765IT6H8vihcvzsOHD0lLS9M718/SokULXF1dWbJkickbuO3t7Zk7dy7O\nzs7Ex8djY2MDQHx8PKVLlwbg7t272NramjSOgkLuFITBf2p3d3cqVqyo94suPj6eHTt2PPc+EhMT\n2bt3L40aNcpSTO7u7uzevVsvhvv37+Ps7Gz0mO7u7ixdulSv/L1796hXr94zj+Xm5salS5eMxpDZ\n8/CYo6Mj77//PtHR0cTFxVG+fHmuXbum266UIjIykvLlyxu8t0SJEnoN9Ddv3tTb/rSLsIuLC3Fx\ncXo/ACIiInB1dX1mzJk1ffp0ZsyYkWFngsfHftxLzthjw4YNz3Ws5ORkLC0tKVq0KPb29jg7O+vd\n+Z49e5ZatWq98GcSkhTyrcxUPzg5OXHlyhXd81deeQVbW1tmz57NgwcPSE1N5ffff9f7tZn+WI+P\nl5SUxK+//kq7du1wdHR87q6K6eMdPHgw48aNIyIiAoBbt26xbdu2DN8/ePBgZsyYoeu2ePfuXb79\n9tunHu/xMfv378/cuXM5deoUSikuXbpEREREps/D6NGjOX/+PCkpKSQkJLBo0SK8vLxwcHCgc+fO\n7Ny5k/3795OcnMy8efMoVqwY9evXN9iPr68vu3bt4vbt29y8eZNPP/1Ub7uTkxOXL182GoObmxv1\n69dn7NixJCUlce7cOVauXEmvXr0yPBdZ9eqrr1KrVi1Wr16dYaJ63F02o0f37t2Nvu+7777jr7/+\nIi0tjVu3bvHee+/RsmVLihYtCkCfPn2YNm0ad+7c4cKFCyxfvpyQkJBs/4wFkSSFfOTJ/5jG+r2n\n3/7YW2+9xR9//KFrn7C0tGTHjh2cOXOGSpUqUaZMGQYOHKg37iD9fmfPno2dnR2lS5cmODiYl19+\n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\nAABJRU5ErkJggg==\n",
"text": "<matplotlib.figure.Figure at 0x919e550>"
}
],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Applying finite differences to partial differential equations generalizes this procedure. However, first we analyze a trinomial tree.\n\nIn a trinomial tree we allow the stock price to rise or fall by an equal amount, $\\Delta x$. However, it may also stay the same. We need to solve for the risk neutral probabilities but not the step size!\n\nFor the differential equation of $x = \\ln S$ we have:\n\n$$dx = \\nu dt + \\sigma dz $$\n\nFor a given time increment and $\\Delta x$:\n\n$$\\mathbb{E}[\\Delta x ] = p_u \\Delta x + p_m \\times 0 - p_d \\Delta x = \\nu \\Delta t $$\n$$\\mathbb{E}[\\Delta x^2 ] = p_u \\Delta x^2 + p_m \\times 0 + p_d \\Delta x^2 = \\sigma^2 \\Delta t + \\nu^2 \\Delta t^2$$\n$$p_u + p_m + p_d =1$$\n\nIt turns out that a good choice of $\\Delta x$ is $\\sigma \\sqrt{3\\Delta t}$. The reason why we cannot choose it independently of $\\Delta t$ has to do with the discrete time approximation of a Brownian Motion. Solving the three equations above for the three risk neutral probabilities allows us to construct the grid and apply the finite difference method. Solving the trinomial tree is very similar to solving the binomial model and doing so will be left as an exercise.\n\nSolving the PDE With Finite Differences\n==========================================\n\nWe can view the finite difference method as simply extending the Trinomial Tree to a grid of values. If we consider the solution to the PDE to be $C(x, t)$ then we can think of the discretized solution as a matrix of values. Each column represents the call price as a function of the underlying asset price at the time step in question. The important thing we have to account for is boundary conditions. As will be shown in tutorial, we need to make assumptions about the value of the call option for high and low values of $x$. This is because a forward difference approximation requires information from outside the grid.\n\nTo understand the problem a bit further we will use the following notation. $i$ will index the $x$ grid and $t$ the time grid. Therefore, $C_{i,t}$ is really just $C(x_i, t)$. The Black SCholes PDE becomes:\n\n$$\\frac{C_{i,t+1} - C_{i,t}}{\\Delta t} = 0.5\\sigma^2 \\frac{C_{i+1,t+1} - 2 C_{i, t+1} + C_{i-1,t+1}}{\\Delta x^2} + \\nu \\frac{C_{i+1,t+1} - C_{i-1,t+1}}{2\\Delta x} - r C_{i,t+1} $$\n\nIt can be shown that this is equivalent to:\n\n$$C_{i,t} = p_u C_{i+1,t+1} + p_m C_{i,t+1} + p_d C_{i-1,t+1} $$\n\nFor appropriate choices of the probabilities. As well, we use the following boundary conditions:\n\n$$\\frac{\\partial C}{\\partial S} =1 \\;\\; \\mbox{For S large} \\qquad \\frac{\\partial C}{\\partial S} = 0 \\;\\; \\mbox{For S small}$$\n\nThis means that $C_{N,t} = C_{N-1,t} + S_{N,t} - S_{N-1,t}$ and $C_{-N,t} = C_{-N+1, t}$. We may want to change the size of the grid to make sure that the boundary condition is not impacting the call price. We will solve the American Call Pricing problem in the assignment.\n\nStability and Convergence\n============================\n\nIt is important to ensure that the probabilities, $p_u,p_d,p_m$ are positive and that the solution converges for different grid sizes. Imagine that $C$ represents the exact, unknown, solution of the PDE and $O$ represents the exact solution of the finite difference equation. The difference, $C-O$ is called the discretization error and is a result of approximating partial derivatives by finite differences. This can be made arbitrarily small by making the grid finer in both time and space. $\\tilde{O}$ represents the actual numerical solution. Therefore, $\\tilde{O}-O$ is the error due to rounding. A finite difference method is convergent if the discretisation error tends to zero as the time and space steps get smaller and the round off error is small and bounded at all times.\n\nIt turns out that if the volatility is small relative to the interest rate, $p_d$ can become negative. Furthermore, if the volatility is too large, then $p_m$ can become negative. Therefore, we cannot choose our time and space step sizes independently of $\\sigma$. This leads to the recommendation (which we will not dwell on) that:\n\n$$\\Delta x = \\sigma \\sqrt{3 \\Delta t} $$\n\n"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Assignment Problem\n======================\n\nChoose one of the following two questions to do.\n\n1. For a given time increment and $\\Delta x$ solve for $p_u,p_d,p_m$ in the trinomial model. Use these values to write a function which prices a European call option with K = 100, S = 100, r = .06 , $\\delta$ = .03, $\\sigma$ = .2. Assume that $\\Delta x = \\sigma \\sqrt{3\\Delta t}$ This should closely resemble your code for the binomial tree example.\n\n2. For a given time increment and $\\Delta x$ solve for $p_u,p_d,p_m$ in the finite difference model. Use these values to write a function which prices an American Call Option with K = 100, S = 100, r = .06 , $\\delta$ = .03, $\\sigma$ = .2. Assume that $\\Delta x = \\sigma \\sqrt{3\\Delta t}$. Plot the call price as a function of $x$ for a few different time steps. You may choose to start with a coarse grid and make it finer. The output should be an $I\\times N$ matrix where $I$ is the number of $x_i$ gridpoints and $N$ is the number of time steps.\n "
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment