├── 1 Introduction.ipynb ├── 10 Stocks.ipynb ├── 11 Dividend Discount Model.ipynb ├── 12 EAA.ipynb ├── 13 IRR.ipynb ├── 14 Risk.ipynb ├── 15 Beta.ipynb ├── 16 CAPM.ipynb ├── 17 WACC.ipynb ├── 2 Taxes.ipynb ├── 3 Compound Interest.ipynb ├── 4 Plotting Compound Interest.ipynb ├── 5 Present Value.ipynb ├── 6 Present Value Multiple Cash Flows.ipynb ├── 7 Perpetetuities.ipynb ├── 8 Annuities.ipynb ├── 9 Bonds.ipynb └── README.md /1 Introduction.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "X = 5" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 2, 17 | "metadata": {}, 18 | "outputs": [ 19 | { 20 | "name": "stdout", 21 | "output_type": "stream", 22 | "text": [ 23 | "5\n" 24 | ] 25 | } 26 | ], 27 | "source": [ 28 | "print(X)" 29 | ] 30 | }, 31 | { 32 | "cell_type": "code", 33 | "execution_count": 3, 34 | "metadata": {}, 35 | "outputs": [ 36 | { 37 | "name": "stdout", 38 | "output_type": "stream", 39 | "text": [ 40 | "8\n" 41 | ] 42 | } 43 | ], 44 | "source": [ 45 | "Y = 3\n", 46 | "Z = X+Y\n", 47 | "print(Z)" 48 | ] 49 | }, 50 | { 51 | "cell_type": "code", 52 | "execution_count": 4, 53 | "metadata": {}, 54 | "outputs": [ 55 | { 56 | "name": "stdout", 57 | "output_type": "stream", 58 | "text": [ 59 | "30\n" 60 | ] 61 | } 62 | ], 63 | "source": [ 64 | "X = 5\n", 65 | "Y=10\n", 66 | "Z=15\n", 67 | "total=X+Y+Z\n", 68 | "print(total)" 69 | ] 70 | }, 71 | { 72 | "cell_type": "code", 73 | "execution_count": 5, 74 | "metadata": {}, 75 | "outputs": [ 76 | { 77 | "name": "stdout", 78 | "output_type": "stream", 79 | "text": [ 80 | "30\n" 81 | ] 82 | } 83 | ], 84 | "source": [ 85 | "print(5+10+15)" 86 | ] 87 | } 88 | ], 89 | "metadata": { 90 | "anaconda-cloud": {}, 91 | "kernelspec": { 92 | "display_name": "Python 3", 93 | "language": "python", 94 | "name": "python3" 95 | }, 96 | "language_info": { 97 | "codemirror_mode": { 98 | "name": "ipython", 99 | "version": 3 100 | }, 101 | "file_extension": ".py", 102 | "mimetype": "text/x-python", 103 | "name": "python", 104 | "nbconvert_exporter": "python", 105 | "pygments_lexer": "ipython3", 106 | "version": "3.6.1" 107 | } 108 | }, 109 | "nbformat": 4, 110 | "nbformat_minor": 1 111 | } 112 | -------------------------------------------------------------------------------- /10 Stocks.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 Stock:\n", 12 | " def __init__(self,price,dYield,r):\n", 13 | " self.price = price\n", 14 | " self.dYield = dYield\n", 15 | " self.r = r" 16 | ] 17 | }, 18 | { 19 | "cell_type": "code", 20 | "execution_count": 2, 21 | "metadata": { 22 | "collapsed": true 23 | }, 24 | "outputs": [], 25 | "source": [ 26 | "AAPL = Stock(100,.02,.05)" 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 | "100\n", 39 | "0.02\n", 40 | "0.05\n" 41 | ] 42 | } 43 | ], 44 | "source": [ 45 | "print(AAPL.price)\n", 46 | "print(AAPL.dYield)\n", 47 | "print(AAPL.r)" 48 | ] 49 | }, 50 | { 51 | "cell_type": "code", 52 | "execution_count": 5, 53 | "metadata": { 54 | "collapsed": true 55 | }, 56 | "outputs": [], 57 | "source": [ 58 | "class Stock:\n", 59 | " def __init__(self,price,dYield,r):\n", 60 | " self.price = price\n", 61 | " self.dYield = dYield\n", 62 | " self.r = r\n", 63 | " def findDividend(self):\n", 64 | " return self.dYield*self.price" 65 | ] 66 | }, 67 | { 68 | "cell_type": "code", 69 | "execution_count": 6, 70 | "metadata": {}, 71 | "outputs": [ 72 | { 73 | "data": { 74 | "text/plain": [ 75 | "2.0" 76 | ] 77 | }, 78 | "execution_count": 6, 79 | "metadata": {}, 80 | "output_type": "execute_result" 81 | } 82 | ], 83 | "source": [ 84 | "AAPL = Stock(100,.02,.05)\n", 85 | "AAPL.findDividend()" 86 | ] 87 | }, 88 | { 89 | "cell_type": "code", 90 | "execution_count": 7, 91 | "metadata": { 92 | "collapsed": true 93 | }, 94 | "outputs": [], 95 | "source": [ 96 | "class Stock:\n", 97 | " def __init__(self,price,dYield,r):\n", 98 | " self.price = price\n", 99 | " self.dYield = dYield\n", 100 | " self.r = r\n", 101 | " def findDividend(self):\n", 102 | " return self.dYield*self.price\n", 103 | " def findPE(self,EPS):\n", 104 | " self.PE = self.price/EPS\n", 105 | " def findExpectedPrice(self):\n", 106 | " expectedPriceWithout = self.price*(1+self.r)\n", 107 | " self.expectedPrice = expectedPriceWithout-expectedPriceWithout*(self.dYield)" 108 | ] 109 | }, 110 | { 111 | "cell_type": "code", 112 | "execution_count": 8, 113 | "metadata": {}, 114 | "outputs": [ 115 | { 116 | "name": "stdout", 117 | "output_type": "stream", 118 | "text": [ 119 | "5.0\n", 120 | "102.9\n" 121 | ] 122 | } 123 | ], 124 | "source": [ 125 | "AAPL = Stock(100,.02,.05)\n", 126 | "\n", 127 | "AAPL.findPE(20)\n", 128 | "AAPL.findExpectedPrice()\n", 129 | "\n", 130 | "print(AAPL.PE)\n", 131 | "print(AAPL.expectedPrice)" 132 | ] 133 | } 134 | ], 135 | "metadata": { 136 | "anaconda-cloud": {}, 137 | "kernelspec": { 138 | "display_name": "Python 3", 139 | "language": "python", 140 | "name": "python3" 141 | }, 142 | "language_info": { 143 | "codemirror_mode": { 144 | "name": "ipython", 145 | "version": 3 146 | }, 147 | "file_extension": ".py", 148 | "mimetype": "text/x-python", 149 | "name": "python", 150 | "nbconvert_exporter": "python", 151 | "pygments_lexer": "ipython3", 152 | "version": "3.6.1" 153 | } 154 | }, 155 | "nbformat": 4, 156 | "nbformat_minor": 1 157 | } 158 | -------------------------------------------------------------------------------- /11 Dividend Discount Model.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "data": { 10 | "image/png": "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\nsxxbqPkPAAAAAElFTkSuQmCC\n", 11 | "text/plain": [ 12 | "" 13 | ] 14 | }, 15 | "metadata": {}, 16 | "output_type": "display_data" 17 | } 18 | ], 19 | "source": [ 20 | "dividend = 100\n", 21 | "r = .1\n", 22 | "year=0\n", 23 | "years=[]\n", 24 | "values=[]\n", 25 | "for _ in range(101):\n", 26 | " years+=[year]\n", 27 | " values+=[dividend]\n", 28 | " year+=1\n", 29 | " dividend=dividend/(1+r)\n", 30 | "\n", 31 | "import matplotlib.pyplot as plt\n", 32 | "plt.plot(years, values)\n", 33 | "plt.show()" 34 | ] 35 | }, 36 | { 37 | "cell_type": "code", 38 | "execution_count": 2, 39 | "metadata": {}, 40 | "outputs": [ 41 | { 42 | "data": { 43 | "image/png": "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\n", 44 | "text/plain": [ 45 | "" 46 | ] 47 | }, 48 | "metadata": {}, 49 | "output_type": "display_data" 50 | } 51 | ], 52 | "source": [ 53 | "import matplotlib.pyplot as plt\n", 54 | "growth=0\n", 55 | "for _ in range(6):\n", 56 | " dividend = 100\n", 57 | " r = .1\n", 58 | " year=0\n", 59 | " years=[]\n", 60 | " values=[]\n", 61 | " for _ in range(101):\n", 62 | " years+=[year]\n", 63 | " values+=[dividend]\n", 64 | " year+=1\n", 65 | " dividend=dividend*(1+growth)/(1+r)\n", 66 | " growth+=.02\n", 67 | " plt.plot(years, values)\n", 68 | "plt.ylim((0,110))\n", 69 | "plt.xlabel(\"Year\")\n", 70 | "plt.ylabel(\"Dividend Value\")\n", 71 | "plt.legend([\"0%\",\"2%\",\"4%\",\"6%\",\"8%\",\"10%\"],title=\"Growth Rate\")\n", 72 | "\n", 73 | "plt.title(\"Dividend Value at r=10%\")\n", 74 | "plt.show()" 75 | ] 76 | }, 77 | { 78 | "cell_type": "code", 79 | "execution_count": 3, 80 | "metadata": { 81 | "collapsed": true 82 | }, 83 | "outputs": [], 84 | "source": [ 85 | "def DD(div,g,r):\n", 86 | " return div/(r-g)" 87 | ] 88 | }, 89 | { 90 | "cell_type": "code", 91 | "execution_count": 4, 92 | "metadata": {}, 93 | "outputs": [ 94 | { 95 | "name": "stdout", 96 | "output_type": "stream", 97 | "text": [ 98 | "1000.0\n", 99 | "1250.0\n", 100 | "1666.6666666666665\n", 101 | "2499.9999999999995\n", 102 | "4999.999999999999\n" 103 | ] 104 | } 105 | ], 106 | "source": [ 107 | "print(DD(100,0,.1))\n", 108 | "print(DD(100,.02,.1))\n", 109 | "print(DD(100,.04,.1))\n", 110 | "print(DD(100,.06,.1))\n", 111 | "print(DD(100,.08,.1))" 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 | -------------------------------------------------------------------------------- /12 EAA.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 annuityValue(year,payment,r):\n", 12 | " annuity_value = payment*(1-(1+r)**(-year))/r\n", 13 | " return annuity_value" 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 | "16.473833531541146\n", 26 | "11.162401468523967\n" 27 | ] 28 | } 29 | ], 30 | "source": [ 31 | "print(annuityValue(5,50,.05)-200)\n", 32 | "print(annuityValue(3,50,.05)-125)" 33 | ] 34 | }, 35 | { 36 | "cell_type": "code", 37 | "execution_count": 3, 38 | "metadata": { 39 | "collapsed": true 40 | }, 41 | "outputs": [], 42 | "source": [ 43 | "A= annuityValue(5,50,.05)-200\n", 44 | "B= annuityValue(3,50,.05)-125" 45 | ] 46 | }, 47 | { 48 | "cell_type": "code", 49 | "execution_count": 4, 50 | "metadata": { 51 | "collapsed": true 52 | }, 53 | "outputs": [], 54 | "source": [ 55 | "def aFactor(r,t):\n", 56 | " return (1-(1+r)**(-t))/r" 57 | ] 58 | }, 59 | { 60 | "cell_type": "code", 61 | "execution_count": 5, 62 | "metadata": {}, 63 | "outputs": [ 64 | { 65 | "name": "stdout", 66 | "output_type": "stream", 67 | "text": [ 68 | "3.805040374346408\n", 69 | "4.098929421094386\n" 70 | ] 71 | } 72 | ], 73 | "source": [ 74 | "print(A/aFactor(.05,5))\n", 75 | "print(B/aFactor(.05,3))" 76 | ] 77 | } 78 | ], 79 | "metadata": { 80 | "anaconda-cloud": {}, 81 | "kernelspec": { 82 | "display_name": "Python 3", 83 | "language": "python", 84 | "name": "python3" 85 | }, 86 | "language_info": { 87 | "codemirror_mode": { 88 | "name": "ipython", 89 | "version": 3 90 | }, 91 | "file_extension": ".py", 92 | "mimetype": "text/x-python", 93 | "name": "python", 94 | "nbconvert_exporter": "python", 95 | "pygments_lexer": "ipython3", 96 | "version": "3.6.1" 97 | } 98 | }, 99 | "nbformat": 4, 100 | "nbformat_minor": 1 101 | } 102 | -------------------------------------------------------------------------------- /13 IRR.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 TVM(p,r,t,type):\n", 12 | " discount = (1+r)**t\n", 13 | " if type==\"FV\":\n", 14 | " A = p*discount\n", 15 | " return A\n", 16 | " if type==\"PV\":\n", 17 | " A = p/discount\n", 18 | " return A\n", 19 | "\n", 20 | "def totalTVM(rate,payments,years):\n", 21 | " total = 0\n", 22 | " for index in range(0,len(payments)):\n", 23 | " total+= TVM(payments[index],years[index],rate,\"PV\")\n", 24 | " return total" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "execution_count": 2, 30 | "metadata": {}, 31 | "outputs": [ 32 | { 33 | "data": { 34 | "image/png": "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\n", 35 | "text/plain": [ 36 | "" 37 | ] 38 | }, 39 | "metadata": {}, 40 | "output_type": "display_data" 41 | } 42 | ], 43 | "source": [ 44 | "import matplotlib.pyplot as plt\n", 45 | "r=0\n", 46 | "payments=[-300,100,150,50,50]\n", 47 | "years=[0,2,4,6,8]\n", 48 | "rates = []\n", 49 | "values= []\n", 50 | "for _ in range(20):\n", 51 | " \n", 52 | " rates+=[r]\n", 53 | " v=totalTVM(r,payments,years)\n", 54 | " values +=[v]\n", 55 | " r+=.01\n", 56 | "plt.plot(rates,values)\n", 57 | "plt.xlabel(\"IRR\")\n", 58 | "plt.ylabel(\"Present Value\")\n", 59 | "plt.title(\"Finding IRR\")\n", 60 | "plt.show()" 61 | ] 62 | }, 63 | { 64 | "cell_type": "code", 65 | "execution_count": 3, 66 | "metadata": {}, 67 | "outputs": [ 68 | { 69 | "data": { 70 | "text/plain": [ 71 | "0.097026857685357931" 72 | ] 73 | }, 74 | "execution_count": 3, 75 | "metadata": {}, 76 | "output_type": "execute_result" 77 | } 78 | ], 79 | "source": [ 80 | "from scipy.optimize import fsolve\n", 81 | "def findIRR(payments,years):\n", 82 | " return fsolve(totalTVM, 0,(payments,years))[0]\n", 83 | "findIRR(payments,years)" 84 | ] 85 | } 86 | ], 87 | "metadata": { 88 | "anaconda-cloud": {}, 89 | "kernelspec": { 90 | "display_name": "Python 3", 91 | "language": "python", 92 | "name": "python3" 93 | }, 94 | "language_info": { 95 | "codemirror_mode": { 96 | "name": "ipython", 97 | "version": 3 98 | }, 99 | "file_extension": ".py", 100 | "mimetype": "text/x-python", 101 | "name": "python", 102 | "nbconvert_exporter": "python", 103 | "pygments_lexer": "ipython3", 104 | "version": "3.6.1" 105 | } 106 | }, 107 | "nbformat": 4, 108 | "nbformat_minor": 1 109 | } 110 | -------------------------------------------------------------------------------- /14 Risk.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "ret = [.25,.1,-.1,-.25]" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 2, 16 | "metadata": {}, 17 | "outputs": [ 18 | { 19 | "name": "stdout", 20 | "output_type": "stream", 21 | "text": [ 22 | "0.0483333333333\n", 23 | "0.219848432638\n" 24 | ] 25 | } 26 | ], 27 | "source": [ 28 | "print(np.var(ret, ddof=1))\n", 29 | "print(np.std(ret, ddof=1))" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 3, 35 | "metadata": {}, 36 | "outputs": [ 37 | { 38 | "name": "stdout", 39 | "output_type": "stream", 40 | "text": [ 41 | "0.0104166666667\n", 42 | "0.102062072616\n" 43 | ] 44 | } 45 | ], 46 | "source": [ 47 | "ret = [.1,.2,.25,.4,.2,.3] \n", 48 | "\n", 49 | "print( np.var(ret, ddof=1) ) \n", 50 | "print( np.std(ret, ddof=1) )" 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 | -------------------------------------------------------------------------------- /15 Beta.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.00375 0.0075 ]\n", 13 | " [ 0.0075 0.015 ]]\n" 14 | ] 15 | } 16 | ], 17 | "source": [ 18 | "import numpy as np\n", 19 | "index = [.1,.05,-.05,.05,.1]\n", 20 | "A = [.2,.1,-.1,.1,.2]\n", 21 | "B = [.15,0,.05,0,.2]\n", 22 | "C = [.1,.15,.1,.15,.1]\n", 23 | "print(np.cov(index,A))" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": 2, 29 | "metadata": {}, 30 | "outputs": [ 31 | { 32 | "name": "stdout", 33 | "output_type": "stream", 34 | "text": [ 35 | "0.0075\n" 36 | ] 37 | } 38 | ], 39 | "source": [ 40 | "print(np.cov(index,A)[0][1])" 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": 3, 46 | "metadata": { 47 | "collapsed": true 48 | }, 49 | "outputs": [], 50 | "source": [ 51 | "def beta(indx,stock):\n", 52 | " return np.cov(indx,stock)[0][1]/np.var(indx, ddof=1)" 53 | ] 54 | }, 55 | { 56 | "cell_type": "code", 57 | "execution_count": 4, 58 | "metadata": {}, 59 | "outputs": [ 60 | { 61 | "name": "stdout", 62 | "output_type": "stream", 63 | "text": [ 64 | "2.0\n", 65 | "0.833333333333\n", 66 | "2.08166817117e-18\n" 67 | ] 68 | } 69 | ], 70 | "source": [ 71 | "print(beta(index,A))\n", 72 | "print(beta(index,B))\n", 73 | "print(beta(index,C))" 74 | ] 75 | } 76 | ], 77 | "metadata": { 78 | "kernelspec": { 79 | "display_name": "Python 3", 80 | "language": "python", 81 | "name": "python3" 82 | }, 83 | "language_info": { 84 | "codemirror_mode": { 85 | "name": "ipython", 86 | "version": 3 87 | }, 88 | "file_extension": ".py", 89 | "mimetype": "text/x-python", 90 | "name": "python", 91 | "nbconvert_exporter": "python", 92 | "pygments_lexer": "ipython3", 93 | "version": "3.6.1" 94 | } 95 | }, 96 | "nbformat": 4, 97 | "nbformat_minor": 1 98 | } 99 | -------------------------------------------------------------------------------- /16 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 | "\n", 46 | "betas = []\n", 47 | "returns = []\n", 48 | "beta = 0\n", 49 | "rf = .04\n", 50 | "market = .08\n", 51 | "for x in range(31):\n", 52 | " betas+=[beta]\n", 53 | " r = CAPM(rf,market,beta)\n", 54 | " returns +=[r]\n", 55 | " beta+=.1\n", 56 | "plt.plot(betas,returns,\"red\")\n", 57 | "\n", 58 | "\n", 59 | "betas = []\n", 60 | "returns = []\n", 61 | "beta = 0\n", 62 | "rf = .02\n", 63 | "market = .12\n", 64 | "for x in range(31):\n", 65 | " betas+=[beta]\n", 66 | " r = CAPM(rf,market,beta)\n", 67 | " returns +=[r]\n", 68 | " beta+=.1\n", 69 | "plt.plot(betas,returns,\"black\")\n", 70 | "\n", 71 | "plt.show()" 72 | ] 73 | } 74 | ], 75 | "metadata": { 76 | "anaconda-cloud": {}, 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": 1 97 | } 98 | -------------------------------------------------------------------------------- /17 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 | "anaconda-cloud": {}, 27 | "kernelspec": { 28 | "display_name": "Python 3", 29 | "language": "python", 30 | "name": "python3" 31 | }, 32 | "language_info": { 33 | "codemirror_mode": { 34 | "name": "ipython", 35 | "version": 3 36 | }, 37 | "file_extension": ".py", 38 | "mimetype": "text/x-python", 39 | "name": "python", 40 | "nbconvert_exporter": "python", 41 | "pygments_lexer": "ipython3", 42 | "version": "3.6.1" 43 | } 44 | }, 45 | "nbformat": 4, 46 | "nbformat_minor": 1 47 | } 48 | -------------------------------------------------------------------------------- /2 Taxes.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "Meal = 100" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 2, 17 | "metadata": { 18 | "collapsed": true 19 | }, 20 | "outputs": [], 21 | "source": [ 22 | "TaxRate = .15" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": 3, 28 | "metadata": {}, 29 | "outputs": [ 30 | { 31 | "name": "stdout", 32 | "output_type": "stream", 33 | "text": [ 34 | "15.0\n" 35 | ] 36 | } 37 | ], 38 | "source": [ 39 | "Tax = Meal*TaxRate\n", 40 | "print(Tax)" 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": 4, 46 | "metadata": {}, 47 | "outputs": [ 48 | { 49 | "name": "stdout", 50 | "output_type": "stream", 51 | "text": [ 52 | "115.0\n" 53 | ] 54 | } 55 | ], 56 | "source": [ 57 | "Total = Meal+Tax\n", 58 | "print(Total)" 59 | ] 60 | }, 61 | { 62 | "cell_type": "code", 63 | "execution_count": 5, 64 | "metadata": { 65 | "collapsed": true 66 | }, 67 | "outputs": [], 68 | "source": [ 69 | "def Calculator(meal, taxRate):\n", 70 | " tax = meal*taxRate\n", 71 | " print(tax)" 72 | ] 73 | }, 74 | { 75 | "cell_type": "code", 76 | "execution_count": 6, 77 | "metadata": {}, 78 | "outputs": [ 79 | { 80 | "name": "stdout", 81 | "output_type": "stream", 82 | "text": [ 83 | "15.0\n" 84 | ] 85 | } 86 | ], 87 | "source": [ 88 | "Calculator(100,.15)" 89 | ] 90 | }, 91 | { 92 | "cell_type": "code", 93 | "execution_count": 7, 94 | "metadata": {}, 95 | "outputs": [ 96 | { 97 | "name": "stdout", 98 | "output_type": "stream", 99 | "text": [ 100 | "115.0\n" 101 | ] 102 | } 103 | ], 104 | "source": [ 105 | "def Calculator(meal, taxRate):\n", 106 | " tax = meal*taxRate\n", 107 | " print(tax+meal)\n", 108 | "Calculator(100,.15)" 109 | ] 110 | } 111 | ], 112 | "metadata": { 113 | "anaconda-cloud": {}, 114 | "kernelspec": { 115 | "display_name": "Python 3", 116 | "language": "python", 117 | "name": "python3" 118 | }, 119 | "language_info": { 120 | "codemirror_mode": { 121 | "name": "ipython", 122 | "version": 3 123 | }, 124 | "file_extension": ".py", 125 | "mimetype": "text/x-python", 126 | "name": "python", 127 | "nbconvert_exporter": "python", 128 | "pygments_lexer": "ipython3", 129 | "version": "3.6.1" 130 | } 131 | }, 132 | "nbformat": 4, 133 | "nbformat_minor": 1 134 | } 135 | -------------------------------------------------------------------------------- /3 Compound Interest.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 compoundInterest(p,r,t):\n", 12 | " A = p*(1+r)**t\n", 13 | " return A" 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 | "105.0\n" 26 | ] 27 | } 28 | ], 29 | "source": [ 30 | "print( compoundInterest(100,.05,1) )" 31 | ] 32 | } 33 | ], 34 | "metadata": { 35 | "kernelspec": { 36 | "display_name": "Python 3", 37 | "language": "python", 38 | "name": "python3" 39 | }, 40 | "language_info": { 41 | "codemirror_mode": { 42 | "name": "ipython", 43 | "version": 3 44 | }, 45 | "file_extension": ".py", 46 | "mimetype": "text/x-python", 47 | "name": "python", 48 | "nbconvert_exporter": "python", 49 | "pygments_lexer": "ipython3", 50 | "version": "3.6.1" 51 | } 52 | }, 53 | "nbformat": 4, 54 | "nbformat_minor": 2 55 | } 56 | -------------------------------------------------------------------------------- /4 Plotting Compound Interest.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 compoundInterest(p,r,t):\n", 12 | " A = p*(1+r)**t\n", 13 | " return A" 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\n", 26 | "2\n", 27 | "3\n", 28 | "4\n", 29 | "5\n", 30 | "6\n", 31 | "7\n", 32 | "8\n", 33 | "9\n", 34 | "10\n", 35 | "11\n", 36 | "12\n", 37 | "13\n", 38 | "14\n", 39 | "15\n", 40 | "16\n", 41 | "17\n", 42 | "18\n", 43 | "19\n", 44 | "20\n", 45 | "21\n", 46 | "22\n", 47 | "23\n", 48 | "24\n", 49 | "25\n" 50 | ] 51 | } 52 | ], 53 | "source": [ 54 | "for time in range(1,26):\n", 55 | " print(time)" 56 | ] 57 | }, 58 | { 59 | "cell_type": "code", 60 | "execution_count": 3, 61 | "metadata": {}, 62 | "outputs": [ 63 | { 64 | "name": "stdout", 65 | "output_type": "stream", 66 | "text": [ 67 | "105.0\n", 68 | "110.25\n", 69 | "115.76250000000002\n", 70 | "121.55062500000003\n", 71 | "127.62815625000003\n", 72 | "134.00956406250003\n", 73 | "140.71004226562505\n", 74 | "147.7455443789063\n", 75 | "155.13282159785163\n", 76 | "162.8894626777442\n", 77 | "171.0339358116314\n", 78 | "179.585632602213\n", 79 | "188.56491423232367\n", 80 | "197.99315994393987\n", 81 | "207.89281794113688\n", 82 | "218.2874588381937\n", 83 | "229.20183178010342\n", 84 | "240.66192336910856\n", 85 | "252.69501953756404\n", 86 | "265.3297705144422\n", 87 | "278.59625904016434\n", 88 | "292.5260719921726\n", 89 | "307.1523755917812\n", 90 | "322.5099943713703\n", 91 | "338.63549408993885\n" 92 | ] 93 | } 94 | ], 95 | "source": [ 96 | "for time in range(1,26):\n", 97 | " print( compoundInterest(100,.05, time) )" 98 | ] 99 | }, 100 | { 101 | "cell_type": "code", 102 | "execution_count": 4, 103 | "metadata": {}, 104 | "outputs": [ 105 | { 106 | "name": "stdout", 107 | "output_type": "stream", 108 | "text": [ 109 | "[105.0, 110.25, 115.76250000000002, 121.55062500000003, 127.62815625000003, 134.00956406250003, 140.71004226562505, 147.7455443789063, 155.13282159785163, 162.8894626777442, 171.0339358116314, 179.585632602213, 188.56491423232367, 197.99315994393987, 207.89281794113688, 218.2874588381937, 229.20183178010342, 240.66192336910856, 252.69501953756404, 265.3297705144422, 278.59625904016434, 292.5260719921726, 307.1523755917812, 322.5099943713703, 338.63549408993885]\n", 110 | "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]\n" 111 | ] 112 | } 113 | ], 114 | "source": [ 115 | "values = [] \n", 116 | "years = [] \n", 117 | "for time in range(1,26): \n", 118 | " values.append(compoundInterest(100,.05, time)) \n", 119 | " years.append(time) \n", 120 | "print(values) \n", 121 | "print(years)" 122 | ] 123 | }, 124 | { 125 | "cell_type": "code", 126 | "execution_count": 5, 127 | "metadata": {}, 128 | "outputs": [ 129 | { 130 | "name": "stdout", 131 | "output_type": "stream", 132 | "text": [ 133 | "[100, 105.0, 110.25, 115.76250000000002, 121.55062500000003, 127.62815625000003, 134.00956406250003, 140.71004226562505, 147.7455443789063, 155.13282159785163, 162.8894626777442, 171.0339358116314, 179.585632602213, 188.56491423232367, 197.99315994393987, 207.89281794113688, 218.2874588381937, 229.20183178010342, 240.66192336910856, 252.69501953756404, 265.3297705144422, 278.59625904016434, 292.5260719921726, 307.1523755917812, 322.5099943713703, 338.63549408993885]\n", 134 | "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]\n" 135 | ] 136 | } 137 | ], 138 | "source": [ 139 | "values = [100] \n", 140 | "years = [0] \n", 141 | "for time in range(1,26): \n", 142 | " values.append(compoundInterest(100,.05, time)) \n", 143 | " years.append(time) \n", 144 | "print(values) \n", 145 | "print(years)" 146 | ] 147 | }, 148 | { 149 | "cell_type": "code", 150 | "execution_count": 6, 151 | "metadata": {}, 152 | "outputs": [ 153 | { 154 | "name": "stdout", 155 | "output_type": "stream", 156 | "text": [ 157 | "100\n", 158 | "105.0\n" 159 | ] 160 | } 161 | ], 162 | "source": [ 163 | "print(values[0])\n", 164 | "print(values[1])" 165 | ] 166 | }, 167 | { 168 | "cell_type": "code", 169 | "execution_count": 7, 170 | "metadata": {}, 171 | "outputs": [ 172 | { 173 | "data": { 174 | "image/png": "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\n", 175 | "text/plain": [ 176 | "" 177 | ] 178 | }, 179 | "metadata": {}, 180 | "output_type": "display_data" 181 | } 182 | ], 183 | "source": [ 184 | "import matplotlib.pyplot as plt\n", 185 | "plt.plot(years, values)\n", 186 | "plt.show()" 187 | ] 188 | }, 189 | { 190 | "cell_type": "code", 191 | "execution_count": 8, 192 | "metadata": { 193 | "collapsed": true 194 | }, 195 | "outputs": [], 196 | "source": [ 197 | "def createArray(p,r,t):\n", 198 | " values = [p]\n", 199 | " years =[0]\n", 200 | " for time in range(1,t+1):\n", 201 | " values.append(compoundInterest(p,r, time))\n", 202 | " years.append(time)\n", 203 | " return values,years" 204 | ] 205 | }, 206 | { 207 | "cell_type": "code", 208 | "execution_count": 9, 209 | "metadata": {}, 210 | "outputs": [ 211 | { 212 | "data": { 213 | "image/png": "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\n", 214 | "text/plain": [ 215 | "" 216 | ] 217 | }, 218 | "metadata": {}, 219 | "output_type": "display_data" 220 | } 221 | ], 222 | "source": [ 223 | "import matplotlib.pyplot as plt\n", 224 | "values,years = createArray(100,.02,25)\n", 225 | "plt.plot(years, values, \"r\")\n", 226 | "values,years = createArray(100,.07,25)\n", 227 | "plt.plot(years, values, \"g\")\n", 228 | "values,years = createArray(100,.14,25)\n", 229 | "plt.plot(years, values, \"b\")\n", 230 | "plt.show()" 231 | ] 232 | } 233 | ], 234 | "metadata": { 235 | "kernelspec": { 236 | "display_name": "Python 3", 237 | "language": "python", 238 | "name": "python3" 239 | }, 240 | "language_info": { 241 | "codemirror_mode": { 242 | "name": "ipython", 243 | "version": 3 244 | }, 245 | "file_extension": ".py", 246 | "mimetype": "text/x-python", 247 | "name": "python", 248 | "nbconvert_exporter": "python", 249 | "pygments_lexer": "ipython3", 250 | "version": "3.6.1" 251 | } 252 | }, 253 | "nbformat": 4, 254 | "nbformat_minor": 2 255 | } 256 | -------------------------------------------------------------------------------- /5 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 | "def compoundInterest(p,r,t):\n", 12 | " A = p*(1+r)**t\n", 13 | " return A" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 2, 19 | "metadata": { 20 | "collapsed": true 21 | }, 22 | "outputs": [], 23 | "source": [ 24 | "def presentValue(p,r,t):\n", 25 | " A = p/(1+r)**t\n", 26 | " return A" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 3, 32 | "metadata": { 33 | "collapsed": true 34 | }, 35 | "outputs": [], 36 | "source": [ 37 | "principal = 100\n", 38 | "rate = .08\n", 39 | "time = 5" 40 | ] 41 | }, 42 | { 43 | "cell_type": "code", 44 | "execution_count": 4, 45 | "metadata": {}, 46 | "outputs": [ 47 | { 48 | "name": "stdout", 49 | "output_type": "stream", 50 | "text": [ 51 | "1.4693280768000005\n" 52 | ] 53 | } 54 | ], 55 | "source": [ 56 | "discount = (1+rate)**time\n", 57 | "print(discount)" 58 | ] 59 | }, 60 | { 61 | "cell_type": "code", 62 | "execution_count": 3, 63 | "metadata": {}, 64 | "outputs": [ 65 | { 66 | "name": "stdout", 67 | "output_type": "stream", 68 | "text": [ 69 | "146.93280768\n" 70 | ] 71 | } 72 | ], 73 | "source": [ 74 | "future = principal * discount\n", 75 | "print future" 76 | ] 77 | }, 78 | { 79 | "cell_type": "code", 80 | "execution_count": 4, 81 | "metadata": {}, 82 | "outputs": [ 83 | { 84 | "name": "stdout", 85 | "output_type": "stream", 86 | "text": [ 87 | "68.0583197034\n" 88 | ] 89 | } 90 | ], 91 | "source": [ 92 | "present = principal / discount\n", 93 | "print present" 94 | ] 95 | }, 96 | { 97 | "cell_type": "code", 98 | "execution_count": 5, 99 | "metadata": {}, 100 | "outputs": [ 101 | { 102 | "name": "stdout", 103 | "output_type": "stream", 104 | "text": [ 105 | "True\n", 106 | "False\n" 107 | ] 108 | } 109 | ], 110 | "source": [ 111 | "print 5==5\n", 112 | "print 6==5" 113 | ] 114 | }, 115 | { 116 | "cell_type": "code", 117 | "execution_count": 6, 118 | "metadata": { 119 | "collapsed": true 120 | }, 121 | "outputs": [], 122 | "source": [ 123 | "def TVM(p,r,t,type):\n", 124 | " discount = (1+r)**t\n", 125 | " if type==\"FV\":\n", 126 | " A = p*discount\n", 127 | " return A\n", 128 | " if type==\"PV\":\n", 129 | " A = p/discount\n", 130 | " return A" 131 | ] 132 | }, 133 | { 134 | "cell_type": "code", 135 | "execution_count": 7, 136 | "metadata": {}, 137 | "outputs": [ 138 | { 139 | "name": "stdout", 140 | "output_type": "stream", 141 | "text": [ 142 | "68.0583197034\n", 143 | "146.93280768\n" 144 | ] 145 | } 146 | ], 147 | "source": [ 148 | "print TVM(100,.08,5,\"PV\")\n", 149 | "print TVM(100,.08,5,\"FV\")" 150 | ] 151 | } 152 | ], 153 | "metadata": { 154 | "anaconda-cloud": {}, 155 | "kernelspec": { 156 | "display_name": "Python 3", 157 | "language": "python", 158 | "name": "python3" 159 | }, 160 | "language_info": { 161 | "codemirror_mode": { 162 | "name": "ipython", 163 | "version": 3 164 | }, 165 | "file_extension": ".py", 166 | "mimetype": "text/x-python", 167 | "name": "python", 168 | "nbconvert_exporter": "python", 169 | "pygments_lexer": "ipython3", 170 | "version": "3.6.1" 171 | } 172 | }, 173 | "nbformat": 4, 174 | "nbformat_minor": 1 175 | } 176 | -------------------------------------------------------------------------------- /6 Present Value Multiple Cash Flows.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "payments = [100,200,300,400]\n", 12 | "years = [5,10,15,20]\n", 13 | "rates = [.01,.02,.03,.04]" 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 | "100\n", 26 | "5\n", 27 | "0.01\n", 28 | "\n", 29 | "200\n", 30 | "10\n", 31 | "0.02\n", 32 | "\n", 33 | "300\n", 34 | "15\n", 35 | "0.03\n", 36 | "\n", 37 | "400\n", 38 | "20\n", 39 | "0.04\n", 40 | "\n" 41 | ] 42 | } 43 | ], 44 | "source": [ 45 | "for index in range(0,len(payments)):\n", 46 | " print(payments[index])\n", 47 | " print(years[index])\n", 48 | " print(rates[index])\n", 49 | " print(\"\")" 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 3, 55 | "metadata": { 56 | "collapsed": true 57 | }, 58 | "outputs": [], 59 | "source": [ 60 | "def TVM(p,r,t,type):\n", 61 | " discount = (1+r)**t\n", 62 | " if type==\"FV\":\n", 63 | " A = p*discount\n", 64 | " return A\n", 65 | " if type==\"PV\":\n", 66 | " A = p/discount\n", 67 | " return A" 68 | ] 69 | }, 70 | { 71 | "cell_type": "code", 72 | "execution_count": 4, 73 | "metadata": {}, 74 | "outputs": [ 75 | { 76 | "name": "stdout", 77 | "output_type": "stream", 78 | "text": [ 79 | "98.22419709752423\n", 80 | "190.63478193082776\n", 81 | "276.0562951874625\n", 82 | "354.1369311851404\n" 83 | ] 84 | } 85 | ], 86 | "source": [ 87 | "for index in range(0,len(payments)):\n", 88 | " print(TVM(payments[index],years[index],rates[index],\"PV\"))" 89 | ] 90 | }, 91 | { 92 | "cell_type": "code", 93 | "execution_count": 5, 94 | "metadata": {}, 95 | "outputs": [ 96 | { 97 | "name": "stdout", 98 | "output_type": "stream", 99 | "text": [ 100 | "919.0522054009549\n" 101 | ] 102 | } 103 | ], 104 | "source": [ 105 | "total = 0\n", 106 | "for index in range(0,len(payments)):\n", 107 | " total+= TVM(payments[index],years[index],rates[index],\"PV\")\n", 108 | "print(total)" 109 | ] 110 | }, 111 | { 112 | "cell_type": "code", 113 | "execution_count": 6, 114 | "metadata": { 115 | "collapsed": true 116 | }, 117 | "outputs": [], 118 | "source": [ 119 | "def totalTVM(payments,years,rates):\n", 120 | " total = 0\n", 121 | " for index in range(0,len(payments)):\n", 122 | " total+= TVM(payments[index],years[index],rates[index],\"PV\")\n", 123 | " return total" 124 | ] 125 | }, 126 | { 127 | "cell_type": "code", 128 | "execution_count": 7, 129 | "metadata": {}, 130 | "outputs": [ 131 | { 132 | "data": { 133 | "text/plain": [ 134 | "919.0522054009549" 135 | ] 136 | }, 137 | "execution_count": 7, 138 | "metadata": {}, 139 | "output_type": "execute_result" 140 | } 141 | ], 142 | "source": [ 143 | "totalTVM([100,200,300,400],[5,10,15,20],[.01,.02,.03,.04])" 144 | ] 145 | }, 146 | { 147 | "cell_type": "code", 148 | "execution_count": 8, 149 | "metadata": {}, 150 | "outputs": [ 151 | { 152 | "data": { 153 | "text/plain": [ 154 | "919.0522054009549" 155 | ] 156 | }, 157 | "execution_count": 8, 158 | "metadata": {}, 159 | "output_type": "execute_result" 160 | } 161 | ], 162 | "source": [ 163 | "payments = [100,200,300,400]\n", 164 | "years = [5,10,15,20]\n", 165 | "rates = [.01,.02,.03,.04]\n", 166 | "totalTVM(payments,years,rates)" 167 | ] 168 | }, 169 | { 170 | "cell_type": "code", 171 | "execution_count": 9, 172 | "metadata": {}, 173 | "outputs": [ 174 | { 175 | "data": { 176 | "text/plain": [ 177 | "19.052205400954904" 178 | ] 179 | }, 180 | "execution_count": 9, 181 | "metadata": {}, 182 | "output_type": "execute_result" 183 | } 184 | ], 185 | "source": [ 186 | "payments = [-900,100,200,300,400]\n", 187 | "years = [0,5,10,15,20]\n", 188 | "rates = [.01,.01,.02,.03,.04]\n", 189 | "totalTVM(payments,years,rates)" 190 | ] 191 | } 192 | ], 193 | "metadata": { 194 | "anaconda-cloud": {}, 195 | "kernelspec": { 196 | "display_name": "Python 3", 197 | "language": "python", 198 | "name": "python3" 199 | }, 200 | "language_info": { 201 | "codemirror_mode": { 202 | "name": "ipython", 203 | "version": 3 204 | }, 205 | "file_extension": ".py", 206 | "mimetype": "text/x-python", 207 | "name": "python", 208 | "nbconvert_exporter": "python", 209 | "pygments_lexer": "ipython3", 210 | "version": "3.6.1" 211 | } 212 | }, 213 | "nbformat": 4, 214 | "nbformat_minor": 1 215 | } 216 | -------------------------------------------------------------------------------- /7 Perpetetuities.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 TVM(p,r,t,type):\n", 12 | " discount = (1+r)**t\n", 13 | " if type==\"FV\":\n", 14 | " A = p*discount\n", 15 | " return A\n", 16 | " if type==\"PV\":\n", 17 | " A = p/discount\n", 18 | " return A" 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 | "82.03482998751551\n", 31 | "13.803296719774542\n", 32 | "2.5108931858165077e-07\n", 33 | "9.960528462617324e-85\n" 34 | ] 35 | } 36 | ], 37 | "source": [ 38 | "print(TVM(100,.02,10,\"PV\"))\n", 39 | "print(TVM(100,.02,100,\"PV\"))\n", 40 | "print(TVM(100,.02,1000,\"PV\"))\n", 41 | "print(TVM(100,.02,10000,\"PV\"))" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 3, 47 | "metadata": {}, 48 | "outputs": [ 49 | { 50 | "name": "stdout", 51 | "output_type": "stream", 52 | "text": [ 53 | "4999.999987445526\n" 54 | ] 55 | } 56 | ], 57 | "source": [ 58 | "total=0\n", 59 | "for year in range(1,1001):\n", 60 | " total+= TVM(100,.02,year,\"PV\")\n", 61 | "print(total)" 62 | ] 63 | } 64 | ], 65 | "metadata": { 66 | "kernelspec": { 67 | "display_name": "Python 3", 68 | "language": "python", 69 | "name": "python3" 70 | }, 71 | "language_info": { 72 | "codemirror_mode": { 73 | "name": "ipython", 74 | "version": 3 75 | }, 76 | "file_extension": ".py", 77 | "mimetype": "text/x-python", 78 | "name": "python", 79 | "nbconvert_exporter": "python", 80 | "pygments_lexer": "ipython3", 81 | "version": "3.6.1" 82 | } 83 | }, 84 | "nbformat": 4, 85 | "nbformat_minor": 1 86 | } 87 | -------------------------------------------------------------------------------- /8 Annuities.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 TVM(p,r,t,type):\n", 12 | " discount = (1+r)**t\n", 13 | " if type==\"FV\":\n", 14 | " A = p*discount\n", 15 | " return A\n", 16 | " if type==\"PV\":\n", 17 | " A = p/discount\n", 18 | " return A" 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 | "772.1734929184811\n" 31 | ] 32 | } 33 | ], 34 | "source": [ 35 | "payment=100\n", 36 | "rate=.05\n", 37 | "years=10\n", 38 | "\n", 39 | "total=0\n", 40 | "for year in range(1,years+1):\n", 41 | " total+=TVM(payment,rate,year,\"PV\")\n", 42 | "print(total)" 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 | "810.7821675644052\n" 55 | ] 56 | } 57 | ], 58 | "source": [ 59 | "payment=100\n", 60 | "rate=.05\n", 61 | "years=10\n", 62 | "\n", 63 | "total=0\n", 64 | "for year in range(1,years+1):\n", 65 | " total+=TVM(payment,rate,year,\"PV\")\n", 66 | "print(total*(1+rate))" 67 | ] 68 | }, 69 | { 70 | "cell_type": "code", 71 | "execution_count": 4, 72 | "metadata": {}, 73 | "outputs": [ 74 | { 75 | "name": "stdout", 76 | "output_type": "stream", 77 | "text": [ 78 | "810.7821675644052\n" 79 | ] 80 | } 81 | ], 82 | "source": [ 83 | "payment=100\n", 84 | "rate=.05\n", 85 | "years=10\n", 86 | "\n", 87 | "total=0\n", 88 | "for year in range(0,years):\n", 89 | " total+=TVM(payment,rate,year,\"PV\")\n", 90 | "print(total)" 91 | ] 92 | } 93 | ], 94 | "metadata": { 95 | "kernelspec": { 96 | "display_name": "Python 3", 97 | "language": "python", 98 | "name": "python3" 99 | }, 100 | "language_info": { 101 | "codemirror_mode": { 102 | "name": "ipython", 103 | "version": 3 104 | }, 105 | "file_extension": ".py", 106 | "mimetype": "text/x-python", 107 | "name": "python", 108 | "nbconvert_exporter": "python", 109 | "pygments_lexer": "ipython3", 110 | "version": "3.6.1" 111 | } 112 | }, 113 | "nbformat": 4, 114 | "nbformat_minor": 1 115 | } 116 | -------------------------------------------------------------------------------- /9 Bonds.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 bondValue(fv,year,cr,r):\n", 12 | " final_pay = fv/(1+r)**year\n", 13 | " coupon_payment = (fv*cr)\n", 14 | " annuity_value = coupon_payment*(1-(1+r)**(-year))/r\n", 15 | " return annuity_value+final_pay" 16 | ] 17 | }, 18 | { 19 | "cell_type": "code", 20 | "execution_count": 2, 21 | "metadata": {}, 22 | "outputs": [ 23 | { 24 | "name": "stdout", 25 | "output_type": "stream", 26 | "text": [ 27 | "1141.4037852551264\n" 28 | ] 29 | } 30 | ], 31 | "source": [ 32 | "print(bondValue(1000,5,.05,.02))" 33 | ] 34 | }, 35 | { 36 | "cell_type": "code", 37 | "execution_count": 3, 38 | "metadata": {}, 39 | "outputs": [ 40 | { 41 | "data": { 42 | "text/plain": [ 43 | "0.05000000000103398" 44 | ] 45 | }, 46 | "execution_count": 3, 47 | "metadata": {}, 48 | "output_type": "execute_result" 49 | } 50 | ], 51 | "source": [ 52 | "def findCR(pv,fv,year,r): \n", 53 | " final_pay = fv/(1+r)**year\n", 54 | " annuity_factor = (1-(1+r)**(-year))/r\n", 55 | " annuity_value = pv-final_pay\n", 56 | " coupon_payment = annuity_value/annuity_factor\n", 57 | " cr = coupon_payment/fv\n", 58 | " return cr\n", 59 | "\n", 60 | "findCR(1141.40378526,1000,5,.02)" 61 | ] 62 | }, 63 | { 64 | "cell_type": "code", 65 | "execution_count": 4, 66 | "metadata": {}, 67 | "outputs": [], 68 | "source": [ 69 | "def function(r,price,fv,year,cr):\n", 70 | " final_pay = fv/(1+r)**year\n", 71 | " coupon_payment = (fv*cr)\n", 72 | " annuity_value = coupon_payment*(1-(1+r)**(-year))/r\n", 73 | " return annuity_value+final_pay-price" 74 | ] 75 | }, 76 | { 77 | "cell_type": "code", 78 | "execution_count": 5, 79 | "metadata": {}, 80 | "outputs": [ 81 | { 82 | "data": { 83 | "text/plain": [ 84 | "-4.873527359450236e-09" 85 | ] 86 | }, 87 | "execution_count": 5, 88 | "metadata": {}, 89 | "output_type": "execute_result" 90 | } 91 | ], 92 | "source": [ 93 | "function(.02,1141.40378526,1000,5,.05)" 94 | ] 95 | }, 96 | { 97 | "cell_type": "code", 98 | "execution_count": 6, 99 | "metadata": {}, 100 | "outputs": [], 101 | "source": [ 102 | "from scipy.optimize import fsolve\n", 103 | "def findYield(price,fv,year,cr):\n", 104 | " return fsolve(function, cr,(price,fv,year,cr))[0]" 105 | ] 106 | }, 107 | { 108 | "cell_type": "code", 109 | "execution_count": 7, 110 | "metadata": {}, 111 | "outputs": [ 112 | { 113 | "data": { 114 | "text/plain": [ 115 | "0.019999999999048713" 116 | ] 117 | }, 118 | "execution_count": 7, 119 | "metadata": {}, 120 | "output_type": "execute_result" 121 | } 122 | ], 123 | "source": [ 124 | "findYield(1141.40378526,1000,5,.05)" 125 | ] 126 | } 127 | ], 128 | "metadata": { 129 | "kernelspec": { 130 | "display_name": "Python 3", 131 | "language": "python", 132 | "name": "python3" 133 | }, 134 | "language_info": { 135 | "codemirror_mode": { 136 | "name": "ipython", 137 | "version": 3 138 | }, 139 | "file_extension": ".py", 140 | "mimetype": "text/x-python", 141 | "name": "python", 142 | "nbconvert_exporter": "python", 143 | "pygments_lexer": "ipython3", 144 | "version": "3.6.1" 145 | } 146 | }, 147 | "nbformat": 4, 148 | "nbformat_minor": 1 149 | } 150 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # FinanceAndPython.com-BasicFinance 2 | The files in this repository are the source code files for the basic finance course on FinanceAndPython.com. 3 | --------------------------------------------------------------------------------