├── README.md ├── 7 Debt.ipynb ├── 9 WACC.ipynb ├── 8 Unlevered Equity .ipynb ├── 12 Relative Valuation.ipynb ├── 3 Other Profit Measures.ipynb ├── 13 Forward Contracts.ipynb ├── 11 WACC Challenge.ipynb ├── 1 Present Value.ipynb ├── 10 Debt Effect Analysis.ipynb ├── 5 Cash Flow Challenges.ipynb ├── 6 CAPM.ipynb ├── 4 Depreciation.ipynb └── 2 NPV vs. IRR.ipynb /README.md: -------------------------------------------------------------------------------- 1 | # FinanceAndPython.com-CorporateFinance -------------------------------------------------------------------------------- /7 Debt.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stdout", 10 | "output_type": "stream", 11 | "text": [ 12 | "0.05\n", 13 | "0.055\n", 14 | "0.07500000000000001\n" 15 | ] 16 | } 17 | ], 18 | "source": [ 19 | "print(.05 + 0*.5)\n", 20 | "print(.05 + .01*.5)\n", 21 | "print(.05 + .05*.5)" 22 | ] 23 | } 24 | ], 25 | "metadata": { 26 | "kernelspec": { 27 | "display_name": "Python 3", 28 | "language": "python", 29 | "name": "python3" 30 | }, 31 | "language_info": { 32 | "codemirror_mode": { 33 | "name": "ipython", 34 | "version": 3 35 | }, 36 | "file_extension": ".py", 37 | "mimetype": "text/x-python", 38 | "name": "python", 39 | "nbconvert_exporter": "python", 40 | "pygments_lexer": "ipython3", 41 | "version": "3.6.1" 42 | } 43 | }, 44 | "nbformat": 4, 45 | "nbformat_minor": 1 46 | } 47 | -------------------------------------------------------------------------------- /9 WACC.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stdout", 10 | "output_type": "stream", 11 | "text": [ 12 | "0.07833333333333334\n" 13 | ] 14 | } 15 | ], 16 | "source": [ 17 | "def WACC(price,outstanding,debtValue,debtYield,stockReturn,taxRate): \n", 18 | " equity = price*outstanding \n", 19 | " total = equity+debtValue \n", 20 | " return (equity/total)*stockReturn+(debtValue/total)*debtYield*(1-taxRate) \n", 21 | "print(WACC(20.0,100,1000.0,.05,.1,.3))" 22 | ] 23 | } 24 | ], 25 | "metadata": { 26 | "kernelspec": { 27 | "display_name": "Python 3", 28 | "language": "python", 29 | "name": "python3" 30 | }, 31 | "language_info": { 32 | "codemirror_mode": { 33 | "name": "ipython", 34 | "version": 3 35 | }, 36 | "file_extension": ".py", 37 | "mimetype": "text/x-python", 38 | "name": "python", 39 | "nbconvert_exporter": "python", 40 | "pygments_lexer": "ipython3", 41 | "version": "3.6.1" 42 | } 43 | }, 44 | "nbformat": 4, 45 | "nbformat_minor": 2 46 | } 47 | -------------------------------------------------------------------------------- /8 Unlevered Equity .ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stdout", 10 | "output_type": "stream", 11 | "text": [ 12 | "0.08\n", 13 | "0.12\n", 14 | "0.16\n", 15 | "0.2\n" 16 | ] 17 | } 18 | ], 19 | "source": [ 20 | "def unlever(r_a,r_d,E,D):\n", 21 | " return r_a + (r_a-r_d)*(D/E)\n", 22 | "print(unlever(.08,.04,100,0))\n", 23 | "print(unlever(.08,.04,100,100))\n", 24 | "print(unlever(.08,.04,100,200))\n", 25 | "print(unlever(.08,.02,100,200))" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": 2, 31 | "metadata": {}, 32 | "outputs": [ 33 | { 34 | "name": "stdout", 35 | "output_type": "stream", 36 | "text": [ 37 | "0.12\n", 38 | "0.08\n", 39 | "0.06\n" 40 | ] 41 | } 42 | ], 43 | "source": [ 44 | "print(unlever(.08,.04,100,100-0))\n", 45 | "print(unlever(.08,.04,100,100-100))\n", 46 | "print(unlever(.08,.04,100,100-150))" 47 | ] 48 | } 49 | ], 50 | "metadata": { 51 | "anaconda-cloud": {}, 52 | "kernelspec": { 53 | "display_name": "Python 3", 54 | "language": "python", 55 | "name": "python3" 56 | }, 57 | "language_info": { 58 | "codemirror_mode": { 59 | "name": "ipython", 60 | "version": 3 61 | }, 62 | "file_extension": ".py", 63 | "mimetype": "text/x-python", 64 | "name": "python", 65 | "nbconvert_exporter": "python", 66 | "pygments_lexer": "ipython3", 67 | "version": "3.6.1" 68 | } 69 | }, 70 | "nbformat": 4, 71 | "nbformat_minor": 1 72 | } 73 | -------------------------------------------------------------------------------- /12 Relative Valuation.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "import numpy as np\n", 12 | "A = np.array( [ [100,10,5],[0,100,5],[0,0,100] ] )\n", 13 | "B = np.array([200,300,400])" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 2, 19 | "metadata": {}, 20 | "outputs": [ 21 | { 22 | "name": "stdout", 23 | "output_type": "stream", 24 | "text": [ 25 | "[ 1.52 2.8 4. ]\n" 26 | ] 27 | } 28 | ], 29 | "source": [ 30 | "x = np.linalg.solve(A, B)\n", 31 | "print(x)" 32 | ] 33 | }, 34 | { 35 | "cell_type": "code", 36 | "execution_count": 3, 37 | "metadata": {}, 38 | "outputs": [ 39 | { 40 | "name": "stdout", 41 | "output_type": "stream", 42 | "text": [ 43 | "[ 136.8 280. 440. ]\n", 44 | "856.8\n" 45 | ] 46 | } 47 | ], 48 | "source": [ 49 | "print(x*[90,100,110])\n", 50 | "print(sum(x*[90,100,110]))" 51 | ] 52 | } 53 | ], 54 | "metadata": { 55 | "anaconda-cloud": {}, 56 | "kernelspec": { 57 | "display_name": "Python 3", 58 | "language": "python", 59 | "name": "python3" 60 | }, 61 | "language_info": { 62 | "codemirror_mode": { 63 | "name": "ipython", 64 | "version": 3 65 | }, 66 | "file_extension": ".py", 67 | "mimetype": "text/x-python", 68 | "name": "python", 69 | "nbconvert_exporter": "python", 70 | "pygments_lexer": "ipython3", 71 | "version": "3.6.1" 72 | } 73 | }, 74 | "nbformat": 4, 75 | "nbformat_minor": 1 76 | } 77 | -------------------------------------------------------------------------------- /3 Other Profit Measures.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "class Cashflow:\n", 12 | " def __init__(self, val,t,r):\n", 13 | " self.val = val\n", 14 | " self.t = t\n", 15 | " self.r = r\n", 16 | " self.PV = self.valAt(0)\n", 17 | " def valAt(self,time):\n", 18 | " return self.val*(1+self.r)**(time-self.t)\n", 19 | "def NPV(arr):\n", 20 | " return sum([x.PV for x in arr])\n", 21 | "def pIndex(flows):\n", 22 | " pos = [x for x in flows if x.val>0]\n", 23 | " neg = [x for x in flows if x.val<0]\n", 24 | " return NPV(pos)/-NPV(neg)" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "execution_count": 2, 30 | "metadata": {}, 31 | "outputs": [ 32 | { 33 | "name": "stdout", 34 | "output_type": "stream", 35 | "text": [ 36 | "1.239606953892668\n" 37 | ] 38 | } 39 | ], 40 | "source": [ 41 | "flows = [Cashflow(-1500,0,.05),Cashflow(1000,1,.05),Cashflow(1000,2,.05)]\n", 42 | "print(pIndex(flows))" 43 | ] 44 | }, 45 | { 46 | "cell_type": "code", 47 | "execution_count": 3, 48 | "metadata": {}, 49 | "outputs": [ 50 | { 51 | "name": "stdout", 52 | "output_type": "stream", 53 | "text": [ 54 | "10.0\n", 55 | "12.210884353741495\n", 56 | "7.908098991675274\n" 57 | ] 58 | } 59 | ], 60 | "source": [ 61 | "print(Cashflow(20,0,.05).PV+Cashflow(-10,0,.05).PV)\n", 62 | "print(Cashflow(30,2,.05).PV+Cashflow(-15,0,.05).PV)\n", 63 | "print(Cashflow(40,4,.05).PV+Cashflow(-25,0,.05).PV)" 64 | ] 65 | } 66 | ], 67 | "metadata": { 68 | "anaconda-cloud": {}, 69 | "kernelspec": { 70 | "display_name": "Python 3", 71 | "language": "python", 72 | "name": "python3" 73 | }, 74 | "language_info": { 75 | "codemirror_mode": { 76 | "name": "ipython", 77 | "version": 3 78 | }, 79 | "file_extension": ".py", 80 | "mimetype": "text/x-python", 81 | "name": "python", 82 | "nbconvert_exporter": "python", 83 | "pygments_lexer": "ipython3", 84 | "version": "3.6.1" 85 | } 86 | }, 87 | "nbformat": 4, 88 | "nbformat_minor": 1 89 | } 90 | -------------------------------------------------------------------------------- /13 Forward Contracts.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stdout", 10 | "output_type": "stream", 11 | "text": [ 12 | "27.36322655556311\n" 13 | ] 14 | } 15 | ], 16 | "source": [ 17 | "class Cashflow:\n", 18 | " def __init__(self, val,t,r):\n", 19 | " self.val = val\n", 20 | " self.t = t\n", 21 | " self.r = r\n", 22 | " self.PV = self.valAt(0)\n", 23 | " def valAt(self,time):\n", 24 | " return self.val*(1+self.r)**(time-self.t)\n", 25 | "def NPV(arr):\n", 26 | " return sum([x.PV for x in arr])\n", 27 | "flows = [Cashflow(-150,0,.1), Cashflow(50*1.05,1,.1), Cashflow(50*1.1,2,.1), Cashflow(50*1.15,3,.1), Cashflow(50*1.2,4,.1)]\n", 28 | "print(NPV(flows))" 29 | ] 30 | }, 31 | { 32 | "cell_type": "code", 33 | "execution_count": 2, 34 | "metadata": {}, 35 | "outputs": [ 36 | { 37 | "name": "stdout", 38 | "output_type": "stream", 39 | "text": [ 40 | "-12.260091523803048\n" 41 | ] 42 | } 43 | ], 44 | "source": [ 45 | "flows = [Cashflow(-150,0,.1), Cashflow(50*.8,1,.1), Cashflow(50*.85,2,.1), Cashflow(50*.9,3,.1), Cashflow(50*.95,4,.1)]\n", 46 | "print(NPV(flows))" 47 | ] 48 | }, 49 | { 50 | "cell_type": "code", 51 | "execution_count": 3, 52 | "metadata": {}, 53 | "outputs": [ 54 | { 55 | "name": "stdout", 56 | "output_type": "stream", 57 | "text": [ 58 | "39.62331807936616\n" 59 | ] 60 | } 61 | ], 62 | "source": [ 63 | "flows = [Cashflow(50*(1.05-.8),1,.1), Cashflow(50*(1.1-.85),2,.1), Cashflow(50*(1.15-.9),3,.1), Cashflow(50*(1.2-.95),4,.1)]\n", 64 | "print(NPV(flows))" 65 | ] 66 | } 67 | ], 68 | "metadata": { 69 | "anaconda-cloud": {}, 70 | "kernelspec": { 71 | "display_name": "Python 3", 72 | "language": "python", 73 | "name": "python3" 74 | }, 75 | "language_info": { 76 | "codemirror_mode": { 77 | "name": "ipython", 78 | "version": 3 79 | }, 80 | "file_extension": ".py", 81 | "mimetype": "text/x-python", 82 | "name": "python", 83 | "nbconvert_exporter": "python", 84 | "pygments_lexer": "ipython3", 85 | "version": "3.6.1" 86 | } 87 | }, 88 | "nbformat": 4, 89 | "nbformat_minor": 1 90 | } 91 | -------------------------------------------------------------------------------- /11 WACC Challenge.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "def unlever(r_a,r_d,E,D):\n", 12 | " return r_a + (r_a-r_d)*(D/E)" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 2, 18 | "metadata": { 19 | "collapsed": true 20 | }, 21 | "outputs": [], 22 | "source": [ 23 | "a = [.08,.03,100,100]\n", 24 | "b = [.1,.04,100,0]\n", 25 | "c = [.09,.02,200,100]\n", 26 | "d = [.08,.03,100,200]" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 3, 32 | "metadata": {}, 33 | "outputs": [ 34 | { 35 | "name": "stdout", 36 | "output_type": "stream", 37 | "text": [ 38 | "0.13\n", 39 | "0.1\n", 40 | "0.125\n", 41 | "0.125\n", 42 | "The average is:\n", 43 | "0.12\n", 44 | "The WACC is:\n", 45 | "0.07975806451612902\n" 46 | ] 47 | } 48 | ], 49 | "source": [ 50 | "import numpy as np\n", 51 | "\n", 52 | "print(unlever(a[0],a[1],a[2],a[3]))\n", 53 | "print(unlever(b[0],b[1],b[2],b[3]))\n", 54 | "print(unlever(c[0],c[1],c[2],c[3]))\n", 55 | "print(unlever(c[0],c[1],c[2],c[3]))\n", 56 | "print(\"The average is:\")\n", 57 | "rates = []\n", 58 | "rates.append(unlever(a[0],a[1],a[2],a[3]))\n", 59 | "rates.append(unlever(b[0],b[1],b[2],b[3]))\n", 60 | "rates.append(unlever(c[0],c[1],c[2],c[3]))\n", 61 | "rates.append(unlever(c[0],c[1],c[2],c[3]))\n", 62 | "print(np.mean(rates))\n", 63 | "def WACC(price,outstanding,debtValue,debtYield,stockReturn,taxRate): \n", 64 | " equity = price*outstanding \n", 65 | " total = equity+debtValue \n", 66 | " return (equity/total)*stockReturn+(debtValue/total)*debtYield*(1-taxRate) \n", 67 | "print(\"The WACC is:\")\n", 68 | "print(WACC(10.5,20,(300-200),.04,.1025,.2))" 69 | ] 70 | } 71 | ], 72 | "metadata": { 73 | "anaconda-cloud": {}, 74 | "kernelspec": { 75 | "display_name": "Python 3", 76 | "language": "python", 77 | "name": "python3" 78 | }, 79 | "language_info": { 80 | "codemirror_mode": { 81 | "name": "ipython", 82 | "version": 3 83 | }, 84 | "file_extension": ".py", 85 | "mimetype": "text/x-python", 86 | "name": "python", 87 | "nbconvert_exporter": "python", 88 | "pygments_lexer": "ipython3", 89 | "version": "3.6.1" 90 | } 91 | }, 92 | "nbformat": 4, 93 | "nbformat_minor": 1 94 | } 95 | -------------------------------------------------------------------------------- /1 Present Value.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "class Cashflow:\n", 12 | " def __init__(self, val,t,r):\n", 13 | " self.val = val\n", 14 | " self.t = t\n", 15 | " self.r = r\n", 16 | " self.PV = self.valAt(0)\n", 17 | " def valAt(self,time):\n", 18 | " return self.val*(1+self.r)**(time-self.t)" 19 | ] 20 | }, 21 | { 22 | "cell_type": "code", 23 | "execution_count": 2, 24 | "metadata": {}, 25 | "outputs": [ 26 | { 27 | "name": "stdout", 28 | "output_type": "stream", 29 | "text": [ 30 | "1859.410430839002\n" 31 | ] 32 | } 33 | ], 34 | "source": [ 35 | "flows = [Cashflow(1000,1,.05),Cashflow(1000,2,.05)]\n", 36 | "total =0\n", 37 | "for f in flows:\n", 38 | " total+= f.PV\n", 39 | "print(total)" 40 | ] 41 | }, 42 | { 43 | "cell_type": "code", 44 | "execution_count": 3, 45 | "metadata": {}, 46 | "outputs": [ 47 | { 48 | "name": "stdout", 49 | "output_type": "stream", 50 | "text": [ 51 | "[952.3809523809523, 907.0294784580498]\n", 52 | "1859.410430839002\n" 53 | ] 54 | } 55 | ], 56 | "source": [ 57 | "total = [f.PV for f in flows]\n", 58 | "print(total)\n", 59 | "print(sum(total))" 60 | ] 61 | }, 62 | { 63 | "cell_type": "code", 64 | "execution_count": 4, 65 | "metadata": {}, 66 | "outputs": [ 67 | { 68 | "name": "stdout", 69 | "output_type": "stream", 70 | "text": [ 71 | "2152.5\n", 72 | "[1102.5, 1050.0]\n", 73 | "2152.5\n" 74 | ] 75 | } 76 | ], 77 | "source": [ 78 | "total =0\n", 79 | "for f in flows:\n", 80 | " total+= f.valAt(3)\n", 81 | "print(total)\n", 82 | "total = [f.valAt(3) for f in flows]\n", 83 | "print(total)\n", 84 | "print(sum(total))" 85 | ] 86 | } 87 | ], 88 | "metadata": { 89 | "anaconda-cloud": {}, 90 | "kernelspec": { 91 | "display_name": "Python 3", 92 | "language": "python", 93 | "name": "python3" 94 | }, 95 | "language_info": { 96 | "codemirror_mode": { 97 | "name": "ipython", 98 | "version": 3 99 | }, 100 | "file_extension": ".py", 101 | "mimetype": "text/x-python", 102 | "name": "python", 103 | "nbconvert_exporter": "python", 104 | "pygments_lexer": "ipython3", 105 | "version": "3.6.1" 106 | } 107 | }, 108 | "nbformat": 4, 109 | "nbformat_minor": 1 110 | } 111 | -------------------------------------------------------------------------------- /10 Debt Effect Analysis.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stdout", 10 | "output_type": "stream", 11 | "text": [ 12 | "1100.0\n" 13 | ] 14 | } 15 | ], 16 | "source": [ 17 | "import numpy as np\n", 18 | "returns = [1000,1100,1200]\n", 19 | "expected = np.mean(returns)\n", 20 | "print(expected)" 21 | ] 22 | }, 23 | { 24 | "cell_type": "code", 25 | "execution_count": 2, 26 | "metadata": {}, 27 | "outputs": [ 28 | { 29 | "name": "stdout", 30 | "output_type": "stream", 31 | "text": [ 32 | "1000.0\n" 33 | ] 34 | } 35 | ], 36 | "source": [ 37 | "print(expected/1.1)" 38 | ] 39 | }, 40 | { 41 | "cell_type": "code", 42 | "execution_count": 3, 43 | "metadata": {}, 44 | "outputs": [ 45 | { 46 | "name": "stdout", 47 | "output_type": "stream", 48 | "text": [ 49 | "0.1\n" 50 | ] 51 | } 52 | ], 53 | "source": [ 54 | "def unlever(r_a,r_d,E,D):\n", 55 | " return r_a + (r_a-r_d)*(D/E)\n", 56 | "print(unlever(.1,.04,1000,0))" 57 | ] 58 | }, 59 | { 60 | "cell_type": "code", 61 | "execution_count": 4, 62 | "metadata": {}, 63 | "outputs": [ 64 | { 65 | "name": "stdout", 66 | "output_type": "stream", 67 | "text": [ 68 | "0.16\n" 69 | ] 70 | } 71 | ], 72 | "source": [ 73 | "print(unlever(.1,.04,500,500))" 74 | ] 75 | }, 76 | { 77 | "cell_type": "code", 78 | "execution_count": 5, 79 | "metadata": {}, 80 | "outputs": [ 81 | { 82 | "name": "stdout", 83 | "output_type": "stream", 84 | "text": [ 85 | "[480, 580, 680]\n" 86 | ] 87 | } 88 | ], 89 | "source": [ 90 | "returns_after = [x-520 for x in returns]\n", 91 | "print(returns_after)" 92 | ] 93 | }, 94 | { 95 | "cell_type": "code", 96 | "execution_count": 6, 97 | "metadata": {}, 98 | "outputs": [ 99 | { 100 | "name": "stdout", 101 | "output_type": "stream", 102 | "text": [ 103 | "580.0\n", 104 | "1.16\n" 105 | ] 106 | } 107 | ], 108 | "source": [ 109 | "expected = np.mean(returns_after)\n", 110 | "print(expected)\n", 111 | "print(580.0/500.0)" 112 | ] 113 | } 114 | ], 115 | "metadata": { 116 | "anaconda-cloud": {}, 117 | "kernelspec": { 118 | "display_name": "Python 3", 119 | "language": "python", 120 | "name": "python3" 121 | }, 122 | "language_info": { 123 | "codemirror_mode": { 124 | "name": "ipython", 125 | "version": 3 126 | }, 127 | "file_extension": ".py", 128 | "mimetype": "text/x-python", 129 | "name": "python", 130 | "nbconvert_exporter": "python", 131 | "pygments_lexer": "ipython3", 132 | "version": "3.6.1" 133 | } 134 | }, 135 | "nbformat": 4, 136 | "nbformat_minor": 1 137 | } 138 | -------------------------------------------------------------------------------- /5 Cash Flow Challenges.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stdout", 10 | "output_type": "stream", 11 | "text": [ 12 | "116473.83353154093\n" 13 | ] 14 | } 15 | ], 16 | "source": [ 17 | "class Cashflow:\n", 18 | " def __init__(self, val,t,r):\n", 19 | " self.val = val\n", 20 | " self.t = t\n", 21 | " self.r = r\n", 22 | " self.PV = self.valAt(0)\n", 23 | " def valAt(self,time):\n", 24 | " return self.val*(1+self.r)**(time-self.t)\n", 25 | "def NPV(arr):\n", 26 | " return sum([x.PV for x in arr])\n", 27 | "flows1 = [Cashflow(-100000,0,.05),Cashflow(50000,1,.05),Cashflow(50000,2,.05),Cashflow(50000,3,.05),Cashflow(50000,4,.05),Cashflow(50000,5,.05)]\n", 28 | "print(NPV(flows1))" 29 | ] 30 | }, 31 | { 32 | "cell_type": "code", 33 | "execution_count": 2, 34 | "metadata": {}, 35 | "outputs": [ 36 | { 37 | "name": "stdout", 38 | "output_type": "stream", 39 | "text": [ 40 | "116473.83353154096\n" 41 | ] 42 | } 43 | ], 44 | "source": [ 45 | "NCS = [Cashflow(-100000,0,.05)]\n", 46 | "OCF = [Cashflow(50000,1,.05),Cashflow(50000,2,.05),Cashflow(50000,3,.05),Cashflow(50000,4,.05),Cashflow(50000,5,.05)]\n", 47 | "print(NPV(NCS)+NPV(OCF))" 48 | ] 49 | }, 50 | { 51 | "cell_type": "code", 52 | "execution_count": 3, 53 | "metadata": {}, 54 | "outputs": [ 55 | { 56 | "name": "stdout", 57 | "output_type": "stream", 58 | "text": [ 59 | "94826.45017838685\n" 60 | ] 61 | } 62 | ], 63 | "source": [ 64 | "NCS = [Cashflow(-100000,0,.05)]\n", 65 | "OCF = [Cashflow(45000,1,.05),Cashflow(45000,2,.05),Cashflow(45000,3,.05),Cashflow(45000,4,.05),Cashflow(45000,5,.05)]\n", 66 | "print(NPV(NCS)+NPV(OCF))" 67 | ] 68 | }, 69 | { 70 | "cell_type": "code", 71 | "execution_count": 4, 72 | "metadata": { 73 | "collapsed": true 74 | }, 75 | "outputs": [], 76 | "source": [ 77 | "def NPV2(arr,t):\n", 78 | " return sum([x.PV*(1-t) for x in arr])" 79 | ] 80 | }, 81 | { 82 | "cell_type": "code", 83 | "execution_count": 5, 84 | "metadata": {}, 85 | "outputs": [ 86 | { 87 | "name": "stdout", 88 | "output_type": "stream", 89 | "text": [ 90 | "55861.1601427095\n" 91 | ] 92 | } 93 | ], 94 | "source": [ 95 | "NCS = [Cashflow(-100000,0,.05)]\n", 96 | "OCF = [Cashflow(45000,1,.05),Cashflow(45000,2,.05),Cashflow(45000,3,.05),Cashflow(45000,4,.05),Cashflow(45000,5,.05)]\n", 97 | "print(NPV(NCS)+NPV2(OCF,.2))" 98 | ] 99 | }, 100 | { 101 | "cell_type": "code", 102 | "execution_count": 6, 103 | "metadata": { 104 | "collapsed": true 105 | }, 106 | "outputs": [], 107 | "source": [ 108 | "def taxShield(initial,salvage,years,taxRate,r):\n", 109 | " dep = (initial-salvage)/years\n", 110 | " taxShield = dep*taxRate\n", 111 | " return [Cashflow(taxShield,t,r) for t in range(1,years+1)]" 112 | ] 113 | }, 114 | { 115 | "cell_type": "code", 116 | "execution_count": 7, 117 | "metadata": {}, 118 | "outputs": [ 119 | { 120 | "name": "stdout", 121 | "output_type": "stream", 122 | "text": [ 123 | "73179.06682523277\n" 124 | ] 125 | } 126 | ], 127 | "source": [ 128 | "print(NPV(NCS)+NPV2(OCF,.2)+NPV(taxShield(100000,0,5,.2,.05)))" 129 | ] 130 | }, 131 | { 132 | "cell_type": "code", 133 | "execution_count": 8, 134 | "metadata": {}, 135 | "outputs": [ 136 | { 137 | "name": "stdout", 138 | "output_type": "stream", 139 | "text": [ 140 | "-10823.691676577058\n", 141 | "62355.375148655716\n" 142 | ] 143 | } 144 | ], 145 | "source": [ 146 | "NWC = [Cashflow(-50000,0,.05),Cashflow(50000,5,.05)]\n", 147 | "print(NPV(NWC))\n", 148 | "print(NPV(NCS)+NPV2(OCF,.2)+NPV(taxShield(100000,0,5,.2,.05))+NPV(NWC))" 149 | ] 150 | }, 151 | { 152 | "cell_type": "code", 153 | "execution_count": 9, 154 | "metadata": {}, 155 | "outputs": [ 156 | { 157 | "name": "stdout", 158 | "output_type": "stream", 159 | "text": [ 160 | "99140.93946256468\n" 161 | ] 162 | } 163 | ], 164 | "source": [ 165 | "NCS = [Cashflow(-100000,0,.05),Cashflow(50000,5,.05)]\n", 166 | "OCF = [Cashflow(45000,1,.05),Cashflow(45000,2,.05),Cashflow(45000,3,.05),Cashflow(45000,4,.05),Cashflow(45000,5,.05)]\n", 167 | "NWC = [Cashflow(-50000,0,.05),Cashflow(50000,5,.05)]\n", 168 | "Shield = taxShield(100000,50000,5,.2,.05)\n", 169 | "print(NPV(NCS)+NPV2(OCF,.2)+NPV(Shield)+NPV(NWC)+NPV2([Cashflow(10000,5,.05)],.2))" 170 | ] 171 | } 172 | ], 173 | "metadata": { 174 | "anaconda-cloud": {}, 175 | "kernelspec": { 176 | "display_name": "Python 3", 177 | "language": "python", 178 | "name": "python3" 179 | }, 180 | "language_info": { 181 | "codemirror_mode": { 182 | "name": "ipython", 183 | "version": 3 184 | }, 185 | "file_extension": ".py", 186 | "mimetype": "text/x-python", 187 | "name": "python", 188 | "nbconvert_exporter": "python", 189 | "pygments_lexer": "ipython3", 190 | "version": "3.6.1" 191 | } 192 | }, 193 | "nbformat": 4, 194 | "nbformat_minor": 1 195 | } 196 | -------------------------------------------------------------------------------- /6 CAPM.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "def CAPM(rf,market,beta): \n", 12 | " return rf+(beta*(market-rf))" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 2, 18 | "metadata": {}, 19 | "outputs": [ 20 | { 21 | "data": { 22 | "image/png": "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\n", 23 | "text/plain": [ 24 | "" 25 | ] 26 | }, 27 | "metadata": {}, 28 | "output_type": "display_data" 29 | } 30 | ], 31 | "source": [ 32 | "import matplotlib.pyplot as plt \n", 33 | "\n", 34 | "betas = [] \n", 35 | "returns = [] \n", 36 | "beta = 0 \n", 37 | "rf = .02 \n", 38 | "market = .08 \n", 39 | "for x in range(31): \n", 40 | " betas+=[beta] \n", 41 | " r = CAPM(rf,market,beta) \n", 42 | " returns +=[r] \n", 43 | " beta+=.1 \n", 44 | "plt.plot(betas,returns,\"blue\") \n", 45 | "betas = [] \n", 46 | "returns = [] \n", 47 | "beta = 0 \n", 48 | "rf = .04 \n", 49 | "market = .08 \n", 50 | "for x in range(31): \n", 51 | " betas+=[beta] \n", 52 | " r = CAPM(rf,market,beta) \n", 53 | " returns +=[r] \n", 54 | " beta+=.1 \n", 55 | "plt.plot(betas,returns,\"red\") \n", 56 | "\n", 57 | "betas = [] \n", 58 | "returns = [] \n", 59 | "beta = 0 \n", 60 | "rf = .02 \n", 61 | "market = .12 \n", 62 | "for x in range(31): \n", 63 | " betas+=[beta] \n", 64 | " r = CAPM(rf,market,beta) \n", 65 | " returns +=[r] \n", 66 | " beta+=.1 \n", 67 | "plt.plot(betas,returns,\"black\") \n", 68 | "plt.xlabel(\"Beta\")\n", 69 | "plt.ylabel(\"Return\")\n", 70 | "plt.title(\"Capital Asset Pricing Model\")\n", 71 | "plt.legend([\"Baseline\",\"Higher Risk Free\",\"Higher Risk Premium\"])\n", 72 | "plt.show()" 73 | ] 74 | } 75 | ], 76 | "metadata": { 77 | "kernelspec": { 78 | "display_name": "Python 3", 79 | "language": "python", 80 | "name": "python3" 81 | }, 82 | "language_info": { 83 | "codemirror_mode": { 84 | "name": "ipython", 85 | "version": 3 86 | }, 87 | "file_extension": ".py", 88 | "mimetype": "text/x-python", 89 | "name": "python", 90 | "nbconvert_exporter": "python", 91 | "pygments_lexer": "ipython3", 92 | "version": "3.6.1" 93 | } 94 | }, 95 | "nbformat": 4, 96 | "nbformat_minor": 2 97 | } 98 | -------------------------------------------------------------------------------- /4 Depreciation.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "def depreciation(initial,salvage,years):\n", 12 | " return (initial-salvage)/years" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 2, 18 | "metadata": {}, 19 | "outputs": [ 20 | { 21 | "data": { 22 | "image/png": "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\nkTw8AAAAAElFTkSuQmCC\n", 23 | "text/plain": [ 24 | "" 25 | ] 26 | }, 27 | "metadata": {}, 28 | "output_type": "display_data" 29 | } 30 | ], 31 | "source": [ 32 | "import matplotlib.pyplot as plt\n", 33 | "\n", 34 | "def depreciationFull(initial,salvage,years):\n", 35 | " values=[initial]\n", 36 | " value=initial\n", 37 | " periods=[0]\n", 38 | " charge = depreciation(initial,salvage,years)\n", 39 | " for y in range(1,years+1):\n", 40 | " periods+=[y]\n", 41 | " value-=charge\n", 42 | " values +=[value]\n", 43 | " \n", 44 | " return values,periods\n", 45 | "values,periods = depreciationFull(15000,0,3)\n", 46 | "plt.plot(periods,values)\n", 47 | "plt.xlabel(\"Year\")\n", 48 | "plt.ylabel(\"Equipment Value\")\n", 49 | "plt.title(\"Straight Line Depreciation\")\n", 50 | "plt.show()" 51 | ] 52 | }, 53 | { 54 | "cell_type": "code", 55 | "execution_count": 3, 56 | "metadata": {}, 57 | "outputs": [ 58 | { 59 | "data": { 60 | "image/png": "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\n5j87zPRlwqC8UwAAAABJRU5ErkJggg==\n", 61 | "text/plain": [ 62 | "" 63 | ] 64 | }, 65 | "metadata": {}, 66 | "output_type": "display_data" 67 | } 68 | ], 69 | "source": [ 70 | "import matplotlib.pyplot as plt\n", 71 | "values,periods = depreciationFull(15000,0,3)\n", 72 | "plt.plot(periods,values)\n", 73 | "values,periods = depreciationFull(15000,3000,3)\n", 74 | "plt.plot(periods,values)\n", 75 | "plt.xlabel(\"Year\")\n", 76 | "plt.ylabel(\"Equipment Value\")\n", 77 | "plt.title(\"Straight Line Depreciation\")\n", 78 | "plt.legend([\"Equipment 1\",\"Equipment 2\"])\n", 79 | "plt.show()" 80 | ] 81 | } 82 | ], 83 | "metadata": { 84 | "anaconda-cloud": {}, 85 | "kernelspec": { 86 | "display_name": "Python 3", 87 | "language": "python", 88 | "name": "python3" 89 | }, 90 | "language_info": { 91 | "codemirror_mode": { 92 | "name": "ipython", 93 | "version": 3 94 | }, 95 | "file_extension": ".py", 96 | "mimetype": "text/x-python", 97 | "name": "python", 98 | "nbconvert_exporter": "python", 99 | "pygments_lexer": "ipython3", 100 | "version": "3.6.1" 101 | } 102 | }, 103 | "nbformat": 4, 104 | "nbformat_minor": 1 105 | } 106 | -------------------------------------------------------------------------------- /2 NPV vs. IRR.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stdout", 10 | "output_type": "stream", 11 | "text": [ 12 | "359.41043083900206\n" 13 | ] 14 | } 15 | ], 16 | "source": [ 17 | "class Cashflow:\n", 18 | " def __init__(self, val,t,r):\n", 19 | " self.val = val\n", 20 | " self.t = t\n", 21 | " self.r = r\n", 22 | " self.PV = self.valAt(0)\n", 23 | " def valAt(self,time):\n", 24 | " return self.val*(1+self.r)**(time-self.t)\n", 25 | "def NPV(arr):\n", 26 | " return sum([x.PV for x in arr])\n", 27 | "print(NPV([Cashflow(-1500,0,.05),Cashflow(1000,1,.05),Cashflow(1000,2,.05)]))" 28 | ] 29 | }, 30 | { 31 | "cell_type": "code", 32 | "execution_count": 2, 33 | "metadata": { 34 | "collapsed": true 35 | }, 36 | "outputs": [], 37 | "source": [ 38 | "class Cashflow:\n", 39 | " def __init__(self, val,t,r):\n", 40 | " self.val = val\n", 41 | " self.t = t\n", 42 | " self.r = r\n", 43 | " self.PV = self.valAt(0)\n", 44 | " def valAt(self,time):\n", 45 | " return self.val*(1+self.r)**(time-self.t)\n", 46 | " def tryR(self,r):\n", 47 | " return self.val*(1+r)**(0-self.t)" 48 | ] 49 | }, 50 | { 51 | "cell_type": "code", 52 | "execution_count": 3, 53 | "metadata": { 54 | "collapsed": true 55 | }, 56 | "outputs": [], 57 | "source": [ 58 | "def NPV2(r,arr):\n", 59 | " return sum([x.tryR(r) for x in arr])" 60 | ] 61 | }, 62 | { 63 | "cell_type": "code", 64 | "execution_count": 4, 65 | "metadata": { 66 | "collapsed": true 67 | }, 68 | "outputs": [], 69 | "source": [ 70 | "from scipy.optimize import fsolve\n", 71 | "def findIRR(arr):\n", 72 | " return fsolve(NPV2, 0,(arr))" 73 | ] 74 | }, 75 | { 76 | "cell_type": "code", 77 | "execution_count": 5, 78 | "metadata": {}, 79 | "outputs": [ 80 | { 81 | "name": "stdout", 82 | "output_type": "stream", 83 | "text": [ 84 | "[ 0.21525044]\n", 85 | "-8.417373464908451e-10\n" 86 | ] 87 | } 88 | ], 89 | "source": [ 90 | "print(findIRR([Cashflow(-1500.0,0.0,.05),Cashflow(1000.0,1.0,.05),Cashflow(1000.0,2.0,.05)]))\n", 91 | "print(NPV2(.215250437022,[Cashflow(-1500.0,0,.05),Cashflow(1000.0,1,.05),Cashflow(1000.0,2,.05)]))" 92 | ] 93 | }, 94 | { 95 | "cell_type": "code", 96 | "execution_count": 6, 97 | "metadata": {}, 98 | "outputs": [ 99 | { 100 | "name": "stdout", 101 | "output_type": "stream", 102 | "text": [ 103 | "500.0 Yes Yes\n", 104 | "470.39505930791086 Yes Yes\n", 105 | "441.56093810073037 Yes Yes\n", 106 | "413.46969554152145 Yes Yes\n", 107 | "386.0946745562128 Yes Yes\n", 108 | "359.41043083900206 Yes Yes\n", 109 | "333.3926664293341 Yes Yes\n", 110 | "308.01816752554805 Yes Yes\n", 111 | "283.264746227709 Yes Yes\n", 112 | "259.11118592711034 Yes Yes\n", 113 | "235.53719008264443 Yes Yes\n", 114 | "212.52333414495604 Yes Yes\n", 115 | "190.05102040816348 Yes Yes\n", 116 | "168.10243558618538 Yes Yes\n", 117 | "146.66051092643897 Yes Yes\n", 118 | "125.70888468809096 Yes Yes\n", 119 | "105.23186682520816 Yes Yes\n", 120 | "85.21440572722634 Yes Yes\n", 121 | "65.64205688020695 Yes Yes\n", 122 | "46.50095332250555 Yes Yes\n", 123 | "27.777777777777942 Yes Yes\n", 124 | "9.459736356806275 Yes Yes\n", 125 | "-8.465466272507342 No No\n", 126 | "-26.009650340405756 No No\n", 127 | "-43.184183142559846 No No\n", 128 | "-60.0 No No\n", 129 | "-76.46762408667178 No No\n", 130 | "-92.59718519437047 No No\n", 131 | "-108.3984375 No No\n", 132 | "-123.88077639564938 No No\n", 133 | "-139.05325443787 No No\n", 134 | "-153.92459646873726 No No\n", 135 | "-168.50321395775939 No No\n", 136 | "-182.79721861043595 No No\n", 137 | "-196.8144352862555 No No\n", 138 | "-210.56241426611814 No No\n", 139 | "-224.04844290657456 No No\n", 140 | "-237.2795567158613 No No\n", 141 | "-250.2625498844783 No No\n", 142 | "-263.003985300968 No No\n", 143 | "-275.5102040816328 No No\n", 144 | "-287.7873346411148 No No\n", 145 | "-299.84130132910155 No No\n", 146 | "-311.67783265685375 No No\n", 147 | "-323.3024691358027 No No\n", 148 | "-334.7205707491084 No No\n", 149 | "-345.9373240758117 No No\n", 150 | "-356.95774908602925 No No\n", 151 | "-367.7867056245438 No No\n", 152 | "-378.4288995991174 No No\n" 153 | ] 154 | } 155 | ], 156 | "source": [ 157 | "flows = [Cashflow(-1500,0.0,.05),Cashflow(1000,1.0,.05),Cashflow(1000,2.0,.05)]\n", 158 | "cutoff = findIRR(flows)[0]\n", 159 | "r=0\n", 160 | "decision1 =\"Yes\"\n", 161 | "decision2 =\"Yes\"\n", 162 | "for _ in range(50):\n", 163 | " value = NPV2(r,flows)\n", 164 | " if value>0:\n", 165 | " decision1 =\"Yes\"\n", 166 | " else:\n", 167 | " decision1 =\"No\"\n", 168 | " if r0:\n", 247 | " decision1 =\"Yes\"\n", 248 | " else:\n", 249 | " decision1 =\"No\"\n", 250 | " if r" 268 | ] 269 | }, 270 | "metadata": {}, 271 | "output_type": "display_data" 272 | } 273 | ], 274 | "source": [ 275 | "import matplotlib.pyplot as plt\n", 276 | "\n", 277 | "flows = [Cashflow(-1500,0,.05),Cashflow(1000,1,.05),Cashflow(1000,2,.05)]\n", 278 | "\n", 279 | "r = 0\n", 280 | "rates=[]\n", 281 | "values=[]\n", 282 | "for _ in range(50):\n", 283 | " rates+=[r]\n", 284 | " values+=[NPV2(r,flows)]\n", 285 | " r+=.01\n", 286 | "plt.plot(rates,values)\n", 287 | "\n", 288 | "flows = [Cashflow(1500,0,.05),Cashflow(-1000,1,.05),Cashflow(-1000,2,.05)]\n", 289 | "\n", 290 | "r = 0\n", 291 | "rates=[]\n", 292 | "values=[]\n", 293 | "for _ in range(50):\n", 294 | " rates+=[r]\n", 295 | " values+=[NPV2(r,flows)]\n", 296 | " r+=.01\n", 297 | "plt.plot(rates,values)\n", 298 | "plt.xlabel(\"r\")\n", 299 | "plt.ylabel(\"NPV\")\n", 300 | "plt.legend([\"Cash Flows 1\",\"Negative Cash Flows 1\"])\n", 301 | "\n", 302 | "plt.show()" 303 | ] 304 | }, 305 | { 306 | "cell_type": "code", 307 | "execution_count": 9, 308 | "metadata": {}, 309 | "outputs": [ 310 | { 311 | "data": { 312 | "image/png": "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\nN38pAAAAAElFTkSuQmCC\n", 313 | "text/plain": [ 314 | "" 315 | ] 316 | }, 317 | "metadata": {}, 318 | "output_type": "display_data" 319 | } 320 | ], 321 | "source": [ 322 | "flows = [Cashflow(-1200,0,.05),Cashflow(2000,3,.05),Cashflow(2000,6,.05),Cashflow(-3000,10,.05)]\n", 323 | "\n", 324 | "r = 0\n", 325 | "rates=[]\n", 326 | "values=[]\n", 327 | "for _ in range(50):\n", 328 | " rates+=[r]\n", 329 | " values+=[NPV2(r,flows)]\n", 330 | " r+=.01\n", 331 | "plt.axhline(0, color='black')\n", 332 | "plt.plot(rates,values)\n", 333 | "plt.xlabel(\"r\")\n", 334 | "plt.ylabel(\"NPV\")\n", 335 | "plt.title(\"Cash Flows with Mixed Signs\")\n", 336 | "plt.show()" 337 | ] 338 | } 339 | ], 340 | "metadata": { 341 | "anaconda-cloud": {}, 342 | "kernelspec": { 343 | "display_name": "Python 3", 344 | "language": "python", 345 | "name": "python3" 346 | }, 347 | "language_info": { 348 | "codemirror_mode": { 349 | "name": "ipython", 350 | "version": 3 351 | }, 352 | "file_extension": ".py", 353 | "mimetype": "text/x-python", 354 | "name": "python", 355 | "nbconvert_exporter": "python", 356 | "pygments_lexer": "ipython3", 357 | "version": "3.6.1" 358 | } 359 | }, 360 | "nbformat": 4, 361 | "nbformat_minor": 1 362 | } 363 | --------------------------------------------------------------------------------