{ "metadata": { "name": "FiniteDifference_BS", "zanadu": { "authors": [ "Antoine Jacquier" ], "category": "7", "clearance": "Internal", "group_name": "IC MathFin Num Methods", "md5": "42C0C3D8A33394E97A12690E4CA982BD", "notebook_id": "AE43D0D2-BDB1-4987-B774-C9F583ECB346", "python_name": null, "reviewer_id": null, "status": "WIP" } }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": { "zanadu": {} }, "source": "Finite-difference scheme for the Black-Scholes PDE\n======\n***" }, { "cell_type": "code", "collapsed": false, "input": "from scipy import interpolate\nimport numpy as np", "language": "python", "metadata": { "zanadu": { "code_type": "" } }, "outputs": [], "prompt_number": 1 }, { "cell_type": "heading", "level": 1, "metadata": { "zanadu": {} }, "source": "Description of the scheme" }, { "cell_type": "heading", "level": 3, "metadata": { "zanadu": {} }, "source": "Boundary conditions" }, { "cell_type": "heading", "level": 4, "metadata": { "zanadu": {} }, "source": "At maturity" }, { "cell_type": "code", "collapsed": false, "input": "def bcTime0(x, args): ## Function specifying the boundary condition\n [strike, r, sigma] = args\n a = (r - 0.5*sigma*sigma) / (sigma*sigma)\n b = 2.*r / (sigma*sigma) + a*a\n return np.exp(a*x) * max(np.exp(x) - 1.0, 0.0)## From the Call option payoff", "language": "python", "metadata": { "zanadu": { "code_type": "", "is_hidden": true } }, "outputs": [], "prompt_number": 2 }, { "cell_type": "heading", "level": 4, "metadata": { "zanadu": {} }, "source": "In the space domain" }, { "cell_type": "code", "collapsed": false, "input": "def bcxXMin(x):\n return 0.\n\ndef bcxXMax(x, tau, args):\n [strike, r, sigma] = args\n a = (r - 0.5*sigma*sigma) / (sigma*sigma)\n b = 2.*r / (sigma*sigma) + a*a\n return (np.exp(x) - np.exp(-2.*r*tau/(sigma*sigma))) * np.exp(a*x + b*tau)", "language": "python", "metadata": { "zanadu": { "code_type": "", "is_hidden": true } }, "outputs": [], "prompt_number": 3 }, { "cell_type": "heading", "level": 3, "metadata": { "zanadu": {} }, "source": "Explicit Finite Difference Scheme" }, { "cell_type": "code", "collapsed": false, "input": "def heatEq_FDExplicit(xMin, xMax, tauMax, nbStepTime, nbStepSpace, *extraArgs):\n## bc represents the function (of x) at the boundary tauMin\n## We follow the conventions in the notes:\n## there are (nbStepSpace+1) points on the x-axis\n## and (nbStepTime+1) points on the tau-axis\n\n sigma = extraArgs[0][2]\n print \"sigma: \", sigma\n dx = (xMax - xMin) / (1.*nbStepSpace) # Grid step in space\n dt = tauMax / (1.*nbStepTime) # Grid step in time\n cfl = dt / (dx*dx)\n if cfl > 1.:\n print '***********************************************************'\n print '*****WARNING: THE CFL CONDITION IS NOT SATISFIED!!!!!!*****'\n print \"dt = \", dt\n print \"dx2 = \", dx*dx\n print '********* clf ratio = %s ***************************' % cfl\n print '***********************************************************'\n else:\n print \"dt =\", dt\n print \"dx2 = \", dx*dx\n print \"CFL condition satisfied\"\n \n # Boundary conditions\n xx = np.linspace(xMin,xMax,nbStepSpace+1) ## set the grid on the x-axis\n uu = [[0.]*(nbStepSpace+1)]*(nbStepTime+1)\n timeVector = np.linspace(0.,tauMax,nbStepTime+1)\n uu[0] = np.array([bcTime0(x, extraArgs[0]) for x in xx])\n \n for i in range(0, nbStepTime):\n uu[i+1][0] = bcxXMin(xx[0])\n uu[i+1][-1] = bcxXMax(xx[-1], timeVector[i+1], extraArgs[0])\n \n for j in range(1, nbStepSpace):\n uu[i+1][j] = cfl*(uu[i][j+1] - 2.0*uu[i][j] + uu[i][j-1]) + uu[i][j]\n return [xx, timeVector, uu]", "language": "python", "metadata": { "zanadu": { "is_hidden": false } }, "outputs": [], "prompt_number": 4 }, { "cell_type": "heading", "level": 3, "metadata": { "zanadu": {} }, "source": "Numerical example" }, { "cell_type": "code", "collapsed": false, "input": "xMin, xMax, nbStepTime, nbStepSpace = -0.8, 0.5, 200, 50 ##(try with 100)\nT, strike, r, sigma = 2., 1.2, 0., 0.2", "language": "python", "metadata": { "zanadu": { "code_type": "" } }, "outputs": [], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": "extraArgs = strike, r, sigma\n[xx, timeVector, uu] = heatEq_FDExplicit(xMin, xMax, 0.5*sigma*sigma*T, nbStepTime, nbStepSpace, extraArgs)\n#plot(xx, uu[0], 'b', xx, uu[-1], 'r')\n#show()\n\ndef mappingXToS(xx, tautau, uu, T, r, sigma, strike):\n ## xx is the x coordinate vector; tautau the time-coordinate vector\n ## uu the value function on the grid\n a = (r - 0.5*sigma*sigma) / (sigma*sigma)\n b = 2.*r / (sigma*sigma) + a*a\n tt = T - tautau/(0.5*sigma*sigma)\n SS = strike*np.exp(xx)\n output = [0.0]*len(tautau)\n for n in arange(len(tautau)):\n# for p in arange(len(xx)):\n output[n] = strike*np.exp(-a*xx - b*tautau[n])*uu[n]\n return [SS, tt, output]\n\n[SS, tt, CC] = mappingXToS(xx, timeVector, uu, T, r, sigma, strike)\nplot(SS, CC[0], 'b')\nplot(SS, CC[-1], 'ro')\nshow()\nm = 99\nprint \"Remaining maturity: \", tt[m]\nf = interpolate.interp1d(SS, CC[m], 'cubic')\nprint \"Call option value: \", float(f(1.2))", "language": "python", "metadata": { "zanadu": { "is_hidden": true } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "sigma: 0.2\ndt = 0.0002\ndx2 = 0.000676\nCFL condition satisfied\n" }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": "" }, { "output_type": "stream", "stream": "stdout", "text": "Remaining maturity: 1.01\nCall option value: 0.161562738184\n" } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": "", "language": "python", "metadata": { "zanadu": { "code_type": "" } }, "outputs": [], "prompt_number": 6 } ], "metadata": {} } ] }