{
 "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": {}
  }
 ]
}