{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Example: Option Pricing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Miranda and Fackler, Applied Computational Economics and Finance, 2002, Section 7.6.4" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from __future__ import division\n", "import numpy as np\n", "import scipy.sparse as sp\n", "import matplotlib.pyplot as plt\n", "import quantecon as qe\n", "from quantecon.markov import DiscreteDP, backward_induction, sa_indices" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "T = 0.5 # Time expiration (years)\n", "vol = 0.2 # Annual volatility\n", "r = 0.05 # Annual interest rate\n", "strike = 2.1 # Strike price\n", "p0 = 2 # Current price\n", "N = 100 # Number of periods to expiration\n", "\n", "# Time length of a period\n", "tau = T/N\n", "\n", "# Discount factor\n", "beta = np.exp(-r*tau)\n", "\n", "# Up-jump factor\n", "u = np.exp(vol*np.sqrt(tau))\n", "\n", "# Up-jump probability\n", "q = 1/2 + np.sqrt(tau)*(r - (vol**2)/2)/(2*vol)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We follow the state-action pairs formulation approach.\n", "We let the state space consist of the possible values of the asset price\n", "and the state indicating that \"the option has been exercised\"." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Possible price values\n", "ps = u**np.arange(-N, N+1) * p0\n", "\n", "# Number of states\n", "n = len(ps) + 1 # State n-1: \"the option has been exercised\"\n", "\n", "# Number of actions\n", "m = 2 # 0: hold, 1: exercise\n", "\n", "# Number of feasible state-action pairs\n", "L = n*m - 1 # At state n-1, there is only one action \"do nothing\"" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [ "s_indices, a_indices = sa_indices(n, m)\n", "s_indices, a_indices = s_indices[:-1], a_indices[:-1]" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "R = np.empty((n, m))\n", "R[:, 0] = 0\n", "R[:-1, 1] = strike - ps\n", "R = R.ravel()[:-1]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "Q = sp.lil_matrix((L, n))\n", "for i in range(L-1):\n", " if a_indices[i] == 0:\n", " Q[i, min(s_indices[i]+1, len(ps)-1)] = q\n", " Q[i, max(s_indices[i]-1, 0)] = 1 - q\n", " else:\n", " Q[i, n-1] = 1\n", "Q[L-1, n-1] = 1" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "ddp = DiscreteDP(R, Q, beta, s_indices, a_indices)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The backward induction algorithm for finite horizon dynamic programs is offered\n", "as the function `backward_induction`.\n", "(By default, the terminal value function is set to the vector of zeros.)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "vs, sigmas = backward_induction(ddp, N)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the returns, `vs` is an $(N+1) \\times n$ array that contains the optimal value functions,\n", "where `vs[0]` is the value vector at the current period (i.e., period $0$)\n", "for different prices\n", "(with the value `vs[0, -1] = 0` for the state \"the option has been exercised\" included),\n", "and `sigmas` is an $N \\times n$ array that contins the optimal policy functions." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "v = vs[0]\n", "max_exercise_price = ps[sigmas[::-1].sum(-1)-1]" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "image/png": "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\nixawbBlss03UaQIaYy1pUbcu3H9/0HO9fHnUaURERCTb1a8PHTvCa69FnaT6VFhLpR1yCJx6Kpxz\nTjBVkIiIiEh15Mo4axXWUiXXXANFRf/goosejTqKiIiIZDkV1pLX6tSBG27ozahR5zN79jdRxxER\nEZEstv/+wVzWixdHnaR6dPKiVMshh/ydBQvmsXTpExQU5M15WSKVppMXRUTK178//PxzMLd11G69\nVbOCSATWrPmFpk0707//UMaPPyPqOCIZS4W1iEj5Pvggc4aDDBumwloiMnny+5x4Yk9ee+1dunVr\nGXUckYykwlpEJHtoHmuJ1J/+9DwffdSNadPqUaCR+yJbUGEtIpI9NI+1RGrMmL4UFNTjttuiTiIi\nIiISDfVYS9J89hl06RJM8L7XXlGnEcks6rEWEcke6rGWyLVuDVdfDQMHwsaNUacRERERSS8V1pJU\nQ4ZAw4Zw7bXqqRIREZH8osJaksoM7rvPueaaw3jkkblRxxERERFJGxXWknQ772wMGDCAgQMHsHr1\n+qjjiIiIiKSFTl6UlCgudnbc8What+7E9OlXRR1HJHI6eVFEJHvo5EXJKAUFxksv3cubb45h7Ni3\no44jIiIiknIqrCVl9tuvORdddDvnnDOAH374Jeo4IiIiIimloSCScr17v8ruux/KnXfmzbfgIlvQ\nUBARkeyhS5pLxlq5EvbbD8aPh549o04jEg0V1iIi2SNjx1ibWR8zm29mC8zsb3Ge725mK83svfB2\neaozSXpttx2MHQuDBgVFtoiIiEguSmmPtZkVAAuAw4ElwNvAye4+P2ad7sDF7n5MBdtS70eW+8tf\nYO1auP/+qJOIpJ96rEVEskem9lh3Bj5x94XuvgF4GOgXZ728+WOTz264AV5/HSZP3hB1FBEREZGk\nS3Vh3QL4Kubx1+Gy0rqa2Wwze9bM9k5xJolI3bpw003f0L//PixY8EPUcURERESSKhOm23sXaOnu\nHYBRwBMR55EU6tdvB9q160PPnuehb4lFREQkl9RM8fYXAy1jHu8ULvuVu6+Juf+8md1lZo3cfYsu\nzZEjR/56v7CwkMLCwmTnlTR4+eXrad68Axde+Ci3335i1HFEUqKoqIiioqKoY4iISBql+uTFGsDH\nBCcvLgXeAk5x949i1mnm7svC+52BR9y9VZxt6USYHHL//W8yaNCxvPvubDp23CHqOCIpp5MXRUSy\nR8bOY21mfYDbCIadjHX3681sCODufo+ZnQucA2wA1gFD3X1mnO2okc4xhxxyGZ9++hlLlkzC8qbc\nkHylwlpEJHtkbGGdLGqkc8+aNb/QpctXXHDB7gweHHUakdRSYS0ikj1UWEtW+vBD6N4dZs6E3XaL\nOo1I6mRLYW1mY4GjgGXu3i7O838F/gg4UAvYC2ji7itLrac2W0SylgpryVo33QRPPgmvvAI1akSd\nRiQ1sqiw7gasASbGK6xLrXsUcJG794zznNpsEclamXqBGJEKXXRR8O9tt0WbQ0TA3V8HViS4+inA\nQymMIyKSVVRYS+Rq1Aguc37ttc7bb6+OOo6IJMDMtgb6AJOjziIikilSPY+1SEJ22w3693+Gww67\nnuXLX6NOHY0JEclwRwOvlx5bHUvXHhCRbJGsaw9ojLVkjE2bimnatCf779+HF18cHnUckaTKljHW\nAGa2C/B0eWOszey/BNcdeLiM59Vmi0jW0hhryXo1ahTw7LPjePnlG5k0aW7UcUTymYW3+E+aNQC6\nA0+mLZGISBZQj7VknLPPHsuDD45i2bKZ1K+/VdRxRJIiW3qszew/QCHQGFgGjAC2IryoV7jOQKC3\nu59aznbUZotI1tJ0e5IzioudFi2OZq+9Dmfq1KFRxxFJimwprJNFbbaIZDMNBZGcUVBgFBVN4MMP\nz2H69KjTiIiIiCRGhbVkpLZtG3P33XUYOBDWrIk6jYiIiEjFNBREMtrAgbDttnDXXVEnEakeDQUR\nEckeGmMtOWnlSmjXDu67D3r1ijqNSNWpsBYRyR4aYy05abvtYOxYGDRoFV9/rTEhIiIikrnUYy1Z\noWPH4fz0048sWDAm6igiVaIeaxGR7KEea8lpzz13OV988T8uvfT5qKOIiIiIxKXCWrJC8+b1GTVq\nPDfeeDbvvPND1HFEREREtqChIJJVCgsvZM6c5Sxd+m9q1446jUjiNBRERCR7aCiI5IVnn72ODRve\nZcCAd6KOIiIiIrIZFdaSVbbddhvmzXuLt946gMcfjzqNiIiIyG80FESy0syZcPTR8NprsOeeUacR\nqZiGgoiIZA8NBZG8cuCBcP31cMwxsGJF1GlERERE1GMtWW7oUJg3D55/HmrWjDqNSNnUYy0ikj3U\nYy156cYbYd26jxg2rDjqKCIiIpLnVFhLVqtRw9m0aTCTJo3mnnuiTiMiIiL5TENBJOt9/PHHdO3a\njZo1ZzBmTBv+8IeoE4lsSUNBRESyh4aCSN5q27YtI0dewY47nsHgwZt4+eWoE4mIiEg+Uo+15ITi\n4mJ69uzJHnv0ZvLkv/HMM8HMISKZQj3WIiLZQz3WktcKCgoYN24cU6eO5e67f+KYY4LZQkRERETS\nRROUSc5o1aoVH3zwAbVq1WL9ejjiCHj2WejUKepkIiIikg9UWEtOqVWrFgCnnAJ16kCfPjB5Mhxy\nSMTBREREJOdpKIjkrD/8Af7zHzjuuOACMiIiIiKppMJaclrPnvD003DGGfDQQ1GnERERkVymwlpy\nVnFxMdOmTaNLF3j5Zbj0Uhg5Eop1kUYRERFJARXWkrN+/PFHTj75ZF599VX22w/eegtefBFOOAFW\nrIg6nYiIiOQaFdaSsxo2bMiYMWM488wzWb16Nc2awdSpsNNO0LEjzJgRdUIRERHJJbpAjOS8s846\ni5o1azJmzJhflz31FJx9NlxwQTBEpEaNCANKXtAFYkREskdV22wV1pLzVq1aRfv27bnrrrvo27fv\nr8u//hpOOw3M4N57YffdIwwpOU+FtYhI9tCVF0XKUL9+fcaNG8fYsWM3W77TTjBlCvz+99ClC1x3\nHaxfH1FIERERyXrqsZa84e6Yxf/w+eWXcP75MH8+3Hgj9OsX9GSLJIt6rEVEsoeGgogkwUsvwbBh\nsM02cNllcPTRUKDvdSQJVFiLiGQPFdYiSVJcDE88Af/8ZzA05LLL4KSTdIKjVI8KaxGR7KHCWiTJ\n3OGFF4IC++uvYeBAGDAAWreOOplkIxXWIiLZQycvilTCd999x9SpU8tdxwz69oVp0+Dxx+HHH6Fr\nVzj0UBg3Dn74IU1hRUREJCukvLA2sz5mNt/MFpjZ38pY53Yz+8TMZptZh1RnElmyZAn9+/dn0aJF\nFa5rFlxQ5tZbg57rYcPgmWegVSs46CC46qrgqo66VLrkAjMba2bLzGxOOesUmtksM5tnZq+kM5+I\nSCZLaWFtZgXAKKA3sA9wipntWWqdvkBrd28DDAHuTmWmXFZUVBR1hIwW+/60b9+eoUOHMmjQIIor\nURFvtRUceyz897/w3Xdw9dWwahUMGgRNm8KRR8KIEUHhvWxZCg4ixfQ7VL48eX/GE7TZcZlZA+BO\n4Ch33xc4MV3BMl2e/H5sRsecH/LxmKsq1T3WnYFP3H2hu28AHgb6lVqnHzARwN1nAg3MrFmKc+Uk\n/eKXr/T7M3z4cNasWcPo0aOrtL3ateHww+Ff/4J582DOHBg8GDZuhNtvh732ghYtgnX+/Ge4+eag\n4J4/H1avTsIBpYB+h8qXD++Pu78OrChnlVOBye6+OFx/eVqCZYF8+P0oTcecH/LxmKuqZoq33wL4\nKubx1wTFdnnrLA6XZWF/n2STmjVrMmHCBA4++GB69epFmzZtqrW9HXcMerOPPTZ47A4LF8KCBfDJ\nJ8G/L70En30GixcHQ0x23DG4NW8ODRtCgwbBbbvtNv+3QQPYemuoUye41a4d/KuZSiQCewC1wiEg\ndYHb3f2BiDOJiGSEVBfWIhmtbdu2jBgxgilTplS7sC7NLBiH3aoV9Oq1+XPuQa/10qWwZEnw78qV\nwW3FCvjii+BkyZUrg39//BF+/nnLW40avxXatWoFjwsKgn9jbxUtK7kYzhdfwGuvbX4MUd/PJB9/\nDO++G3WKyNUEOgE9gG2BN8zsDXf/NNpYIiLRS+l0e2bWBRjp7n3Cx5cC7u7/F7PO3cAr7j4pfDwf\n6O7uy0ptS/M2iUhWy5bp9sxsF+Bpd28X57m/AXXc/R/h4/uA5919cqn11GaLSFarSpud6h7rt4Hd\nw0Z6KXAycEqpdZ4CzgUmhYX4ytJFNWTPHyQRkRxg4S2eJ4E7zKwGUBs4ELi59Epqs0UkH6W0sHb3\nTWZ2HvAiwYmSY939IzMbEjzt97j7c2Z2pJl9CvwEnJnKTCIiUjYz+w9QCDQ2s0XACGArfmuz55vZ\n/4A5wCbgHnf/MLLAIiIZJGuuvCgiIiIiksmy4sqLiVxkJp8lckGHfGZmO5nZVDP7wMzmmtkFUWfK\nJGZW28xmhhf8mGtmI6LOlInMrMDM3jOzp6LOkkny8SJgFR2zmbU1sxlm9rOZDYsiY7IlcMynmtn7\n4e11M9svipzJlMAxHxMe7ywze8vMDo4iZzIlWm+Z2e/MbIOZHZfOfMmWwM+4u5mtDNv+98zs8go3\n6u4ZfSMo/j8FdgFqAbOBPaPOlUk3oBvQAZgTdZZMvAE7AB3C+3WBj/U7tMV7tE34bw3gTaBz1Jky\n7QYMBR4Enoo6S6bcEmmfgb7As+H9A4E3o86dhmNuAuwPXA0Mizpzmo65C9AgvN8nT37O28Tc3w/4\nKOrcqT7mmPWmAM8Ax0WdO8U/4+6VbfOzocc6kYvM5DWv+IIOec3dv3H32eH9NcBHBHOlS8jd14Z3\naxOce6ExYjHMbCfgSOC+qLNkmHy8CFiFx+zuy939XWBjFAFTIJFjftPdfwwfvkn2t7GJHPPamId1\ngcQv45uZEq23zgceA75NZ7gUSPR4K3UidjYU1vEuMpPt/2ElImbWiqB3f2a0STJLOMxhFvAN8JK7\nvx11pgxzC3AJ+sBRWiLtc1kXActW+fg3qbLH/Cfg+ZQmSr2EjtnMjjWzj4CngUFpypYqFR6zme0I\nHOvuo6lkwZmBEv297hoOY3vWzPauaKPZUFiLJIWZ1SX4lH1h2HMtIXcvdveOwE7AgYk0HvnCzH4P\nLAu/9ShvGjqRvGdmhxHM7pUX50O5+xPuvhdwLHBN1HnS4FY2/9nmenv4LtDS3TsAo4AnKnpBNhTW\ni4GWMY93CpeJJMzMahIU1Q+4+5NR58lU7r4KeIVgjKQEDgaOMbPPgYeAw8xsYsSZMkUi7fNiYOcK\n1skm+fg3KaFjNrN2wD3AMe6e7cMTK/VzDodk7mZmjVIdLIUSOeYDgIfN7AvgBOBOMzsmTfmSrcLj\ndfc1JUN+3P15oFZFP+NsKKx/vciMmW1FcJEZnZW/JfWklW8c8KG73xZ1kExjZk3MrEF4f2vgCGB+\ntKkyh7tf5u4t3X03gvZnqrsPiDpXhkikfX4KGAC/Xo037kXAskhl/yblQrtc4TGbWUtgMnC6u38W\nQcZkS+SYW8fc7wRs5e4/pDdmUlV4zO6+W3jblaCz6i/unq01WSI/42Yx9zsTTFNd7s841VderDYv\n4yIzEcfKKPEu6ODu46NNlTnCKZD+CMwNxxE7cJm7vxBtsozRHJhgZgUE/8cmuftzEWeSLFBW+2w5\nfBGwRI45/GP8DlAPKDazC4G9s3UIWiLHDFwBNALuMjMDNrh75+hSV0+Cx3y8mQ0A1gPrgJOiS1x9\nCR7zZi9Je8gkSvB4TzCzc4ANBD/j/hVtVxeIERERERFJgmwYCiIiIiIikvFUWIuIiIiIJIEKaxER\nERGRJFBhLSIiIiKSBCqsRURERESSQIW1iIiIiEgSqLCWjGdmx5pZsZntkeTt9jOzPct4boSZfW1m\n75nZHDM7uoz1jjaz4cnMJSISJTNrZGazwvZvaUxbOMvMXk/B/tqbWd9KvqZ7+HdhUKntFJvZsApe\nW2bbX8HrmpvZI1XNLPlBhbVkg5OBacApSd7uscA+5Tx/s7t3Ipj0f1zpJ82shrs/7e43JDmXiEhk\n3P0Hd+8Ytn+jCdvCcFm3FOyyA3BkFV43j80vynIKMDuB11XU9m8hbO+XunvJ/qqaWXKcCmvJaGa2\nLXAwcBYxhbWZ7WBmr8b0KB9sZgVmNj58/H54tTPMbDcze97M3g5fs4eZdQWOAW4It7FrWRncfT6w\nIbz093gzG21mbwD/Z2YDzeyOcD9Nzey/ZjY77NnpEi7/o5nNDPczOrwqmYhINtisvTKz1eG/3c2s\nyMyeMLNPzew6Mzs1bOveL2lTw3bzsXD5TDM7qNT2agFXASeFbeSJZtbQzB4PtzPDzPYrI9tCoI6Z\nbR8+7gM8H7PtP5nZW2F7/KiZ1YnT9u9mZq9YcElyzKyxmX0R3h9oZk+a2RTgZQsufT3XzGqWynyS\nmS0ws8bh68zMPil5LPkl4y9pLnmvH/CCu39qZsvNrKO7zwJODZdfFxaq2xD0ILRw93YAZlY/3MY9\nwBB3/8zMOgOj3f1wM3sKeNrd/1teADM7ECh29+VhTdzC3buGzw3kt8u63g4UuftxYaa64deN/YGD\nwsun3klwefUHk/T+iIikU+zlmtsBewIrgc+Be939QDO7ADgfGAbcRtDjPcPMdgb+B+z968bcN5jZ\nlcD+7n4BgJndDrzn7n8ws8OAiUDHMvI8RlDgzgLeBX6JeW6yu98XbvNq4Cx3v7N02x+nryP2GDsC\n+7n7j2a2SxDZN8bJ3BY4LTzensBsd/++vDdScpMKa8l0pwC3hvcnERTUs4C3gbFhb8eT7v6+mX0O\n7GpmtwHPAS+GPd4HAY/G9BTXSnDfw8zsNGA1m3/d+GgZ6/cAToeg5QVWm9nhQCfg7XD/dYBlCe5f\nRCSTve3u3wKY2WfAi+HyuUBheL8nsFdM+1vXzLZx97XlbLcbcByAu79iwZjvuu6+ptR6DjwS3vYE\nHiL4hrNEu7Cg3g7YlqCor6yX3P3HBNYbDzxBUFgPCh9LHlJhLRnLzBoSFKv7mpkDNQga0kvcfZqZ\nHQr8HrjfzG5y9wfNrD3QG/gzcCIwFFgRjhWsrJvd/eY4y38qY32Ps8yACe7+9yrsX0Qkk8X2DhfH\nPC7mt/rCgAPdfUMltlu6LS1z+Jy7f2tmGwgK+AvYvLAeDxzj7vPCbxe7l7GZjfw2NLZOqefKau9L\n5/jazJaFPey/I+gEkjykMdaSyU4EJrr7ru6+m7vvAnxhZoeYWUvgW3cfC9wHdDKzRkANd38cuBzo\n5O6rw9ecULJRM2sX3l0N1Cd5pgB/CfdREA5FmQKcUDIGMBw72DKJ+xQRSafKniPyInDhry8OOj9K\nK5W689cAAAFxSURBVN0WTyMYVoGZFQLfxemtjnUF8Lfwm8JYdeH/t3P/KA0EUQDGv3cFKwsvoK17\nAD2EWChYWIiVNqKVWNml8ACCYCOCCClttBQxQiSQ0tZbjMWsICEZApkimO9XLbN/3lSzb3ffW77b\nL5s7hXhfQNNubxXilOYMcE0u87sfMxctCBNrzbNt4HFk7IH8l5ANoB8RH+QyjStgBXhpa+1ugbP2\nnF1gP3JT4YDcuAJwB5xERC8KzYsjSovlMbAZEZ/AO7CaUhqSk/yniOiTbzLLU8aSpHkzaQ2cNH4E\nNG0j4gA4GHPMM7D227wIXADr7Zp5CewVJ5TSa0qpO2bXOfBGTtSHf8ZH1/4OcBgRPWCpFKswZ4Au\nueTkZspr6B8KH6okSZJmExEN0EkpTSo50QKwxlqSJGkGEXFK7u2xtnrB+cZakiRJqsAaa0mSJKkC\nE2tJkiSpAhNrSZIkqQITa0mSJKkCE2tJkiSpAhNrSZIkqYIf/u/3s24k0LIAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axes = plt.subplots(1, 2, figsize=(12, 4))\n", "\n", "axes[0].plot(ps, v[:-1])\n", "axes[0].plot([0, strike], [strike, 0], 'k--')\n", "axes[0].set_xlim(0, strike*2)\n", "axes[0].set_xticks(np.linspace(0, 4, 5, endpoint=True))\n", "axes[0].set_ylim(0, strike)\n", "axes[0].set_xlabel('Asset Price')\n", "axes[0].set_ylabel('Premium')\n", "axes[0].set_title('Put Option Value')\n", "\n", "axes[1].plot(np.linspace(0, T, N), max_exercise_price)\n", "axes[1].set_ylim(1.6, strike)\n", "axes[1].set_xlabel('Time to Maturity')\n", "axes[1].set_ylabel('Asset Price')\n", "axes[1].set_title('Put Option Optimal Exercise Boundary')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "The figure in the right panel looks different from\n", "the corresponding figure in Miranda and Fackler (Figure 7.4(b), p.180)." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.1" } }, "nbformat": 4, "nbformat_minor": 0 }