├── BETA.ipynb ├── Beta_for_PG.ipynb ├── Div_non-div_risk.ipynb ├── Markowitz_algorithm.ipynb ├── Porfolio_returns.ipynb ├── README.md ├── Regression.ipynb ├── Simple_n_log_returns.ipynb ├── Standard_Deviation.ipynb └── var_cov_correlation.ipynb /BETA.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "import numpy as np\n", 11 | "from pandas_datareader import data as wb\n", 12 | "import matplotlib.pyplot as plt\n", 13 | "import fix_yahoo_finance as yf" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 29, 19 | "metadata": {}, 20 | "outputs": [ 21 | { 22 | "name": "stdout", 23 | "output_type": "stream", 24 | "text": [ 25 | "[*********************100%***********************] 1 of 1 downloaded\n", 26 | "[*********************100%***********************] 1 of 1 downloaded\n" 27 | ] 28 | } 29 | ], 30 | "source": [ 31 | "#for beta of microsoft\n", 32 | "tickers = ['MSFT','^GSPC']\n", 33 | "\n", 34 | "data = pd.DataFrame()\n", 35 | "\n", 36 | "for t in tickers :\n", 37 | " data[t] = yf.download(t, start = '2012-01-01', end='2017-01-01')['Adj Close']" 38 | ] 39 | }, 40 | { 41 | "cell_type": "code", 42 | "execution_count": 30, 43 | "metadata": {}, 44 | "outputs": [], 45 | "source": [ 46 | "sec_returns = np.log(data/data.shift(1))" 47 | ] 48 | }, 49 | { 50 | "cell_type": "code", 51 | "execution_count": 32, 52 | "metadata": {}, 53 | "outputs": [ 54 | { 55 | "data": { 56 | "text/html": [ 57 | "
\n", 58 | "\n", 71 | "\n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | "
MSFT^GSPC
MSFT0.0537810.018213
^GSPC0.0182130.016362
\n", 92 | "
" 93 | ], 94 | "text/plain": [ 95 | " MSFT ^GSPC\n", 96 | "MSFT 0.053781 0.018213\n", 97 | "^GSPC 0.018213 0.016362" 98 | ] 99 | }, 100 | "execution_count": 32, 101 | "metadata": {}, 102 | "output_type": "execute_result" 103 | } 104 | ], 105 | "source": [ 106 | "cov = sec_returns.cov() * 250\n", 107 | "cov" 108 | ] 109 | }, 110 | { 111 | "cell_type": "code", 112 | "execution_count": 33, 113 | "metadata": {}, 114 | "outputs": [ 115 | { 116 | "data": { 117 | "text/plain": [ 118 | "0.018212758362452473" 119 | ] 120 | }, 121 | "execution_count": 33, 122 | "metadata": {}, 123 | "output_type": "execute_result" 124 | } 125 | ], 126 | "source": [ 127 | "cov_with_market = cov.iloc[0,1]\n", 128 | "cov_with_market" 129 | ] 130 | }, 131 | { 132 | "cell_type": "code", 133 | "execution_count": 34, 134 | "metadata": {}, 135 | "outputs": [ 136 | { 137 | "data": { 138 | "text/plain": [ 139 | "0.016361631022038074" 140 | ] 141 | }, 142 | "execution_count": 34, 143 | "metadata": {}, 144 | "output_type": "execute_result" 145 | } 146 | ], 147 | "source": [ 148 | "market_var = sec_returns['^GSPC'].var()*250\n", 149 | "market_var" 150 | ] 151 | }, 152 | { 153 | "cell_type": "code", 154 | "execution_count": 35, 155 | "metadata": {}, 156 | "outputs": [ 157 | { 158 | "data": { 159 | "text/plain": [ 160 | "1.1131383135288315" 161 | ] 162 | }, 163 | "execution_count": 35, 164 | "metadata": {}, 165 | "output_type": "execute_result" 166 | } 167 | ], 168 | "source": [ 169 | "msft_beta = cov_with_market / market_var\n", 170 | "msft_beta" 171 | ] 172 | } 173 | ], 174 | "metadata": { 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.4" 191 | } 192 | }, 193 | "nbformat": 4, 194 | "nbformat_minor": 2 195 | } 196 | -------------------------------------------------------------------------------- /Beta_for_PG.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "import numpy as np\n", 11 | "from pandas_datareader import data as wb\n", 12 | "import matplotlib.pyplot as plt\n", 13 | "import fix_yahoo_finance as yf" 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%***********************] 1 of 1 downloaded\n", 26 | "[*********************100%***********************] 1 of 1 downloaded\n" 27 | ] 28 | } 29 | ], 30 | "source": [ 31 | "#for beta of P&G\n", 32 | "tickers = ['PG','^GSPC']\n", 33 | "\n", 34 | "data = pd.DataFrame()\n", 35 | "\n", 36 | "for t in tickers :\n", 37 | " data[t] = yf.download(t, start = '2012-01-01', end='2017-01-01')['Adj Close']" 38 | ] 39 | }, 40 | { 41 | "cell_type": "code", 42 | "execution_count": 3, 43 | "metadata": {}, 44 | "outputs": [], 45 | "source": [ 46 | "sec_returns = np.log(data/data.shift(1))" 47 | ] 48 | }, 49 | { 50 | "cell_type": "code", 51 | "execution_count": 4, 52 | "metadata": {}, 53 | "outputs": [ 54 | { 55 | "data": { 56 | "text/html": [ 57 | "
\n", 58 | "\n", 71 | "\n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | "
PG^GSPC
PG0.0204090.010078
^GSPC0.0100780.016362
\n", 92 | "
" 93 | ], 94 | "text/plain": [ 95 | " PG ^GSPC\n", 96 | "PG 0.020409 0.010078\n", 97 | "^GSPC 0.010078 0.016362" 98 | ] 99 | }, 100 | "execution_count": 4, 101 | "metadata": {}, 102 | "output_type": "execute_result" 103 | } 104 | ], 105 | "source": [ 106 | "cov = sec_returns.cov() * 250\n", 107 | "cov" 108 | ] 109 | }, 110 | { 111 | "cell_type": "code", 112 | "execution_count": 5, 113 | "metadata": {}, 114 | "outputs": [ 115 | { 116 | "data": { 117 | "text/plain": [ 118 | "0.010078082426284392" 119 | ] 120 | }, 121 | "execution_count": 5, 122 | "metadata": {}, 123 | "output_type": "execute_result" 124 | } 125 | ], 126 | "source": [ 127 | "cov_with_market = cov.iloc[0,1]\n", 128 | "cov_with_market" 129 | ] 130 | }, 131 | { 132 | "cell_type": "code", 133 | "execution_count": 6, 134 | "metadata": {}, 135 | "outputs": [ 136 | { 137 | "data": { 138 | "text/plain": [ 139 | "0.016361631022038074" 140 | ] 141 | }, 142 | "execution_count": 6, 143 | "metadata": {}, 144 | "output_type": "execute_result" 145 | } 146 | ], 147 | "source": [ 148 | "market_var = sec_returns['^GSPC'].var()*250\n", 149 | "market_var" 150 | ] 151 | }, 152 | { 153 | "cell_type": "code", 154 | "execution_count": 7, 155 | "metadata": {}, 156 | "outputs": [ 157 | { 158 | "data": { 159 | "text/plain": [ 160 | "0.6159582997996873" 161 | ] 162 | }, 163 | "execution_count": 7, 164 | "metadata": {}, 165 | "output_type": "execute_result" 166 | } 167 | ], 168 | "source": [ 169 | "msft_beta = cov_with_market / market_var\n", 170 | "msft_beta" 171 | ] 172 | } 173 | ], 174 | "metadata": { 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.4" 191 | } 192 | }, 193 | "nbformat": 4, 194 | "nbformat_minor": 2 195 | } 196 | -------------------------------------------------------------------------------- /Div_non-div_risk.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "import numpy as np\n", 11 | "from pandas_datareader import data as wb\n", 12 | "import matplotlib.pyplot as plt" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 2, 18 | "metadata": {}, 19 | "outputs": [], 20 | "source": [ 21 | "tickers = ['PG','MSFT']\n", 22 | "\n", 23 | "sec_data = pd.DataFrame()\n", 24 | "\n", 25 | "for t in tickers :\n", 26 | " sec_data[t] = wb.DataReader(t,'quandl','2007-1-1','2018-3-1')['AdjClose']" 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 | "\n", 39 | "DatetimeIndex: 2809 entries, 2018-03-01 to 2007-01-03\n", 40 | "Data columns (total 2 columns):\n", 41 | "PG 2809 non-null float64\n", 42 | "MSFT 2809 non-null float64\n", 43 | "dtypes: float64(2)\n", 44 | "memory usage: 65.8 KB\n" 45 | ] 46 | } 47 | ], 48 | "source": [ 49 | "sec_data.info()" 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 4, 55 | "metadata": {}, 56 | "outputs": [ 57 | { 58 | "data": { 59 | "text/html": [ 60 | "
\n", 61 | "\n", 74 | "\n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | "
PGMSFT
Date
2007-01-03NaNNaN
2007-01-04-0.007621-0.001676
2007-01-05-0.008624-0.005719
2007-01-080.0022020.009737
2007-01-09-0.0025170.001002
2007-01-100.011901-0.010064
2007-01-110.0062070.034463
2007-01-120.0055540.016476
2007-01-160.000000-0.001603
2007-01-170.010255-0.001927
2007-01-180.002750-0.003221
2007-01-190.0083570.003542
2007-01-22-0.005614-0.012615
2007-01-23-0.0012180.000651
2007-01-24-0.0019820.011321
2007-01-25-0.009047-0.020800
2007-01-26-0.0009250.004914
2007-01-290.000308-0.002290
2007-01-30-0.004480-0.001639
2007-01-310.0043260.012390
2007-02-010.007219-0.009769
2007-02-020.000000-0.012181
2007-02-05-0.002912-0.019399
2007-02-06-0.008633-0.003383
2007-02-07-0.001705-0.004755
2007-02-080.001705-0.003752
2007-02-09-0.002480-0.009615
2007-02-12-0.004199-0.001381
2007-02-130.0085360.005857
2007-02-140.0026240.013354
.........
2018-01-18-0.011247-0.000444
2018-01-190.009821-0.001110
2018-01-220.0089640.017731
2018-01-23-0.0313940.003161
2018-01-24-0.008345-0.000871
2018-01-250.0003400.005539
2018-01-26-0.0069290.018564
2018-01-29-0.009966-0.001490
2018-01-300.001036-0.012643
2018-01-31-0.0070400.024182
2018-02-01-0.005691-0.007925
2018-02-02-0.018813-0.026663
2018-02-05-0.038599-0.030196
2018-02-060.0161530.025281
2018-02-07-0.006577-0.019012
2018-02-08-0.019993-0.054111
2018-02-09-0.0037470.037116
2018-02-120.0174890.011623
2018-02-130.0020880.007823
2018-02-14-0.0101120.010850
2018-02-150.0212160.020167
2018-02-160.002303-0.007148
2018-02-20-0.0153720.007796
2018-02-21-0.013616-0.013355
2018-02-220.0074500.002729
2018-02-230.0025940.024974
2018-02-260.0071310.014355
2018-02-27-0.013443-0.012868
2018-02-28-0.025401-0.004575
2018-03-010.002290-0.009860
\n", 395 | "

2809 rows × 2 columns

\n", 396 | "
" 397 | ], 398 | "text/plain": [ 399 | " PG MSFT\n", 400 | "Date \n", 401 | "2007-01-03 NaN NaN\n", 402 | "2007-01-04 -0.007621 -0.001676\n", 403 | "2007-01-05 -0.008624 -0.005719\n", 404 | "2007-01-08 0.002202 0.009737\n", 405 | "2007-01-09 -0.002517 0.001002\n", 406 | "2007-01-10 0.011901 -0.010064\n", 407 | "2007-01-11 0.006207 0.034463\n", 408 | "2007-01-12 0.005554 0.016476\n", 409 | "2007-01-16 0.000000 -0.001603\n", 410 | "2007-01-17 0.010255 -0.001927\n", 411 | "2007-01-18 0.002750 -0.003221\n", 412 | "2007-01-19 0.008357 0.003542\n", 413 | "2007-01-22 -0.005614 -0.012615\n", 414 | "2007-01-23 -0.001218 0.000651\n", 415 | "2007-01-24 -0.001982 0.011321\n", 416 | "2007-01-25 -0.009047 -0.020800\n", 417 | "2007-01-26 -0.000925 0.004914\n", 418 | "2007-01-29 0.000308 -0.002290\n", 419 | "2007-01-30 -0.004480 -0.001639\n", 420 | "2007-01-31 0.004326 0.012390\n", 421 | "2007-02-01 0.007219 -0.009769\n", 422 | "2007-02-02 0.000000 -0.012181\n", 423 | "2007-02-05 -0.002912 -0.019399\n", 424 | "2007-02-06 -0.008633 -0.003383\n", 425 | "2007-02-07 -0.001705 -0.004755\n", 426 | "2007-02-08 0.001705 -0.003752\n", 427 | "2007-02-09 -0.002480 -0.009615\n", 428 | "2007-02-12 -0.004199 -0.001381\n", 429 | "2007-02-13 0.008536 0.005857\n", 430 | "2007-02-14 0.002624 0.013354\n", 431 | "... ... ...\n", 432 | "2018-01-18 -0.011247 -0.000444\n", 433 | "2018-01-19 0.009821 -0.001110\n", 434 | "2018-01-22 0.008964 0.017731\n", 435 | "2018-01-23 -0.031394 0.003161\n", 436 | "2018-01-24 -0.008345 -0.000871\n", 437 | "2018-01-25 0.000340 0.005539\n", 438 | "2018-01-26 -0.006929 0.018564\n", 439 | "2018-01-29 -0.009966 -0.001490\n", 440 | "2018-01-30 0.001036 -0.012643\n", 441 | "2018-01-31 -0.007040 0.024182\n", 442 | "2018-02-01 -0.005691 -0.007925\n", 443 | "2018-02-02 -0.018813 -0.026663\n", 444 | "2018-02-05 -0.038599 -0.030196\n", 445 | "2018-02-06 0.016153 0.025281\n", 446 | "2018-02-07 -0.006577 -0.019012\n", 447 | "2018-02-08 -0.019993 -0.054111\n", 448 | "2018-02-09 -0.003747 0.037116\n", 449 | "2018-02-12 0.017489 0.011623\n", 450 | "2018-02-13 0.002088 0.007823\n", 451 | "2018-02-14 -0.010112 0.010850\n", 452 | "2018-02-15 0.021216 0.020167\n", 453 | "2018-02-16 0.002303 -0.007148\n", 454 | "2018-02-20 -0.015372 0.007796\n", 455 | "2018-02-21 -0.013616 -0.013355\n", 456 | "2018-02-22 0.007450 0.002729\n", 457 | "2018-02-23 0.002594 0.024974\n", 458 | "2018-02-26 0.007131 0.014355\n", 459 | "2018-02-27 -0.013443 -0.012868\n", 460 | "2018-02-28 -0.025401 -0.004575\n", 461 | "2018-03-01 0.002290 -0.009860\n", 462 | "\n", 463 | "[2809 rows x 2 columns]" 464 | ] 465 | }, 466 | "execution_count": 4, 467 | "metadata": {}, 468 | "output_type": "execute_result" 469 | } 470 | ], 471 | "source": [ 472 | "sec_data = sec_data.iloc[::-1]\n", 473 | "sec_returns = np.log(sec_data / sec_data.shift(1))\n", 474 | "sec_returns" 475 | ] 476 | }, 477 | { 478 | "cell_type": "code", 479 | "execution_count": 5, 480 | "metadata": {}, 481 | "outputs": [], 482 | "source": [ 483 | "weights = np.array([0.5,0.5])" 484 | ] 485 | }, 486 | { 487 | "cell_type": "code", 488 | "execution_count": 12, 489 | "metadata": {}, 490 | "outputs": [], 491 | "source": [ 492 | "PG_var_a = sec_returns['PG'].var() * 250\n", 493 | "MSFT_var_a = sec_returns['MSFT'].var() * 250" 494 | ] 495 | }, 496 | { 497 | "cell_type": "code", 498 | "execution_count": 13, 499 | "metadata": {}, 500 | "outputs": [ 501 | { 502 | "name": "stdout", 503 | "output_type": "stream", 504 | "text": [ 505 | "0.03676485457868782\n", 506 | "3.676 %\n" 507 | ] 508 | } 509 | ], 510 | "source": [ 511 | "pfolio_var = np.dot(weights.T,np.dot(sec_returns.cov() * 250,weights))\n", 512 | "print(pfolio_var)\n", 513 | "print(str(round(pfolio_var * 100,3)) + ' %')" 514 | ] 515 | }, 516 | { 517 | "cell_type": "code", 518 | "execution_count": 9, 519 | "metadata": {}, 520 | "outputs": [ 521 | { 522 | "name": "stdout", 523 | "output_type": "stream", 524 | "text": [ 525 | "1.082 %\n" 526 | ] 527 | } 528 | ], 529 | "source": [ 530 | "#diversifiable risk\n", 531 | "dr = pfolio_var - (weights[0] ** 2 * PG_var_a) - (weights[1] ** 2 * MSFT_var_a)\n", 532 | "print(str(round(dr*100,3)) + ' %')" 533 | ] 534 | }, 535 | { 536 | "cell_type": "code", 537 | "execution_count": 10, 538 | "metadata": {}, 539 | "outputs": [ 540 | { 541 | "name": "stdout", 542 | "output_type": "stream", 543 | "text": [ 544 | "2.595 %\n" 545 | ] 546 | } 547 | ], 548 | "source": [ 549 | "#non-diversifiable risk\n", 550 | "n_dr_1 = pfolio_var - dr\n", 551 | "print(str(round(n_dr_1*100,3)) + ' %')" 552 | ] 553 | }, 554 | { 555 | "cell_type": "code", 556 | "execution_count": 14, 557 | "metadata": {}, 558 | "outputs": [ 559 | { 560 | "name": "stdout", 561 | "output_type": "stream", 562 | "text": [ 563 | "2.595 %\n" 564 | ] 565 | } 566 | ], 567 | "source": [ 568 | "n_dr_2 = (weights[0] ** 2 * PG_var_a) + (weights[1] ** 2 * MSFT_var_a)\n", 569 | "print(str(round(n_dr_2*100,3)) + ' %')" 570 | ] 571 | } 572 | ], 573 | "metadata": { 574 | "kernelspec": { 575 | "display_name": "Python 3", 576 | "language": "python", 577 | "name": "python3" 578 | }, 579 | "language_info": { 580 | "codemirror_mode": { 581 | "name": "ipython", 582 | "version": 3 583 | }, 584 | "file_extension": ".py", 585 | "mimetype": "text/x-python", 586 | "name": "python", 587 | "nbconvert_exporter": "python", 588 | "pygments_lexer": "ipython3", 589 | "version": "3.6.4" 590 | } 591 | }, 592 | "nbformat": 4, 593 | "nbformat_minor": 2 594 | } 595 | -------------------------------------------------------------------------------- /Markowitz_algorithm.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "import numpy as np\n", 11 | "from pandas_datareader import data as wb\n", 12 | "import matplotlib.pyplot as plt\n", 13 | "%matplotlib inline" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 41, 19 | "metadata": {}, 20 | "outputs": [], 21 | "source": [ 22 | "assets = ['MSFT','GOOGL']\n", 23 | "pf_data = pd.DataFrame()" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": 42, 29 | "metadata": {}, 30 | "outputs": [], 31 | "source": [ 32 | "for a in assets :\n", 33 | " pf_data[a] = wb.DataReader(a,'quandl', '2010-1-1', '2018-1-1')['AdjClose']" 34 | ] 35 | }, 36 | { 37 | "cell_type": "code", 38 | "execution_count": 54, 39 | "metadata": {}, 40 | "outputs": [ 41 | { 42 | "data": { 43 | "text/plain": [ 44 | "" 45 | ] 46 | }, 47 | "execution_count": 54, 48 | "metadata": {}, 49 | "output_type": "execute_result" 50 | }, 51 | { 52 | "data": { 53 | "image/png": "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\n", 54 | "text/plain": [ 55 | "" 56 | ] 57 | }, 58 | "metadata": {}, 59 | "output_type": "display_data" 60 | } 61 | ], 62 | "source": [ 63 | "#pf_data = pf_data.iloc[::-1]\n", 64 | "(pf_data / pf_data.iloc[0] * 100).plot(figsize=(10,5))" 65 | ] 66 | }, 67 | { 68 | "cell_type": "code", 69 | "execution_count": 56, 70 | "metadata": {}, 71 | "outputs": [ 72 | { 73 | "data": { 74 | "text/html": [ 75 | "
\n", 76 | "\n", 89 | "\n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | "
MSFTGOOGL
Date
2010-01-04NaNNaN
2010-01-050.000323-0.004413
2010-01-06-0.006156-0.025532
2010-01-07-0.010389-0.023555
2010-01-080.0068070.013243
2010-01-11-0.012802-0.001513
2010-01-12-0.006629-0.017842
2010-01-130.009269-0.005758
2010-01-140.0199000.004690
2010-01-15-0.003235-0.016840
2010-01-190.0077470.013052
2010-01-20-0.016698-0.012346
2010-01-21-0.0189790.004418
2010-01-22-0.035615-0.058216
2010-01-250.012354-0.018367
2010-01-260.0061200.004471
2010-01-270.005746-0.000590
2010-01-28-0.017339-0.014512
2010-01-29-0.034185-0.008167
2010-02-010.0081290.005788
2010-02-020.001758-0.003571
2010-02-030.0059560.018099
2010-02-04-0.027981-0.026307
2010-02-050.0064450.008529
2010-02-08-0.0107640.004095
2010-02-090.0104070.005552
2010-02-10-0.000714-0.003726
2010-02-110.0046340.003651
2010-02-12-0.006780-0.006134
2010-02-160.0195010.015227
.........
2017-11-160.0026480.011569
2017-11-17-0.009662-0.012071
2017-11-200.001576-0.001188
2017-11-210.0143160.015003
2017-11-22-0.0073130.001541
2017-11-240.0018030.004363
2017-11-270.0073000.014555
2017-11-280.011971-0.008168
2017-11-29-0.018310-0.024670
2017-11-300.009910-0.001167
2017-12-010.001069-0.010770
2017-12-04-0.038471-0.012961
2017-12-050.0062700.007610
2017-12-060.0144800.012786
2017-12-07-0.0035090.011409
2017-12-080.0200430.004594
2017-12-110.0126340.002465
2017-12-120.004098-0.003047
2017-12-13-0.0026910.002495
2017-12-14-0.0077630.005766
2017-12-150.0251850.013647
2017-12-18-0.0054260.012137
2017-12-19-0.006388-0.004906
2017-12-20-0.003618-0.005777
2017-12-21-0.000234-0.002528
2017-12-220.000117-0.001860
2017-12-26-0.001287-0.002820
2017-12-270.003623-0.005315
2017-12-280.000117-0.004017
2017-12-29-0.002102-0.002418
\n", 410 | "

2012 rows × 2 columns

\n", 411 | "
" 412 | ], 413 | "text/plain": [ 414 | " MSFT GOOGL\n", 415 | "Date \n", 416 | "2010-01-04 NaN NaN\n", 417 | "2010-01-05 0.000323 -0.004413\n", 418 | "2010-01-06 -0.006156 -0.025532\n", 419 | "2010-01-07 -0.010389 -0.023555\n", 420 | "2010-01-08 0.006807 0.013243\n", 421 | "2010-01-11 -0.012802 -0.001513\n", 422 | "2010-01-12 -0.006629 -0.017842\n", 423 | "2010-01-13 0.009269 -0.005758\n", 424 | "2010-01-14 0.019900 0.004690\n", 425 | "2010-01-15 -0.003235 -0.016840\n", 426 | "2010-01-19 0.007747 0.013052\n", 427 | "2010-01-20 -0.016698 -0.012346\n", 428 | "2010-01-21 -0.018979 0.004418\n", 429 | "2010-01-22 -0.035615 -0.058216\n", 430 | "2010-01-25 0.012354 -0.018367\n", 431 | "2010-01-26 0.006120 0.004471\n", 432 | "2010-01-27 0.005746 -0.000590\n", 433 | "2010-01-28 -0.017339 -0.014512\n", 434 | "2010-01-29 -0.034185 -0.008167\n", 435 | "2010-02-01 0.008129 0.005788\n", 436 | "2010-02-02 0.001758 -0.003571\n", 437 | "2010-02-03 0.005956 0.018099\n", 438 | "2010-02-04 -0.027981 -0.026307\n", 439 | "2010-02-05 0.006445 0.008529\n", 440 | "2010-02-08 -0.010764 0.004095\n", 441 | "2010-02-09 0.010407 0.005552\n", 442 | "2010-02-10 -0.000714 -0.003726\n", 443 | "2010-02-11 0.004634 0.003651\n", 444 | "2010-02-12 -0.006780 -0.006134\n", 445 | "2010-02-16 0.019501 0.015227\n", 446 | "... ... ...\n", 447 | "2017-11-16 0.002648 0.011569\n", 448 | "2017-11-17 -0.009662 -0.012071\n", 449 | "2017-11-20 0.001576 -0.001188\n", 450 | "2017-11-21 0.014316 0.015003\n", 451 | "2017-11-22 -0.007313 0.001541\n", 452 | "2017-11-24 0.001803 0.004363\n", 453 | "2017-11-27 0.007300 0.014555\n", 454 | "2017-11-28 0.011971 -0.008168\n", 455 | "2017-11-29 -0.018310 -0.024670\n", 456 | "2017-11-30 0.009910 -0.001167\n", 457 | "2017-12-01 0.001069 -0.010770\n", 458 | "2017-12-04 -0.038471 -0.012961\n", 459 | "2017-12-05 0.006270 0.007610\n", 460 | "2017-12-06 0.014480 0.012786\n", 461 | "2017-12-07 -0.003509 0.011409\n", 462 | "2017-12-08 0.020043 0.004594\n", 463 | "2017-12-11 0.012634 0.002465\n", 464 | "2017-12-12 0.004098 -0.003047\n", 465 | "2017-12-13 -0.002691 0.002495\n", 466 | "2017-12-14 -0.007763 0.005766\n", 467 | "2017-12-15 0.025185 0.013647\n", 468 | "2017-12-18 -0.005426 0.012137\n", 469 | "2017-12-19 -0.006388 -0.004906\n", 470 | "2017-12-20 -0.003618 -0.005777\n", 471 | "2017-12-21 -0.000234 -0.002528\n", 472 | "2017-12-22 0.000117 -0.001860\n", 473 | "2017-12-26 -0.001287 -0.002820\n", 474 | "2017-12-27 0.003623 -0.005315\n", 475 | "2017-12-28 0.000117 -0.004017\n", 476 | "2017-12-29 -0.002102 -0.002418\n", 477 | "\n", 478 | "[2012 rows x 2 columns]" 479 | ] 480 | }, 481 | "execution_count": 56, 482 | "metadata": {}, 483 | "output_type": "execute_result" 484 | } 485 | ], 486 | "source": [ 487 | "pf_data = pf_data.iloc[::-1]\n", 488 | "log_returns = np.log(pf_data/pf_data.shift(1))\n", 489 | "log_returns" 490 | ] 491 | }, 492 | { 493 | "cell_type": "code", 494 | "execution_count": 59, 495 | "metadata": {}, 496 | "outputs": [ 497 | { 498 | "name": "stdout", 499 | "output_type": "stream", 500 | "text": [ 501 | "MSFT 16.429452\n", 502 | "GOOGL 16.216976\n", 503 | "dtype: float64 %\n" 504 | ] 505 | } 506 | ], 507 | "source": [ 508 | "print(str((((log_returns.mean() + 1)**250) - 1)*100) + ' %')" 509 | ] 510 | }, 511 | { 512 | "cell_type": "code", 513 | "execution_count": 60, 514 | "metadata": {}, 515 | "outputs": [ 516 | { 517 | "data": { 518 | "text/html": [ 519 | "
\n", 520 | "\n", 533 | "\n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | "
MSFTGOOGL
MSFT0.0492350.025028
GOOGL0.0250280.055883
\n", 554 | "
" 555 | ], 556 | "text/plain": [ 557 | " MSFT GOOGL\n", 558 | "MSFT 0.049235 0.025028\n", 559 | "GOOGL 0.025028 0.055883" 560 | ] 561 | }, 562 | "execution_count": 60, 563 | "metadata": {}, 564 | "output_type": "execute_result" 565 | } 566 | ], 567 | "source": [ 568 | "log_returns.cov() *250" 569 | ] 570 | }, 571 | { 572 | "cell_type": "code", 573 | "execution_count": 61, 574 | "metadata": {}, 575 | "outputs": [ 576 | { 577 | "data": { 578 | "text/html": [ 579 | "
\n", 580 | "\n", 593 | "\n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | "
MSFTGOOGL
MSFT1.000000.47714
GOOGL0.477141.00000
\n", 614 | "
" 615 | ], 616 | "text/plain": [ 617 | " MSFT GOOGL\n", 618 | "MSFT 1.00000 0.47714\n", 619 | "GOOGL 0.47714 1.00000" 620 | ] 621 | }, 622 | "execution_count": 61, 623 | "metadata": {}, 624 | "output_type": "execute_result" 625 | } 626 | ], 627 | "source": [ 628 | "log_returns.corr()" 629 | ] 630 | }, 631 | { 632 | "cell_type": "code", 633 | "execution_count": 63, 634 | "metadata": {}, 635 | "outputs": [], 636 | "source": [ 637 | "num_assets = len(assets)\n", 638 | "weights = np.random.random(num_assets)" 639 | ] 640 | }, 641 | { 642 | "cell_type": "code", 643 | "execution_count": 65, 644 | "metadata": {}, 645 | "outputs": [ 646 | { 647 | "data": { 648 | "text/plain": [ 649 | "array([0.51613153, 0.48386847])" 650 | ] 651 | }, 652 | "execution_count": 65, 653 | "metadata": {}, 654 | "output_type": "execute_result" 655 | } 656 | ], 657 | "source": [ 658 | "weights = np.random.random(num_assets)\n", 659 | "weights/=np.sum(weights)\n", 660 | "weights" 661 | ] 662 | }, 663 | { 664 | "cell_type": "code", 665 | "execution_count": 66, 666 | "metadata": {}, 667 | "outputs": [], 668 | "source": [ 669 | "log_annual = ((log_returns.mean() + 1)**250) - 1" 670 | ] 671 | }, 672 | { 673 | "cell_type": "code", 674 | "execution_count": 69, 675 | "metadata": {}, 676 | "outputs": [ 677 | { 678 | "data": { 679 | "text/plain": [ 680 | "0.16326641729894442" 681 | ] 682 | }, 683 | "execution_count": 69, 684 | "metadata": {}, 685 | "output_type": "execute_result" 686 | } 687 | ], 688 | "source": [ 689 | "#Expected portfolio returns\n", 690 | "np.sum(weights * log_annual)" 691 | ] 692 | }, 693 | { 694 | "cell_type": "code", 695 | "execution_count": 71, 696 | "metadata": {}, 697 | "outputs": [ 698 | { 699 | "data": { 700 | "text/plain": [ 701 | "0.03870036449082226" 702 | ] 703 | }, 704 | "execution_count": 71, 705 | "metadata": {}, 706 | "output_type": "execute_result" 707 | } 708 | ], 709 | "source": [ 710 | " #Expected Portfolio Variance\n", 711 | "np.dot(weights.T, np.dot(log_returns.cov() * 250,weights))" 712 | ] 713 | }, 714 | { 715 | "cell_type": "code", 716 | "execution_count": 72, 717 | "metadata": {}, 718 | "outputs": [ 719 | { 720 | "data": { 721 | "text/plain": [ 722 | "0.19672408213236695" 723 | ] 724 | }, 725 | "execution_count": 72, 726 | "metadata": {}, 727 | "output_type": "execute_result" 728 | } 729 | ], 730 | "source": [ 731 | "#Expected Portfolio Volatility\n", 732 | "np.sqrt(np.dot(weights.T,np.dot(log_returns.cov() * 250,weights)))" 733 | ] 734 | }, 735 | { 736 | "cell_type": "code", 737 | "execution_count": 108, 738 | "metadata": {}, 739 | "outputs": [ 740 | { 741 | "name": "stdout", 742 | "output_type": "stream", 743 | "text": [ 744 | "Microsoft : 0.5929498477894943 Google : 0.40705015221050567\n", 745 | "Microsoft : 0.5792341086932384 Google : 0.4207658913067615\n", 746 | "Microsoft : 0.5917284264458144 Google : 0.4082715735541857\n", 747 | "Microsoft : 0.5802529990002616 Google : 0.41974700099973844\n", 748 | "Microsoft : 0.5859028374660776 Google : 0.41409716253392226\n", 749 | "Microsoft : 0.587074495600213 Google : 0.412925504399787\n", 750 | "Microsoft : 0.5876933817896055 Google : 0.4123066182103944\n", 751 | "Microsoft : 0.5846175309161378 Google : 0.4153824690838621\n", 752 | "Microsoft : 0.587420322732071 Google : 0.41257967726792893\n", 753 | "Microsoft : 0.5910965722098238 Google : 0.40890342779017624\n", 754 | "Microsoft : 0.5903560955924934 Google : 0.40964390440750664\n", 755 | "Microsoft : 0.5899639866283974 Google : 0.4100360133716026\n", 756 | "Microsoft : 0.590812623493713 Google : 0.40918737650628706\n", 757 | "Microsoft : 0.5835238426319063 Google : 0.4164761573680937\n", 758 | "Microsoft : 0.5848939674770928 Google : 0.4151060325229074\n", 759 | "Microsoft : 0.5907174870343446 Google : 0.4092825129656555\n", 760 | "Microsoft : 0.5914147244204458 Google : 0.40858527557955404\n", 761 | "Microsoft : 0.5877156189308469 Google : 0.41228438106915305\n", 762 | "Microsoft : 0.5811522262205125 Google : 0.41884777377948745\n", 763 | "Microsoft : 0.5805746009939525 Google : 0.4194253990060474\n" 764 | ] 765 | } 766 | ], 767 | "source": [ 768 | "pfolio_returns = []\n", 769 | "pfolio_volatilities = []\n", 770 | "for x in range(1000):\n", 771 | " weights = np.random.random(num_assets)\n", 772 | " weights /= np.sum(weights)\n", 773 | " pfolio_returns.append(np.sum(weights * log_annual))\n", 774 | " pfolio_volatilities.append(np.sqrt(np.dot(weights.T,np.dot(log_returns.cov() * 250,weights))))\n", 775 | " if pfolio_returns[x]>0.1634 and pfolio_volatilities[x]<0.1966 :\n", 776 | " print('Microsoft : ' + str(weights[0]) + ' Google : ' + str(weights[1]))\n", 777 | " \n", 778 | "pfolio_returns = np.array(pfolio_returns)\n", 779 | "pfolio_volatilities = np.array(pfolio_volatilities)\n", 780 | "#pfolio_returns,pfolio_volatilities" 781 | ] 782 | }, 783 | { 784 | "cell_type": "code", 785 | "execution_count": 78, 786 | "metadata": {}, 787 | "outputs": [], 788 | "source": [ 789 | "portfolio = pd.DataFrame({'Return': pfolio_returns, 'Volatility': pfolio_volatilities})" 790 | ] 791 | }, 792 | { 793 | "cell_type": "code", 794 | "execution_count": 79, 795 | "metadata": {}, 796 | "outputs": [ 797 | { 798 | "data": { 799 | "text/html": [ 800 | "
\n", 801 | "\n", 814 | "\n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | "
ReturnVolatility
00.1639090.205590
10.1631270.198139
20.1629050.202798
30.1639910.208443
40.1641700.215816
\n", 850 | "
" 851 | ], 852 | "text/plain": [ 853 | " Return Volatility\n", 854 | "0 0.163909 0.205590\n", 855 | "1 0.163127 0.198139\n", 856 | "2 0.162905 0.202798\n", 857 | "3 0.163991 0.208443\n", 858 | "4 0.164170 0.215816" 859 | ] 860 | }, 861 | "execution_count": 79, 862 | "metadata": {}, 863 | "output_type": "execute_result" 864 | } 865 | ], 866 | "source": [ 867 | "portfolio.head()" 868 | ] 869 | }, 870 | { 871 | "cell_type": "code", 872 | "execution_count": 80, 873 | "metadata": {}, 874 | "outputs": [ 875 | { 876 | "data": { 877 | "text/html": [ 878 | "
\n", 879 | "\n", 892 | "\n", 893 | " \n", 894 | " \n", 895 | " \n", 896 | " \n", 897 | " \n", 898 | " \n", 899 | " \n", 900 | " \n", 901 | " \n", 902 | " \n", 903 | " \n", 904 | " \n", 905 | " \n", 906 | " \n", 907 | " \n", 908 | " \n", 909 | " \n", 910 | " \n", 911 | " \n", 912 | " \n", 913 | " \n", 914 | " \n", 915 | " \n", 916 | " \n", 917 | " \n", 918 | " \n", 919 | " \n", 920 | " \n", 921 | " \n", 922 | " \n", 923 | " \n", 924 | " \n", 925 | " \n", 926 | " \n", 927 | "
ReturnVolatility
9950.1626440.211787
9960.1634640.196781
9970.1631220.198213
9980.1633860.196470
9990.1632270.197005
\n", 928 | "
" 929 | ], 930 | "text/plain": [ 931 | " Return Volatility\n", 932 | "995 0.162644 0.211787\n", 933 | "996 0.163464 0.196781\n", 934 | "997 0.163122 0.198213\n", 935 | "998 0.163386 0.196470\n", 936 | "999 0.163227 0.197005" 937 | ] 938 | }, 939 | "execution_count": 80, 940 | "metadata": {}, 941 | "output_type": "execute_result" 942 | } 943 | ], 944 | "source": [ 945 | "portfolio.tail()" 946 | ] 947 | }, 948 | { 949 | "cell_type": "code", 950 | "execution_count": 92, 951 | "metadata": {}, 952 | "outputs": [ 953 | { 954 | "data": { 955 | "text/plain": [ 956 | "Text(0,0.5,'Expected Return')" 957 | ] 958 | }, 959 | "execution_count": 92, 960 | "metadata": {}, 961 | "output_type": "execute_result" 962 | }, 963 | { 964 | "data": { 965 | "image/png": "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\n", 966 | "text/plain": [ 967 | "" 968 | ] 969 | }, 970 | "metadata": {}, 971 | "output_type": "display_data" 972 | } 973 | ], 974 | "source": [ 975 | "portfolios.plot(x='Volatility',y='Return',kind='scatter',figsize=(15,8))\n", 976 | "plt.xlabel('Expected Volatality')\n", 977 | "plt.ylabel('Expected Return')" 978 | ] 979 | }, 980 | { 981 | "cell_type": "code", 982 | "execution_count": 94, 983 | "metadata": {}, 984 | "outputs": [ 985 | { 986 | "data": { 987 | "text/plain": [ 988 | "0.19644997010794701" 989 | ] 990 | }, 991 | "execution_count": 94, 992 | "metadata": {}, 993 | "output_type": "execute_result" 994 | } 995 | ], 996 | "source": [ 997 | "min(pfolio_volatilities)" 998 | ] 999 | } 1000 | ], 1001 | "metadata": { 1002 | "kernelspec": { 1003 | "display_name": "Python 3", 1004 | "language": "python", 1005 | "name": "python3" 1006 | }, 1007 | "language_info": { 1008 | "codemirror_mode": { 1009 | "name": "ipython", 1010 | "version": 3 1011 | }, 1012 | "file_extension": ".py", 1013 | "mimetype": "text/x-python", 1014 | "name": "python", 1015 | "nbconvert_exporter": "python", 1016 | "pygments_lexer": "ipython3", 1017 | "version": "3.6.4" 1018 | } 1019 | }, 1020 | "nbformat": 4, 1021 | "nbformat_minor": 2 1022 | } 1023 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Stock-Market-Analysis-With-Python 2 | Performing the Financial Analysis on Historic Stock Market Data such as calculating various risks, returns,etc. 3 | 4 | 1) Simple_n_Log_returns : It predicts the daily and annual returns(simple and logarithmic) based on historic data. 5 | 6 | Note : Simple returns are taken into consideration when we are considering multiple stocks while Logarithmmic return for individual stock consideration. 7 | 8 | 2) Portfolio_returns : Predicting the combined returns of stocks in a portfolio. 9 | 10 | 3) Var_cov_correlation : The variance refers to the spread of the data set—how far apart the numbers are in relation to the mean, for instance. Variance is particularly useful when calculating the probability of future events or performance. 11 | A covariance refers to the measure of how two random variables will change together and is used to calculate the correlation between variables. 12 | Correlation is a statistical measure that indicates the extent to which two or more variables fluctuate together. 13 | 14 | 4) Standard Deviation : Standard deviation is a number used to tell how measurements for a group are spread out from the average (mean), or expected value i.e, what is the percentage that inverstors will be surprised by the result. 15 | 16 | 5) Div_non_Div_risk : It calculates diversifiable risk and non-diversifiable risk i.e, risk that are beyond our control and risk that are organizational and can be controled. 17 | 18 | 6) Regression : The relation between house prices and house area is taken and checked how close is the relation with lots of characteristics to see from. 19 | 20 | 7) Markowitz_Algorithm : The algorithm that determines the best combination of weights in a pportfolio to get the minimum risk and maximum returns. 21 | 22 | 8) BETA and Beta_for_PG : Beta is a variable that tells about how much a stock moves with respect to the market. 23 | If BETA < 1 then stock is defensive , if BETA > 1 then stock is aggressive, if BETA = 0 then there is no relationship. 24 | -------------------------------------------------------------------------------- /Regression.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stderr", 10 | "output_type": "stream", 11 | "text": [ 12 | "C:\\Anaconda3\\lib\\site-packages\\statsmodels\\compat\\pandas.py:56: FutureWarning: The pandas.core.datetools module is deprecated and will be removed in a future version. Please use the pandas.tseries module instead.\n", 13 | " from pandas.core import datetools\n" 14 | ] 15 | } 16 | ], 17 | "source": [ 18 | "import pandas as pd\n", 19 | "import numpy as np\n", 20 | "from pandas_datareader import data as wb\n", 21 | "import matplotlib.pyplot as plt\n", 22 | "from scipy import stats\n", 23 | "import statsmodels.api as sm" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": 5, 29 | "metadata": {}, 30 | "outputs": [], 31 | "source": [ 32 | "data = pd.read_excel(\"F:\\Housing.xlsx\")" 33 | ] 34 | }, 35 | { 36 | "cell_type": "code", 37 | "execution_count": 6, 38 | "metadata": {}, 39 | "outputs": [ 40 | { 41 | "data": { 42 | "text/html": [ 43 | "
\n", 44 | "\n", 57 | "\n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | "
House PriceHouse Size (sq.ft.)StateNumber of RoomsYear of Construction
011160001940IN82002
18600001300IN51992
28184001420IN61987
310000001680IN72000
46400001270IN51995
510100001850IN71998
66000001000IN42015
77000001100LA42014
811000001600LA72017
95700001000NY51997
108600002150NY91997
1110850001900NY92000
1212500002200NY92014
138500001100TX42017
14640000860TX41997
159000001325TX61997
167300001350TX62000
177500001600TX61992
18650000950TX21987
196800001250TX42000
\n", 231 | "
" 232 | ], 233 | "text/plain": [ 234 | " House Price House Size (sq.ft.) State Number of Rooms \\\n", 235 | "0 1116000 1940 IN 8 \n", 236 | "1 860000 1300 IN 5 \n", 237 | "2 818400 1420 IN 6 \n", 238 | "3 1000000 1680 IN 7 \n", 239 | "4 640000 1270 IN 5 \n", 240 | "5 1010000 1850 IN 7 \n", 241 | "6 600000 1000 IN 4 \n", 242 | "7 700000 1100 LA 4 \n", 243 | "8 1100000 1600 LA 7 \n", 244 | "9 570000 1000 NY 5 \n", 245 | "10 860000 2150 NY 9 \n", 246 | "11 1085000 1900 NY 9 \n", 247 | "12 1250000 2200 NY 9 \n", 248 | "13 850000 1100 TX 4 \n", 249 | "14 640000 860 TX 4 \n", 250 | "15 900000 1325 TX 6 \n", 251 | "16 730000 1350 TX 6 \n", 252 | "17 750000 1600 TX 6 \n", 253 | "18 650000 950 TX 2 \n", 254 | "19 680000 1250 TX 4 \n", 255 | "\n", 256 | " Year of Construction \n", 257 | "0 2002 \n", 258 | "1 1992 \n", 259 | "2 1987 \n", 260 | "3 2000 \n", 261 | "4 1995 \n", 262 | "5 1998 \n", 263 | "6 2015 \n", 264 | "7 2014 \n", 265 | "8 2017 \n", 266 | "9 1997 \n", 267 | "10 1997 \n", 268 | "11 2000 \n", 269 | "12 2014 \n", 270 | "13 2017 \n", 271 | "14 1997 \n", 272 | "15 1997 \n", 273 | "16 2000 \n", 274 | "17 1992 \n", 275 | "18 1987 \n", 276 | "19 2000 " 277 | ] 278 | }, 279 | "execution_count": 6, 280 | "metadata": {}, 281 | "output_type": "execute_result" 282 | } 283 | ], 284 | "source": [ 285 | "data" 286 | ] 287 | }, 288 | { 289 | "cell_type": "code", 290 | "execution_count": 7, 291 | "metadata": {}, 292 | "outputs": [ 293 | { 294 | "data": { 295 | "text/html": [ 296 | "
\n", 297 | "\n", 310 | "\n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | "
House PriceHouse Size (sq.ft.)
011160001940
18600001300
28184001420
310000001680
46400001270
510100001850
66000001000
77000001100
811000001600
95700001000
108600002150
1110850001900
1212500002200
138500001100
14640000860
159000001325
167300001350
177500001600
18650000950
196800001250
\n", 421 | "
" 422 | ], 423 | "text/plain": [ 424 | " House Price House Size (sq.ft.)\n", 425 | "0 1116000 1940\n", 426 | "1 860000 1300\n", 427 | "2 818400 1420\n", 428 | "3 1000000 1680\n", 429 | "4 640000 1270\n", 430 | "5 1010000 1850\n", 431 | "6 600000 1000\n", 432 | "7 700000 1100\n", 433 | "8 1100000 1600\n", 434 | "9 570000 1000\n", 435 | "10 860000 2150\n", 436 | "11 1085000 1900\n", 437 | "12 1250000 2200\n", 438 | "13 850000 1100\n", 439 | "14 640000 860\n", 440 | "15 900000 1325\n", 441 | "16 730000 1350\n", 442 | "17 750000 1600\n", 443 | "18 650000 950\n", 444 | "19 680000 1250" 445 | ] 446 | }, 447 | "execution_count": 7, 448 | "metadata": {}, 449 | "output_type": "execute_result" 450 | } 451 | ], 452 | "source": [ 453 | "data[['House Price', 'House Size (sq.ft.)']]" 454 | ] 455 | }, 456 | { 457 | "cell_type": "code", 458 | "execution_count": 9, 459 | "metadata": {}, 460 | "outputs": [], 461 | "source": [ 462 | "x = data['House Size (sq.ft.)']\n", 463 | "y = data['House Price']" 464 | ] 465 | }, 466 | { 467 | "cell_type": "code", 468 | "execution_count": 10, 469 | "metadata": {}, 470 | "outputs": [ 471 | { 472 | "data": { 473 | "text/plain": [ 474 | "0 1940\n", 475 | "1 1300\n", 476 | "2 1420\n", 477 | "3 1680\n", 478 | "4 1270\n", 479 | "5 1850\n", 480 | "6 1000\n", 481 | "7 1100\n", 482 | "8 1600\n", 483 | "9 1000\n", 484 | "10 2150\n", 485 | "11 1900\n", 486 | "12 2200\n", 487 | "13 1100\n", 488 | "14 860\n", 489 | "15 1325\n", 490 | "16 1350\n", 491 | "17 1600\n", 492 | "18 950\n", 493 | "19 1250\n", 494 | "Name: House Size (sq.ft.), dtype: int64" 495 | ] 496 | }, 497 | "execution_count": 10, 498 | "metadata": {}, 499 | "output_type": "execute_result" 500 | } 501 | ], 502 | "source": [ 503 | "x" 504 | ] 505 | }, 506 | { 507 | "cell_type": "code", 508 | "execution_count": 11, 509 | "metadata": {}, 510 | "outputs": [ 511 | { 512 | "data": { 513 | "text/plain": [ 514 | "0 1116000\n", 515 | "1 860000\n", 516 | "2 818400\n", 517 | "3 1000000\n", 518 | "4 640000\n", 519 | "5 1010000\n", 520 | "6 600000\n", 521 | "7 700000\n", 522 | "8 1100000\n", 523 | "9 570000\n", 524 | "10 860000\n", 525 | "11 1085000\n", 526 | "12 1250000\n", 527 | "13 850000\n", 528 | "14 640000\n", 529 | "15 900000\n", 530 | "16 730000\n", 531 | "17 750000\n", 532 | "18 650000\n", 533 | "19 680000\n", 534 | "Name: House Price, dtype: int64" 535 | ] 536 | }, 537 | "execution_count": 11, 538 | "metadata": {}, 539 | "output_type": "execute_result" 540 | } 541 | ], 542 | "source": [ 543 | "y" 544 | ] 545 | }, 546 | { 547 | "cell_type": "code", 548 | "execution_count": 15, 549 | "metadata": {}, 550 | "outputs": [ 551 | { 552 | "data": { 553 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaoAAAEKCAYAAABDkxEYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XuYXFWZ7/HvzwQwIJoADQOdYCLGODioCX0gHsYRUZOASiLiGI9KRB4zesRxxpEh6JmJg57HKI6MjB5GECQgQ0RAyCNgzAAer1w6BAi3mBYQOkHSnHCJEkHwPX/sVaTSVFVfUpdVXb/P89TTtd+99l5r71Tn7bX3qrUVEZiZmeXqRa1ugJmZWS1OVGZmljUnKjMzy5oTlZmZZc2JyszMsuZEZWZmWXOiMjOzrDlRmZlZ1pyozMwsa+Nb3YDc7bPPPjF16tRWN8PMrK2sWbPm0Yjoqse+nKiGMHXqVHp7e1vdDDOztiLpN/Xaly/9mZlZ1pyozMwsa05UZmaWNScqMzPLmhOVmZllzYnKzMyy5kRlZmZZc6IyM7OsOVGZmVnWGpaoJJ0vabOkOyus+7SkkLRPWpaksyT1SbpD0qyysoskbUivRWXxQyWtS9ucJUkpvpek1an8akmThqrDzMzy1cge1QXAvMFBSVOAtwEPloWPBqan12Lg7FR2L2ApcDhwGLC0lHhSmcVl25XqWgJcFxHTgevSctU6zMwsbw1LVBHxE2BLhVVnAv8IRFlsPnBhFG4EJkraH5gLrI6ILRHxGLAamJfWvTQifhkRAVwILCjb1/L0fvmgeKU6zMwsY029RyXpWGBjRNw+aFU38FDZcn+K1Yr3V4gD7BcRDwOkn/sOUYeZmWWsabOnS9od+Cwwp9LqCrEYRbxmE4a7jaTFFJcHOfDAA4fYrZmZNVIze1QHAdOA2yU9AEwGbpX0ZxS9myllZScDm4aIT64QB3ikdEkv/dyc4tX29QIRcU5E9ERET1dXXR6nYmZmo9S0RBUR6yJi34iYGhFTKRLHrIj4LbASOCGNzJsNPJEu260C5kialAZRzAFWpXVbJc1Oo/1OAK5KVa0ESqMDFw2KV6rDzMwy1rBLf5IuAY4E9pHUDyyNiPOqFL8GOAboA54CTgSIiC2SPg/cksqdHhGlARofoxhZOAG4Nr0AlgGXSjqJYmThe2rVYWZmeVMxaM6q6enpCT/h18xsZCStiYieeuzLM1OYmVnWnKjMzCxrTlRmZpY1JyozM8uaE5WZmWXNicrMzLLmRGVmZllzojIzs6w5UZmZWdacqMzMLGtOVGZmljUnKjMzy5oTlZmZZc2JyszMsta0R9GbmdnOu3LtRs5YtZ5Nj2/jgIkTOGXuDBbM7G51sxrKicrMrE1cuXYjp12xjm1/fA6AjY9v47Qr1gGM6WTlS39mZm3ijFXrn09SJdv++BxnrFrfohY1hxOVmVmb2PT4thHFxwonKjOzNnHAxAkjio8VTlRmZm3ilLkzmLDLuB1iE3YZxylzZ7SoRc3RsEQl6XxJmyXdWRY7Q9K9ku6Q9H1JE8vWnSapT9J6SXPL4vNSrE/SkrL4NEk3Sdog6buSdk3x3dJyX1o/dag6zMzawYKZ3XzxuEPonjgBAd0TJ/DF4w4Z0wMpABQRjdmx9FfA74ALI+IvUmwOcH1EPCvpSwARcaqkg4FLgMOAA4D/Al6VdvUr4G1AP3AL8L6IuFvSpcAVEbFC0n8At0fE2ZL+J/DaiPiopIXAuyLivdXqiIgd70wO0tPTE729vfU7MWZmHUDSmojoqce+GtajioifAFsGxX4UEc+mxRuByen9fGBFRDwdEfcDfRQJ5TCgLyLui4hngBXAfEkCjgIuS9svBxaU7Wt5en8Z8JZUvlodZmaWsVbeo/owcG163w08VLauP8WqxfcGHi9LeqX4DvtK659I5avty8zMMtaSRCXps8CzwMWlUIViMYr4aPZVqX2LJfVK6h0YGKhUxMzMmqTpiUrSIuAdwPtj+w2yfmBKWbHJwKYa8UeBiZLGD4rvsK+0/mUUlyCr7esFIuKciOiJiJ6urq7RHKaZmdVJUxOVpHnAqcCxEfFU2aqVwMI0Ym8aMB24mWLwxPQ0wm9XYCGwMiW4G4Dj0/aLgKvK9rUovT+eYvBG1KjDzMwy1rC5/iRdAhwJ7COpH1gKnAbsBqwuxjdwY0R8NCLuSqP47qa4JPjx0mg8SScDq4BxwPkRcVeq4lRghaQvAGuB81L8POAiSX0UPamFALXqMDOzfDVsePpY4eHpZmYj1xbD083MzOrBicrMzLLmRGVmZllzojIzs6z5Cb9mZkPoxMe/58SJysyshk59/HtOnKjMrGnasWdS6/Hvubd9rHCiMrOmaNeeSac+/j0nHkxhZk1Rq2eSs059/HtO3KMys6Zol57J4MuTb351F5ev2bhDku2Ex7/nxD0qM2uKduiZlC5Pbnx8G0FxefLyNRt596HdHff495y4R2VmTXHK3Bk73KOC/Hom1S5P3nDvAD9fclSLWmVOVGbWFKUeSM6j/trl8mSncaIys6ZZMLM7q8Q02AETJ7CxQlLK6fJkJ/I9KjOz5JS5M5iwy7gdYrldnuxE7lGZmSXtcHmyEzlRmZmVyf3yZCfypT8zM8uaE5WZmWXNl/7MrOO04+S4naxhPSpJ50vaLOnOstheklZL2pB+TkpxSTpLUp+kOyTNKttmUSq/QdKisvihktalbc6SpNHWYWado9LsE6ddsY4r125sddOsikZe+rsAmDcotgS4LiKmA9elZYCjgenptRg4G4qkAywFDgcOA5aWEk8qs7hsu3mjqcPM8nTl2o0csex6pi25miOWXV+3RNKuk+N2soYlqoj4CbBlUHg+sDy9Xw4sKItfGIUbgYmS9gfmAqsjYktEPAasBualdS+NiF9GRAAXDtrXSOows8w0stfj2SfaT7MHU+wXEQ8DpJ/7png38FBZuf4UqxXvrxAfTR1mlplG9nraYXJc21Euo/5UIRajiI+mjhcWlBZL6pXUOzAwMMRuzazeGtnr8ewT7afZieqR0uW29HNzivcDU8rKTQY2DRGfXCE+mjpeICLOiYieiOjp6uoa0QGa2c5rZK9nwcxuvnjcIX5sRxtpdqJaCZRG7i0CriqLn5BG5s0GnkiX7VYBcyRNSoMo5gCr0rqtkman0X4nDNrXSOows8w0utezYGY3P19yFPcvezs/X3KUk1TmGvY9KkmXAEcC+0jqpxi9twy4VNJJwIPAe1Lxa4BjgD7gKeBEgIjYIunzwC2p3OkRURqg8TGKkYUTgGvTi5HWYWb58Zx7Vk7FoDmrpqenJ3p7e1vdDDOztiJpTUT01GNfuQymMDMzq8iJyszMsuZEZWZmWRtWopL0l5JOTO+7JE1rbLPMzMwKQyYqSUuBU4HTUmgX4DuNbJSZmVnJcHpU7wKOBX4PEBGbgD0b2SgzM7OS4XyP6pmICEkBIGmPBrfJzOrEz12ysWA4iepSSd+kmG38I8CHgXMb2ywz21mlGchLk7uWZiAHnKysrQx56S8ivgJcBlwOzAD+OSL+vdENM7Od4+cu2VgxZI8qjfD7aUSsTssTJE2NiAca3TgzGz0/d8nGiuEMpvge8Key5edSzMwy5ucu2VgxnEQ1PiKeKS2k97s2rklmVg9+7pKNFcMZTDEg6diIWAkgaT7waGObZWajMXiU37sP7eaGewc86q/NeLTmjoaTqD4KXCzp6xRPyX2I4vlPZpaRSqP8Ll+z0Q8FbDMerflCQyaqiPg1MFvSSygeC7K18c0yG1ua8RdyrVF+nfofXDvyv+MLVU1Ukj4QEd+R9KlBcQAi4qsNbpvZmNCsv5A9ym9s8L/jC9UaTFGagWLPKi8zG4ZmfZ/Jo/zGBv87vlDVHlVEfFPSOODJiDiziW0yG1Oa9RfyKXNn7NBzA4/ya0f+d3yhmveoIuI5SccCTlRmo3TAxAlsrJCU6v0Xcuky4s7cC/Nos9arx7/jWKOIqF1A+t/Ay4DvkmZQB4iIWxvbtDz09PREb29vq5thbWzwPSoo/kLObTReu7TT2oOkNRHRU499DecLv/8deA1wOvCv6fWVnalU0t9LukvSnZIukfRiSdMk3SRpg6TvSto1ld0tLfel9VPL9nNaiq+XNLcsPi/F+iQtKYtXrMOskRbM7OaLxx1C98QJCOieOCHL//w9N6DlajjD099czwoldQN/CxwcEdskXQosBI4BzoyIFZL+AzgJODv9fCwiXilpIfAl4L2SDk7bvQY4APgvSa9K1XwDeBvQD9wiaWVE3J22rVSHWUMtmNmdXWIazKPNLFdVe1SSDpd0u6TfSfqlpD+vY73jgQmSxgO7Aw8DR1HM0g6wHFiQ3s9Py6T1b1ExRn4+sCIino6I+4E+4LD06ouI+9J0TyuA+WmbanWYdTyPNrNc1br09w3g08DewFeBf6tHhRGxkeLS4YMUCeoJYA3weEQ8m4r1A6U/P7spZsMgrX8iten5+KBtqsX3rlGHWcfz3ICWq1qJ6kURsTr1WL4HdNWjQkmTKHpD0ygu2e0BHF2haGmUh6qsq1e8UhsXS+qV1DswMFCpiNmY0y730qzz1LpHNVHScdWWI+KKUdb5VuD+iBgAkHQFxYCNiZLGpx7PZGBTKt8PTAH606XClwFbyuIl5dtUij9ao44dRMQ5wDlQjPob5XGatZ12uJdmnadWj+r/Au8se5Uvv2Mn6nyQYu7A3dN9o7cAdwM3AMenMouAq9L7lWmZtP76KMbUrwQWplGB04DpwM3ALcD0NMJvV4oBFyvTNtXqMDOzTNWameLERlQYETdJugy4FXgWWEvRe7kaWCHpCyl2XtrkPOAiSX0UPamFaT93pRGDd6f9fDwingOQdDKwChgHnB8Rd6V9nVqlDjMzy9SQX/jtdP7Cr1n9eOaLzlHPL/wO53lUZmY7zc9ZstEazswUZmY7zTNf2GgN2aOStDvwD8CBEfERSdOBGRHxg4a3zszqptWX3TzzhY3WcHpU3waeBt6QlvuBLzSsRWZWd6XLbhsf30aw/bLblWs3Nq0NnvnCRms4ieqgiPgy8EeAiNhG5S/Pmlmmcrjs5pkvbLSGM5jiGUkTSLM4SDqIoodlZm0ih8tufs6SjdZwEtVS4IfAFEkXA0cAH2pko8zGmlbfH2rWwxuH4pkvbDSGvPQXEauB4yiS0yVAT0T8uLHNMhs7crg/5Mtu1s6GTFSSjgD+EBFXAxOBz0h6ecNbZjZG5HB/yBPOWjsbzqW/s4HXSXodcApwPnAh8KZGNsxsrGjE/aHRXEr0ZTdrV8MZ9fdsmtB1PnBWRHwN2LOxzTIbO+o9LDuHS4lmzTScRLVV0mnAB4CrJY0Ddmlss8zGjnrfH8rhUqJZMw0nUb2XYjj6SRHxW4qn4p7R0FaZjSH1vj+Uw1Bzs2Ya8h5VSk5fLVt+kOIelZkNUz3vD+Uy1NysWYYz6m+rpCfT6w+SnpP0RDMaZ9YKV67dyBHLrmfakqs5Ytn12d378VBz6zTD6VHtMHBC0gLgsIa1yKzORjJCrh0eRVE+w8PGx7cxTtrhHlUu7TSrlxE/5iMirgSOakBbzOpupCPk2mWgwoKZ3c/3rJ5LDz/16D8bq4bzmI/jyhZfBPSQ5v0zy12txFOp59FOAxVGemxm7Wo4X/h9Z9n7Z4EHKL5TZZa9kSaedhqo0E5J1WxnDOce1YnNaIhZI4w08Zwyd8YO96gg34EK7ZRUzXbGcEb9TZb0fUmbJT0i6XJJk3emUkkTJV0m6V5J90h6g6S9JK2WtCH9nJTKStJZkvok3SFpVtl+FqXyGyQtKosfKmld2uYsSUrxinXY2DXSEXLtNCeeR/9Zp1BE7dtNklYD/wlclEIfAN4fEW8bdaXScuCnEfEtSbsCuwOfAbZExDJJS4BJEXGqpGOATwDHAIcDX4uIwyXtBfSy/Z7ZGuDQiHhM0s3AJ4EbgWsopn66VtKXK9VRq609PT3R29s72kO1DNTzERutflxH7u0xK5G0JiJ66rKvYSSq2yLi9UPFhl2h9FLgduAVUVa5pPXAkRHxsKT9gR9HxAxJ30zvLykvV3pFxN+k+DeBH6fXDRHx6hR/X6lctTpqtdeJykoGD12HogeTa4/LrJXqmaiGMzz9UUkfkDQuvT4A/L+dqPMVwADwbUlrJX1L0h7AfhHxMED6uW8q3w08VLZ9f4rVivdXiFOjDrMhtcvQdbOxZjiJ6sPAXwO/BR4Gjk+x0RoPzALOjoiZwO+BJTXKq0IsRhEfNkmLJfVK6h0YGBjJpjaGeZSdWWsM5wm/D0bEsRHRFRH7RsSCiPjNTtTZD/RHxE1p+TKKxPVIuhxH+rm5rPyUsu0nA5uGiE+uEKdGHTuIiHMioicierq6ukZ1kDb21PtxHWY2PFUTlaR/TyPmKr5GW2Ga5PYhSaV7Q28B7gZWAqWRe4uAq9L7lcAJafTfbOCJdNluFTBH0qQ0em8OsCqt2yppdhrtd8KgfVWqw2xIb3515T9aqsXNrD5qfY+qfATBvwBL61jvJ4CL04i/+4ATKZLmpZJOAh4E3pPKXkMx4q8PeCqVJSK2SPo8cEsqd3pEbEnvPwZcAEwArk0vgGVV6jAb0g33Vr4MXC1uZvUx5Kg/AElr0/2kjuNRf1YybcnVFW92Crh/2dub3RyzrDV71B94bj8z36Mya5ERz55u1qk8E4RZa1S9RyVpK9t7UrtLerK0CoiIeGmjG2eWk/LnQHkmCLPmqZqoBj8w0czq+0h5MxseX/ozM7OsOVGZmVnWnKjMzCxrTlRmZpY1JyozM8uaE5WZmWXNicrMzLLmRGVmZllzojIzs6w5UZmZWdacqMzMLGtOVGZmljUnKjMzy5oTlZmZZc2JyszMsuZEZWZmWWtZopI0TtJaST9Iy9Mk3SRpg6TvSto1xXdLy31p/dSyfZyW4uslzS2Lz0uxPklLyuIV6zAzs3y1skf1SeCesuUvAWdGxHTgMeCkFD8JeCwiXgmcmcoh6WBgIfAaYB7wf1LyGwd8AzgaOBh4Xypbqw4zM8tUSxKVpMnA24FvpWUBRwGXpSLLgQXp/fy0TFr/llR+PrAiIp6OiPuBPuCw9OqLiPsi4hlgBTB/iDrMzCxTrepR/Rvwj8Cf0vLewOMR8Wxa7ge60/tu4CGAtP6JVP75+KBtqsVr1WFmZplqeqKS9A5gc0SsKQ9XKBpDrKtXvFIbF0vqldQ7MDBQqYiZmTVJK3pURwDHSnqA4rLcURQ9rImSxqcyk4FN6X0/MAUgrX8ZsKU8PmibavFHa9Sxg4g4JyJ6IqKnq6tr9EdqZmY7remJKiJOi4jJETGVYjDE9RHxfuAG4PhUbBFwVXq/Mi2T1l8fEZHiC9OowGnAdOBm4BZgehrht2uqY2XaplodZmaWqZy+R3Uq8ClJfRT3k85L8fOAvVP8U8ASgIi4C7gUuBv4IfDxiHgu3YM6GVhFMarw0lS2Vh1mZpYpFR0Nq6anpyd6e3tb3Qwzs7YiaU1E9NRjXzn1qMzMzF7AicrMzLLmRGVmZllzojIzs6w5UZmZWdacqMzMLGtOVGZmljUnKjMzy5oTlZmZZc2JyszMsuZEZWZmWXOiMjOzrDlRmZlZ1pyozMwsa05UZmaWNScqMzPLmhOVmZllzYnKzMyy5kRlZmZZc6IyM7OsNT1RSZoi6QZJ90i6S9InU3wvSaslbUg/J6W4JJ0lqU/SHZJmle1rUSq/QdKisvihktalbc6SpFp1mJlZvlrRo3oW+IeI+HNgNvBxSQcDS4DrImI6cF1aBjgamJ5ei4GzoUg6wFLgcOAwYGlZ4jk7lS1tNy/Fq9VhZmaZanqiioiHI+LW9H4rcA/QDcwHlqdiy4EF6f184MIo3AhMlLQ/MBdYHRFbIuIxYDUwL617aUT8MiICuHDQvirVYWZmmWrpPSpJU4GZwE3AfhHxMBTJDNg3FesGHirbrD/FasX7K8SpUYeZmWWqZYlK0kuAy4G/i4gnaxWtEItRxEfStsWSeiX1DgwMjGRTMzOrs5YkKkm7UCSpiyPiihR+JF22I/3cnOL9wJSyzScDm4aIT64Qr1XHDiLinIjoiYierq6u0R2kmZnVRStG/Qk4D7gnIr5atmolUBq5twi4qix+Qhr9Nxt4Il22WwXMkTQpDaKYA6xK67ZKmp3qOmHQvirVYWZmmRrfgjqPAD4IrJN0W4p9BlgGXCrpJOBB4D1p3TXAMUAf8BRwIkBEbJH0eeCWVO70iNiS3n8MuACYAFybXtSow8zMMqViYJxV09PTE729va1uhplZW5G0JiJ66rEvz0xhZmZZc6IyM7OsOVGZmVnWnKjMzCxrTlRmZpY1JyozM8uaE5WZmWXNicrMzLLmRGVmZllzojIzs6w5UZmZWdacqMzMLGtOVGZmljUnKjMzy5oTlZmZZc2JyszMsuZEZWZmWXOiMjOzrDlRmZlZ1pyozMwsax2ZqCTNk7ReUp+kJa1uj5mZVddxiUrSOOAbwNHAwcD7JB3c2laZmVk1HZeogMOAvoi4LyKeAVYA81vcJjMzq6ITE1U38FDZcn+KmZlZhsa3ugEtoAqx2KGAtBhYnBaflnRnw1vVHvYBHm11IzLhc7Gdz8V2PhfbzajXjjoxUfUDU8qWJwObygtExDnAOQCSeiOip3nNy5fPxXY+F9v5XGznc7GdpN567asTL/3dAkyXNE3SrsBCYGWL22RmZlV0XI8qIp6VdDKwChgHnB8Rd7W4WWZmVkXHJSqAiLgGuGaYxc9pZFvajM/Fdj4X2/lcbOdzsV3dzoUiYuhSZmZmLdKJ96jMzKyNOFHV0IlTLUl6QNI6SbeVRu1I2kvSakkb0s9JKS5JZ6Xzc4ekWa1t/c6RdL6kzeVfRxjNsUtalMpvkLSoFceys6qci89J2pg+G7dJOqZs3WnpXKyXNLcs3ta/Q5KmSLpB0j2S7pL0yRTvuM9FjXPR+M9FRPhV4UUx0OLXwCuAXYHbgYNb3a4mHPcDwD6DYl8GlqT3S4AvpffHANdSfDdtNnBTq9u/k8f+V8As4M7RHjuwF3Bf+jkpvZ/U6mOr07n4HPDpCmUPTr8fuwHT0u/NuLHwOwTsD8xK7/cEfpWOt+M+FzXORcM/F+5RVeeplrabDyxP75cDC8riF0bhRmCipP1b0cB6iIifAFsGhUd67HOB1RGxJSIeA1YD8xrf+vqqci6qmQ+siIinI+J+oI/i96ftf4ci4uGIuDW93wrcQzGTTcd9Lmqci2rq9rlwoqquU6daCuBHktakGToA9ouIh6H4sAL7pngnnKORHvtYPycnp0ta55cud9Eh50LSVGAmcBMd/rkYdC6gwZ8LJ6rqhpxqaYw6IiJmUcwu/3FJf1WjbKeeI6h+7GP5nJwNHAS8HngY+NcUH/PnQtJLgMuBv4uIJ2sVrRAb6+ei4Z8LJ6rqhpxqaSyKiE3p52bg+xTd9EdKl/TSz82peCeco5Ee+5g9JxHxSEQ8FxF/As6l+GzAGD8Xknah+I/54oi4IoU78nNR6Vw043PhRFVdx021JGkPSXuW3gNzgDspjrs0SmkRcFV6vxI4IY10mg08UbocMoaM9NhXAXMkTUqXQOakWNsbdP/xXRSfDSjOxUJJu0maBkwHbmYM/A5JEnAecE9EfLVsVcd9Lqqdi6Z8Llo9kiTnF8UInl9RjFD5bKvb04TjfQXFCJzbgbtKxwzsDVwHbEg/90pxUTyE8tfAOqCn1cewk8d/CcWliz9S/NV30miOHfgwxY3jPuDEVh9XHc/FRelY70j/sexfVv6z6VysB44ui7f17xDwlxSXpe4AbkuvYzrxc1HjXDT8c+GZKczMLGu+9GdmZllzojIzs6w5UZmZWdacqMzMLGtOVGZmljUnKutokn43aPlDkr7egnbMlnRTmn36HkmfS/FjRzvruKSZkr61s/sZZd1npBm2z5C0QNLBZeu+IumoZrXF2p+Hp1tHk/S7iHhJ2fKHKL77cnKT27Ee+OuIuF3SOGBGRNy9k/v8HvCFiLi9Lo0cWd1PAl0R8bSkC4AfRMRlad3LgXMjYk6z22XtyT0qsyokvVzSdWmyzeskHZjiF0g6vqzc79LP/SX9JPWK7pT0xhSfI+mXkm6V9L00V9pg+1J8wZYopqO5O237fA+v7Hk/t0naJulNaTaR8yXdImmtpPmp7J7Aa0tJatB+LlDxzKRfSLqv/FjKjmkPSVdLuj0dy3tTfJ6keyX9LO3jBxW2XQnsAdwkaSlwLHBGavdBEfEbYG9JfzaafxfrPE5U1ukmlCcA4PSydV+neGTDa4GLgbOG2Nf/AFZFxOuB1wG3SdoH+F/AW6OY7LcX+FSFbc8E1kv6vqS/kfTiwQUi4vVp3/+U9vMLim/+Xx8R/w14M0VC2APoYftUNpXsTzHTwDuAZRXWzwM2RcTrIuIvgB+mNp0LvBN4I1Ax0UTEscC21N5/oZit4JS0/OtU7FbgiBrtM3ueE5V1utJ/qKUk8M9l694A/Gd6fxHFf+y13AKcmO4vHRLFM3tmUzxA7ucpES4CXj54w4g4nSK5/Igi4f2wUgWSpgNnAO+NiD9SzBm3JO37x8CLgQMpEtFAjbZeGRF/Sj23/SqsXwe8VdKXJL0xIp4AXg3cHxEborhn8J2aZ6O2zcABO7G9dZDxrW6AWRsp3dB9lvRHXpqoc1coHjao4rEobwcuknQG8BjFA/PeN+TOi97G2ZLOBQYk7V2+PvWULgU+EmmWe4q55d4dEesHlX01RdKq5uny4hXa8itJh1LMyfZFST+i6BnV66b2i4FtddqXjXHuUZlV9wuKmZ0B3g/8LL1/ADg0vZ8P7ALPDxLYHBHnUswyPQu4EThC0itTmd0lvWpwRZLenpIeFLNMPwc8PqjYt4FvR8RPy2KrgE+UtpU0M8XvAV450gMua88BwFMR8R3gK+lY7gWmSTooFRsy+SZbKR5dXu5V1L40afY8Jyqz6v6W4lLeHcAHgU+m+LnAmyTdDBwO/D7Fj6S4L7UWeDfwtYgYAD4EXJL2cyPFJbTBPkhxj+o2isuM74+I50orUxI8Hvhw2T21HuDzFInyDkl3pmUi4l4x6cTCAAAAmklEQVTgZWlQxWgcAtyc2vNZitGDfwAWA1dL+hnwm7L29ZSGwlewAjglDfY4SMUzjV5JcZ/NbEgenm42Rkn6e2BrRFRLIDu7/yOBT0fEO0a43buAWRHxT41ol4097lGZjV1ns+O9qFyMZ/vjys2G5B6VmZllzT0qMzPLmhOVmZllzYnKzMyy5kRlZmZZc6IyM7OsOVGZmVnW/j8Vhi0w5bCCcAAAAABJRU5ErkJggg==\n", 554 | "text/plain": [ 555 | "" 556 | ] 557 | }, 558 | "metadata": {}, 559 | "output_type": "display_data" 560 | } 561 | ], 562 | "source": [ 563 | "plt.scatter(x,y)\n", 564 | "plt.axis([0, 2500, 0, 1500000])\n", 565 | "plt.ylabel('House Price')\n", 566 | "plt.xlabel('House Size(in sq.ft)')\n", 567 | "plt.show()" 568 | ] 569 | }, 570 | { 571 | "cell_type": "code", 572 | "execution_count": 16, 573 | "metadata": {}, 574 | "outputs": [], 575 | "source": [ 576 | "x1 = sm.add_constant(x)\n", 577 | "reg = sm.OLS(y,x1).fit()" 578 | ] 579 | }, 580 | { 581 | "cell_type": "code", 582 | "execution_count": 17, 583 | "metadata": {}, 584 | "outputs": [ 585 | { 586 | "data": { 587 | "text/html": [ 588 | "\n", 589 | "\n", 590 | "\n", 591 | " \n", 592 | "\n", 593 | "\n", 594 | " \n", 595 | "\n", 596 | "\n", 597 | " \n", 598 | "\n", 599 | "\n", 600 | " \n", 601 | "\n", 602 | "\n", 603 | " \n", 604 | "\n", 605 | "\n", 606 | " \n", 607 | "\n", 608 | "\n", 609 | " \n", 610 | "\n", 611 | "\n", 612 | " \n", 613 | "\n", 614 | "\n", 615 | " \n", 616 | "\n", 617 | "
OLS Regression Results
Dep. Variable: House Price R-squared: 0.678
Model: OLS Adj. R-squared: 0.660
Method: Least Squares F-statistic: 37.95
Date: Tue, 03 Apr 2018 Prob (F-statistic): 8.13e-06
Time: 23:27:41 Log-Likelihood: -260.43
No. Observations: 20 AIC: 524.9
Df Residuals: 18 BIC: 526.8
Df Model: 1
Covariance Type: nonrobust
\n", 618 | "\n", 619 | "\n", 620 | " \n", 621 | "\n", 622 | "\n", 623 | " \n", 624 | "\n", 625 | "\n", 626 | " \n", 627 | "\n", 628 | "
coef std err t P>|t| [0.025 0.975]
const 2.608e+05 9.76e+04 2.673 0.016 5.58e+04 4.66e+05
House Size (sq.ft.) 401.9163 65.243 6.160 0.000 264.846 538.987
\n", 629 | "\n", 630 | "\n", 631 | " \n", 632 | "\n", 633 | "\n", 634 | " \n", 635 | "\n", 636 | "\n", 637 | " \n", 638 | "\n", 639 | "\n", 640 | " \n", 641 | "\n", 642 | "
Omnibus: 1.238 Durbin-Watson: 1.810
Prob(Omnibus): 0.538 Jarque-Bera (JB): 0.715
Skew: -0.459 Prob(JB): 0.699
Kurtosis: 2.884 Cond. No. 5.66e+03
" 643 | ], 644 | "text/plain": [ 645 | "\n", 646 | "\"\"\"\n", 647 | " OLS Regression Results \n", 648 | "==============================================================================\n", 649 | "Dep. Variable: House Price R-squared: 0.678\n", 650 | "Model: OLS Adj. R-squared: 0.660\n", 651 | "Method: Least Squares F-statistic: 37.95\n", 652 | "Date: Tue, 03 Apr 2018 Prob (F-statistic): 8.13e-06\n", 653 | "Time: 23:27:41 Log-Likelihood: -260.43\n", 654 | "No. Observations: 20 AIC: 524.9\n", 655 | "Df Residuals: 18 BIC: 526.8\n", 656 | "Df Model: 1 \n", 657 | "Covariance Type: nonrobust \n", 658 | "=======================================================================================\n", 659 | " coef std err t P>|t| [0.025 0.975]\n", 660 | "---------------------------------------------------------------------------------------\n", 661 | "const 2.608e+05 9.76e+04 2.673 0.016 5.58e+04 4.66e+05\n", 662 | "House Size (sq.ft.) 401.9163 65.243 6.160 0.000 264.846 538.987\n", 663 | "==============================================================================\n", 664 | "Omnibus: 1.238 Durbin-Watson: 1.810\n", 665 | "Prob(Omnibus): 0.538 Jarque-Bera (JB): 0.715\n", 666 | "Skew: -0.459 Prob(JB): 0.699\n", 667 | "Kurtosis: 2.884 Cond. No. 5.66e+03\n", 668 | "==============================================================================\n", 669 | "\n", 670 | "Warnings:\n", 671 | "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", 672 | "[2] The condition number is large, 5.66e+03. This might indicate that there are\n", 673 | "strong multicollinearity or other numerical problems.\n", 674 | "\"\"\"" 675 | ] 676 | }, 677 | "execution_count": 17, 678 | "metadata": {}, 679 | "output_type": "execute_result" 680 | } 681 | ], 682 | "source": [ 683 | "reg.summary()" 684 | ] 685 | }, 686 | { 687 | "cell_type": "code", 688 | "execution_count": 18, 689 | "metadata": {}, 690 | "outputs": [ 691 | { 692 | "data": { 693 | "text/plain": [ 694 | "662800" 695 | ] 696 | }, 697 | "execution_count": 18, 698 | "metadata": {}, 699 | "output_type": "execute_result" 700 | } 701 | ], 702 | "source": [ 703 | "260800 + 402 * 1000" 704 | ] 705 | }, 706 | { 707 | "cell_type": "code", 708 | "execution_count": 19, 709 | "metadata": {}, 710 | "outputs": [], 711 | "source": [ 712 | "slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)" 713 | ] 714 | }, 715 | { 716 | "cell_type": "code", 717 | "execution_count": 20, 718 | "metadata": {}, 719 | "outputs": [ 720 | { 721 | "data": { 722 | "text/plain": [ 723 | "0.678279986579124" 724 | ] 725 | }, 726 | "execution_count": 20, 727 | "metadata": {}, 728 | "output_type": "execute_result" 729 | } 730 | ], 731 | "source": [ 732 | "r_value**2" 733 | ] 734 | }, 735 | { 736 | "cell_type": "code", 737 | "execution_count": 21, 738 | "metadata": {}, 739 | "outputs": [ 740 | { 741 | "data": { 742 | "text/plain": [ 743 | "401.91628631922595" 744 | ] 745 | }, 746 | "execution_count": 21, 747 | "metadata": {}, 748 | "output_type": "execute_result" 749 | } 750 | ], 751 | "source": [ 752 | "slope" 753 | ] 754 | }, 755 | { 756 | "cell_type": "code", 757 | "execution_count": 22, 758 | "metadata": {}, 759 | "outputs": [ 760 | { 761 | "data": { 762 | "text/plain": [ 763 | "260806.2360560964" 764 | ] 765 | }, 766 | "execution_count": 22, 767 | "metadata": {}, 768 | "output_type": "execute_result" 769 | } 770 | ], 771 | "source": [ 772 | "intercept" 773 | ] 774 | }, 775 | { 776 | "cell_type": "code", 777 | "execution_count": 23, 778 | "metadata": {}, 779 | "outputs": [ 780 | { 781 | "data": { 782 | "text/plain": [ 783 | "65.24299510636492" 784 | ] 785 | }, 786 | "execution_count": 23, 787 | "metadata": {}, 788 | "output_type": "execute_result" 789 | } 790 | ], 791 | "source": [ 792 | "std_err" 793 | ] 794 | }, 795 | { 796 | "cell_type": "code", 797 | "execution_count": 24, 798 | "metadata": {}, 799 | "outputs": [ 800 | { 801 | "data": { 802 | "text/plain": [ 803 | "8.129642377231308e-06" 804 | ] 805 | }, 806 | "execution_count": 24, 807 | "metadata": {}, 808 | "output_type": "execute_result" 809 | } 810 | ], 811 | "source": [ 812 | "p_value" 813 | ] 814 | } 815 | ], 816 | "metadata": { 817 | "kernelspec": { 818 | "display_name": "Python 3", 819 | "language": "python", 820 | "name": "python3" 821 | }, 822 | "language_info": { 823 | "codemirror_mode": { 824 | "name": "ipython", 825 | "version": 3 826 | }, 827 | "file_extension": ".py", 828 | "mimetype": "text/x-python", 829 | "name": "python", 830 | "nbconvert_exporter": "python", 831 | "pygments_lexer": "ipython3", 832 | "version": "3.6.4" 833 | } 834 | }, 835 | "nbformat": 4, 836 | "nbformat_minor": 2 837 | } 838 | -------------------------------------------------------------------------------- /Standard_Deviation.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 2, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "import numpy as np\n", 11 | "from pandas_datareader import data as wb\n", 12 | "import matplotlib.pyplot as plt" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 3, 18 | "metadata": {}, 19 | "outputs": [], 20 | "source": [ 21 | "tickers = ['PG','AAPL']\n", 22 | "\n", 23 | "sec_data = pd.DataFrame()\n", 24 | "\n", 25 | "for t in tickers :\n", 26 | " sec_data[t] = wb.DataReader(t,'quandl','2007-1-1','2018-3-1')['AdjClose']" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 4, 32 | "metadata": {}, 33 | "outputs": [ 34 | { 35 | "data": { 36 | "text/html": [ 37 | "
\n", 38 | "\n", 51 | "\n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | "
PGAAPL
Date
2007-01-03NaNNaN
2007-01-04-0.0076210.021953
2007-01-05-0.008624-0.007147
2007-01-080.0022020.004926
2007-01-09-0.0025170.079800
2007-01-100.0119010.046746
2007-01-110.006207-0.012448
2007-01-120.005554-0.012394
2007-01-160.0000000.025873
2007-01-170.010255-0.022391
2007-01-180.002750-0.063928
2007-01-190.008357-0.006420
2007-01-22-0.005614-0.019511
2007-01-23-0.001218-0.012639
2007-01-24-0.0019820.011601
2007-01-25-0.009047-0.005204
2007-01-26-0.000925-0.010138
2007-01-290.0003080.006537
2007-01-30-0.004480-0.004548
2007-01-310.0043260.002102
2007-02-010.007219-0.011615
2007-02-020.0000000.000118
2007-02-05-0.002912-0.009603
2007-02-06-0.0086330.002499
2007-02-07-0.0017050.023489
2007-02-080.0017050.000348
2007-02-09-0.002480-0.034350
2007-02-12-0.0041990.019150
2007-02-130.008536-0.002123
2007-02-140.0026240.007059
.........
2018-01-18-0.0112470.000893
2018-01-190.009821-0.004473
2018-01-220.008964-0.008215
2018-01-23-0.0313940.000226
2018-01-24-0.008345-0.016057
2018-01-250.000340-0.018012
2018-01-26-0.0069290.002335
2018-01-29-0.009966-0.020916
2018-01-300.001036-0.005912
2018-01-31-0.0070400.002751
2018-02-01-0.0056910.002088
2018-02-02-0.018813-0.045170
2018-02-05-0.038599-0.018122
2018-02-060.0161530.034572
2018-02-07-0.006577-0.021640
2018-02-08-0.019993-0.026807
2018-02-09-0.0037470.004176
2018-02-120.0174890.042306
2018-02-130.0020880.009968
2018-02-14-0.0101120.018269
2018-02-150.0212160.033027
2018-02-160.002303-0.003242
2018-02-20-0.015372-0.003369
2018-02-21-0.013616-0.004549
2018-02-220.0074500.008904
2018-02-230.0025940.016976
2018-02-260.0071310.019266
2018-02-27-0.013443-0.003246
2018-02-28-0.025401-0.001515
2018-03-010.002290-0.017672
\n", 372 | "

2809 rows × 2 columns

\n", 373 | "
" 374 | ], 375 | "text/plain": [ 376 | " PG AAPL\n", 377 | "Date \n", 378 | "2007-01-03 NaN NaN\n", 379 | "2007-01-04 -0.007621 0.021953\n", 380 | "2007-01-05 -0.008624 -0.007147\n", 381 | "2007-01-08 0.002202 0.004926\n", 382 | "2007-01-09 -0.002517 0.079800\n", 383 | "2007-01-10 0.011901 0.046746\n", 384 | "2007-01-11 0.006207 -0.012448\n", 385 | "2007-01-12 0.005554 -0.012394\n", 386 | "2007-01-16 0.000000 0.025873\n", 387 | "2007-01-17 0.010255 -0.022391\n", 388 | "2007-01-18 0.002750 -0.063928\n", 389 | "2007-01-19 0.008357 -0.006420\n", 390 | "2007-01-22 -0.005614 -0.019511\n", 391 | "2007-01-23 -0.001218 -0.012639\n", 392 | "2007-01-24 -0.001982 0.011601\n", 393 | "2007-01-25 -0.009047 -0.005204\n", 394 | "2007-01-26 -0.000925 -0.010138\n", 395 | "2007-01-29 0.000308 0.006537\n", 396 | "2007-01-30 -0.004480 -0.004548\n", 397 | "2007-01-31 0.004326 0.002102\n", 398 | "2007-02-01 0.007219 -0.011615\n", 399 | "2007-02-02 0.000000 0.000118\n", 400 | "2007-02-05 -0.002912 -0.009603\n", 401 | "2007-02-06 -0.008633 0.002499\n", 402 | "2007-02-07 -0.001705 0.023489\n", 403 | "2007-02-08 0.001705 0.000348\n", 404 | "2007-02-09 -0.002480 -0.034350\n", 405 | "2007-02-12 -0.004199 0.019150\n", 406 | "2007-02-13 0.008536 -0.002123\n", 407 | "2007-02-14 0.002624 0.007059\n", 408 | "... ... ...\n", 409 | "2018-01-18 -0.011247 0.000893\n", 410 | "2018-01-19 0.009821 -0.004473\n", 411 | "2018-01-22 0.008964 -0.008215\n", 412 | "2018-01-23 -0.031394 0.000226\n", 413 | "2018-01-24 -0.008345 -0.016057\n", 414 | "2018-01-25 0.000340 -0.018012\n", 415 | "2018-01-26 -0.006929 0.002335\n", 416 | "2018-01-29 -0.009966 -0.020916\n", 417 | "2018-01-30 0.001036 -0.005912\n", 418 | "2018-01-31 -0.007040 0.002751\n", 419 | "2018-02-01 -0.005691 0.002088\n", 420 | "2018-02-02 -0.018813 -0.045170\n", 421 | "2018-02-05 -0.038599 -0.018122\n", 422 | "2018-02-06 0.016153 0.034572\n", 423 | "2018-02-07 -0.006577 -0.021640\n", 424 | "2018-02-08 -0.019993 -0.026807\n", 425 | "2018-02-09 -0.003747 0.004176\n", 426 | "2018-02-12 0.017489 0.042306\n", 427 | "2018-02-13 0.002088 0.009968\n", 428 | "2018-02-14 -0.010112 0.018269\n", 429 | "2018-02-15 0.021216 0.033027\n", 430 | "2018-02-16 0.002303 -0.003242\n", 431 | "2018-02-20 -0.015372 -0.003369\n", 432 | "2018-02-21 -0.013616 -0.004549\n", 433 | "2018-02-22 0.007450 0.008904\n", 434 | "2018-02-23 0.002594 0.016976\n", 435 | "2018-02-26 0.007131 0.019266\n", 436 | "2018-02-27 -0.013443 -0.003246\n", 437 | "2018-02-28 -0.025401 -0.001515\n", 438 | "2018-03-01 0.002290 -0.017672\n", 439 | "\n", 440 | "[2809 rows x 2 columns]" 441 | ] 442 | }, 443 | "execution_count": 4, 444 | "metadata": {}, 445 | "output_type": "execute_result" 446 | } 447 | ], 448 | "source": [ 449 | "sec_data = sec_data.iloc[::-1]\n", 450 | "sec_returns = np.log(sec_data / sec_data.shift(1))\n", 451 | "sec_returns" 452 | ] 453 | }, 454 | { 455 | "cell_type": "code", 456 | "execution_count": 27, 457 | "metadata": {}, 458 | "outputs": [ 459 | { 460 | "data": { 461 | "text/plain": [ 462 | "0.00018767102795901115" 463 | ] 464 | }, 465 | "execution_count": 27, 466 | "metadata": {}, 467 | "output_type": "execute_result" 468 | } 469 | ], 470 | "source": [ 471 | "sec_returns['PG'].mean()" 472 | ] 473 | }, 474 | { 475 | "cell_type": "code", 476 | "execution_count": 7, 477 | "metadata": {}, 478 | "outputs": [ 479 | { 480 | "data": { 481 | "text/plain": [ 482 | "PG 0.000188\n", 483 | "AAPL 0.000985\n", 484 | "dtype: float64" 485 | ] 486 | }, 487 | "execution_count": 7, 488 | "metadata": {}, 489 | "output_type": "execute_result" 490 | } 491 | ], 492 | "source": [ 493 | "daily = sec_returns[['PG','AAPL']].mean()\n", 494 | "daily" 495 | ] 496 | }, 497 | { 498 | "cell_type": "code", 499 | "execution_count": 34, 500 | "metadata": {}, 501 | "outputs": [ 502 | { 503 | "name": "stdout", 504 | "output_type": "stream", 505 | "text": [ 506 | "PG 4.803120\n", 507 | "AAPL 27.915995\n", 508 | "dtype: float64%\n" 509 | ] 510 | } 511 | ], 512 | "source": [ 513 | "annual = (((daily+1)**250)-1)*100\n", 514 | "print(str(annual) + '%')" 515 | ] 516 | }, 517 | { 518 | "cell_type": "code", 519 | "execution_count": 35, 520 | "metadata": {}, 521 | "outputs": [ 522 | { 523 | "data": { 524 | "text/plain": [ 525 | "PG 0.010931\n", 526 | "AAPL 0.020057\n", 527 | "dtype: float64" 528 | ] 529 | }, 530 | "execution_count": 35, 531 | "metadata": {}, 532 | "output_type": "execute_result" 533 | } 534 | ], 535 | "source": [ 536 | "daily_std = sec_returns[['PG','AAPL']].std()\n", 537 | "daily_std" 538 | ] 539 | }, 540 | { 541 | "cell_type": "code", 542 | "execution_count": 38, 543 | "metadata": {}, 544 | "outputs": [ 545 | { 546 | "data": { 547 | "text/plain": [ 548 | "PG 0.172832\n", 549 | "AAPL 0.317125\n", 550 | "dtype: float64" 551 | ] 552 | }, 553 | "execution_count": 38, 554 | "metadata": {}, 555 | "output_type": "execute_result" 556 | } 557 | ], 558 | "source": [ 559 | "annual_std = sec_returns[['PG','AAPL']].std()*250**0.5\n", 560 | "annual_std" 561 | ] 562 | } 563 | ], 564 | "metadata": { 565 | "kernelspec": { 566 | "display_name": "Python 3", 567 | "language": "python", 568 | "name": "python3" 569 | }, 570 | "language_info": { 571 | "codemirror_mode": { 572 | "name": "ipython", 573 | "version": 3 574 | }, 575 | "file_extension": ".py", 576 | "mimetype": "text/x-python", 577 | "name": "python", 578 | "nbconvert_exporter": "python", 579 | "pygments_lexer": "ipython3", 580 | "version": "3.6.4" 581 | } 582 | }, 583 | "nbformat": 4, 584 | "nbformat_minor": 2 585 | } 586 | -------------------------------------------------------------------------------- /var_cov_correlation.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "import numpy as np\n", 11 | "from pandas_datareader import data as wb\n", 12 | "import matplotlib.pyplot as plt" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 15, 18 | "metadata": {}, 19 | "outputs": [], 20 | "source": [ 21 | "tickers = ['PG','MSFT']\n", 22 | "\n", 23 | "sec_data = pd.DataFrame()\n", 24 | "\n", 25 | "for t in tickers :\n", 26 | " sec_data[t] = wb.DataReader(t,'quandl','2007-1-1','2018-3-1')['AdjClose']" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 16, 32 | "metadata": {}, 33 | "outputs": [ 34 | { 35 | "name": "stdout", 36 | "output_type": "stream", 37 | "text": [ 38 | "\n", 39 | "DatetimeIndex: 2809 entries, 2018-03-01 to 2007-01-03\n", 40 | "Data columns (total 2 columns):\n", 41 | "PG 2809 non-null float64\n", 42 | "MSFT 2809 non-null float64\n", 43 | "dtypes: float64(2)\n", 44 | "memory usage: 65.8 KB\n" 45 | ] 46 | } 47 | ], 48 | "source": [ 49 | "sec_data.info()" 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 17, 55 | "metadata": {}, 56 | "outputs": [ 57 | { 58 | "data": { 59 | "text/html": [ 60 | "
\n", 61 | "\n", 74 | "\n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | "
PGMSFT
Date
2007-01-03NaNNaN
2007-01-04-0.007621-0.001676
2007-01-05-0.008624-0.005719
2007-01-080.0022020.009737
2007-01-09-0.0025170.001002
2007-01-100.011901-0.010064
2007-01-110.0062070.034463
2007-01-120.0055540.016476
2007-01-160.000000-0.001603
2007-01-170.010255-0.001927
2007-01-180.002750-0.003221
2007-01-190.0083570.003542
2007-01-22-0.005614-0.012615
2007-01-23-0.0012180.000651
2007-01-24-0.0019820.011321
2007-01-25-0.009047-0.020800
2007-01-26-0.0009250.004914
2007-01-290.000308-0.002290
2007-01-30-0.004480-0.001639
2007-01-310.0043260.012390
2007-02-010.007219-0.009769
2007-02-020.000000-0.012181
2007-02-05-0.002912-0.019399
2007-02-06-0.008633-0.003383
2007-02-07-0.001705-0.004755
2007-02-080.001705-0.003752
2007-02-09-0.002480-0.009615
2007-02-12-0.004199-0.001381
2007-02-130.0085360.005857
2007-02-140.0026240.013354
.........
2018-01-18-0.011247-0.000444
2018-01-190.009821-0.001110
2018-01-220.0089640.017731
2018-01-23-0.0313940.003161
2018-01-24-0.008345-0.000871
2018-01-250.0003400.005539
2018-01-26-0.0069290.018564
2018-01-29-0.009966-0.001490
2018-01-300.001036-0.012643
2018-01-31-0.0070400.024182
2018-02-01-0.005691-0.007925
2018-02-02-0.018813-0.026663
2018-02-05-0.038599-0.030196
2018-02-060.0161530.025281
2018-02-07-0.006577-0.019012
2018-02-08-0.019993-0.054111
2018-02-09-0.0037470.037116
2018-02-120.0174890.011623
2018-02-130.0020880.007823
2018-02-14-0.0101120.010850
2018-02-150.0212160.020167
2018-02-160.002303-0.007148
2018-02-20-0.0153720.007796
2018-02-21-0.013616-0.013355
2018-02-220.0074500.002729
2018-02-230.0025940.024974
2018-02-260.0071310.014355
2018-02-27-0.013443-0.012868
2018-02-28-0.025401-0.004575
2018-03-010.002290-0.009860
\n", 395 | "

2809 rows × 2 columns

\n", 396 | "
" 397 | ], 398 | "text/plain": [ 399 | " PG MSFT\n", 400 | "Date \n", 401 | "2007-01-03 NaN NaN\n", 402 | "2007-01-04 -0.007621 -0.001676\n", 403 | "2007-01-05 -0.008624 -0.005719\n", 404 | "2007-01-08 0.002202 0.009737\n", 405 | "2007-01-09 -0.002517 0.001002\n", 406 | "2007-01-10 0.011901 -0.010064\n", 407 | "2007-01-11 0.006207 0.034463\n", 408 | "2007-01-12 0.005554 0.016476\n", 409 | "2007-01-16 0.000000 -0.001603\n", 410 | "2007-01-17 0.010255 -0.001927\n", 411 | "2007-01-18 0.002750 -0.003221\n", 412 | "2007-01-19 0.008357 0.003542\n", 413 | "2007-01-22 -0.005614 -0.012615\n", 414 | "2007-01-23 -0.001218 0.000651\n", 415 | "2007-01-24 -0.001982 0.011321\n", 416 | "2007-01-25 -0.009047 -0.020800\n", 417 | "2007-01-26 -0.000925 0.004914\n", 418 | "2007-01-29 0.000308 -0.002290\n", 419 | "2007-01-30 -0.004480 -0.001639\n", 420 | "2007-01-31 0.004326 0.012390\n", 421 | "2007-02-01 0.007219 -0.009769\n", 422 | "2007-02-02 0.000000 -0.012181\n", 423 | "2007-02-05 -0.002912 -0.019399\n", 424 | "2007-02-06 -0.008633 -0.003383\n", 425 | "2007-02-07 -0.001705 -0.004755\n", 426 | "2007-02-08 0.001705 -0.003752\n", 427 | "2007-02-09 -0.002480 -0.009615\n", 428 | "2007-02-12 -0.004199 -0.001381\n", 429 | "2007-02-13 0.008536 0.005857\n", 430 | "2007-02-14 0.002624 0.013354\n", 431 | "... ... ...\n", 432 | "2018-01-18 -0.011247 -0.000444\n", 433 | "2018-01-19 0.009821 -0.001110\n", 434 | "2018-01-22 0.008964 0.017731\n", 435 | "2018-01-23 -0.031394 0.003161\n", 436 | "2018-01-24 -0.008345 -0.000871\n", 437 | "2018-01-25 0.000340 0.005539\n", 438 | "2018-01-26 -0.006929 0.018564\n", 439 | "2018-01-29 -0.009966 -0.001490\n", 440 | "2018-01-30 0.001036 -0.012643\n", 441 | "2018-01-31 -0.007040 0.024182\n", 442 | "2018-02-01 -0.005691 -0.007925\n", 443 | "2018-02-02 -0.018813 -0.026663\n", 444 | "2018-02-05 -0.038599 -0.030196\n", 445 | "2018-02-06 0.016153 0.025281\n", 446 | "2018-02-07 -0.006577 -0.019012\n", 447 | "2018-02-08 -0.019993 -0.054111\n", 448 | "2018-02-09 -0.003747 0.037116\n", 449 | "2018-02-12 0.017489 0.011623\n", 450 | "2018-02-13 0.002088 0.007823\n", 451 | "2018-02-14 -0.010112 0.010850\n", 452 | "2018-02-15 0.021216 0.020167\n", 453 | "2018-02-16 0.002303 -0.007148\n", 454 | "2018-02-20 -0.015372 0.007796\n", 455 | "2018-02-21 -0.013616 -0.013355\n", 456 | "2018-02-22 0.007450 0.002729\n", 457 | "2018-02-23 0.002594 0.024974\n", 458 | "2018-02-26 0.007131 0.014355\n", 459 | "2018-02-27 -0.013443 -0.012868\n", 460 | "2018-02-28 -0.025401 -0.004575\n", 461 | "2018-03-01 0.002290 -0.009860\n", 462 | "\n", 463 | "[2809 rows x 2 columns]" 464 | ] 465 | }, 466 | "execution_count": 17, 467 | "metadata": {}, 468 | "output_type": "execute_result" 469 | } 470 | ], 471 | "source": [ 472 | "sec_data = sec_data.iloc[::-1]\n", 473 | "sec_returns = np.log(sec_data / sec_data.shift(1))\n", 474 | "sec_returns" 475 | ] 476 | }, 477 | { 478 | "cell_type": "code", 479 | "execution_count": 21, 480 | "metadata": { 481 | "scrolled": true 482 | }, 483 | "outputs": [ 484 | { 485 | "name": "stdout", 486 | "output_type": "stream", 487 | "text": [ 488 | "P&G : 0.029870754208558788\n", 489 | "Microsoft : 0.07392432143310333\n" 490 | ] 491 | } 492 | ], 493 | "source": [ 494 | "PG_var = sec_returns['PG'].var() * 250\n", 495 | "MSFT_var = sec_returns['MSFT'].var() * 250\n", 496 | "print('P&G : ' + str(PG_var) + '\\nMicrosoft : '+ str(MSFT_var))" 497 | ] 498 | }, 499 | { 500 | "cell_type": "code", 501 | "execution_count": 23, 502 | "metadata": {}, 503 | "outputs": [ 504 | { 505 | "data": { 506 | "text/html": [ 507 | "
\n", 508 | "\n", 521 | "\n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | "
PGMSFT
PG0.0298710.021632
MSFT0.0216320.073924
\n", 542 | "
" 543 | ], 544 | "text/plain": [ 545 | " PG MSFT\n", 546 | "PG 0.029871 0.021632\n", 547 | "MSFT 0.021632 0.073924" 548 | ] 549 | }, 550 | "execution_count": 23, 551 | "metadata": {}, 552 | "output_type": "execute_result" 553 | } 554 | ], 555 | "source": [ 556 | "cov_matrix = sec_returns.cov() *250\n", 557 | "cov_matrix" 558 | ] 559 | }, 560 | { 561 | "cell_type": "code", 562 | "execution_count": 24, 563 | "metadata": {}, 564 | "outputs": [ 565 | { 566 | "data": { 567 | "text/html": [ 568 | "
\n", 569 | "\n", 582 | "\n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | "
PGMSFT
PG1.0000000.460345
MSFT0.4603451.000000
\n", 603 | "
" 604 | ], 605 | "text/plain": [ 606 | " PG MSFT\n", 607 | "PG 1.000000 0.460345\n", 608 | "MSFT 0.460345 1.000000" 609 | ] 610 | }, 611 | "execution_count": 24, 612 | "metadata": {}, 613 | "output_type": "execute_result" 614 | } 615 | ], 616 | "source": [ 617 | "corr_matrix = sec_returns.corr()\n", 618 | "corr_matrix" 619 | ] 620 | } 621 | ], 622 | "metadata": { 623 | "kernelspec": { 624 | "display_name": "Python 3", 625 | "language": "python", 626 | "name": "python3" 627 | }, 628 | "language_info": { 629 | "codemirror_mode": { 630 | "name": "ipython", 631 | "version": 3 632 | }, 633 | "file_extension": ".py", 634 | "mimetype": "text/x-python", 635 | "name": "python", 636 | "nbconvert_exporter": "python", 637 | "pygments_lexer": "ipython3", 638 | "version": "3.6.4" 639 | } 640 | }, 641 | "nbformat": 4, 642 | "nbformat_minor": 2 643 | } 644 | --------------------------------------------------------------------------------