{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "import numpy as np\n", "import matplotlib.pylab as plt\n", "from scipy.stats import norm" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Week 8 -- Pricing of more complex derivative products" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this week we take a look at the pricing of more complex derivatives. Recall from last week that the payoff of a European Call option only depends on the difference between the strike and the underlying asset at the time of maturity, i.e. payoff = $\\text{max}(S_T-K, 0)$. The options in this week go beyond this, and typyically have a more involved payoff structure, different rules on exercising the option (e.g. the option can be exercised at a time different from maturity) or demand some condition on the price of the underlying before the time of maturity.\n", "\n", "These extra conditions on the options usually implies that we can no longer obtain a closed-form solution for the price. Luckily we have another technique at our disposal to price these objects..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The pricing of any derivative is the following three-step process:\n", "\n", "1. Simulate $M$ trajectories of the underlying (e.g. a stock) over a discretized time-interval. \n", "\n", "2. For each trajectory we determine the payoff\n", "\n", "3. Finally, the price of the option is the average of the payoffs of each trajectory ($\\frac{1}{M} \\sum_{\\text{trajectories }}\\text{payoff}(\\text{trajectory})$), which we discount using the risk-free interest rate." ] }, { "cell_type": "heading", "level": 4, "metadata": {}, "source": [ "Barrier options -- Up and Out Call" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We consider a European up-and-out barrier option. It has the final payoff structure of an ordinary European Call option. In addition, it comes equipped with a Barrier price $B$. If, at any time, the price of the underlying crosses this Barrier (such that $S_t > B$) then the option is nullified and becomes worthless.\n", "\n", "In the Black-Scholes model it is possible to obtian a closed-from expression for this price. We will use this to compare our Monte-Carlo pricing scheme to the exact formula. If you are familiar with the deriviation of the pricing of vanilla options in the Black Scholes model, then you probably know that the resulting price of an option is a solution to the heat equation, subject to a particular boundary condition. The pricing of the Barrier option is very similar, but imposes different boundary conditions (i.e. those associated with the Barrier). " ] }, { "cell_type": "code", "collapsed": false, "input": [ "def priceBarrierUpAndOutCall(S0,K,B,r,T,sigma):\n", " \"\"\"\n", " priceBarrierUpAndOutCall: Black-Scholes price of an up and out barrier price option (continuous observations)\n", " INPUT:\n", " S0 : Initial value of the underlying asset\n", " K : Strike \n", " B : Up-and-out barrier \n", " r : Risk-free interest rate \n", " T : Time to expiry \n", " sigma : Volatility \n", "\n", " OUTPUT:\n", " price : Price of the option in the Black-Scholes model \n", "\n", " \"\"\"\n", " \n", " def compute_d(S0, K, r, sigma, T):\n", " d1 = (np.log(S0 / K) + (r + .5 * sigma**2) * T) / (sigma * np.sqrt(T))\n", " d0 = d1 - sigma * np.sqrt(T)\n", " return d0, d1\n", " \n", " \n", " mu = r - 0.5 * sigma**2\n", " nu = 2.0* mu / sigma**2\n", " \n", " aux1 = (B/S0)**(nu+2)\n", " aux2 = (B/S0)**(nu)\n", " \n", " K_disc = K * np.exp(-r * T) \n", " \n", " d0, d1 = compute_d(S0,K,r,sigma,T)\n", " price = S0 * norm.cdf(d1) - K_disc * norm.cdf(d0)\n", " \n", " d0, d1 = compute_d(S0,B,r,sigma,T)\n", " price = price - S0 * norm.cdf(d1) + K_disc * norm.cdf(d0)\n", " \n", " d0, d1 = compute_d(1.0/S0, 1.0/B, r, sigma, T)\n", " price = price + aux1 * S0 * norm.cdf(d1) - aux2 * K_disc * norm.cdf(d0)\n", " \n", " d0, d1 = compute_d(1./(K * S0), 1/B**2, r, sigma, T)\n", " price = price - aux1 * S0 * norm.cdf(d1) + aux2 * K_disc * norm.cdf(d0)\n", " \n", " return price" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We first define a generic Monte Carlo scheme for determining the price of an option. It only assumes the underlying is modelled using a geometric Brownian motion, and requires as an input the payoff function of the option. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "def priceOptionMC(S0,r,T,sigma,M,N, payoff_function):\n", " \"\"\"\n", " priceOptionMC: Black-Scholes price of a generic option providing a payoff.\n", " INPUT:\n", " S0 : Initial value of the underlying asset\n", " r : Risk-free interest rate \n", " T : Time to expiry \n", " sigma : Volatility \n", " M : Number of simulations\n", " N : Number of observations\n", " payoff_function : payoff function of the option\n", " \n", " OUTPUT:\n", " price_MC : MC estimate of the price of the option in the Black-Scholes model \n", " stdev_MC : MC estimate of the standard deviation \n", "\n", " \"\"\"\n", " \n", " ## Generate M x N samples from N(0,1)\n", " X = np.random.randn(M, N)\n", "\n", " \n", " ## Simulate M trajectories in N steps\n", " deltaT = T / N\n", " e = np.exp((r-0.5*sigma**2) * deltaT + sigma * np.sqrt(deltaT) * X)\n", " S = np.cumprod(np.c_[S0 * np.ones((M,1)), e], axis=1) \n", " \n", " \n", " ## Compute the payoff for each trajectory\n", " payoff = payoff_function(S)\n", "\n", " \n", " ## MC estimate of the price and the error of the option\n", " discountFactor = exp(-r*T);\n", " \n", " \n", " price_MC = discountFactor * np.mean(payoff)\n", " stdev_MC = discountFactor * np.std(payoff)/sqrt(M)\n", " return price_MC, stdev_MC" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next we consider the Barrier Up and Out Call option" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def priceBarrierUpAndOutCallMC(S0,K,B,r,T,sigma,M,N):\n", " \"\"\"\n", " priceBarrierUpAndOutCallMC: Black-Scholes price of an up and out barrier call option \n", " INPUT:\n", " S0 : Initial value of the underlying asset\n", " K : Strike |\n", " B : Up-and-out barrier \n", " r : Risk-free interest rate \n", " T : Time to expiry \n", " sigma : Volatility \n", " M : Number of simulations\n", " N : Number of observations\n", "\n", " OUTPUT:\n", " price_MC : MC estimate of the price of the option in the Black-Scholes model \n", " stdev_MC : MC estimate of the standard deviation \n", "\n", " \"\"\"\n", " def payoff_function(S):\n", " return np.where(S[:, -1] < K, 0, S[:, -1] - K) * np.all(S < B, axis=1)\n", " \n", " return priceOptionMC(S0,r, T, sigma, M, N, payoff_function)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we have a comparison:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def comparePriceBarrier():\n", " S0 = 100\n", " K = 90\n", " B = 160\n", " r = .05\n", " T = .1\n", " sigma = .4\n", "\n", " \n", " price = priceBarrierUpAndOutCall(S0,K,B,r,T,sigma)\n", " \n", " M = 1e5\n", " N = 20\n", " \n", " price_MC, stdev_MC = priceBarrierUpAndOutCallMC(S0,K,B,r,T,sigma,M,N) \n", "\n", " return price, price_MC, stdev_MC, (price - price_MC) / price\n", "\n", "print \"True price, Price estimate, std answer, True error:\"\n", "print comparePriceBarrier()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "True price, Price estimate, std answer, True error:\n", "(11.69842813465057, 11.675576778289024, 0.03471850651444669, 0.0019533698116125878)" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that the estimated variance of the MC price does not take into account the error that arises due to the discretization `N`." ] }, { "cell_type": "heading", "level": 4, "metadata": {}, "source": [ "Asian options" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In an Asian option the final payoff of the option is decided by comparing the strike K with the mean of the underlying at a set number of times preceding the option. So instead of comparing K to the final price at maturity S_T, we compare it with the mean of the price S(t) at times $t_1, t_2, ..., t_{N-1}, t_N = T$. with $t_i < T$ for $i=1, ..., N-1$.\n", "\n", "There are two versions of Asian option: we can take the arithmic mean ($\\frac{1}{N}\\sum_{i=1}^N S(t_i)$) or the geometric mean $\\exp\\big(\\frac{1}{N}\\sum_{i=1}^N \\log(S_i)\\big)$. The geometric mean has the advantage of allowing for a closed expression, which we implement now." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def priceAsianGeometricMeanCall(S0,K,r,T,sigma,N):\n", " \"\"\"\n", " priceAsianGeometricMeanCall: Price of a Asian call option on the geometric mean in the Black-Scholes model\n", " INPUT:\n", " S0 : Initial value of the underlying asset\n", " K : Strike \n", " r : Risk-free interest rate \n", " T : Time to expiry \n", " sigma : Volatility \n", " N : Number of monitoring times\n", "\n", " OUTPUT:\n", " price : Price of the option in the Black-Scholes model \n", " \"\"\"\n", "\n", " ## Auxiliary parameters\n", " r_GM = 0.5 * (r * (N+1) / N - sigma**2 * (1.0 - 1.0/N**2) / 6.0)\n", " sigma_GM = sigma * np.sqrt((2.0 * N**2 + 3.0 * N + 1.0) / (6.0 * N**2))\n", " \n", " d_plus = log(S0/(K*np.exp(-r_GM*T)))/(sigma_GM*sqrt(T)) + sigma_GM*np.sqrt(T)/2.0\n", " d_minus = d_plus - sigma_GM*np.sqrt(T)\n", " \n", " \n", " ## Pricing formula\n", " price = np.exp(-r*T)*(S0*np.exp(r_GM*T)*norm.cdf(d_plus)-K*norm.cdf(d_minus))\n", " \n", " return price" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, we are not interested in where this expression comes from -- we only use it to bench the MC approach.\n", "\n", "\n", "For the MC implementation we only need to define the payoff function. Note that we can set the discretization of the geometric Brownian motion equal to the number of observations in the Asian option." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def priceAsianGeometricMeanCallMC(S0,K,r,T,sigma,M,N):\n", " \"\"\"\n", " priceAsianGeometricMeanCallMC: Price of a Asian call option on the geometric mean in the Black-Scholes model\n", "\n", " INPUT:\n", " S0 : Initial value of the underlying asset\n", " K : Strike \n", " r : Risk-free interest rate \n", " T : Time to expiry \n", " sigma : Volatility \n", " M : Number of simulations\n", " N : Number of observations\n", "\n", " OUTPUT:\n", " price_MC : MC estimate of the price of the option in the Black-Scholes model \n", " stdev_MC : MC estimate of the standard deviation \n", " \"\"\"\n", " def payoff(S):\n", " S_mean = np.exp(np.mean(np.log(S[:, 1:]), 1))\n", " return np.where(S_mean < K, 0, S_mean -K)\n", " \n", " return priceOptionMC(S0,r,T,sigma,M,N, payoff)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we compare these two pricing schemes again." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def comparePriceAsianGeometric():\n", " S0 = 100; r = 0.05; K = 90; T = 2; sigma = 0.4; N = 24;\n", " M = 1e6;\n", " \n", " price = priceAsianGeometricMeanCall(S0,K,r,T,sigma,N) \n", " price_MC, stdev_MC = priceAsianGeometricMeanCallMC(S0,K,r,T,sigma,M,N) \n", "\n", " return price, price_MC, stdev_MC, (price - price_MC) / price\n", "\n", "print \"True price, Price estimate, std answer, True error:\"\n", "print comparePriceAsianGeometric()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "True price, Price estimate, std answer, True error:\n", "(18.200498107337555, 18.203293660236795, 0.025861694758367866, -0.00015359760390914901)" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, let's price an option for which we do not have a closed expression: an Asian option which makes use of the arithmetic mean. We have " ] }, { "cell_type": "code", "collapsed": false, "input": [ "def priceAsianArithmeticMeanCallMC(S0,K,r,T,sigma,M,N):\n", " \"\"\"\n", " priceAsianArithmeticMeanCall: Price of a Asian call option on the arithmetic mean in the Black-Scholes model\n", "\n", " INPUT:\n", " S0 : Initial value of the underlying asset\n", " K : Strike \n", " r : Risk-free interest rate \n", " T : Time to expiry \n", " sigma : Volatility \n", " M : Number of simulations\n", " N : Number of observations\n", "\n", " OUTPUT:\n", " price_MC : MC estimate of the price of the option in the Black-Scholes model\n", " stdev_MC : MC estimate of the standard deviation \n", "%\n", "%% EXAMPLE: \n", "% S0 = 100; K = 90; r = 0.05; T = 2; sigma = 0.4;\n", "% M = 1e5; N = 24;\n", "% [price_MC,stdev_MC] = priceAsianArithmeticMeanCallMC(S0,K,r,T,sigma,M,N)\n", " \"\"\"\n", " def payoff(S):\n", " S_ar_mean = np.mean(S[:, 1:], 1)\n", " return np.where(S_ar_mean < K, 0, S_ar_mean - K)\n", " return priceOptionMC(S0,r,T,sigma,M,N, payoff)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "def examplePriceArithmeticAsian():\n", " S0 = 100; K = 90; r = 0.05; T = 2; sigma = 0.4;\n", " M = 1e5; N = 24;\n", " return priceAsianArithmeticMeanCallMC(S0,K,r,T,sigma,M,N)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "examplePriceArithmeticAsian()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "(20.021267213508082, 0.089925383109828061)" ] } ], "prompt_number": 11 }, { "cell_type": "heading", "level": 4, "metadata": {}, "source": [ "Asian Options -- Using the geometric Asian option as a control variate for the arithmetic Asian option." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since we can solve the geometric case exactly, we can compare the quality of the MC simulation to the exact price. This is not the case for the arithmetic mean for which we do not have an exact solution. However, we know that the geometric and arithmetic pricing schemes are highly correlated if we use the same simulations to evaluate their prices. Put differently, the error of the geometric Asian option will be highly correlated to the error in the arithmetic option, if we use the same simulation." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def priceOptionMCWithSAsInput(S, r, T, M, payoff_function):\n", " \"\"\"\n", " priceOptionMC: Black-Scholes price of a generic option providing a payoff.\n", " INPUT:\n", " S : A set of pre-computed simulations of Brownian motion\n", " r : Risk-free interest rate\n", " M : Number of simulations\n", " T : Time to maturity\n", " payoff_function : payoff function of the option\n", " \n", " OUTPUT:\n", " price_MC : MC estimate of the price of the option in the Black-Scholes model \n", " stdev_MC : MC estimate of the standard deviation \n", "\n", " \"\"\"\n", " \n", " ## Compute the payoff for each trajectory\n", " payoff = payoff_function(S)\n", "\n", " \n", " ## MC estimate of the price and the error of the option\n", " discountFactor = exp(-r*T);\n", " \n", " price_MC = discountFactor * np.mean(payoff)\n", " stdev_MC = discountFactor * np.std(payoff)/sqrt(M)\n", " return payoff, price_MC, stdev_MC" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "def priceAsianArithmeticMeanCallMC_withControlVariate(S0,K,r,T,sigma,M,N):\n", " \"\"\"\n", " priceOptionMC: Black-Scholes price of a generic option providing a payoff.\n", " \n", " INPUT:\n", " S0 : Initial value of the underlying asset\n", " r : Risk-free interest rate \n", " T : Time to expiry \n", " sigma : Volatility \n", " M : Number of simulations\n", " N : Number of observations\n", " payoff_function : payoff function of the option\n", " \n", " OUTPUT:\n", " price_MC : MC estimate of the price of the option in the Black-Scholes model \n", " stdev_MC : MC estimate of the standard deviation \n", "\n", " \"\"\"\n", " \n", " ## Generate M x N samples from N(0,1)\n", " X = np.random.randn(M, N)\n", "\n", " ## Simulate M trajectories in N steps\n", " deltaT = T / N\n", " e = np.exp((r-0.5*sigma**2) * deltaT + sigma * np.sqrt(deltaT) * X)\n", " S = np.cumprod(np.c_[S0 * np.ones((M,1)), e], axis=1) \n", " \n", " def arithmeticMean(S):\n", " S_mean = np.mean(S[:, 1:], 1)\n", " return np.where(S_mean < K, 0, S_mean - K)\n", " \n", " def geometricMean(S):\n", " S_mean = np.exp(np.mean(np.log(S[:, 1:]), 1))\n", " return np.where(S_mean < K, 0, S_mean - K) \n", " \n", " \n", " payoff_ar, price_ar, std_ar = priceOptionMCWithSAsInput(S, r, T, M, arithmeticMean)\n", " payoff_geom, price_geom, std_geom = priceOptionMCWithSAsInput(S, r, T, M, geometricMean)\n", " price_geom_exact = priceAsianGeometricMeanCall(S0,K,r,T,sigma,N)\n", " \n", " \n", " covarianceMatrix = np.cov(np.c_[payoff_ar, payoff_geom].T)\n", " \n", " var_ar = covarianceMatrix[0,0]\n", " var_geom = covarianceMatrix[1,1]\n", " cov_ar_geom = covarianceMatrix[0,1]\n", " \n", " corr_ar_geom = cov_ar_geom / np.sqrt(var_ar * var_geom)\n", " \n", " \n", " price_MC = price_ar - cov_ar_geom / var_geom * (price_geom - price_geom_exact)\n", " std_MC = std_ar * np.sqrt(1 - corr_ar_geom**2)\n", " return price_MC, std_MC" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "For example:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "priceAsianArithmeticMeanCallMC_withControlVariate(100, 50, .01, .5, .05, 1000, 20)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 14, "text": [ "(50.012110224070128, 0.00029075949494943601)" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's compare it with the straightforward MC method:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def examplePriceArithmeticAsian():\n", " S0 = 100; K = 90; r = 0.05; T = 2; sigma = 0.4;\n", " M = 1e5; N = 24;\n", " price_direct, std_direct = priceAsianArithmeticMeanCallMC(S0,K,r,T,sigma,M,N)\n", " price_control, std_control = priceAsianArithmeticMeanCallMC_withControlVariate(S0,K,r,T,sigma,M,N)\n", " return price_direct, std_direct, price_control, std_control" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "print \"Price of direct MC method, std of direct MC method, price using control, std using control:\"\n", "print examplePriceArithmeticAsian()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Price of direct MC method, std of direct MC method, price using control, std using control:\n", "(20.119139232990587, 0.090583766542370006, 19.990375806117381, 0.0068455288947210291)" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note the large reduction in variance using the control variate." ] }, { "cell_type": "heading", "level": 4, "metadata": {}, "source": [ "Towards basket options: multivariate Guassians" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The last exotic option we treat are so-called basket options. For this we require a random number generator which draws samples from a multivariate Gaussian distribution. Such a distribution is characterized by a $D$-dimensional vector of means, $\\lbrace\\mu_i\\rbrace_{i=0}^{D-1}$ and a $(D\\times D)$ dimensional covariance matrix $\\Sigma_{ij}$. \n", "\n", "The method employed below draws samples from a standardized normal distribution, and then transforms this into the appropriate multivariate Guassian distribution using the Cholesky decomposition of the covariance matrix. The method briefly described here:\n", "\n", "https://en.wikipedia.org/wiki/Multivariate_normal_distribution#Drawing_values_from_the_distribution" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from scipy.linalg import cholesky" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "def multivariateGaussianRand(M, mu, Sigma):\n", " \"\"\"\n", " multivariateGaussianRand: Generate random numbers from a D-dimensional Gaussian\n", "\n", " INPUT:\n", " M : size of the sample\n", " mu : vector of means [D,1]\n", " Sigma : covariance matrix [D,D]\n", "\n", " OUTPUT:\n", " Z : Sample from N(mu,Sigma) Gaussian [M,D] \n", " \"\"\"\n", " mu = np.asarray(mu)\n", " Sigma = np.asarray(Sigma)\n", " \n", " D = mu.size\n", " \n", " L = cholesky(Sigma).T\n", " \n", " ## Generate M samples of D-dimensional vectors of independent Gaussians \n", " X = np.random.randn(D, M)\n", " \n", " \n", " ## Transform vectors into vectors with proper mean and correlations\n", " Z = mu[:, np.newaxis] + np.dot(L, X)\n", " return Z.T" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "For example," ] }, { "cell_type": "code", "collapsed": false, "input": [ "print multivariateGaussianRand(5, [1,2,3], [[1, .8,.1], [.8, 1, .2], [.1, .2, 1]])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[ 2.28535028 2.34348062 4.37298145]\n", " [ 0.67509569 1.68891011 3.12171762]\n", " [ 3.29645543 3.90892868 3.53170911]\n", " [-0.03596496 1.42647563 3.42979056]\n", " [-0.44609467 1.03210928 3.79779816]]\n" ] } ], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below we plot the case of a 2D gaussian distribution. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "from scipy.linalg import det, inv\n", "def graph2DGaussian(mu, Sigma, alpha=3, nContours=25):\n", " ## Generate 2-dimensional grid\n", " nPlot = 100\n", " Sigma = np.asarray(Sigma).astype(np.float)\n", "\n", " mu = np.asarray(mu).astype(np.float)\n", " \n", " radii = alpha * np.diag(np.sqrt(Sigma))\n", "\n", " z1 = np.linspace(mu[0] - radii[0], mu[0] + radii[0], nPlot)\n", " z2 = np.linspace(mu[1] - radii[1], mu[1] + radii[1], nPlot)\n", " \n", " [Z1, Z2] = np.meshgrid(z1,z2)\n", "\n", " detSigma = det(Sigma)\n", " invSigma = inv(Sigma)\n", " \n", " z = (np.r_[Z1[np.newaxis],Z2[np.newaxis]] - mu[:, np.newaxis, np.newaxis] )\n", " \n", " # To make use of vectorization (i.e. avoid looping) we need some clever broadcasting of the indices.\n", " z = z[..., np.newaxis]\n", " zT = np.swapaxes(z, 0, 3) \n", " invSigma = invSigma[:, np.newaxis, np.newaxis, :]\n", " \n", " f = np.exp(- .5 * (zT * invSigma * z).sum(axis=(0, 3))) / (2 * np.pi * np.sqrt(detSigma))\n", "\n", " fig = plt.figure()\n", " plt.contour(Z1, Z2, f, nContours)\n", "\n", " plt.show()\n", " \n", " \n", " \n", "graph2DGaussian([1, 2], [[1., .8], [.8, 2]])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nF4otCtw+KS1falYsT5TmlhpUKTrmsqSqERPu81VOblFkn/qqorQiScqKukQXK17pulJmXd1cHbRW\nc1Qgu6qHGnya6RnF6nnl6SFdGJpxX6Bu8uu40vVX1dPPqqC6huao/rZUsa2U11OqeLN0wWdShdAa\n/+Iu5uHLktLnSvFfSbuflKq1kC5oL1VtIZ3fSKpcX6pUVzqvsqTyRmscnxTINw+/TfKmSJ5kyXNS\nch6WXEfNcdXbmmai5gOkGtdKFWqYlYF3tZQ3SvJvkSrdKp3/iHTheAXO88qpJXLoUSGPqutJNdQK\neRRQgpYoTSNVSx3UVh+qki7VHsVoiT5VI12ph/S6KqimVmibtup33aTWGqTnlSKfPtUepcqtnrpC\nt6melsilnkpRK1XSUjXQJVZFjbZJw3IMVfJjA6k80hf7pFGHpfeukvq2lCqUk+bskt5aJHW7Wtr3\nnlS9spl1f/6zNGmZ9M2r0l/vCicqYzdJL74udblJ2rVWuiAil+71oo8+cmv2bK9+/rm67rij9Fnx\nsWNOPfPMbjVqdL527LjpjDW8LQsNHhyr8eO3au7cJ3TrrU3O6Lhz+Nfgf7oK5dChbB04kKUnnmj9\nxzsXw6xZqXr22QanDfzBIFqxwq+vvqpS6vNx26VO10jnlUzua1+C1K550bHUfKl+DalCsZWtMyhV\nL/ZNnV9O8oTZEdVRedkUlE+oUoj7bqkLFaP0Isd11BXaosOnAnhlVdHVuk0btVj36EVJUkVdoFZ6\nS7v0mW7UeFWSIeBr6j2VU0Wl6kHV01RVVui8Vr5bqr1Pco6Ssm8w21WeN/+WqyBVqiM1fs08gm7J\nsUcq2C25jkk5+yVvuuTLNBQIAfM4r7IJxuUvkCpeFAr0l0o1rjE3gKotDS1D0ARs30ap4AfJFyWV\nqy5VvlOq9oZU6W4FznPIpd9UoJ7y66iq6l7V0mBVVDtlaqOOaLhcSlIjPajOmiSnAtquKB3T97pC\nHfWE3lNQ52uFtmmbjupmtdFAPadMBfW1DuqQ8vRXNdeDaqRt8uphpSsgNFK1dSNVtNAh3ZUhtT1f\n2txUuryS9Huq1Ge7dNWF0vb7pCbVpBM50uvzpaRcae4L0k1NQ9fRQemloaajcvdk6ZLQDd7tlj4Z\nLM2cL00YIT18f9FrZO/egJ57zqnmzc/Trl0XltpVKUkzZqTorbcO6pNPLlfv3k3OeLJjt7v1/POL\n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\nyvEAAAAASUVORK5CYII=\n", "text": [ "<matplotlib.figure.Figure at 0x9df12e8>" ] } ], "prompt_number": 20 }, { "cell_type": "heading", "level": 4, "metadata": {}, "source": [ "Basket Options -- pricing scheme" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A basket option is an option on an underlying which is comprised out of a weighted average of other assets. For example, an index fund is a portfolio of assets with the weight $a_i$ of each asset $S_i$ is given by the number of assets $S_i$ in the portfolio (or basket). The price of the portfolio is then the weighted average $U(t) = \\sum_i a_i S_i(t)$. A basket call option with strike $K$ is then determined by the payoff $\\text{max}(U(T) - K, 0)$. In this case of a simple portfolio the option is also known as a portfolio option.\n", "\n", "In the Black-Scholes model the stocks in the portfolio are modeled by geometric Brownian motion. However, the sum of lognormal distributions is itself not a lognormal distribution, so the portfolio cannot be modeled using geometric Brownian motion. \n", "\n", "The portfolio and corresponding basket option become even more interesting when we consider correlated assets. This can be performed using the language of multivariate Gaussians as introduced above.\n", "\n", "To price a basket option using MC for correlated assets we need to go back to the drawing board. Here we only look at the case of an option consisting of two options. For each stock we have the initial $S_0$, the volatility $\\sigma_i$ and weight in the portfolio $c$. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "def priceBasket2CallMC(S1_0,S2_0,c1,c2,K,r,T,sigma1,sigma2,rho,M):\n", " \"\"\"\n", " priceBasket2CallMC: Price of a call option on a 2 asset basket in the Black-Scholes model\n", "\n", " INPUT:\n", " S1_0 : Initial value of the underlying asset I\n", " S2_0 : Initial value of the underlying asset II\n", " c1 : coefficient of asset I in the basket\n", " c2 : coefficient of asset II in the basket\n", " K : Strike \n", " r : Risk-free interest rate \n", " T : Time to expiry \n", " sigma1 : Volatility of asset I\n", " sigma2 : Volatility of asset II\n", " rho : Correlation between the asset log-returns\n", " M : Number of simulations\n", "\n", " OUTPUT:\n", " price_MC : MC estimate of the price of the option in the Black-Scholes model \n", " stdev_MC : MC estimate of the standard deviation \n", "EXAMPLE: \n", "% S1_0 = 100; c1 = 0.4; sigma1 = 0.2;\n", "% S2_0 = 200; c2 = 0.3; sigma2 = 0.4;\n", "% rho = 0.5;\n", "% K = 90; r = 0.05; T = 2; \n", "% M = 1e6; \n", "% [price_MC,stdev_MC] = priceBasket2CallMC(S1_0,S2_0,c1,c2,K,r,T,sigma1,sigma2,rho,M)\n", "% price = priceBasket2Call(S1_0,S2_0,c1,c2,K,r,T,sigma1,sigma2,rho)\n", " \"\"\"\n", " \n", " ## Generate M x 2 independent samples from N(0,1)\n", " X1 = np.random.randn(M)\n", " X2 = np.random.randn(M)\n", " \n", " ## Generate M x 2 correlated samples from N(0,rho)\n", " Z1 = X1\n", " Z2 = rho * X1 + np.sqrt(1 - rho**2) * X2\n", " \n", " ### Note that we could also use our function multivariateGaussianRand to generate these samples.\n", " \n", " ## Simulate M trajectories in one step\n", " S1_T = S1_0 * np.exp((r - 0.5 * sigma1**2) * T + sigma1 * np.sqrt(T) * Z1)\n", " S2_T = S2_0 * np.exp((r - 0.5 * sigma2**2) * T + sigma2 * np.sqrt(T) * Z2)\n", " \n", " ## Compute the payoff\n", " basketValue = c1 * S1_T + c2 * S2_T\n", " payoff = np.where(basketValue < K, 0, basketValue - K)\n", " \n", " ## MC estimate of the price and the error of the option\n", " discountFactor = exp(-r*T)\n", " price_MC = discountFactor*mean(payoff)\n", " stdev_MC = discountFactor*std(payoff)/sqrt(M)\n", " return price_MC, stdev_MC" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "priceBasket2CallMC(100, 100, .6, .4, 90, .01, 2, .2, .4,.5, 1e6)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 22, "text": [ "(19.423470998394375, 0.029411984098633426)" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The price of a 2-asset basket option can also be obtained from an integral, which we approximate using numerical integration. This integral is simply the expected value of the payoff of the function function average with respect to the distribution of the two underlying assets at the time of maturity." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from scipy.integrate import quad\n", "\n", "def priceBasket2Call(S1_0,S2_0,c1,c2,K,r,T,sigma1,sigma2,rho):\n", " \"\"\"\n", " priceBasket2CallMC: Price of a call option on a 2 asset basket in the Black-Scholes model\n", "\n", " INPUT:\n", " S1_0 : Initial value of the underlying asset I\n", " S2_0 : Initial value of the underlying asset II\n", " c1 : coefficient of asset I in the basket\n", " c2 : coefficient of asset II in the basket\n", " K : Strike \n", " r : Risk-free interest rate \n", " T : Time to expiry \n", " sigma1 : Volatility of asset I\n", " sigma2 : Volatility of asset II\n", " rho : Correlation between the asset log-returns\n", "\n", " OUTPUT:\n", " price: Price of the option in the Black-Scholes model \n", "\n", " USES:\n", " integrand_priceBasket2Call.m\n", "%\n", "%% EXAMPLE: \n", "% S1_0 = 100; c1 = 0.4; sigma1 = 0.2;\n", "% S2_0 = 200; c2 = 0.3; sigma2 = 0.4;\n", "% rho = 0.5;\n", "% K = 90; r = 0.05; T = 2; \n", "% price = priceBasket2Call(S1_0,S2_0,c1,c2,K,r,T,sigma1,sigma2,rho)\n", "% M = 1e6;\n", "% [price_MC,stdev_MC] = priceBasket2CallMC(S1_0,S2_0,c1,c2,K,r,T,sigma1,sigma2,rho,M)\n", " \"\"\"\n", "\n", " ## External integrand\n", " def externalIntegrand(x1):\n", " return norm.pdf(x1) * integrand_priceBasket2Call(x1,S1_0,S2_0,c1,c2,K,r,T,sigma1,sigma2,rho)\n", "\n", "\n", " ## Pricing formula \n", " discountFactor = exp(-r*T)\n", " \n", " R = 10.0\n", " TOL = 1.0e-4\n", " price = discountFactor * quad(externalIntegrand, -R, R, epsabs=TOL, epsrel=TOL)[0]\n", " return price" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 23 }, { "cell_type": "markdown", "metadata": {}, "source": [ "And the externalIntegrand is defined as" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def integrand_priceBasket2Call(x1,S1_0,S2_0,c1,c2,K,r,T,sigma1,sigma2,rho):\n", " \"\"\"\n", " integrand_priceBasket2Call: auxiliary function for priceBasket2Call\n", " INPUT:\n", " x1 : integration variable\n", " S1_0 : Initial value of the underlying asset I\n", " S2_0 : Initial value of the underlying asset II\n", " c1 : coefficient of asset I in the basket\n", " c2 : coefficient of asset II in the basket\n", " K : Strike \n", " r : Risk-free interest rate \n", " T : Time to expiry \n", " sigma1 : Volatility of asset I\n", " sigma2 : Volatility of asset II\n", " rho : Correlation between the asset log-returns\n", "\n", " OUTPUT:\n", " externalIntegrand : External integrand to price of the option in the Black-Scholes model \n", " \"\"\"\n", " def S1_T(x2):\n", " return S1_0 * exp((r-0.5*sigma1**2) * T + sigma1 * np.sqrt(T) * x1)\n", " def S2_T(x2):\n", " return S2_0 * exp((r-0.5*sigma2**2) * T + sigma2 * np.sqrt(T) * (rho * x1+sqrt(1-rho**2)*x2)) \n", "\n", " \n", " def basketValue(x2):\n", " return c1 * S1_T(x2) + c2 * S2_T(x2)\n", " def payoff(x2):\n", " p = basketValue(x2) - K\n", " return np.max([p, 0])\n", " def internalIntegrand(x2):\n", " return norm.pdf(x2) * payoff(x2)\n", " \n", " R = 10.0;\n", " TOL = 1.0e-4;\n", " \n", " externalIntegrand = quad(internalIntegrand,-R,R, epsabs=TOL, epsrel=TOL)[0]\n", " return externalIntegrand" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we compare the two methods:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def example():\n", " S1_0 = 100; c1 = 0.4; sigma1 = 0.2;\n", " S2_0 = 200; c2 = 0.3; sigma2 = 0.4;\n", " rho = 0.5;\n", " K = 90; r = 0.05; T = 2; \n", " price = priceBasket2Call(S1_0,S2_0,c1,c2,K,r,T,sigma1,sigma2,rho)\n", " M=1e6\n", " price_MC, std_MC = priceBasket2CallMC(S1_0,S2_0,c1,c2,K,r,T,sigma1,sigma2,rho,M)\n", " return price, price_MC\n", "print example()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(25.445726651882392, 25.405206396785928)\n" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 25 } ], "metadata": {} } ] }