{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "#Maximum Likelihood Estimates (MLEs)\n", "\n", "By Delaney Granizo-Mackenzie and Andrei Kirilenko developed as part of the Masters of Finance curriculum at MIT Sloan.\n", "\n", "Part of the Quantopian Lecture Series:\n", "\n", "* [www.quantopian.com/lectures](https://www.quantopian.com/lectures)\n", "* [github.com/quantopian/research_public](https://github.com/quantopian/research_public)\n", "\n", "Notebook released under the Creative Commons Attribution 4.0 License.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this tutorial notebook we'll do the following things:\n", "1. Compute the MLE for a normal distribution.\n", "2. Compute the MLE for an exponential distribution.\n", "3. Fit a normal distribution to asset returns using MLE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we need to import some libraries" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import math\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import scipy\n", "import scipy.stats" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##Normal Distribution\n", "We'll start by sampling some data from a normal distribution." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [], "source": [ "TRUE_MEAN = 40\n", "TRUE_STD = 10\n", "X = np.random.normal(TRUE_MEAN, TRUE_STD, 1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we'll define functions that given our data, will compute the MLE for the $\\mu$ and $\\sigma$ parameters of the normal distribution.\n", "\n", "Recall that\n", "\n", "$$\\hat\\mu = \\frac{1}{T}\\sum_{t=1}^{T} x_t$$\n", "\n", "$$\\hat\\sigma = \\sqrt{\\frac{1}{T}\\sum_{t=1}^{T}{(x_t - \\hat\\mu)^2}}$$" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def normal_mu_MLE(X):\n", " # Get the number of observations\n", " T = len(X)\n", " # Sum the observations\n", " s = sum(X)\n", " return 1.0/T * s\n", "\n", "def normal_sigma_MLE(X):\n", " T = len(X)\n", " # Get the mu MLE\n", " mu = normal_mu_MLE(X)\n", " # Sum the square of the differences\n", " s = sum( np.power((X - mu), 2) )\n", " # Compute sigma^2\n", " sigma_squared = 1.0/T * s\n", " return math.sqrt(sigma_squared)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's try our functions out on our sample data and see how they compare to the built-in `np.mean` and `np.std`" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean Estimation\n", "39.5829392522\n", "39.5829392522\n", "Standard Deviation Estimation\n", "10.2920350139\n", "10.2920350139\n" ] } ], "source": [ "print \"Mean Estimation\"\n", "print normal_mu_MLE(X)\n", "print np.mean(X)\n", "print \"Standard Deviation Estimation\"\n", "print normal_sigma_MLE(X)\n", "print np.std(X)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's estimate both parameters at once with scipy's built in `fit()` function." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mu estimate: 39.5829392522\n", "std estimate: 10.2920350139\n" ] } ], "source": [ "mu, std = scipy.stats.norm.fit(X)\n", "print \"mu estimate: \" + str(mu)\n", "print \"std estimate: \" + str(std)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's plot the distribution PDF along with the data to see how well it fits. We can do that by accessing the pdf provided in `scipy.stats.norm.pdf`." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0wAAAHxCAYAAABeVjw1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8VOXd///3LNk3CGQjAYKBsEUQQVGrBmRR2YNgUUtb\n6/3w68+i3rZK1YrSgmIV9a60pdXeaqVarFXBGxARhFAVQZBF1rAlkEAWEsieTGbm/P5Ap0YyTAKZ\nnCyv5+PBw5xzrjnnPZd5JPnMdc51WQzDMAQAAAAAOIfV7AAAAAAA0FpRMAEAAACAFxRMAAAAAOAF\nBRMAAAAAeEHBBAAAAABeUDABAAAAgBd2f55848aNevrpp+V2uzVt2jTdfffd57SZP3++Nm7cqODg\nYD3zzDMaMGCAJOmGG25QWFiYbDab7Ha7/vWvf/kzKgAAAACcw28Fk8vl0rx58/Taa68pLi5O06ZN\n06hRo5SSkuJpk5mZqZycHK1Zs0Y7d+7U3Llz9c9//tNzfMmSJerUqZO/IgIAAADAefntlrxdu3ap\nR48eSkpKUkBAgMaPH69169bVa7Nu3TplZGRIkgYPHqyysjKdOnXKc5w1dQEAAACYyW8FU0FBgRIS\nEjzbcXFxKigoqNemsLBQ8fHxnu34+HhPG4vFojvvvFNTp06tN+oEAAAAAC3Fb7fkWSyWRrXzNor0\n1ltvKS4uTiUlJbrzzjt1ySWXaNiwYV7Ps23btgvKCQAAAKBjGTp0aKPb+q1giouL08mTJz3b+fn5\niouLq9cmNjZW+fn5Dbb59r/R0dEaM2aMdu3add6CSWraG0fjbdu2jb71E/rWf+hb/6Fv/YN+9R/6\n1n/oW/+hb/2nqQMtfrslLy0tTTk5OcrNzZXD4dCqVas0atSoem1GjRqlZcuWSZJ27NihyMhIde3a\nVdXV1aqoqJAkVVVV6dNPP1Vqaqq/ogIAAABAg/w2wmS32zVnzhzdddddnmnFU1JStHTpUknSjBkz\nlJ6erszMTI0ZM0YhISFasGCBJOnUqVOaNWuWpLOz7U2cOFHXXnutv6ICAAAAQIP8ug5Tenq60tPT\n6+2bMWNGve0nnnjinNd1795dy5cv92c0AAAAtDJut1sOh8PsGK1GTU2N2RHavMDAQFmtF3dTnd9u\nyQMAAACawuFwqLa21uwYrcLAgQPNjtDm1dbWNksB7tcRJgAAAKApgoKCFBwcbHYMwIMRJgAAAADw\ngoIJAAAAALygYAIAAAAALyiYAAAAgO/o37+/pkyZoilTpigjI0N5eXmemZ7z8vK0YsUKT9v9+/cr\nMzOzydeYOXOmdu/e3eD+m266SZMmTdLNN9+sefPmqby83HP8+zNOf9+f//zn8x6/++67VVFRodzc\nXE2cOLFJmbds2aLt27d7tpcuXepZU/Vi5ObmatCgQZoyZYrGjx+vJ598UoZhePZnZGRo3Lhxmj59\nut5//33P69577z1dddVVnv9XjzzyyEVnaQiTPgAAAADfERwcfE4h8O1aorm5uVqxYoUmTJggSdq7\nd6/27NlzzlI6jWGxWBrc//zzz2vgwIGqq6vTCy+8oHvvvVdLliypl8Obv/zlL7rnnnvO2W8YhiTp\n5ZdfliSdOXOmyXk3b96ssLAwDRkyRJLv4q0pevbsqWXLlsnlcuknP/mJ1q5dq/79+6tnz56eIun4\n8eO67777ZBiGpk6dKovFogkTJujxxx9vthwNYYQJAAAA8OHbIuH555/X1q1bNWXKFL3yyitatGiR\nVq1apSlTpujDDz9UVVWVHn30UU2fPl0ZGRlat26dpLNrKj344IMaN26cZs2apdraWk8R833f7g8I\nCNDDDz+sEydO6MCBA/VyFBYW6o477tCUKVM0ceJEbd26VQsXLlRtba2mTJmihx9+WHl5ebrxxhv1\nq1/9ShMnTtTJkyd1ww03eIolp9Ophx56SOPGjdP999/vWffpu22+/vprzZw5U3l5eXr77bf1+uuv\na8qUKdq6dasWLVqkV199VZK0b98+3XrrrZo0aZJmzZqlsrIySWdHzBYuXKjp06frxhtv1NatW8/b\nzzabTUOGDFFOTs45BWX37t31yCOPeIpHwzC89mFzYoQJAAAArdKSHe/qi+NfNes5r+p+uWZedst5\n23xbdEhn/0hftGiR59hDDz2kV1991XPrW9euXbVnzx7PKMcLL7ygq6++WgsWLFBZWZmmT5+ua665\nRkuXLlVoaKhWrVqlAwcOeEZIGvLd/VarVf369dORI0fUt29fz/4VK1bouuuu0z333CO3263q6moN\nGzZMb775pmd0LDc3V8eOHdNzzz2nQYMGnXOdo0eP6umnn9aQIUP02GOP6a233tLPfvazBjMlJiZq\nxowZCgsL05133ilJ+uKLLzxZZ8+erSeffFLDhg3TSy+9pD/84Q967LHHJEkul0vvvPOOMjMz9cc/\n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\n7/Zdt24d5s2bx7kdo+PHj+Oee+6Bpmn95zLdeuut6Ojo4NyG0L59+/Dkk0/2LyvOuR2bmpoa/OQn\nPwHQt9rr8uXLcccdd3BuQ+DYsWNYv349AoEAcnJysGHDBqiqynkNAbfbjcsvvxy7du3qP6ycv7Oh\n8cc//hHbtm2DKIqYPXs2Hn74YfT29nJuQ+DGG29ER0cHZFnGvffei8WLF4/49zYqCiYiIiIiIqJw\niPhD8oiIiIiIiMKFBRMREREREdEQWDARERERERENgQUTERERERHREFgwERERERERDYEFExERERER\n0RBYMBER0YR266234sUXXxxwna7rKC4uRklJyaDb3HPPPXj++efHIx4REUU5FkxERDShrVq1qr8j\n+2kff/wxJEnCggULBt3mdINoIiKisWLBREREE9qSJUtQVVWFsrKy/uu2bt2KFStW4MYbb8R1112H\nZcuW4emnnx50+6/vbfrq5Z6eHqxfvx6rV6/GihUr8Mtf/hKapoX3CRERUURhwURERBOa2WzG8uXL\nsXXrVgB9Rc6uXbuwevVqPPXUU9i6dSs2b96MzZs3o7y8/Iztv7636auXN2zYgEWLFuGll17Ctm3b\n0Nraipdffjm8T4iIiCKKbHQAIiKi4axcuRK33nor7rrrLrz55pu44IILIMsy7rvvPhw/fhyiKMLl\ncuHYsWPIy8sL+n53796NQ4cO4amnngIAeL1eZGRkhOtpEBFRBGLBREREE97MmTORlpaGvXv3YuvW\nrbjlllvw61//GmlpaXj00UchiiLWrl0Lv99/xraSJA04zM7r9Q64/Xe/+x2ysrLC/hyIiCgy8ZA8\nIiKKCCtXrsTjjz+OqqoqLFmyBD09PUhPT4coiigtLR1yxbycnBwcOnQIAOByubBv377+25YsWYKN\nGzf2F1RtbW2ora0N/5MhIqKIwYKJiIgiwvLly1FWVoarr74aJpMJP/rRj/DSSy9hxYoV+M1vfoOF\nCxcOut3111+PxsZGLFu2DP/xH/+B+fPn99923333QRRFXHPNNVi+fDluu+02uFyu8XpKREQUAQRd\n13WjQxAREREREU1E3MNEREREREQ0BBZMREREREREQ2DBRERERERENAQWTERERERERENgwURERERE\nRDQEFkxERERERERDYMFEREREREQ0hP8H+2FgkO86YjkAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pdf = scipy.stats.norm.pdf\n", "# We would like to plot our data along an x-axis ranging from 0-80 with 80 intervals\n", "# (increments of 1)\n", "x = np.linspace(0, 80, 80)\n", "plt.hist(X, bins=x, normed='true')\n", "plt.plot(pdf(x, loc=mu, scale=std))\n", "plt.xlabel('Value')\n", "plt.ylabel('Observed Frequency')\n", "plt.legend(['Fitted Distribution PDF', 'Observed Data', ]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##Exponential Distribution\n", "Let's do the same thing, but for the exponential distribution. We'll start by sampling some data." ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": true }, "outputs": [], "source": [ "TRUE_LAMBDA = 5\n", "X = np.random.exponential(TRUE_LAMBDA, 1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`numpy` defines the exponential distribution as\n", "$$\\frac{1}{\\lambda}e^{-\\frac{x}{\\lambda}}$$\n", "\n", "So we need to invert the MLE from the lecture notes. There it is\n", "\n", "$$\\hat\\lambda = \\frac{T}{\\sum_{t=1}^{T} x_t}$$\n", "\n", "Here it's just the reciprocal, so\n", "\n", "$$\\hat\\lambda = \\frac{\\sum_{t=1}^{T} x_t}{T}$$" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def exp_lamda_MLE(X):\n", " T = len(X)\n", " s = sum(X)\n", " return s/T" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "lambda estimate: 4.71513802853\n" ] } ], "source": [ "print \"lambda estimate: \" + str(exp_lamda_MLE(X))" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# The scipy version of the exponential distribution has a location parameter\n", "# that can skew the distribution. We ignore this by fixing the location\n", "# parameter to 0 with floc=0\n", "_, l = scipy.stats.expon.fit(X, floc=0)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nRERERER6oYZJRERERESkF2qYREREREREeqGGSUREREREpBdqmERERERERHqhhklERERERKQXaphE\nRERERER68V9+bU9QhTXs8gAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pdf = scipy.stats.expon.pdf\n", "x = range(0, 80)\n", "plt.hist(X, bins=x, normed='true')\n", "plt.plot(pdf(x, scale=l))\n", "plt.xlabel('Value')\n", "plt.ylabel('Observed Frequency')\n", "plt.legend(['Fitted Distribution PDF', 'Observed Data', ]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##MLE for Asset Returns\n", "\n", "Now we'll fetch some real returns and try to fit a normal distribution to them using MLE." ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [], "source": [ "prices = get_pricing('TSLA', fields='price', start_date='2014-01-01', end_date='2015-01-01')\n", "# This will give us the number of dollars returned each day\n", "absolute_returns = np.diff(prices)\n", "# This will give us the percentage return over the last day's value\n", "# the [:-1] notation gives us all but the last item in the array\n", "# We do this because there are no returns on the final price in the array.\n", "returns = absolute_returns/prices[:-1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's use `scipy`'s fit function to get the $\\mu$ and $\\sigma$ MLEs." ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzQAAAHiCAYAAAA+iolsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmQnXd5J/rv6U3drc3abWyMQUTYHsUE5GFmDIkSY+xk\nQI4dOSkqNVTFEMzUncQwnklyDTg1kwUPUOVK5dZNCo8nhHBvmJDr4DLbpYKN7UnAOPTFEQJnPAZJ\nINC+WL2fPsv9oxdZSOrl9Dl9+nR/Pv/gPsv7PiC9/fL18/s9b6FarVYDAADQgtqaXQAAAECtBBoA\nAKBlCTQAAEDLEmgAAICWJdAAAAAtS6ABAABa1rSB5t57780NN9yQXbt2Tb22Z8+e3HHHHbntttuy\ne/fu7Nmzp+FFAgAAXMi0gWb37t156KGHznntox/9aN773vfmkUceyd13352PfvSjDS0QAADgYqYN\nNNdff33WrFlzzmubNm1Kf39/kqS/vz9btmxpXHUAAADT6JjrF/7Df/gP+dVf/dV85CMfSaVSyV/9\n1V81oi4AAIAZzTnQfOADH8gHP/jBvOUtb8kXv/jFvP/978/HP/7xab/T19dXc4EAAMDysGPHjjl/\nZ86BZs+ePfnzP//zJMnP//zP54Mf/OCsvldLcbAU9fX1uR4grgWY5FqAcbU2QeY8tvkVr3hFnnnm\nmSTJ008/nauuuqqmEwMAAMzXtB2ae+65J88880xOnz6dnTt35u67787v/d7v5fd+7/dSLBbT3d2d\n3//931+oWgEAAM4xbaB54IEHLvj6X//1XzekGAAAgLmY85IzAACAxUKgAQAAWpZAAwAAtCyBBgAA\naFkCDQAA0LIEGgAAoGUJNAAAQMsSaAAAgJYl0AAAAC1LoAEAAFqWQAMAALQsgQYAAGhZAg0AANCy\nBBoAAKBlCTQAAEDL6mh2AQAsfcViMfv37z/ntQMHDmT16tVTP1911VXp6upa4MoAaHUCDQANt3//\n/rzj3r9M79rN577xucNJkqEXj+aT9/9qtm3b1oTqAGhlAg0AC6J37easWnd5s8sAYImxhwYAAGhZ\nAg0AANCyBBoAAKBlCTQAAEDLEmgAAICWJdAAAAAtS6ABAABalkADAAC0LIEGAABoWQINAADQsgQa\nAACgZQk0AABAyxJoAACAliXQAAAALUugAQAAWpZAAwAAtCyBBgAAaFkCDQAA0LIEGgAAoGUJNAAA\nQMsSaAAAgJYl0AAAAC1LoAEAAFrWtIHm3nvvzQ033JBdu3ad8/onP/nJ/MIv/ELe9ra35aMf/WhD\nCwQAALiYjune3L17d97xjnfkd37nd6Zee/rpp/P444/n0UcfTWdnZ06ePNnwIgEAAC5k2g7N9ddf\nnzVr1pzz2qc+9ancdddd6ezsTJKsX7++cdUBAABMY857aA4cOJBvfOMb+ZVf+ZW84x3vyLe+9a1G\n1AUAADCjaZecXUi5XM6LL76YT3/609mzZ0/e97735bHHHpvxe319fTUVCEuR64Hl5sCBAzN+Zu/e\nvenv71+AamDxcV+A2s050GzZsiU333xzkuS6665LW1tbTp06lXXr1k37vR07dtRWISwxfX19rgeW\nndWrVyefOzztZ7Zv355t27YtUEWweLgvwLhag/2cl5zddNNNefrpp5Mk+/bty9jY2IxhBgAAoBGm\n7dDcc889eeaZZ3L69Ons3Lkzd999d3bv3p33v//92bVrVzo7O/PhD394oWoFAAA4x7SB5oEHHrjg\n6549AwAALAZzXnIGAACwWAg0AABAyxJoAACAliXQAAAALUugAQAAWpZAAwAAtCyBBgAAaFkCDQAA\n0LIEGgAAoGUJNAAAQMsSaAAAgJYl0AAAAC1LoAEAAFqWQAMAALQsgQYAAGhZAg0AANCyBBoAAKBl\nCTQAAEDLEmgAAICWJdAAAAAtS6ABAABalkADAAC0LIEGAABoWQINAADQsgQaAACgZQk0AABAyxJo\nAACAliXQAAAALUugAQAAWpZAAwAAtCyBBgAAaFkCDQAA0LIEGgAAoGUJNAAAQMsSaAAAgJYl0AAA\nAC1LoAEAAFqWQAMAALQsgQYAAGhZAg0AANCypg009957b2644Ybs2rXrvPf+7M/+LFdffXVOnz7d\nsOIAAACmM22g2b17dx566KHzXj906FD+/u//Pi972csaVhgAAMBMpg00119/fdasWXPe6/fff39+\n67d+q2FFAQAAzMac99B8+ctfzqWXXpqrr766EfUAAADMWsdcPjw8PJyPfexj+fjHPz71WrVarXtR\nAAAAszGnQPP9738/P/zhD3PrrbcmSY4cOZLdu3fnr//6r7Nhw4Zpv9vX11d7lbDEuB5Ybg4cODDj\nZ/bu3Zv+/v4FqAYWH/cFqN2cAs1rXvOafPWrX536+cYbb8zf/M3f5JJLLpnxuzt27Jh7dbAE9fX1\n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\n7Nkz7Xfe9chv1XIqWJr2/V/NroAWteFnkuT5815fkeQrhw+mo9Cef3bJq3Pduquzbc0r09nWkfQn\n+/bvy9CLRy963OH+k0kKS/L9mr57Ksl3X5Xul51KzysP5dlTz+XZU89d9BgbdibJ/7zgey9/fZIc\nT3Lh7/ck+dC3nku+ddHDsxy4L0B+59W/XtP3ago0hcLFbwwXU2uBANRmZHA4kz2DjRs35k/ev2ua\nT/+LGY7Wyu/P99gALGY1BZotW7bk0KFDUz8fPnw4W7Zsuejnd+zYUctpAAAAplXTYurt27fnwIED\nOXjwYIrFYr7whS/kzW9+c71rAwAAmFZNHZqOjo7cd999ede73jU1ttmEMwAAYKEVqtWJEToAAAAt\nxvxOAACgZQk0AABAyxJoAACAltWQQPPFL34xb33rW3PNNdfk29/+9kU/99RTT+Xnf/7nc/PNN+fB\nBx9sRCnQVKdPn86dd96ZW265Je985ztz5syZC37uxhtvzK5du3LbbbfljjvuWOAqoXFm83v+D/7g\nD3LzzTfn1ltvzXe+850FrhAWzkzXw9e//vXs2LEjt912W2677bb8yZ/8SROqhMa69957c8MNN2TX\nros/G23O94VqA7zwwgvV733ve9V/82/+TXXv3r0X/EypVKredNNN1R/84AfVYrFYvfXWW6svvPBC\nI8qBpvnwhz9cffDBB6vVarX6sY99rPrRj370gp/7uZ/7ueqpU6cWsjRouNn8nn/iiSeqv/7rv16t\nVqvVZ599tvrLv/zLzSgVGm4218PTTz9dfc973tOkCmFh/MM//EP129/+dvVtb3vbBd+v5b7QkA7N\n1q1b88pXvnLaz+zZsydXXnllrrjiinR2duatb31rHnvssUaUA03z+OOP5/bbb0+S3H777fnyl798\n0c9WDRxkiZnN7/nHHnts6hp57WtfmzNnzuT48ePNKBcayv/vgXHXX3991qxZc9H3a7kvNG0PzZEj\nR3LZZZdN/bxly5YcOXKkWeVAQ5w4cSIbN25MkmzcuDEnTpy44OcKhULuvPPO/NIv/VI+/elPL2SJ\n0DCz+T1/9OjRXHrppVM/X3rppTl8+PCC1QgLZTbXQ6FQyDe/+c3ceuutefe7350XXnhhocuEpqvl\nvlDTgzWT5M4777xgWvr3//7f58Ybb5zx+4VCodZTw6JysWvhfe973zk/FwqFi/69/9SnPpXNmzfn\n5MmTufPOO/OqV70q119/fUPqhYUy29/zP96ddH9gKZrN3+trr702TzzxRHp6evLkk0/m3/27f5cv\nfelLC1AdLC5zvS/UHGg+/vGP1/rVJOP/ZuLQoUNTPx8+fDhbtmyZ1zGhGaa7FjZs2JBjx45l06ZN\nOXr0aNavX3/Bz23evDlJsn79+rzlLW/Jnj17BBpa3mx+z2/evPmcf/PmXsBSNZvrYdWqVVP/vHPn\nzvzn//yfc/r06VxyySULVic0Wy33hYYvObvYvoDt27fnwIEDOXjwYIrFYr7whS/kzW9+c6PLgQV1\n44035jOf+UyS5JFHHslNN9103meGh4czMDCQJBkaGsrf/d3fZdu2bQtaJzTCbH7Pv/nNb84jjzyS\nJHn22WezZs2aqWWasJTM5no4fvz41P9v2rNnT5IIMyw7tdwXau7QTOdv//Zv8wd/8Ac5depU3vOe\n9+Saa67JQw89lCNHjuS+++7Lgw8+mI6Ojtx3331517velUqlkjvuuCNbt25tRDnQNHfddVfe9773\n5eGHH87ll1+eP/qjP0qSc66F48eP5zd+4zeSJOVyObt27cqb3vSmZpYNdXGx3/P//b//9yTJ29/+\n9uzcuTNPPvlk3vKWt6Snpyf3339/k6uGxpjN9fClL30pn/rUp9Le3p6enp488MADTa4a6u+ee+7J\nM888k9OnT2fnzp35zd/8zZRKpSS13xcKVaOVAACAFtW0KWcAAADzJdAAAAAtS6ABAABalkADAAC0\nLIEGAABoWQINAADQsgQaAACgZf3/38yDBNmpjeoAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mu, std = scipy.stats.norm.fit(returns)\n", "pdf = scipy.stats.norm.pdf\n", "x = np.linspace(-1,1, num=100)\n", "h = plt.hist(returns, bins=x, normed='true')\n", "l = plt.plot(x, pdf(x, loc=mu, scale=std))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Of course, this fit is meaningless unless we've tested that they obey a normal distribution first. We can test this using the Jarque-Bera normality test. The Jarque-Bera test will reject the hypothesis of a normal distribution if the p-value is under a c" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(242.53773931956744,\n", " 2.1557534018848578e-53,\n", " 0.7405363946340933,\n", " 7.582279228661398)" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from statsmodels.stats.stattools import jarque_bera\n", "jarque_bera(returns)" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(0.9856724005093672,\n", " 0.61089132471452023,\n", " -0.10806345762002881,\n", " 2.5642815902086933)" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "jarque_bera(np.random.normal(0, 1, 100))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*This presentation is for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation for any security; nor does it constitute an offer to provide investment advisory or other services by Quantopian, Inc. (\"Quantopian\"). Nothing contained herein constitutes investment advice or offers any opinion with respect to the suitability of any security, and any views expressed herein should not be taken as advice to buy, sell, or hold any security or as an endorsement of any security or company. In preparing the information contained herein, Quantopian, Inc. has not taken into account the investment needs, objectives, and financial circumstances of any particular investor. Any views expressed and data illustrated herein were prepared based upon information, believed to be reliable, available to Quantopian, Inc. at the time of publication. Quantopian makes no guarantees as to their accuracy or completeness. All information is subject to change and may quickly become unreliable for various reasons, including changes in market conditions or economic circumstances.*" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.11" } }, "nbformat": 4, "nbformat_minor": 0 }