{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Dow Component Performance\n", "\n", "Display the trailing `n` day performance of the components of the Dow index." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preliminaries\n", "\n", "Import packages. Use `pandas_datareader.data` for accessing prices." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import pandas_datareader.data as web\n", "from datetime import timedelta, date\n", "import matplotlib.pyplot as plt\n", "from matplotlib.colors import LinearSegmentedColormap\n", "from matplotlib.ticker import FuncFormatter\n", "\n", "pd.options.display.float_format = '{:+.4f}'.format" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "set up array of Dow components." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "components= [\"MMM\", \"AXP\", \"AAPL\", \"BA\", \"CAT\", \"CVX\", \"CSCO\", \"KO\",\n", " \"DWDP\", \"XOM\", \"GE\", \"GS\", \"HD\", \"IBM\", \"INTC\", \"JNJ\",\n", " \"JPM\", \"MCD\", \"MRK\", \"MSFT\", \"NKE\", \"PFE\", \"PG\", \"TRV\",\n", " \"UNH\", \"UTX\", \"VZ\", \"V\", \"WMT\", \"DIS\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "set up the date range for the plot." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "today = date.today()\n", "start = today - timedelta(days=100)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Download prices\n", "\n", "Using `quandl` get a dataframe with the `n` days for price history.\n", "Keep the `AdjClose` for calculating the daily returns." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def collect(components):\n", " ss = {}\n", " for ticker in components:\n", " s = web.DataReader('WIKI/' + ticker, 'quandl', start=start)['AdjClose']\n", " s = s.rename(ticker)\n", " ss[ticker] = s\n", " return pd.DataFrame(ss)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", " | AAPL | \n", "AXP | \n", "BA | \n", "CAT | \n", "CSCO | \n", "CVX | \n", "DIS | \n", "DWDP | \n", "GE | \n", "GS | \n", "... | \n", "NKE | \n", "PFE | \n", "PG | \n", "TRV | \n", "UNH | \n", "UTX | \n", "V | \n", "VZ | \n", "WMT | \n", "XOM | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Date | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
2017-11-15 | \n", "+169.0800 | \n", "+93.2600 | \n", "+262.8600 | \n", "+134.1000 | \n", "+34.1100 | \n", "+116.4500 | \n", "+103.6900 | \n", "+68.9700 | \n", "+18.2600 | \n", "+237.6100 | \n", "... | \n", "+56.6300 | \n", "+35.3600 | \n", "+88.2300 | \n", "+133.7100 | \n", "+209.8600 | \n", "+117.5700 | \n", "+110.2500 | \n", "+44.1100 | \n", "+89.8300 | \n", "+81.2100 | \n", "
2017-11-16 | \n", "+171.1000 | \n", "+93.5600 | \n", "+263.7000 | \n", "+136.3600 | \n", "+35.8800 | \n", "+114.5700 | \n", "+103.6000 | \n", "+70.6800 | \n", "+18.2500 | \n", "+239.3700 | \n", "... | \n", "+57.2300 | \n", "+35.5600 | \n", "+89.2500 | \n", "+130.8100 | \n", "+211.1300 | \n", "+117.8900 | \n", "+111.0200 | \n", "+44.7700 | \n", "+99.6200 | \n", "+80.5600 | \n", "
2017-11-17 | \n", "+170.1500 | \n", "+93.6900 | \n", "+262.2600 | \n", "+136.1300 | \n", "+35.9000 | \n", "+114.7100 | \n", "+103.4400 | \n", "+70.7400 | \n", "+18.2100 | \n", "+238.0200 | \n", "... | \n", "+59.1900 | \n", "+35.3700 | \n", "+88.4300 | \n", "+129.9200 | \n", "+209.9000 | \n", "+116.5300 | \n", "+109.8200 | \n", "+45.4200 | \n", "+97.4700 | \n", "+80.2400 | \n", "
2017-11-20 | \n", "+169.9800 | \n", "+93.9500 | \n", "+264.6300 | \n", "+136.9100 | \n", "+36.5000 | \n", "+114.7200 | \n", "+102.7500 | \n", "+70.8500 | \n", "+17.9800 | \n", "+238.1300 | \n", "... | \n", "+59.2500 | \n", "+35.3500 | \n", "+88.2700 | \n", "+129.7700 | \n", "+210.2500 | \n", "+116.3800 | \n", "+109.9500 | \n", "+46.2000 | \n", "+97.4800 | \n", "+80.5500 | \n", "
2017-11-21 | \n", "+173.1400 | \n", "+94.4100 | \n", "+266.9900 | \n", "+137.6000 | \n", "+36.6500 | \n", "+115.1700 | \n", "+103.0000 | \n", "+71.2600 | \n", "+17.8300 | \n", "+238.0200 | \n", "... | \n", "+59.3900 | \n", "+35.5400 | \n", "+88.7200 | \n", "+130.6300 | \n", "+212.6000 | \n", "+117.0400 | \n", "+111.4500 | \n", "+46.1800 | \n", "+96.5200 | \n", "+80.8700 | \n", "
5 rows × 30 columns
\n", "\n", " | AAPL | \n", "AXP | \n", "BA | \n", "CAT | \n", "CSCO | \n", "CVX | \n", "DIS | \n", "DWDP | \n", "GE | \n", "GS | \n", "... | \n", "NKE | \n", "PFE | \n", "PG | \n", "TRV | \n", "UNH | \n", "UTX | \n", "V | \n", "VZ | \n", "WMT | \n", "XOM | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Date | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
2018-02-15 | \n", "+0.0330 | \n", "+0.0034 | \n", "+0.0331 | \n", "+0.0121 | \n", "+0.0462 | \n", "-0.0097 | \n", "+0.0055 | \n", "+0.0073 | \n", "-0.0034 | \n", "+0.0192 | \n", "... | \n", "+0.0048 | \n", "+0.0147 | \n", "+0.0212 | \n", "+0.0020 | \n", "-0.0121 | \n", "+0.0257 | \n", "+0.0119 | \n", "+0.0046 | \n", "+0.0149 | \n", "-0.0033 | \n", "
2018-02-16 | \n", "-0.0032 | \n", "+0.0024 | \n", "-0.0040 | \n", "-0.0233 | \n", "+0.0057 | \n", "-0.0035 | \n", "+0.0128 | \n", "+0.0014 | \n", "+0.0134 | \n", "-0.0002 | \n", "... | \n", "+0.0001 | \n", "+0.0153 | \n", "+0.0023 | \n", "+0.0020 | \n", "+0.0147 | \n", "-0.0057 | \n", "-0.0035 | \n", "+0.0082 | \n", "+0.0149 | \n", "+0.0043 | \n", "
2018-02-20 | \n", "-0.0034 | \n", "+0.0041 | \n", "-0.0048 | \n", "-0.0047 | \n", "-0.0061 | \n", "-0.0104 | \n", "-0.0052 | \n", "-0.0046 | \n", "-0.0208 | \n", "-0.0103 | \n", "... | \n", "-0.0119 | \n", "-0.0069 | \n", "-0.0154 | \n", "-0.0149 | \n", "-0.0119 | \n", "-0.0219 | \n", "+0.0013 | \n", "-0.0248 | \n", "-0.1074 | \n", "-0.0104 | \n", "
2018-02-21 | \n", "-0.0045 | \n", "+0.0032 | \n", "-0.0028 | \n", "-0.0021 | \n", "-0.0172 | \n", "-0.0175 | \n", "-0.0088 | \n", "-0.0093 | \n", "-0.0171 | \n", "-0.0056 | \n", "... | \n", "-0.0065 | \n", "-0.0070 | \n", "-0.0136 | \n", "-0.0038 | \n", "-0.0068 | \n", "+0.0219 | \n", "-0.0130 | \n", "-0.0198 | \n", "-0.0279 | \n", "-0.0114 | \n", "
2018-02-22 | \n", "+0.0089 | \n", "-0.0015 | \n", "+0.0100 | \n", "+0.0231 | \n", "-0.0086 | \n", "+0.0076 | \n", "+0.0018 | \n", "+0.0136 | \n", "+0.0089 | \n", "-0.0075 | \n", "... | \n", "+0.0012 | \n", "-0.0006 | \n", "+0.0074 | \n", "-0.0065 | \n", "+0.0087 | \n", "+0.0329 | \n", "-0.0004 | \n", "-0.0019 | \n", "+0.0136 | \n", "+0.0129 | \n", "
5 rows × 30 columns
\n", "\n", " | AAPL | \n", "AXP | \n", "BA | \n", "CAT | \n", "CSCO | \n", "CVX | \n", "DIS | \n", "DWDP | \n", "GE | \n", "GS | \n", "... | \n", "NKE | \n", "PFE | \n", "PG | \n", "TRV | \n", "UNH | \n", "UTX | \n", "V | \n", "VZ | \n", "WMT | \n", "XOM | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Date | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
2018-02-15 | \n", "+0.0229 | \n", "+0.0348 | \n", "+0.3046 | \n", "+0.1765 | \n", "+0.2564 | \n", "-0.0342 | \n", "+0.0143 | \n", "+0.0409 | \n", "-0.2067 | \n", "+0.1192 | \n", "... | \n", "+0.1872 | \n", "+0.0098 | \n", "-0.0682 | \n", "+0.0522 | \n", "+0.0742 | \n", "+0.1005 | \n", "+0.1036 | \n", "+0.1201 | \n", "+0.1390 | \n", "-0.0635 | \n", "
2018-02-16 | \n", "+0.0196 | \n", "+0.0372 | \n", "+0.3006 | \n", "+0.1531 | \n", "+0.2621 | \n", "-0.0377 | \n", "+0.0270 | \n", "+0.0423 | \n", "-0.1933 | \n", "+0.1189 | \n", "... | \n", "+0.1874 | \n", "+0.0251 | \n", "-0.0659 | \n", "+0.0542 | \n", "+0.0889 | \n", "+0.0948 | \n", "+0.1000 | \n", "+0.1283 | \n", "+0.1539 | \n", "-0.0592 | \n", "
2018-02-20 | \n", "+0.0163 | \n", "+0.0413 | \n", "+0.2958 | \n", "+0.1484 | \n", "+0.2560 | \n", "-0.0481 | \n", "+0.0218 | \n", "+0.0377 | \n", "-0.2141 | \n", "+0.1087 | \n", "... | \n", "+0.1754 | \n", "+0.0182 | \n", "-0.0813 | \n", "+0.0393 | \n", "+0.0770 | \n", "+0.0729 | \n", "+0.1014 | \n", "+0.1035 | \n", "+0.0465 | \n", "-0.0696 | \n", "
2018-02-21 | \n", "+0.0117 | \n", "+0.0445 | \n", "+0.2931 | \n", "+0.1463 | \n", "+0.2388 | \n", "-0.0656 | \n", "+0.0130 | \n", "+0.0284 | \n", "-0.2313 | \n", "+0.1030 | \n", "... | \n", "+0.1689 | \n", "+0.0112 | \n", "-0.0949 | \n", "+0.0355 | \n", "+0.0702 | \n", "+0.0948 | \n", "+0.0883 | \n", "+0.0837 | \n", "+0.0186 | \n", "-0.0810 | \n", "
2018-02-22 | \n", "+0.0206 | \n", "+0.0429 | \n", "+0.3031 | \n", "+0.1694 | \n", "+0.2302 | \n", "-0.0580 | \n", "+0.0148 | \n", "+0.0420 | \n", "-0.2223 | \n", "+0.0955 | \n", "... | \n", "+0.1701 | \n", "+0.0107 | \n", "-0.0875 | \n", "+0.0290 | \n", "+0.0789 | \n", "+0.1277 | \n", "+0.0879 | \n", "+0.0818 | \n", "+0.0322 | \n", "-0.0681 | \n", "
5 rows × 30 columns
\n", "\n", " | AAPL | \n", "AXP | \n", "BA | \n", "CAT | \n", "CSCO | \n", "CVX | \n", "DIS | \n", "DWDP | \n", "GE | \n", "GS | \n", "... | \n", "NKE | \n", "PFE | \n", "PG | \n", "TRV | \n", "UNH | \n", "UTX | \n", "V | \n", "VZ | \n", "WMT | \n", "XOM | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Date | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
2018-02-15 | \n", "+1.0231 | \n", "+1.0354 | \n", "+1.3561 | \n", "+1.1930 | \n", "+1.2923 | \n", "+0.9663 | \n", "+1.0144 | \n", "+1.0418 | \n", "+0.8133 | \n", "+1.1266 | \n", "... | \n", "+1.2059 | \n", "+1.0099 | \n", "+0.9340 | \n", "+1.0536 | \n", "+1.0770 | \n", "+1.1057 | \n", "+1.1091 | \n", "+1.1276 | \n", "+1.1492 | \n", "+0.9384 | \n", "
2018-02-16 | \n", "+1.0198 | \n", "+1.0379 | \n", "+1.3507 | \n", "+1.1655 | \n", "+1.2996 | \n", "+0.9630 | \n", "+1.0274 | \n", "+1.0432 | \n", "+0.8242 | \n", "+1.1263 | \n", "... | \n", "+1.2061 | \n", "+1.0255 | \n", "+0.9362 | \n", "+1.0557 | \n", "+1.0930 | \n", "+1.0994 | \n", "+1.1052 | \n", "+1.1369 | \n", "+1.1664 | \n", "+0.9425 | \n", "
2018-02-20 | \n", "+1.0164 | \n", "+1.0421 | \n", "+1.3443 | \n", "+1.1600 | \n", "+1.2917 | \n", "+0.9530 | \n", "+1.0221 | \n", "+1.0384 | \n", "+0.8072 | \n", "+1.1148 | \n", "... | \n", "+1.1918 | \n", "+1.0184 | \n", "+0.9219 | \n", "+1.0401 | \n", "+1.0801 | \n", "+1.0756 | \n", "+1.1067 | \n", "+1.1090 | \n", "+1.0476 | \n", "+0.9328 | \n", "
2018-02-21 | \n", "+1.0118 | \n", "+1.0455 | \n", "+1.3405 | \n", "+1.1576 | \n", "+1.2697 | \n", "+0.9365 | \n", "+1.0131 | \n", "+1.0289 | \n", "+0.7935 | \n", "+1.1085 | \n", "... | \n", "+1.1840 | \n", "+1.0113 | \n", "+0.9094 | \n", "+1.0361 | \n", "+1.0728 | \n", "+1.0994 | \n", "+1.0923 | \n", "+1.0873 | \n", "+1.0188 | \n", "+0.9222 | \n", "
2018-02-22 | \n", "+1.0208 | \n", "+1.0439 | \n", "+1.3540 | \n", "+1.1846 | \n", "+1.2589 | \n", "+0.9437 | \n", "+1.0149 | \n", "+1.0429 | \n", "+0.8007 | \n", "+1.1002 | \n", "... | \n", "+1.1854 | \n", "+1.0107 | \n", "+0.9162 | \n", "+1.0294 | \n", "+1.0821 | \n", "+1.1362 | \n", "+1.0919 | \n", "+1.0852 | \n", "+1.0327 | \n", "+0.9341 | \n", "
5 rows × 30 columns
\n", "\n", " | AAPL | \n", "AXP | \n", "BA | \n", "CAT | \n", "CSCO | \n", "CVX | \n", "DIS | \n", "DWDP | \n", "GE | \n", "GS | \n", "... | \n", "NKE | \n", "PFE | \n", "PG | \n", "TRV | \n", "UNH | \n", "UTX | \n", "V | \n", "VZ | \n", "WMT | \n", "XOM | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Date | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
2018-02-15 | \n", "+0.0023 | \n", "-0.0081 | \n", "+0.0015 | \n", "+0.0071 | \n", "+0.0265 | \n", "+0.0240 | \n", "-0.0006 | \n", "-0.0011 | \n", "+0.0157 | \n", "+0.0239 | \n", "... | \n", "+0.0173 | \n", "-0.0008 | \n", "+0.0194 | \n", "+0.0235 | \n", "-0.0047 | \n", "-0.0268 | \n", "+0.0158 | \n", "+0.0391 | \n", "+0.1128 | \n", "+0.0046 | \n", "
2018-02-16 | \n", "-0.0010 | \n", "-0.0058 | \n", "-0.0025 | \n", "-0.0162 | \n", "+0.0324 | \n", "+0.0205 | \n", "+0.0123 | \n", "+0.0003 | \n", "+0.0294 | \n", "+0.0237 | \n", "... | \n", "+0.0174 | \n", "+0.0145 | \n", "+0.0218 | \n", "+0.0256 | \n", "+0.0100 | \n", "-0.0323 | \n", "+0.0122 | \n", "+0.0476 | \n", "+0.1295 | \n", "+0.0090 | \n", "
2018-02-20 | \n", "-0.0043 | \n", "-0.0016 | \n", "-0.0072 | \n", "-0.0208 | \n", "+0.0261 | \n", "+0.0099 | \n", "+0.0070 | \n", "-0.0043 | \n", "+0.0082 | \n", "+0.0132 | \n", "... | \n", "+0.0054 | \n", "+0.0076 | \n", "+0.0062 | \n", "+0.0104 | \n", "-0.0019 | \n", "-0.0533 | \n", "+0.0135 | \n", "+0.0219 | \n", "+0.0144 | \n", "-0.0015 | \n", "
2018-02-21 | \n", "-0.0089 | \n", "+0.0015 | \n", "-0.0100 | \n", "-0.0229 | \n", "+0.0086 | \n", "-0.0076 | \n", "-0.0018 | \n", "-0.0135 | \n", "-0.0089 | \n", "+0.0075 | \n", "... | \n", "-0.0012 | \n", "+0.0006 | \n", "-0.0074 | \n", "+0.0065 | \n", "-0.0086 | \n", "-0.0323 | \n", "+0.0004 | \n", "+0.0019 | \n", "-0.0135 | \n", "-0.0128 | \n", "
2018-02-22 | \n", "+0.0000 | \n", "+0.0000 | \n", "+0.0000 | \n", "+0.0000 | \n", "+0.0000 | \n", "+0.0000 | \n", "+0.0000 | \n", "+0.0000 | \n", "+0.0000 | \n", "+0.0000 | \n", "... | \n", "+0.0000 | \n", "+0.0000 | \n", "+0.0000 | \n", "+0.0000 | \n", "+0.0000 | \n", "+0.0000 | \n", "+0.0000 | \n", "+0.0000 | \n", "+0.0000 | \n", "+0.0000 | \n", "
5 rows × 30 columns
\n", "