{
 "metadata": {
  "name": "mcpricer"
 }, 
 "nbformat": 2, 
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "markdown", 
     "source": [
      "# Parallel Monto-Carlo options pricing"
     ]
    }, 
    {
     "cell_type": "markdown", 
     "source": [
      "## Problem setup"
     ]
    }, 
    {
     "cell_type": "code", 
     "collapsed": true, 
     "input": [
      "import sys", 
      "import time", 
      "from IPython.parallel import Client", 
      "import numpy as np", 
      "from mckernel import price_options", 
      "from matplotlib import pyplot as plt"
     ], 
     "language": "python", 
     "outputs": [], 
     "prompt_number": 1
    }, 
    {
     "cell_type": "code", 
     "collapsed": true, 
     "input": [
      "cluster_profile = \"default\"", 
      "price = 100.0  # Initial price", 
      "rate = 0.05  # Interest rate", 
      "days = 260  # Days to expiration", 
      "paths = 10000  # Number of MC paths", 
      "n_strikes = 6  # Number of strike values", 
      "min_strike = 90.0  # Min strike price", 
      "max_strike = 110.0  # Max strike price", 
      "n_sigmas = 5  # Number of volatility values", 
      "min_sigma = 0.1  # Min volatility", 
      "max_sigma = 0.4  # Max volatility"
     ], 
     "language": "python", 
     "outputs": [], 
     "prompt_number": 2
    }, 
    {
     "cell_type": "code", 
     "collapsed": true, 
     "input": [
      "strike_vals = np.linspace(min_strike, max_strike, n_strikes)", 
      "sigma_vals = np.linspace(min_sigma, max_sigma, n_sigmas)"
     ], 
     "language": "python", 
     "outputs": [], 
     "prompt_number": 3
    }, 
    {
     "cell_type": "markdown", 
     "source": [
      "## Parallel computation across strike prices and volatilities"
     ]
    }, 
    {
     "cell_type": "markdown", 
     "source": [
      "The Client is used to setup the calculation and works with all engines."
     ]
    }, 
    {
     "cell_type": "code", 
     "collapsed": true, 
     "input": [
      "c = Client(profile=cluster_profile)"
     ], 
     "language": "python", 
     "outputs": [], 
     "prompt_number": 4
    }, 
    {
     "cell_type": "markdown", 
     "source": [
      "A LoadBalancedView is an interface to the engines that provides dynamic load", 
      "balancing at the expense of not knowing which engine will execute the code."
     ]
    }, 
    {
     "cell_type": "code", 
     "collapsed": true, 
     "input": [
      "view = c.load_balanced_view()"
     ], 
     "language": "python", 
     "outputs": [], 
     "prompt_number": 5
    }, 
    {
     "cell_type": "code", 
     "collapsed": false, 
     "input": [
      "print \"Strike prices: \", strike_vals", 
      "print \"Volatilities: \", sigma_vals"
     ], 
     "language": "python", 
     "outputs": [
      {
       "output_type": "stream", 
       "stream": "stdout", 
       "text": [
        "Strike prices:  [  90.   94.   98.  102.  106.  110.]", 
        "Volatilities:  [ 0.1    0.175  0.25   0.325  0.4  ]"
       ]
      }
     ], 
     "prompt_number": 6
    }, 
    {
     "cell_type": "markdown", 
     "source": [
      "Submit tasks for each (strike, sigma) pair."
     ]
    }, 
    {
     "cell_type": "code", 
     "collapsed": true, 
     "input": [
      "t1 = time.time()", 
      "async_results = []", 
      "for strike in strike_vals:", 
      "    for sigma in sigma_vals:", 
      "        ar = view.apply_async(price_options, price, strike, sigma, rate, days, paths)", 
      "        async_results.append(ar)"
     ], 
     "language": "python", 
     "outputs": [], 
     "prompt_number": 7
    }, 
    {
     "cell_type": "code", 
     "collapsed": false, 
     "input": [
      "print \"Submitted tasks: \", len(async_results)"
     ], 
     "language": "python", 
     "outputs": [
      {
       "output_type": "stream", 
       "stream": "stdout", 
       "text": [
        "Submitted tasks:  30"
       ]
      }
     ], 
     "prompt_number": 8
    }, 
    {
     "cell_type": "markdown", 
     "source": [
      "Block until all tasks are completed."
     ]
    }, 
    {
     "cell_type": "code", 
     "collapsed": false, 
     "input": [
      "c.wait(async_results)", 
      "t2 = time.time()", 
      "t = t2-t1", 
      "", 
      "print \"Parallel calculation completed, time = %s s\" % t"
     ], 
     "language": "python", 
     "outputs": [
      {
       "output_type": "stream", 
       "stream": "stdout", 
       "text": [
        "Parallel calculation completed, time = 4.46057891846 s"
       ]
      }
     ], 
     "prompt_number": 9
    }, 
    {
     "cell_type": "markdown", 
     "source": [
      "## Process and visualize results"
     ]
    }, 
    {
     "cell_type": "markdown", 
     "source": [
      "Get the results using the `get` method:"
     ]
    }, 
    {
     "cell_type": "code", 
     "collapsed": true, 
     "input": [
      "results = [ar.get() for ar in async_results]"
     ], 
     "language": "python", 
     "outputs": [], 
     "prompt_number": 10
    }, 
    {
     "cell_type": "markdown", 
     "source": [
      "Assemble the result into a structured NumPy array."
     ]
    }, 
    {
     "cell_type": "code", 
     "collapsed": true, 
     "input": [
      "prices = np.empty(n_strikes*n_sigmas,", 
      "    dtype=[('ecall',float),('eput',float),('acall',float),('aput',float)]", 
      ")", 
      "", 
      "for i, price in enumerate(results):", 
      "    prices[i] = tuple(price)", 
      "", 
      "prices.shape = (n_strikes, n_sigmas)"
     ], 
     "language": "python", 
     "outputs": [], 
     "prompt_number": 11
    }, 
    {
     "cell_type": "markdown", 
     "source": [
      "Plot the value of the European call in (volatility, strike) space."
     ]
    }, 
    {
     "cell_type": "code", 
     "collapsed": false, 
     "input": [
      "plt.figure()", 
      "plt.contourf(sigma_vals, strike_vals, prices['ecall'])", 
      "plt.axis('tight')", 
      "plt.colorbar()", 
      "plt.title('European Call')", 
      "plt.xlabel(\"Volatility\")", 
      "plt.ylabel(\"Strike Price\")"
     ], 
     "language": "python", 
     "outputs": [
      {
       "output_type": "pyout", 
       "prompt_number": 12, 
       "text": [
        "&lt;matplotlib.text.Text at 0x106b618d0&gt;"
       ]
      }, 
      {
       "output_type": "display_data", 
       "png": "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\nxkREGvD/vLHqAgUOcYsAAAAASUVORK5CYII=\n"
      }
     ], 
     "prompt_number": 12
    }, 
    {
     "cell_type": "markdown", 
     "source": [
      "Plot the value of the Asian call in (volatility, strike) space."
     ]
    }, 
    {
     "cell_type": "code", 
     "collapsed": false, 
     "input": [
      "plt.figure()", 
      "plt.contourf(sigma_vals, strike_vals, prices['acall'])", 
      "plt.axis('tight')", 
      "plt.colorbar()", 
      "plt.title(\"Asian Call\")", 
      "plt.xlabel(\"Volatility\")", 
      "plt.ylabel(\"Strike Price\")"
     ], 
     "language": "python", 
     "outputs": [
      {
       "output_type": "pyout", 
       "prompt_number": 13, 
       "text": [
        "&lt;matplotlib.text.Text at 0x106bd90d0&gt;"
       ]
      }, 
      {
       "output_type": "display_data", 
       "png": "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\nEUnGEBMRSfb/3Vuei4TCOWYAAAAASUVORK5CYII=\n"
      }
     ], 
     "prompt_number": 13
    }, 
    {
     "cell_type": "markdown", 
     "source": [
      "Plot the value of the European put in (volatility, strike) space."
     ]
    }, 
    {
     "cell_type": "code", 
     "collapsed": false, 
     "input": [
      "plt.figure()", 
      "plt.contourf(sigma_vals, strike_vals, prices['eput'])", 
      "plt.axis('tight')", 
      "plt.colorbar()", 
      "plt.title(\"European Put\")", 
      "plt.xlabel(\"Volatility\")", 
      "plt.ylabel(\"Strike Price\")"
     ], 
     "language": "python", 
     "outputs": [
      {
       "output_type": "pyout", 
       "prompt_number": 14, 
       "text": [
        "&lt;matplotlib.text.Text at 0x106d34150&gt;"
       ]
      }, 
      {
       "output_type": "display_data", 
       "png": "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\nQmCC\n"
      }
     ], 
     "prompt_number": 14
    }, 
    {
     "cell_type": "markdown", 
     "source": [
      "Plot the value of the Asian put in (volatility, strike) space."
     ]
    }, 
    {
     "cell_type": "code", 
     "collapsed": false, 
     "input": [
      "plt.figure()", 
      "plt.contourf(sigma_vals, strike_vals, prices['aput'])", 
      "plt.axis('tight')", 
      "plt.colorbar()", 
      "plt.title(\"Asian Put\")", 
      "plt.xlabel(\"Volatility\")", 
      "plt.ylabel(\"Strike Price\")"
     ], 
     "language": "python", 
     "outputs": [
      {
       "output_type": "display_data", 
       "png": "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\nAeyS/5wqC8i5AAAAAElFTkSuQmCC\n"
      }
     ], 
     "prompt_number": 15
    }, 
    {
     "cell_type": "code", 
     "collapsed": true, 
     "input": [
      "plt.show()"
     ], 
     "language": "python", 
     "outputs": [], 
     "prompt_number": 16
    }
   ]
  }
 ]
}