├── .github └── workflows │ └── codeql-analysis.yml ├── .gitignore ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── DEPRECATED ├── Graphers │ ├── SPY.py │ └── Stock Vs. Volume.py └── Scrapers │ ├── README.md │ ├── Yahoo Finance Multi Stock Scraper.py │ ├── finviz.py │ └── stock_scraper.py ├── Data ├── Funds.md ├── JDST-JNUG.md ├── Yahoo Ticker Symbols - Jan 2016.xlsx ├── constituents-financials.csv ├── s&p.txt └── s-and-p-500-1950.csv ├── LICENSE ├── Patterns ├── BABA_highLow.png ├── BABAtrend.png ├── BABAtrendSegments.png ├── CompareToSPY.PY ├── MACD.py ├── README.md ├── TrendLine.py ├── s&p graphical analysis.ipynb └── s-and-p-500-2009.csv ├── Prediction └── svc.py ├── README.md ├── Regression ├── AEIS_2017-2017.csv ├── FB_2017-2017.csv ├── LR based on Volume.py ├── Linear Regression.py ├── NVDA.png ├── NVDA2016.png ├── NVDA_2016.png ├── README.md ├── StockPredictPrice.py ├── StockPredictPrices.py ├── TrueLinearRegression.py ├── UVXY data using True Lin Reg.png ├── UVXY data using scikit-learn.png └── linear-svc-machine-learning.py ├── Screener ├── QMAScreener.py └── README.md ├── Sentiment ├── README.md ├── analyse.py ├── getSentiment.py ├── headlines.json ├── headlines.py ├── stocktwits.json ├── stocktwits.py └── tickers.txt ├── readme ├── AEIS-feb20.png ├── FB-feb20.png ├── figure_1-1.png ├── figure_1-2.png ├── figure_1-3.png ├── figure_1-4.png └── figure_1.png └── requirements.txt /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- 1 | name: "Code scanning - action" 2 | 3 | on: 4 | push: 5 | branches: [master, ] 6 | pull_request: 7 | # The branches below must be a subset of the branches above 8 | branches: [master] 9 | schedule: 10 | - cron: '0 4 * * 5' 11 | 12 | jobs: 13 | CodeQL-Build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - name: Checkout repository 19 | uses: actions/checkout@v2 20 | with: 21 | # We must fetch at least the immediate parents so that if this is 22 | # a pull request then we can checkout the head. 23 | fetch-depth: 2 24 | 25 | # If this run was triggered by a pull request event, then checkout 26 | # the head of the pull request instead of the merge commit. 27 | - run: git checkout HEAD^2 28 | if: ${{ github.event_name == 'pull_request' }} 29 | 30 | # Initializes the CodeQL tools for scanning. 31 | - name: Initialize CodeQL 32 | uses: github/codeql-action/init@v1 33 | # Override language selection by uncommenting this and choosing your languages 34 | # with: 35 | # languages: go, javascript, csharp, python, cpp, java 36 | 37 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). 38 | # If this step fails, then you should remove it and run the build manually (see below) 39 | - name: Autobuild 40 | uses: github/codeql-action/autobuild@v1 41 | 42 | # ℹ️ Command-line programs to run using the OS shell. 43 | # 📚 https://git.io/JvXDl 44 | 45 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines 46 | # and modify them (or add more) to build your code if your project 47 | # uses a compiled language 48 | 49 | #- run: | 50 | # make bootstrap 51 | # make release 52 | 53 | - name: Perform CodeQL Analysis 54 | uses: github/codeql-action/analyze@v1 55 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *,cover 47 | .hypothesis/ 48 | 49 | # Translations 50 | *.mo 51 | *.pot 52 | 53 | # Django stuff: 54 | *.log 55 | local_settings.py 56 | 57 | # Flask stuff: 58 | instance/ 59 | .webassets-cache 60 | 61 | # Scrapy stuff: 62 | .scrapy 63 | 64 | # Sphinx documentation 65 | docs/_build/ 66 | 67 | # PyBuilder 68 | target/ 69 | 70 | # Jupyter Notebook 71 | .ipynb_checkpoints 72 | 73 | # pyenv 74 | .python-version 75 | 76 | # celery beat schedule file 77 | celerybeat-schedule 78 | 79 | # SageMath parsed files 80 | *.sage.py 81 | 82 | # dotenv 83 | .env 84 | 85 | # virtualenv 86 | .venv 87 | venv/ 88 | ENV/ 89 | 90 | # Spyder project settings 91 | .spyderproject 92 | .spyproject 93 | 94 | # Rope project settings 95 | .ropeproject 96 | 97 | # mkdocs documentation 98 | /site 99 | 100 | # non commit 101 | trendy.py 102 | test.py 103 | strats.py 104 | *.xls 105 | *.xlsx 106 | *.csv 107 | *.json 108 | .DS_Store 109 | 110 | nocommit/ -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # These owners will be the default owners for everything in the repo. 2 | * @Vaibhav 3 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, sex characteristics, gender identity and expression, 9 | level of experience, education, socio-economic status, nationality, personal 10 | appearance, race, religion, or sexual identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at vkhaitan@uwaterloo.ca. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | 75 | For answers to common questions about this code of conduct, see 76 | https://www.contributor-covenant.org/faq 77 | -------------------------------------------------------------------------------- /DEPRECATED/Graphers/SPY.py: -------------------------------------------------------------------------------- 1 | import datetime 2 | import numpy as np 3 | import matplotlib.colors as colors 4 | import matplotlib.finance as finance 5 | import matplotlib.dates as mdates 6 | import matplotlib.ticker as mticker 7 | import matplotlib.mlab as mlab 8 | import matplotlib.pyplot as plt 9 | import matplotlib.font_manager as font_manager 10 | 11 | 12 | startdate = datetime.date(2016, 1, 1) 13 | today = enddate = datetime.date.today() 14 | ticker = 'SPY' 15 | 16 | 17 | fh = finance.fetch_historical_yahoo(ticker, startdate, enddate) 18 | # a numpy record array with fields: date, open, high, low, close, volume, adj_close) 19 | 20 | r = mlab.csv2rec(fh) 21 | fh.close() 22 | r.sort() 23 | 24 | 25 | def moving_average(x, n, type='simple'): 26 | """ 27 | compute an n period moving average. 28 | 29 | type is 'simple' | 'exponential' 30 | 31 | """ 32 | x = np.asarray(x) 33 | if type == 'simple': 34 | weights = np.ones(n) 35 | else: 36 | weights = np.exp(np.linspace(-1., 0., n)) 37 | 38 | weights /= weights.sum() 39 | 40 | a = np.convolve(x, weights, mode='full')[:len(x)] 41 | a[:n] = a[n] 42 | return a 43 | 44 | 45 | def relative_strength(prices, n=14): 46 | """ 47 | compute the n period relative strength indicator 48 | http://stockcharts.com/school/doku.php?id=chart_school:glossary_r#relativestrengthindex 49 | http://www.investopedia.com/terms/r/rsi.asp 50 | """ 51 | 52 | deltas = np.diff(prices) 53 | seed = deltas[:n+1] 54 | up = seed[seed >= 0].sum()/n 55 | down = -seed[seed < 0].sum()/n 56 | rs = up/down 57 | rsi = np.zeros_like(prices) 58 | rsi[:n] = 100. - 100./(1. + rs) 59 | 60 | for i in range(n, len(prices)): 61 | delta = deltas[i - 1] # cause the diff is 1 shorter 62 | 63 | if delta > 0: 64 | upval = delta 65 | downval = 0. 66 | else: 67 | upval = 0. 68 | downval = -delta 69 | 70 | up = (up*(n - 1) + upval)/n 71 | down = (down*(n - 1) + downval)/n 72 | 73 | rs = up/down 74 | rsi[i] = 100. - 100./(1. + rs) 75 | 76 | return rsi 77 | 78 | 79 | def moving_average_convergence(x, nslow=26, nfast=12): 80 | """ 81 | compute the MACD (Moving Average Convergence/Divergence) using a fast and slow exponential moving avg' 82 | return value is emaslow, emafast, macd which are len(x) arrays 83 | """ 84 | emaslow = moving_average(x, nslow, type='exponential') 85 | emafast = moving_average(x, nfast, type='exponential') 86 | return emaslow, emafast, emafast - emaslow 87 | 88 | 89 | plt.rc('axes', grid=True) 90 | plt.rc('grid', color='0.75', linestyle='-', linewidth=0.5) 91 | 92 | textsize = 9 93 | left, width = 0.1, 0.8 94 | rect1 = [left, 0.7, width, 0.2] 95 | rect2 = [left, 0.3, width, 0.4] 96 | rect3 = [left, 0.1, width, 0.2] 97 | 98 | 99 | fig = plt.figure(facecolor='white') 100 | axescolor = '#f6f6f6' # the axes background color 101 | 102 | ax1 = fig.add_axes(rect1, axisbg=axescolor) # left, bottom, width, height 103 | ax2 = fig.add_axes(rect2, axisbg=axescolor, sharex=ax1) 104 | ax2t = ax2.twinx() 105 | ax3 = fig.add_axes(rect3, axisbg=axescolor, sharex=ax1) 106 | 107 | 108 | # plot the relative strength indicator 109 | prices = r.adj_close 110 | rsi = relative_strength(prices) 111 | fillcolor = 'darkgoldenrod' 112 | 113 | ax1.plot(r.date, rsi, color=fillcolor) 114 | ax1.axhline(70, color=fillcolor) 115 | ax1.axhline(30, color=fillcolor) 116 | ax1.fill_between(r.date, rsi, 70, where=(rsi >= 70), facecolor=fillcolor, edgecolor=fillcolor) 117 | ax1.fill_between(r.date, rsi, 30, where=(rsi <= 30), facecolor=fillcolor, edgecolor=fillcolor) 118 | ax1.text(0.6, 0.9, '>70 = overbought', va='top', transform=ax1.transAxes, fontsize=textsize) 119 | ax1.text(0.6, 0.1, '<30 = oversold', transform=ax1.transAxes, fontsize=textsize) 120 | ax1.set_ylim(0, 100) 121 | ax1.set_yticks([30, 70]) 122 | ax1.text(0.025, 0.95, 'RSI (14)', va='top', transform=ax1.transAxes, fontsize=textsize) 123 | ax1.set_title('%s daily' % ticker) 124 | 125 | # plot the price and volume data 126 | dx = r.adj_close - r.close 127 | low = r.low + dx 128 | high = r.high + dx 129 | 130 | deltas = np.zeros_like(prices) 131 | deltas[1:] = np.diff(prices) 132 | up = deltas > 0 133 | ax2.vlines(r.date[up], low[up], high[up], color='black', label='_nolegend_') 134 | ax2.vlines(r.date[~up], low[~up], high[~up], color='black', label='_nolegend_') 135 | ma20 = moving_average(prices, 20, type='simple') 136 | ma50 = moving_average(prices, 50, type='simple') 137 | 138 | linema20, = ax2.plot(r.date, ma20, color='blue', lw=2, label='MA (20)') 139 | linema50, = ax2.plot(r.date, ma50, color='red', lw=2, label='MA (50)') 140 | 141 | 142 | last = r[-1] 143 | s = '%s O:%1.2f H:%1.2f L:%1.2f C:%1.2f, V:%1.1fM Chg:%+1.2f' % ( 144 | today.strftime('%d-%b-%Y'), 145 | last.open, last.high, 146 | last.low, last.close, 147 | last.volume*1e-6, 148 | last.close - last.open) 149 | t4 = ax2.text(0.3, 0.9, s, transform=ax2.transAxes, fontsize=textsize) 150 | 151 | props = font_manager.FontProperties(size=10) 152 | leg = ax2.legend(loc='center left', shadow=True, fancybox=True, prop=props) 153 | leg.get_frame().set_alpha(0.5) 154 | 155 | 156 | volume = (r.close*r.volume)/1e6 # dollar volume in millions 157 | vmax = volume.max() 158 | poly = ax2t.fill_between(r.date, volume, 0, label='Volume', facecolor=fillcolor, edgecolor=fillcolor) 159 | ax2t.set_ylim(0, 5*vmax) 160 | ax2t.set_yticks([]) 161 | 162 | 163 | # compute the MACD indicator 164 | fillcolor = 'darkslategrey' 165 | nslow = 26 166 | nfast = 12 167 | nema = 9 168 | emaslow, emafast, macd = moving_average_convergence(prices, nslow=nslow, nfast=nfast) 169 | ema9 = moving_average(macd, nema, type='exponential') 170 | ax3.plot(r.date, macd, color='black', lw=2) 171 | ax3.plot(r.date, ema9, color='blue', lw=1) 172 | ax3.fill_between(r.date, macd - ema9, 0, alpha=0.5, facecolor=fillcolor, edgecolor=fillcolor) 173 | 174 | 175 | ax3.text(0.025, 0.95, 'MACD (%d, %d, %d)' % (nfast, nslow, nema), va='top', 176 | transform=ax3.transAxes, fontsize=textsize) 177 | 178 | #ax3.set_yticks([]) 179 | # turn off upper axis tick labels, rotate the lower ones, etc 180 | for ax in ax1, ax2, ax2t, ax3: 181 | if ax != ax3: 182 | for label in ax.get_xticklabels(): 183 | label.set_visible(False) 184 | else: 185 | for label in ax.get_xticklabels(): 186 | label.set_rotation(30) 187 | label.set_horizontalalignment('right') 188 | 189 | ax.fmt_xdata = mdates.DateFormatter('%Y-%m-%d') 190 | 191 | 192 | class MyLocator(mticker.MaxNLocator): 193 | def __init__(self, *args, **kwargs): 194 | mticker.MaxNLocator.__init__(self, *args, **kwargs) 195 | 196 | def __call__(self, *args, **kwargs): 197 | return mticker.MaxNLocator.__call__(self, *args, **kwargs) 198 | 199 | # at most 5 ticks, pruning the upper and lower so they don't overlap 200 | # with other ticks 201 | #ax2.yaxis.set_major_locator(mticker.MaxNLocator(5, prune='both')) 202 | #ax3.yaxis.set_major_locator(mticker.MaxNLocator(5, prune='both')) 203 | 204 | ax2.yaxis.set_major_locator(MyLocator(5, prune='both')) 205 | ax3.yaxis.set_major_locator(MyLocator(5, prune='both')) 206 | 207 | plt.show() 208 | -------------------------------------------------------------------------------- /DEPRECATED/Graphers/Stock Vs. Volume.py: -------------------------------------------------------------------------------- 1 | 2 | import csv 3 | import matplotlib.pyplot as plt 4 | import numpy as np 5 | 6 | 7 | months = ['January', 'February', 'March', 'April', 'May', 'June', 8 | 'July', 'August', 'September', 'October', 'November', 'December'] * 5 9 | 10 | 11 | # 1346518700 12 | 13 | print("Make sure scraped data file is in the same directory as this script") 14 | 15 | filename = input('\nEnter name of file with scraped data: \n') 16 | nos = input('Enter name of stock: \n') 17 | 18 | if filename.endswith('.csv'): 19 | print('\n') 20 | else: 21 | filename = filename + '.csv' 22 | 23 | f = open(filename) 24 | stock = csv.reader(f) 25 | stock.next() 26 | 27 | close_prices = [] 28 | volume = [] 29 | 30 | for row in stock: 31 | 32 | x = float(row[4]) 33 | close_prices.append(float("{0:.2f}".format(x))) 34 | volume.append(float(row[5]) / 100000) 35 | 36 | plt.plot(close_prices, '.r-') 37 | plt.plot(volume, 'b:') 38 | plt.title(nos) 39 | plt.subplots_adjust(bottom=0.13) 40 | plt.subplots_adjust(top=0.92) 41 | plt.subplots_adjust(left=0.07) 42 | plt.subplots_adjust(right=0.96) 43 | 44 | plt.xticks([w * 20 for w in range(50)], 45 | [months[w] for w in range(50)]) 46 | plt.xticks(rotation=90) 47 | plt.autoscale(enable=True, axis='both') 48 | plt.grid() 49 | plt.show() 50 | -------------------------------------------------------------------------------- /DEPRECATED/Scrapers/README.md: -------------------------------------------------------------------------------- 1 | To run: ``` python 'Single Stock Scraper.py' ``` 2 | -------------------------------------------------------------------------------- /DEPRECATED/Scrapers/Yahoo Finance Multi Stock Scraper.py: -------------------------------------------------------------------------------- 1 | ############## 2 | ''' 3 | Author: Vaibhav Khaitan 4 | Date: July 2016 5 | Scrape Stock data using Yahoo Finance API 6 | Script asks user for Stock symbol and starting year 7 | Script outputs a CSV file with open/high/low/close/volume for given stock 8 | ''' 9 | ############## 10 | 11 | import datetime 12 | import pandas as pd 13 | import csv 14 | import os 15 | import matplotlib.pyplot as plt 16 | import matplotlib.dates as mdates 17 | from pandas import DataFrame 18 | from pandas_datareader import data as dr 19 | from pyalgotrade.barfeed import yahoofeed 20 | 21 | # NYSE TOP 40 Stocks 22 | # Read 2 stocks 23 | 24 | f = open('stock.txt', 'r') 25 | symbols_list = [f.readline()[:-1], f.readline()] 26 | 27 | print(symbols_list) 28 | 29 | if os.path.isfile(symbols_list[0] + '-' + symbols_list[1] + '.csv') == False: 30 | symbols = [] 31 | now = datetime.datetime.now() 32 | is_today = 0 33 | for ticker in symbols_list: 34 | print(ticker) 35 | i, j = 1, 1 36 | for i in range(1, 13): 37 | print(i) 38 | if (is_today == 1): 39 | break 40 | 41 | for j in range(1, 21): 42 | 43 | if(now.month == i + 1 and now.day == j + 1): 44 | is_today = 1 45 | break 46 | 47 | print(j) 48 | r = DataReader(ticker, "yahoo", start=datetime.datetime(2016, i, j)) 49 | # add a symbol column 50 | r['Symbol'] = ticker 51 | symbols.append(r) 52 | j += 1 53 | 54 | i += 1 55 | 56 | # concatenate all the dataframes 57 | df = pd.concat(symbols) 58 | # create an organized cell from the new dataframe 59 | 60 | cell = df[['Symbol', 'Open', 'High', 'Low', 'Adj Close', 'Volume']] 61 | cell.reset_index().sort(['Symbol', 'Date'], ascending=[1, 1]).set_index('Symbol').to_csv( 62 | symbols_list[0] + '-' + symbols_list[1] + '.csv', date_format='%d/%m/%Y') 63 | 64 | inFile = open(symbols_list[0] + '-' + symbols_list[1] + '.csv', 'r') 65 | outFile = open(symbols_list[0] + ' to ' + symbols_list[1] + '.csv', 'w') 66 | 67 | listLine = [] 68 | 69 | for line in inFile: 70 | 71 | if line in listLine: 72 | continue 73 | else: 74 | outFile.write(line) 75 | listLine.append(line) 76 | 77 | outFile.close() 78 | inFile.close() 79 | os.remove(symbols_list[0] + '-' + symbols_list[1] + '.csv') 80 | 81 | print("Finished writing") 82 | -------------------------------------------------------------------------------- /DEPRECATED/Scrapers/finviz.py: -------------------------------------------------------------------------------- 1 | import requests 2 | from bs4 import BeautifulSoup 3 | import csv 4 | import pdb 5 | import datetime 6 | # pdb.set_trace() - python step by step debugger command 7 | print(datetime.datetime.now()) 8 | print("Finviz Financial Start") 9 | url = "http://www.finviz.com/screener.ashx?v=161&f=geo_usa" 10 | ## url = "http://www.finviz.com/screener.ashx?v=121&f=fa_eps5years_pos,fa_epsqoq_pos,fa_epsyoy_pos,fa_epsyoy1_pos,fa_estltgrowth_pos,fa_sales5years_pos,fa_salesqoq_pos,ind_stocksonly,sh_avgvol_o50,sh_curvol_o0,sh_insiderown_o10,sh_instown_o10,sh_price_o10,ta_averagetruerange_o0.25,ta_beta_u1,ta_change_u,ta_changeopen_u,ta_highlow20d_nh,ta_highlow50d_nh,ta_highlow52w_nh,ta_sma20_pa,ta_sma200_pa,ta_sma50_pa" 11 | response = requests.get(url) 12 | html = response.content 13 | soup = BeautifulSoup(html) 14 | # print("==============") 15 | # print(soup) 16 | # print("==============") 17 | firstcount = soup.find_all('select', {"id": "pageSelect"}) 18 | lastnum = len(firstcount) - 1 19 | print("==============") 20 | print(firstcount) 21 | print("==============") 22 | 23 | lastpagenum = firstcount[lastnum].attrs['value'] 24 | currentpage = int(lastpagenum) 25 | 26 | alldata = [] 27 | templist = [] 28 | # Overview = 111, Valuation = 121, Financial = 161, Ownership = 131, Performance = 141 29 | #pagesarray = [111,121,161,131,141] 30 | titleslist = soup.find_all('td', {"class": "table-top"}) 31 | titleslisttickerid = soup.find_all('td', {"class": "table-top-s"}) 32 | titleticker = titleslisttickerid[0].text 33 | titlesarray = [title.text for title in titleslist] 34 | 35 | titlesarray.insert(1, titleticker) 36 | i = 0 37 | 38 | while(currentpage > 0): 39 | i += 1 40 | print(str(i) + " page(s) done") 41 | secondurl = "http://www.finviz.com/screener.ashx?v=" + str(161) + "&f=geo_usa" + "&r=" + str(currentpage) 42 | secondresponse = requests.get(secondurl) 43 | secondhtml = secondresponse.content 44 | secondsoup = BeautifulSoup(secondhtml) 45 | stockdata = secondsoup.find_all('a', {"class": "screener-link"}) 46 | stockticker = secondsoup.find_all('a', {"class": "screener-link-primary"}) 47 | datalength = len(stockdata) 48 | tickerdatalength = len(stockticker) 49 | 50 | while(datalength > 0): 51 | templist = [stockdata[datalength - 17].text, stockticker[tickerdatalength - 1].text, stockdata[datalength - 16].text, stockdata[datalength - 15].text, stockdata[datalength - 14].text, stockdata[datalength - 13].text, stockdata[datalength - 12].text, stockdata[datalength - 11].text, stockdata[datalength - 10].text, stockdata[datalength - 9].text, stockdata[datalength - 8].text, stockdata[datalength - 7].text, stockdata[datalength - 6].text, stockdata[datalength - 5].text, stockdata[datalength - 4].text, stockdata[datalength - 3].text, stockdata[datalength - 2].text, stockdata[datalength - 1].text, ] 52 | alldata.append(templist) 53 | templist = [] 54 | datalength -= 17 55 | tickerdatalength -= 1 56 | currentpage -= 20 57 | 58 | with open('stockfinancial.csv', 'wb') as csvfile: 59 | financial = csv.DictWriter(csvfile, delimiter=',', lineterminator='\n', fieldnames=titlesarray) 60 | financial.writeheader() 61 | 62 | for stock in alldata: 63 | financial.writerow({titlesarray[0]: stock[0], titlesarray[1]: stock[1], titlesarray[2]: stock[2], titlesarray[3]: stock[3], titlesarray[4]: stock[4], titlesarray[5]: stock[5], titlesarray[6]: stock[6], titlesarray[7]: stock[7], titlesarray[8]: stock[8], titlesarray[9]: stock[9], titlesarray[10]: stock[10], titlesarray[11]: stock[11], titlesarray[12]: stock[12], titlesarray[13]: stock[13], titlesarray[14]: stock[14], titlesarray[15]: stock[15], titlesarray[16]: stock[16], titlesarray[17]: stock[17]}) 64 | 65 | print(datetime.datetime.now()) 66 | print("Finviz Financial Completed") 67 | -------------------------------------------------------------------------------- /DEPRECATED/Scrapers/stock_scraper.py: -------------------------------------------------------------------------------- 1 | ############## 2 | ''' 3 | Version 2.0 4 | Author: Vaibhav Khaitan 5 | Date: Feb 2017 6 | Scrape Stock data using Yahoo Finance API 7 | Script asks user for Stock symbol and starting year 8 | Script outputs a CSV file with open/high/low/close/volume for given stock 9 | ''' 10 | ############## 11 | 12 | import timeit 13 | import datetime 14 | import pandas as pd 15 | import shutil 16 | import csv 17 | import os 18 | import sys 19 | from yahoo_finance import Share 20 | from datetime import datetime 21 | 22 | version = sys.version_info[0] 23 | 24 | 25 | def getStockData(theTicker, startDate): 26 | stock = Share(theTicker) 27 | print("Getting Data for ... " + theTicker) 28 | now = datetime.now() 29 | DateNow = str(now.year) + "-" + str(now.month) + "-" + str(now.day) 30 | data = stock.get_historical(startDate, DateNow) 31 | stockData = [] 32 | for d in data: 33 | tmp = [] 34 | volume = int(d['Volume']) 35 | adjclose = float(d['Adj_Close']) 36 | high = float(d['High']) 37 | low = float(d['Low']) 38 | close = float(d['Close']) 39 | date = d['Date'] 40 | open = float(d['Open']) 41 | tmp.append(date) 42 | tmp.append(open) 43 | tmp.append(high) 44 | tmp.append(low) 45 | tmp.append(close) 46 | tmp.append(adjclose) 47 | tmp.append(volume) 48 | stockData.append(tmp) 49 | return stockData 50 | 51 | 52 | def writeToFile(data, f): 53 | asc = input("Do you want to write data in ascending order? (Y/N) \n") 54 | 55 | if asc.startswith("y") or asc.startswith("Y"): 56 | data.reverse() 57 | 58 | labels = ['Date', 'Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume'] 59 | data.insert(0, labels) 60 | tmp_df = pd.DataFrame(data) 61 | tmp_df.to_csv(f, index=False, header=False) 62 | 63 | 64 | def getInput(): 65 | # Ask user to input ticker 66 | the_stock = input('Enter Stock Ticker Code: \n') 67 | the_stock = the_stock.upper().strip() 68 | 69 | # Asks user to input starting year 70 | 71 | year = input('Enter starting year: \n') 72 | year = year.strip() 73 | 74 | now = datetime.now() 75 | f = the_stock + '_' + year + '-' + str(now.year) + '.csv' 76 | return the_stock, year, f 77 | 78 | 79 | stock, year, f = getInput() 80 | year = year + "-01-01" 81 | stockData = getStockData(stock, year) 82 | writeToFile(stockData, f) 83 | 84 | # Saves file in Datasets folder 85 | try: 86 | shutil.move(f, "Datasets/") 87 | except: 88 | print("File already exists.") 89 | 90 | print("Finished writing - Check Datasets Folder") 91 | -------------------------------------------------------------------------------- /Data/Funds.md: -------------------------------------------------------------------------------- 1 | | Fund Category | Benchmark | % of Funds that outperformed their benchmark for 3 years | % of Funds that outperformed in subsequent year | % of Funds that outperformed for 2 subsequent years | % of Funds that outperformed for 2 subsequent years | 2 | |--- |--- |--- |--- |--- |--- | 3 | | Large Cap | S&P 500 | 30.83% | 33.93% | 13.62% | 5.17% | 4 | | Mid Cap | S&P MidCap400 | 25.65% | 30.39% | 10.35% | 3.24% | 5 | | Small-Cap | S&P SmallCap 600 | 30.58% | 35.25% | 13.30% | 4.60% | 6 | | Int'l | S&P 700 | 23.89% | 36.68% | 15.66% | 6.88% | 7 | | Emerging Markets | S&P/IFCI Composite | 25.24% | 38.39% | 15.48% | 5.22% | 8 | -------------------------------------------------------------------------------- /Data/JDST-JNUG.md: -------------------------------------------------------------------------------- 1 | 2 | # JDST 3 | 4 | ## Observable Correlation 5 | 6 | 1. If DXY is bullish, JDST is bullish 7 | 8 | a. If DXY is bearish, JDST is bearish 9 | 10 | 2. XAUUSD is bearish, JDST is bullish 11 | 12 | a. XAUUSD is bullish, JDST is bearish 13 | 14 | 3. USD/JPY & Gold are inverse. (Gold = XAUUSD) 15 | -------------------------------------------------------------------------------- /Data/Yahoo Ticker Symbols - Jan 2016.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vaibhav/Stock-Analysis/d5aefe8bb783aab660ff657611e2d4303c70887a/Data/Yahoo Ticker Symbols - Jan 2016.xlsx -------------------------------------------------------------------------------- /Data/constituents-financials.csv: -------------------------------------------------------------------------------- 1 | Symbol,Name,Sector,Price,Dividend Yield,Price/Earnings,Earnings/Share,Book Value,52 week low,52 week high,Market Cap,EBITDA,Price/Sales,Price/Book,SEC Filings 2 | A,Agilent Technologies Inc,Health Care,45.48,1.04,32.35,1.38,12.79,33.12,46.68,14.8,0.844,3.53,3.47,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=A 3 | AA,Alcoa Inc,Materials,9.82,1.31,,-0.44,9.25,6.14,11.5,12.91,2.67,0.57,1.01,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AA 4 | AAL,American Airlines Group,Industrials,30.04,1.41,2.69,11.16,8.04,24.85,47.09,17.37,8.83,0.42,3.66,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AAL 5 | AAP,Advance Auto Parts,Consumer Discretionary,164.85,0.15,25.2,6.4,35.82,131.59,201.24,12.1,1.24,1.22,4.5,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AAP 6 | AAPL,Apple Inc.,Information Technology,96.68,2.36,10.76,8.98,23.81,89.47,132.97,529.56,78.5,2.31,4.03,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AAPL 7 | ABBV,AbbVie,Health Care,64.16,3.6,19.29,3.33,2.87,45.45,71.6,103.77,10.3,4.31,22.09,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ABBV 8 | ABC,AmerisourceBergen Corp,Health Care,81.92,1.68,11.98,6.84,9.78,73.31,115.41,17.68,1.75,0.12,8.28,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ABC 9 | ABT,Abbott Laboratories,Health Care,41.89,2.55,25.79,1.62,14.1,36,51.74,61.54,4.4,2.98,2.93,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ABT 10 | ACN,Accenture plc,Information Technology,115.11,1.94,19.45,5.92,11.45,88.43,120.78,71.66,5.42,2.17,9.84,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ACN 11 | ADBE,Adobe Systems Inc,Information Technology,96.79,0,54.68,1.77,14.53,71.27,100.56,48.23,1.53,8.93,6.55,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ADBE 12 | ADI,"Analog Devices, Inc.",Information Technology,57.74,3,28.03,2.06,15.86,47.24,64.16,17.75,1.23,5.07,3.53,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ADI 13 | ADM,Archer-Daniels-Midland Co,Consumer Staples,43.48,2.85,16.68,2.61,30.49,29.86,49.5,25.55,2.62,0.38,1.38,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ADM 14 | ADP,Automatic Data Processing,Information Technology,94.47,2.27,28.28,3.34,9.87,64.29,94.59,43.03,2.41,3.72,9.47,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ADP 15 | ADS,Alliance Data Systems,Information Technology,200.96,,22.65,8.87,29.51,176.63,307.78,11.84,1.52,1.78,6.68,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ADS 16 | ADSK,Autodesk Inc,Information Technology,55.14,0,,-2.32,6.39,41.6,65.78,12.39,0.0225,5.08,8.37,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ADSK 17 | AEE,Ameren Corp,Utilities,53.15,3.16,20.62,2.58,28.31,37.92,54.08,12.9,2.18,2.21,1.86,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AEE 18 | AEP,American Electric Power,Utilities,70.71,3.14,18.14,3.9,36.9,52.29,71.32,34.74,4.95,2.17,1.9,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AEP 19 | AES,AES Corp,Utilities,12.32,3.6,28.99,0.43,4.86,8.22,13.38,8.12,3.57,0.55,2.49,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AES 20 | AET,Aetna Inc,Health Care,117,0.87,17.62,6.64,47.96,92.42,125.47,41.02,5.4,0.67,2.41,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AET 21 | AFL,AFLAC Inc,Financials,72.49,2.27,11.93,6.07,48.22,51.41,72.81,30.01,4.49,1.4,1.48,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AFL 22 | AGN,Allergan plc,Health Care,240.59,0.1,21.53,11.18,183.41,195.5,340.34,95.17,6.57,5.77,1.3,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AGN 23 | AIG,"American International Group, Inc.",Financials,53.01,2.5,,-0.37,78.28,48.41,64.93,59.32,5.83,1.07,0.66,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AIG 24 | AIV,Apartment Investment & Mgmt,Financials,45.54,2.94,41.74,1.09,9.22,34.71,45.67,7.13,0.56178,7.32,4.87,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AIV 25 | AIZ,Assurant Inc,Financials,86.43,2.37,18.82,4.59,72.87,64.36,89.22,5.35,0.62009,0.53,1.16,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AIZ 26 | AJG,Arthur J. Gallagher & Co.,Financials,48.7,3.17,22.46,2.17,20.31,35.96,48.76,8.63,0.8309,1.58,2.36,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AJG 27 | AKAM,Akamai Technologies Inc,Information Technology,56.38,,31.85,1.77,17.69,39.43,76.98,9.9,0.6981,4.31,3.11,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AKAM 28 | ALB,Albemarle Corp,Materials,83.58,1.57,18.13,4.61,31.53,41.37,84.99,9.39,0.95275,2.51,2.58,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ALB 29 | ALK,Alaska Air Group Inc,Industrials,59.86,1.88,8.65,6.92,19.81,54.51,87.17,7.38,1.72,1.29,3,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ALK 30 | ALL,Allstate Corp,Financials,69.66,1.95,17,4.1,49.58,54.12,69.95,26.08,3.26,0.73,1.39,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ALL 31 | ALLE,Allegion,Industrials,69.74,0.7,40.59,1.72,0.77,52.95,69.95,6.68,0.4506,3.11,89.14,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ALLE 32 | ALXN,Alexion Pharmaceuticals,Health Care,124.42,,188.23,0.66,35.96,110.56,208.88,27.87,0.97872,10.22,3.43,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ALXN 33 | AMAT,Applied Materials Inc,Information Technology,24.93,1.65,23.08,1.08,6.03,14.25,24.97,27.15,1.98,2.77,4.03,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AMAT 34 | AME,Ametek,Industrials,45.84,0.79,18.86,2.43,14.12,42.82,57.67,10.7,1.07,2.69,3.21,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AME 35 | AMG,Affiliated Managers Group Inc,Financials,138.85,,15.55,8.93,53.3,115.97,220.72,7.47,0.916,3.02,2.52,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AMG 36 | AMGN,Amgen Inc,Health Care,161.1,2.55,17.05,9.45,38.18,130.09,181.81,121.02,10.99,5.31,4.1,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AMGN 37 | AMP,Ameriprise Financial,Financials,90.84,3.44,10.7,8.49,42.52,76,129.22,15.06,3.28,1.23,2.07,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AMP 38 | AMT,American Tower Corp A,Financials,113.66,1.77,73.61,1.54,16.33,83.07,114.5,48.26,3.07,9.56,6.87,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AMT 39 | AMZN,Amazon.com Inc,Consumer Discretionary,745.81,,307.42,2.43,31.26,447.54,746.1,351.89,9.09,3.06,23.56,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AMZN 40 | AN,AutoNation Inc,Consumer Discretionary,50.77,,13.28,3.82,20.28,40.45,66.63,5.23,0.9987,0.24,2.4,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AN 41 | ANTM,Anthem Inc.,Health Care,132.15,2.01,14.87,8.89,89.59,115.63,161.8,34.75,5.6,0.42,1.44,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ANTM 42 | AON,Aon plc,Financials,109.57,1.21,22.39,4.89,19.94,83.83,110.17,29.03,2.54,2.49,5.46,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AON 43 | APA,Apache Corporation,Energy,55.17,1.82,,-50.15,5.33,32.2,59.59,20.88,3.18,3.66,10.3,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=APA 44 | APC,Anadarko Petroleum Corp,Energy,55.91,0.36,,-8.77,22.9,28.16,78.59,28.54,2.52,3.3,2.41,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=APC 45 | APD,Air Products & Chemicals Inc,Materials,144.35,2.46,56.99,2.53,32.01,114.64,152.16,31.19,2.98,3.16,4.36,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=APD 46 | APH,Amphenol Corp A,Industrials,57.36,1.01,24.5,2.34,11.01,44.5,60.17,17.66,1.31,3.04,5.1,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=APH 47 | ATVI,Activision Blizzard,Information Technology,41.29,0.64,37.06,1.11,11.31,24.04,41.32,30.48,1.59,6.16,3.57,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ATVI 48 | AVB,"AvalonBay Communities, Inc.",Financials,184.94,2.99,32.5,5.69,71.79,159.3,192.29,25.37,1.26,12.68,2.52,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AVB 49 | AVGO,Avago Technologies,Information Technology,155.14,1.32,,-0.69,49.9,100,166,61.36,3.51,6.72,3.03,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AVGO 50 | AVY,Avery Dennison Corp,Materials,73.3,2.27,23.31,3.14,10.85,53.56,77.38,6.54,0.7115,1.09,6.65,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AVY 51 | AWK,American Water Works Company Inc,Utilities,83.36,1.66,31.33,2.66,28.59,50.16,85.24,14.81,1.53,4.58,2.89,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AWK 52 | AXP,American Express Co,Financials,61.49,1.95,12.28,5.01,21.8,50.27,81.66,58.48,0,1.84,2.74,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AXP 53 | AYI,Acuity Brands Inc,Industrials,264.62,0.21,43.23,6.12,36.5,168.33,265.1,11.51,0.5365,3.53,6.95,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AYI 54 | AZO,AutoZone Inc,Consumer Discretionary,815.02,,20.71,39.36,-63.16,667,815.45,23.82,2.32,2.22,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AZO 55 | BA,Boeing Company,Industrials,130.09,3.43,17.58,7.4,6.32,102.1,150.59,82.87,8.78,0.84,20.13,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BA 56 | BAC,Bank of America Corp,Financials,13.17,1.56,10.35,1.27,23.12,10.99,18.48,138.5,0,1.76,0.56,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BAC 57 | BAX,Baxter International Inc.,Health Care,46.65,1.14,6.55,7.13,16.36,32.18,46.95,25.76,1.58,2.56,2.82,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BAX 58 | BBBY,Bed Bath & Beyond,Consumer Discretionary,44.46,1.15,8.87,5.1,16.74,41.15,69.69,6.72,1.64,0.54,2.59,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BBBY 59 | BBT,BB&T Corporation,Financials,35.22,3.25,13.75,2.56,32.14,29.95,41.9,27.56,0,2.91,1.08,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BBT 60 | BBY,Best Buy Co. Inc.,Consumer Discretionary,30.95,3.66,10.64,2.56,13.66,25.31,39.1,9.99,2.41,0.25,2.24,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BBY 61 | BCR,Bard (C.R.) Inc.,Health Care,239,0.44,161.6,1.48,19.91,172.21,239.34,17.52,1.04,5.05,11.94,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BCR 62 | BDX,Becton Dickinson,Health Care,175.64,1.53,46.95,3.74,36.13,128.87,176.24,37.27,3.18,3,4.79,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BDX 63 | BEN,Franklin Resources,Financials,33.98,2.21,12.31,2.76,20.08,30.56,49.64,19.88,2.76,2.63,1.62,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BEN 64 | BF-B,Brown-Forman Corporation,Consumer Staples,98.27,1.6,18.83,3.31,7.9,90.02,111.06,19.35,1.11,6.19,12.29,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BF-B 65 | BHI,Baker Hughes Inc,Energy,43.69,1.56,,-5.37,34.98,37.58,61.7,19.13,1.39,1.38,1.24,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BHI 66 | BIIB,BIOGEN IDEC Inc.,Health Care,251.3,,15.44,16.27,47.14,223.02,412.24,55.05,5.88,4.95,5.25,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BIIB 67 | BK,The Bank of New York Mellon Corp.,Financials,38.49,1.8,13.9,2.77,33.34,32.2,45.45,41.46,0,2.72,1.13,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BK 68 | BLK,BlackRock,Financials,345.2,2.73,18.29,18.88,171.9,275,369.33,57.02,4.88,4.9,1.95,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BLK 69 | BLL,Ball Corp,Materials,71.62,0.74,76.68,0.93,7.54,57.95,76.69,10.15,1.07,1.28,9.39,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BLL 70 | BMY,Bristol-Myers Squibb,Health Care,75.28,2.06,80.86,0.93,8.62,51.82,75.72,125.67,4.98,7.31,8.6,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BMY 71 | BRK-B,Berkshire Hathaway,Financials,143.65,,14.45,9.94,157329,123.55,148.03,0.23602,45.2,0,0,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BRK-B 72 | BSX,Boston Scientific,Health Care,23.9,,,-0.03,4.77,14.18,23.97,32.43,1.94,4.23,4.96,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BSX 73 | BWA,BorgWarner,Consumer Discretionary,30.57,1.77,11.51,2.66,16.97,27.52,54.91,6.65,1.4,0.77,1.73,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BWA 74 | BXP,Boston Properties,Financials,133.32,1.98,35.18,3.79,36.13,94.91,133.62,20.48,1.55,7.84,3.6,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=BXP 75 | C,Citigroup Inc.,Financials,41.98,0.46,8.39,5,71.47,34.52,60.95,123.21,0,1.81,0.58,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=C 76 | CA,"CA, Inc.",Information Technology,33.77,3.19,18.63,1.81,13.03,25.16,33.8,14.07,1.26,3.43,2.54,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CA 77 | CAG,ConAgra Foods Inc.,Consumer Staples,48.3,2.11,,-1.56,8.67,37.97,48.81,21.15,1.26,1.79,5.51,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CAG 78 | CAH,Cardinal Health Inc.,Health Care,80.38,2.26,19.24,4.18,20.59,73.25,91.23,26.19,3.06,0.22,3.86,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CAH 79 | CAT,Caterpillar Inc.,Industrials,77.37,4.1,40.7,1.9,26.85,56.36,84.89,45.17,6.17,1,2.8,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CAT 80 | CB,Chubb Limited,Financials,130.24,0,18.02,7.23,98.86,96,131,60.49,3.71,2.79,1.3,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CB 81 | CBG,CBRE Group,Financials,26.2,,16.49,1.59,8.44,22.74,38.76,8.75,1.1,0.71,2.92,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CBG 82 | CBS,CBS Corp.,Consumer Discretionary,57.08,1.07,18.31,3.12,12.08,38.51,57.89,25.86,3.22,1.79,4.65,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CBS 83 | CCI,Crown Castle International Corp.,Financials,102.2,3.92,24.41,4.19,21.41,75.71,102.82,34.15,2.03,9.17,4.74,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CCI 84 | CCL,Carnival Corp.,Consumer Discretionary,44.52,3.19,15.34,2.9,30.59,40.52,55.77,33.17,4.15,2.05,1.43,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CCL 85 | CELG,Celgene Corp.,Health Care,105.03,,51.08,2.06,6.55,92.98,140.72,81.36,3.24,8.35,15.94,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CELG 86 | CERN,Cerner,Health Care,60.62,,36.74,1.65,11.59,49.59,75,20.49,1.25,4.48,5.14,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CERN 87 | CF,CF Industries Holdings Inc,Materials,24.86,5.11,11.8,2.11,17.34,22.75,70.32,5.79,1.57,1.26,1.36,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CF 88 | CFG,Citizens Financial Group,Financials,19.85,2.53,12.56,1.58,37.28,18.04,28.18,10.5,0,2.27,0.52,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CFG 89 | CHD,Church & Dwight,Consumer Staples,101.3,1.4,32.37,3.13,14.98,76.85,107.36,13,0.7934,3.76,6.72,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CHD 90 | CHK,Chesapeake Energy,Energy,4.24,0,,-33.88,-2.56,1.5,11.69,2.86,1.63,0.25,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CHK 91 | CHRW,C. H. Robinson Worldwide,Industrials,74.43,2.37,20.61,3.61,8.33,59.71,76.1,10.63,0.93275,0.79,8.8,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CHRW 92 | CI,CIGNA Corp.,Health Care,129.6,0.03,16.2,8,49.44,121.87,158,33.24,3.99,0.85,2.57,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CI 93 | CINF,Cincinnati Financial,Financials,75.7,2.56,18.07,4.19,40.97,49.72,75.77,12.45,1.08,2.36,1.83,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CINF 94 | CL,Colgate-Palmolive,Consumer Staples,74.25,2.13,48.98,1.52,-0.41,50.84,74.27,66.31,4.34,4.17,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CL 95 | CLX,The Clorox Company,Consumer Staples,138.37,2.33,27.04,5.12,2,106,140.47,17.9,1.24,3.11,68.66,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CLX 96 | CMA,Comerica Inc.,Financials,41.5,2.21,16.89,2.46,43.65,30.48,50.76,7.27,0,2.85,0.93,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CMA 97 | CMCSA,Comcast A Corp,Consumer Discretionary,67.11,1.77,20.34,3.3,21.69,50,67.18,162.89,25.29,2.13,3.06,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CMCSA 98 | CME,CME Group Inc.,Financials,98.9,2.45,26.03,3.8,61.8,81.87,100.87,33.49,2.33,9.72,1.59,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CME 99 | CMG,Chipotle Mexican Grill,Consumer Discretionary,399.71,,38.02,10.51,52.48,384.77,758.61,11.67,0.66491,2.69,7.45,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CMG 100 | CMI,Cummins Inc.,Industrials,114.7,3.53,15.16,7.57,40.8,79.88,131.28,19.45,2.49,1.01,2.73,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CMI 101 | CMS,CMS Energy,Utilities,45.51,2.69,25.98,1.75,14.72,31.86,46.25,12.7,1.71,2.06,3.08,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CMS 102 | CNC,Centene Corporation,Health Care,70.93,,31.98,2.22,31.08,47.36,75.69,12.09,0.957,0.51,2.22,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CNC 103 | CNP,CenterPoint Energy,Utilities,23.9,4.38,,-1.55,8.14,16.05,24.2,10.29,1.94,1.46,2.89,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CNP 104 | COF,Capital One Financial,Financials,64.71,2.59,9.38,6.9,91.13,58.03,92.1,33.88,0,1.72,0.68,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=COF 105 | COG,Cabot Oil & Gas,Energy,25.44,0.31,,-0.5,6.33,14.88,30.38,11.83,0.47815,10.43,4.02,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=COG 106 | COH,Coach Inc.,Consumer Discretionary,41.56,3.38,29.64,1.4,9.45,27.22,42.13,11.55,0.9447,2.6,4.29,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=COH 107 | COL,Rockwell Collins,Industrials,84.1,1.6,16.76,5.02,15.21,76.03,95.11,10.95,1.17,2.09,5.44,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=COL 108 | COP,ConocoPhillips,Energy,42.3,4.49,,-4.98,31.56,31.05,59.74,52.38,5.11,1.88,1.32,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=COP 109 | COST,Costco Co.,Consumer Staples,165.44,1.15,31.27,5.22,26.25,117.03,169.73,72.47,4.83,0.61,6.24,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=COST 110 | CPB,Campbell Soup,Consumer Staples,67.1,1.87,30.42,2.21,5.42,45.23,67.89,20.71,1.59,2.59,12.32,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CPB 111 | CRM,Salesforce.com,Information Technology,80.89,,,-0.02,8.24,52.6,84.48,54.8,0.5223,7.54,9.56,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CRM 112 | CSCO,Cisco Systems,Information Technology,29.26,3.62,14.49,2.02,12.39,22.46,29.49,147.17,14.43,2.92,2.32,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CSCO 113 | CSRA,CSRA Inc.,Information Technology,24.01,1.69,45.3,0.53,0.4,20.98,33.44,3.92,0.48777,0.91,60.03,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CSRA 114 | CSX,CSX Corp.,Industrials,26.53,2.77,13.8,1.92,12.13,21.33,33.1,25.36,4.67,2.17,2.13,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CSX 115 | CTAS,Cintas Corporation,Industrials,99.63,1.06,16.87,5.91,18.21,78,99.78,10.66,0.91824,2.21,5.42,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CTAS 116 | CTL,CenturyLink Inc,Telecommunications Services,30.22,7.32,17.98,1.68,25.7,21.94,32.94,16.5,6.8,0.9,1.14,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CTL 117 | CTSH,Cognizant Technology Solutions,Information Technology,57.93,,21.07,2.75,15.86,51.22,69.8,35.1,2.54,2.71,3.58,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CTSH 118 | CTXS,Citrix Systems,Information Technology,83.54,,35.46,2.36,13.38,60.91,90,12.96,0.93131,3.75,6.03,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CTXS 119 | CVS,CVS Health,Consumer Staples,96.74,1.77,21.03,4.6,33.33,81.37,113.65,103.9,12.09,0.64,2.87,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CVS 120 | CVX,Chevron Corp.,Energy,104.77,4.15,151.62,0.69,79.75,69.58,105,197.46,16.31,1.71,1.29,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CVX 121 | CXO,Concho Resources,Energy,118.39,,,-7.79,47.25,69.94,130.03,15.43,1.56,9.02,2.45,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=CXO 122 | D,Dominion Resources,Utilities,78.19,3.61,24.66,3.17,21.58,64.54,78.97,48.18,5.28,4.26,3.59,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=D 123 | DAL,Delta Air Lines,Industrials,37.37,1.52,6.26,5.97,14.54,32.6,52.77,28.92,9.13,0.69,2.5,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DAL 124 | DD,Du Pont (E.I.),Materials,63.69,2.45,26.53,2.4,11.62,47.11,75.72,55.63,4.06,2.19,5.33,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DD 125 | DE,Deere & Co.,Industrials,80.97,2.87,16.25,4.98,22.8,70.16,97.56,25.45,3.78,0.9,3.48,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DE 126 | DFS,Discover Financial Services,Financials,54.98,2.12,10.58,5.2,25.97,42.86,59.88,22.66,0,3.03,2.05,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DFS 127 | DG,Dollar General,Consumer Discretionary,94.32,1.07,22.76,4.14,18.99,59.75,94.68,26.77,2.36,1.28,4.94,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DG 128 | DGX,Quest Diagnostics,Health Care,82.23,1.97,15.94,5.16,32.88,59.66,82.42,11.63,1.48,1.53,2.47,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DGX 129 | DHI,D. R. Horton,Consumer Discretionary,33.82,1.09,15.53,2.18,16.85,22.97,33.97,12.54,1.31,1.08,1.95,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DHI 130 | DHR,Danaher Corp.,Industrials,80.86,0.79,16.02,5.05,35.59,77.34,102.79,55.69,4.91,2.61,2.27,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DHR 131 | DIS,The Walt Disney Company,Consumer Discretionary,99.62,1.44,18.34,5.43,25.95,86.25,122.08,161.63,16.72,2.91,3.79,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DIS 132 | DISCA,Discovery Communications-A,Consumer Discretionary,25.62,,15.76,1.63,8.64,23.66,34.94,10.98,2.43,1.7,2.94,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DISCA 133 | DISCK,Discovery Communications-C,Consumer Discretionary,24.44,,15.03,1.63,8.64,22.43,32.78,10.47,2.43,1.62,2.8,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DISCK 134 | DLPH,Delphi Automotive,Consumer Discretionary,64.85,1.9,11.03,5.88,8.28,55.59,88.89,17.7,2.54,1.11,7.57,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DLPH 135 | DLR,Digital Realty Trust,Financials,110.24,3.14,101.23,1.09,21.23,60.66,113.21,16.19,0.93741,8.53,5.14,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DLR 136 | DLTR,Dollar Tree,Consumer Discretionary,95.08,,49.55,1.92,19.82,60.31,96,22.41,2.01,1.21,4.77,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DLTR 137 | DNB,Dun & Bradstreet,Industrials,123.82,1.57,28.56,4.34,-30.89,85.99,128.87,4.49,0.4157,2.7,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DNB 138 | DO,Diamond Offshore Drilling,Energy,24.5,0,49,0.5,30.58,14.18,26.72,3.36,1.05,1.49,0.79,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DO 139 | DOV,Dover Corp.,Industrials,70.34,2.44,14.58,4.82,23.84,50.91,72.36,10.91,1.26,1.55,2.88,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DOV 140 | DOW,Dow Chemical,Materials,49.4,3.82,9.43,5.24,19.24,35.11,57.1,55.47,8.53,1.15,2.51,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DOW 141 | DPS,Dr Pepper Snapple Group,Consumer Staples,97.13,2.19,23.55,4.12,11.26,72,98.4,18.05,1.56,2.85,8.62,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DPS 142 | DRI,Darden Restaurants,Consumer Discretionary,62.03,3.6,21.4,2.63,15.44,53.38,75.6,7.84,0.9182,1.13,4.02,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DRI 143 | DTE,DTE Energy Co.,Utilities,99.14,2.97,25.45,3.89,49.53,74.56,100.45,17.79,2,1.78,1.98,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DTE 144 | DUK,Duke Energy,Utilities,86.01,3.87,22.46,3.83,57.9,65.5,87.31,59.25,9.13,2.6,1.47,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DUK 145 | DVA,DaVita Inc.,Health Care,78.07,,35.02,2.23,22.79,61.36,81.89,16.12,2.52,1.13,3.38,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DVA 146 | DVN,Devon Energy Corp.,Energy,37.58,0.65,,-32.82,12.23,18.07,56.47,19.69,2.8,1.64,3.01,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=DVN 147 | EA,Electronic Arts,Information Technology,78.26,,22.36,3.5,11.3,53.01,78.5,23.6,1.08,5.26,6.78,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=EA 148 | EBAY,eBay Inc.,Information Technology,24.61,,18.8,1.31,5.53,21.52,29.83,28.27,2.98,3.17,4.33,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=EBAY 149 | ECL,Ecolab Inc.,Materials,119.2,1.19,35.89,3.32,22.44,98.62,122.48,34.96,2.89,2.58,5.24,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ECL 150 | ED,Consolidated Edison,Utilities,80.38,3.29,20.93,3.84,44.87,60.08,81.88,23.63,3.49,1.94,1.78,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ED 151 | EFX,Equifax Inc.,Financials,132.24,1.01,36.02,3.67,20.9,90.94,132.67,15.74,0.9224,5.66,6.24,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=EFX 152 | EIX,Edison Int'l,Utilities,78.17,2.49,25.94,3.01,35.11,56.68,78.72,25.47,3.67,2.19,2.19,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=EIX 153 | EL,Estee Lauder Cos.,Consumer Staples,93.01,1.31,29.99,3.1,10.32,73.67,97.48,34.34,2.11,3.03,8.87,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=EL 154 | EMC,EMC Corp.,Information Technology,27.51,1.68,26.76,1.03,11.05,22.66,28.77,53.73,4.79,2.17,2.47,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=EMC 155 | EMN,Eastman Chemical,Materials,68.52,2.75,11.04,6.21,28.44,56.03,80.39,10.13,2.26,1.05,2.36,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=EMN 156 | EMR,Emerson Electric Company,Industrials,53.44,3.63,18.3,2.92,11.96,41.25,56.82,34.38,4,1.61,4.38,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=EMR 157 | ENDP,Endo International,Health Care,17.42,,,-7.39,26.61,12.56,88.54,3.88,0.57554,1.09,0.65,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ENDP 158 | EOG,EOG Resources,Energy,82.54,0.82,,-8.84,22.55,57.15,89.52,45.42,2.8,5.75,3.62,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=EOG 159 | EQIX,Equinix,Information Technology,389.45,1.81,298.66,1.3,69.41,250.86,390.74,27.04,1.21,9.08,5.51,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=EQIX 160 | EQR,Equity Residential,Financials,70.5,2.91,6.05,11.66,30.17,61.9,82.39,25.77,1.75,9.39,2.3,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=EQR 161 | EQT,EQT Corporation,Energy,77.68,0.16,,-0.54,34.19,47.1,80.61,12.47,1.38,7.18,2.25,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=EQT 162 | ES,Eversource Energy,Utilities,59.57,3,21.82,2.73,32.91,45.14,60.44,18.9,2.44,2.51,1.8,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ES 163 | ESRX,Express Scripts,Health Care,77.92,,20.51,3.8,23.46,65.55,94.61,49.29,6.79,0.48,3.26,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ESRX 164 | ESS,Essex Property Trust Inc,Financials,231.33,2.8,61.49,3.76,93.88,191.25,244.71,15.14,0.83871,11.97,2.44,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ESS 165 | ETFC,E*Trade,Financials,23.59,,18.23,1.29,20.52,19.61,30.98,6.59,0,3.39,1.12,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ETFC 166 | ETN,Eaton Corporation,Industrials,61.92,3.84,15.02,4.12,33.88,46.19,66.61,28.36,3.3,1.35,1.77,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ETN 167 | ETR,Entergy Corp.,Utilities,80.88,4.22,,-1.38,52.38,61.27,82.09,14.46,3.41,1.28,1.54,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ETR 168 | EW,Edwards Lifesciences,Health Care,104.72,,44.58,2.35,10.85,62.53,112,22.18,0.7467,8.45,9.56,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=EW 169 | EXC,Exelon Corp.,Utilities,36.11,3.56,18.72,1.93,27.89,25.09,36.68,33.29,7.61,1.17,1.28,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=EXC 170 | EXPD,Expeditors Int'l,Industrials,49.92,1.62,20.95,2.38,9.8,40.41,51.8,9.09,0.75024,1.41,5.03,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=EXPD 171 | EXPE,Expedia Inc.,Consumer Discretionary,109.43,0.89,25.47,4.3,30.92,88.4,140.51,16.32,0.80018,2.23,3.48,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=EXPE 172 | EXR,Extra Space Storage,Financials,93.25,3.39,52.62,1.77,17.13,69.1,94.81,11.68,0.47531,13.54,5.37,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=EXR 173 | F,Ford Motor,Consumer Discretionary,13.09,4.71,6.06,2.16,7.45,10.44,15.84,52,17.6,0.33,1.71,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=F 174 | FAST,Fastenal Co,Industrials,45.23,2.68,25.45,1.78,6.31,34.45,49.99,13.07,0.91543,3.31,7.09,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FAST 175 | FB,Facebook,Information Technology,117.24,,71.71,1.63,16.54,72,121.08,335.34,9.43,16.76,7,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FB 176 | FBHS,Fortune Brands Home & Security,Industrials,60.21,1.09,29.47,2.04,14.14,41.17,60.32,9.23,0.6849,1.9,4.16,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FBHS 177 | FCX,Freeport-McMoran Cp & Gld,Materials,11.2,0,,-12.3,2.95,3.52,17.21,14.02,3.1,0.88,3.62,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FCX 178 | FDX,FedEx Corporation,Industrials,156.22,0.75,24,6.51,53.38,119.71,173,41.93,7.53,0.81,2.86,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FDX 179 | FE,FirstEnergy Corp,Utilities,36.02,4.08,22.34,1.61,29.34,28.89,36.54,15.3,4.08,1.03,1.2,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FE 180 | FFIV,F5 Networks,Information Technology,117.13,,23.16,5.06,17.63,86.03,135.2,7.85,0.58614,3.89,6.45,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FFIV 181 | FIS,Fidelity National Information Services,Information Technology,76.03,1.39,39.54,1.92,28.9,55.11,76.18,24.82,1.75,3.38,2.59,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FIS 182 | FISV,Fiserv Inc,Information Technology,109.69,,31.2,3.52,12.04,77.96,109.93,24.39,1.64,4.54,9.01,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FISV 183 | FITB,Fifth Third Bancorp,Financials,17.25,3.07,8.65,2,19.46,13.84,21.93,13.24,0,2.12,0.87,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FITB 184 | FL,Foot Locker Inc,Consumer Discretionary,57.41,1.99,14.62,3.93,19.67,50.9,77.25,7.77,1.1,1,2.81,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FL 185 | FLIR,FLIR Systems,Industrials,31.8,1.53,22.8,1.39,12.12,25.12,34.09,4.38,0.34943,2.72,2.59,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FLIR 186 | FLR,Fluor Corp.,Industrials,51.57,1.68,19.98,2.58,22.18,39.48,55.69,7.18,1.08,0.39,2.26,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FLR 187 | FLS,Flowserve Corporation,Industrials,45.79,1.69,21.8,2.1,13.29,33.86,52.5,5.97,0.72875,1.3,3.38,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FLS 188 | FMC,FMC Corporation,Materials,46.48,1.47,10.65,4.37,14.66,32.24,50.95,6.22,0.6501,1.75,3.06,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FMC 189 | FOX,Twenty-First Century Fox Class B,Consumer Discretionary,28,1.1,24.56,1.14,7.6,22.65,33.66,53.04,6.35,1.92,3.59,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FOX 190 | FOXA,Twenty-First Century Fox Class A,Consumer Discretionary,27.7,1.11,24.3,1.14,7.6,22.66,34.7,52.47,6.35,1.9,3.54,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FOXA 191 | FRT,Federal Realty Investment Trust,Financials,167.81,2.26,48.47,3.46,26.04,124.87,168.76,11.9,0.4845,15.54,6.39,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FRT 192 | FSLR,First Solar Inc,Information Technology,45.6,,6,7.6,56.14,40.25,74.29,4.66,1,1.15,0.79,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FSLR 193 | FTI,FMC Technologies Inc.,Energy,26.36,,22.82,1.15,11.51,22.3,37.9,5.97,0.8066,0.99,2.24,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FTI 194 | FTR,Frontier Communications,Telecommunications Services,4.97,8.55,,-0.45,4.48,3.81,5.85,5.83,2.25,1.04,1.1,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FTR 195 | FTV,Fortive Corp,Industrials,50.2,,,,0,47.53,50.61,,0,,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=FTV 196 | GD,General Dynamics,Industrials,140.48,2.17,15.2,9.24,34.37,121.61,153.76,43.26,4.68,1.36,4.04,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=GD 197 | GE,General Electric,Industrials,32.2,2.89,43.63,0.74,9.9,19.37,32.27,296.1,15.39,2.49,3.21,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=GE 198 | GGP,General Growth Properties Inc.,Financials,30.98,2.53,31.97,0.97,9.08,24.22,30.98,27.35,1.78,10.29,3.31,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=GGP 199 | GILD,Gilead Sciences,Health Care,86.55,2.2,7.39,11.71,9.94,77.92,120.37,115.27,22.9,3.47,8.6,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=GILD 200 | GIS,General Mills,Consumer Staples,72.46,2.67,26.16,2.77,8.26,47.5,72.95,43.26,3.38,2.6,8.72,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=GIS 201 | GLW,Corning Inc.,Industrials,20.91,2.81,52.8,0.4,14.53,15.42,21.3,22.49,2.33,2.47,1.41,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=GLW 202 | GM,General Motors,Consumer Discretionary,29.66,5.29,4.47,6.63,27.29,24.62,36.88,45.67,15.49,0.29,1.05,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=GM 203 | GOOG,Alphabet Inc Class C,Information Technology,705.63,,28.71,24.58,179.92,532.4,789.87,484.45,25.51,6.12,3.86,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=GOOG 204 | GOOGL,Alphabet Inc Class A,Information Technology,717.78,,29.21,24.58,179.92,558.7,810.35,492.8,25.51,6.23,3.93,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=GOOGL 205 | GPC,Genuine Parts,Consumer Discretionary,104.97,2.79,22.66,4.63,21.6,76.5,105.02,15.71,1.26,1.01,4.77,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=GPC 206 | GPN,Global Payments Inc,Information Technology,73.54,0.06,32.14,2.29,6.5,50.69,78.92,9.51,0.62981,3.25,11.05,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=GPN 207 | GPS,Gap (The),Consumer Discretionary,22.7,4.22,11.38,1.99,6.34,17,38.2,9.03,2.06,0.55,3.41,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=GPS 208 | GRMN,Garmin Ltd.,Consumer Discretionary,43.37,4.79,17.33,2.5,18.17,30.93,46.72,8.21,0.62138,2.82,2.34,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=GRMN 209 | GS,Goldman Sachs Group,Financials,150.38,1.77,17.01,8.84,173,138.2,214.61,65.75,0,2.18,0.85,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=GS 210 | GT,Goodyear Tire & Rubber,Consumer Discretionary,26.53,1,27.1,0.98,15.43,24.31,35.3,7.06,2.36,0.42,1.66,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=GT 211 | GWW,Grainger (W.W.) Inc.,Industrials,230.47,2.16,20.09,11.47,36.97,176.85,240,14.13,1.51,1.38,6.1,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=GWW 212 | HAL,Halliburton Co.,Energy,45.03,1.65,,-2.86,15.17,27.64,46.69,38.69,3.45,1.8,2.87,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HAL 213 | HAR,Harman Int'l Industries,Consumer Discretionary,73.75,1.99,14.76,5,34.93,64.93,119.19,5.2,0.8185,0.75,2.04,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HAR 214 | HAS,Hasbro Inc.,Consumer Discretionary,84.71,2.45,22.67,3.74,12.87,60.38,88.53,10.56,0.87843,2.27,6.46,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HAS 215 | HBAN,Huntington Bancshares,Financials,8.72,3.26,10.63,0.82,8.01,7.83,11.9,6.95,0,2.33,1.07,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HBAN 216 | HBI,Hanesbrands Inc,Consumer Discretionary,26.27,1.72,22.94,1.14,2.52,23.25,34.67,9.92,0.99239,1.68,10.11,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HBI 217 | HCA,HCA Holdings,Health Care,78.21,0,14.74,5.31,-19.19,43.91,95.49,30.58,7.92,0.75,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HCA 218 | HCN,Welltower Inc.,Financials,75.62,4.5,34.4,2.2,37.88,52.8,77.18,27,2.01,6.82,1.98,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HCN 219 | HCP,HCP Inc.,Financials,35.94,6.59,,-0.44,19.77,25.11,40.9,16.79,1.8,6.33,1.76,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HCP 220 | HD,Home Depot,Consumer Discretionary,134.34,2.1,23.6,5.69,5.09,92.17,137.82,167.12,14.09,1.81,25.78,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HD 221 | HES,Hess Corporation,Energy,56.81,1.77,,-11.07,68.7,32.41,65.36,17.03,1.76,2.89,0.82,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HES 222 | HIG,Hartford Financial Svc.Gp.,Financials,43.58,1.97,11.9,3.66,45.78,36.54,50.95,17.14,2.4,0.93,0.93,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HIG 223 | HOG,Harley-Davidson,Consumer Discretionary,48.73,2.93,13.08,3.73,10.32,36.36,60.67,8.94,1.34,1.44,4.63,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HOG 224 | HOLX,Hologic,Health Care,35.93,,50.68,0.71,7.31,31.84,43,10.02,1,3.59,4.86,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HOLX 225 | HON,Honeywell Int'l Inc.,Industrials,118.84,2.05,19.29,6.16,23.88,87,118.99,90.57,7.82,2.28,4.86,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HON 226 | HOT,Starwood Hotels & Resorts,Consumer Discretionary,76.7,2,27.07,2.83,7.93,56.87,86.96,13,1.06,4.28,9.53,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HOT 227 | HP,Helmerich & Payne,Energy,66.45,4.74,71.07,0.94,44.26,40.02,69.2,7.18,0.82378,3.28,1.47,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HP 228 | HPE,Hewlett Packard Enterprise,Information Technology,19.04,1.19,15.59,1.22,18.35,11.62,19.85,31.64,7.49,0.59,1.01,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HPE 229 | HPQ,HP Inc.,Information Technology,13.08,3.86,6.87,1.9,-2.8,8.91,14.82,22.37,10.09,0.22,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HPQ 230 | HRB,Block H&R,Financials,23.59,3.76,15.8,1.49,0.1,19.18,37.53,5.2,0.80679,1.71,223.81,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HRB 231 | HRL,Hormel Foods Corp.,Consumer Staples,36.61,1.58,25.25,1.45,8.12,28.44,45.72,19.4,1.33,2.1,4.48,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HRL 232 | HRS,Harris Corporation,Information Technology,84.2,2.43,95.46,0.88,27.04,70.1,89.78,10.5,1.56,1.45,3.04,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HRS 233 | HSIC,Henry Schein,Health Care,180.72,,30.93,5.84,35.51,126.17,180.98,14.83,0.94387,1.34,5.01,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HSIC 234 | HST,Host Hotels & Resorts,Financials,16.76,4.88,19.72,0.85,9.41,12.17,21.4,12.52,1.41,2.25,1.74,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HST 235 | HSY,The Hershey Company,Consumer Staples,110.7,2.12,48.81,2.27,3.88,82.41,117.79,23.62,1.67,3.23,28.34,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HSY 236 | HUM,Humana Inc.,Health Care,158.15,0.64,22.05,7.17,70.62,155.24,192.49,23.57,2.37,0.45,2.3,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=HUM 237 | IBM,International Bus. Machines,Information Technology,154.46,3.67,11.71,13.19,15.55,116.9,173.78,148.28,19,1.81,9.82,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=IBM 238 | ICE,Intercontinental Exchange,Financials,256.89,1.34,21.99,11.68,126.45,220.28,271.95,29.55,2.31,8.02,2.01,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ICE 239 | IFF,Intl Flavors & Fragrances,Materials,129.53,1.76,25.61,5.06,20.44,97.24,131.3,10.33,0.70159,3.35,6.24,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=IFF 240 | ILMN,Illumina Inc,Health Care,141.25,,50.79,2.78,13.53,127.1,242.37,20.79,0.70953,9.15,10.35,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ILMN 241 | INTC,Intel Corp.,Information Technology,34,3.13,14.52,2.34,12.97,24.87,35.59,160.55,23.06,2.79,2.56,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=INTC 242 | INTU,Intuit Inc.,Information Technology,115.48,1.16,30.17,3.83,4.87,79.63,116.03,29.55,1.41,6.31,23.47,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=INTU 243 | IP,International Paper,Materials,42.75,4.19,18.64,2.29,10.3,32.5,49.49,17.58,3.55,0.78,4.07,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=IP 244 | IPG,Interpublic Group,Consumer Discretionary,23.73,2.52,21.48,1.11,4.82,18.16,24.82,9.55,1.04,1.22,4.83,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=IPG 245 | IR,Ingersoll-Rand PLC,Industrials,65.74,1.98,22.87,2.87,22.51,47.08,69.28,16.93,1.86,1.25,2.87,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=IR 246 | IRM,Iron Mountain Incorporated,Industrials,39.85,5.1,58.01,0.69,2.34,23.64,40.61,8.45,0.9045,2.77,16.76,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=IRM 247 | ISRG,Intuitive Surgical Inc.,Health Care,678.84,,41.16,16.49,124.68,447,680.5,25.84,0.8855,10.56,5.42,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ISRG 248 | ITW,Illinois Tool Works,Industrials,108.36,2.08,20.79,5.21,14.52,78.79,109.54,38.94,3.37,2.85,7.29,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ITW 249 | IVZ,Invesco Ltd.,Financials,25.63,4.45,12.55,2.04,18.94,23.02,39.48,10.69,1.43,2.11,1.33,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=IVZ 250 | JBHT,J. B. Hunt Transport Services,Industrials,85,1.08,22.59,3.76,11.42,63.58,89.43,9.58,1.07,1.48,7.22,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=JBHT 251 | JCI,Johnson Controls,Consumer Discretionary,43.84,2.72,63.81,0.69,15.4,33.62,49.67,28.42,3.27,0.76,2.78,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=JCI 252 | JEC,Jacobs Engineering Group,Industrials,51.25,,27.09,1.89,35.83,34.76,53.33,6.25,0.68514,0.52,1.39,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=JEC 253 | JNJ,Johnson & Johnson,Health Care,122.85,2.61,22.39,5.49,26.4,81.79,123.23,337.92,22.24,4.8,4.64,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=JNJ 254 | JNPR,Juniper Networks,Information Technology,22.66,1.82,13.79,1.64,12.01,21.18,32.39,8.7,1.09,1.72,1.83,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=JNPR 255 | JPM,JPMorgan Chase & Co.,Financials,61.83,2.85,10.48,5.9,61.29,50.07,70.61,226.06,0,2.52,0.99,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=JPM 256 | JWN,Nordstrom,Consumer Discretionary,40.32,3.86,14.48,2.78,5.05,35.01,80.23,6.99,1.61,0.47,7.76,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=JWN 257 | K,Kellogg Co.,Consumer Staples,82.64,2.42,52.67,1.57,5.8,63.52,83.19,28.93,2.05,2.15,14.18,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=K 258 | KEY,KeyCorp,Financials,11.09,2.52,11.01,1.01,12.79,9.88,15.46,9.34,0,2.28,0.86,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=KEY 259 | KHC,Kraft Heinz Co,Consumer Staples,89.85,2.56,168.26,0.53,47.75,61.42,90.26,109.25,6.35,4.84,1.87,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=KHC 260 | KIM,Kimco Realty,Financials,31.54,3.27,19.7,1.6,12.39,22.07,31.8,13.24,0.72633,11.08,2.52,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=KIM 261 | KLAC,KLA-Tencor Corp.,Information Technology,73.75,2.88,20.21,3.65,3.06,44.95,75.17,11.48,0.92899,3.99,23.6,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=KLAC 262 | KMB,Kimberly-Clark,Consumer Staples,135.96,2.69,45.44,2.99,0.3,103.04,138.87,48.96,3.94,2.63,442.97,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=KMB 263 | KMI,Kinder Morgan,Energy,18.54,2.9,713.08,0.03,15.78,11.2,38.58,41.37,6.75,2.93,1.17,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=KMI 264 | KMX,Carmax Inc,Consumer Discretionary,52.67,,17.21,3.06,15.44,41.25,68.99,10.08,1.19,0.63,3.27,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=KMX 265 | KO,The Coca Cola Company,Consumer Staples,45.38,3.1,27.32,1.66,5.75,36.56,47.13,196.32,12.11,4.45,7.84,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=KO 266 | KORS,Michael Kors Holdings,Consumer Discretionary,50.23,,11.31,4.44,11.34,34.83,59.49,8.84,1.37,1.83,4.33,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=KORS 267 | KR,Kroger Co.,Consumer Staples,37.86,1.29,17.72,2.14,6.81,27.32,42.75,35.93,5.93,0.32,5.48,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=KR 268 | KSS,Kohl's Corp.,Consumer Discretionary,39.29,5.23,13.27,2.96,28.63,33.87,64.93,7.22,2.38,0.37,1.34,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=KSS 269 | KSU,Kansas City Southern,Industrials,90.2,1.51,20.12,4.48,36.45,62.2,101.24,9.74,1.1,3.98,2.41,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=KSU 270 | L,Loews Corp.,Financials,40.78,0.62,57.03,0.71,52.6,33.84,41.25,13.83,2.31,1.04,0.76,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=L 271 | LB,L Brands Inc.,Consumer Discretionary,69.18,3.51,17.71,3.91,-3.77,60,101.11,19.89,2.65,1.58,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LB 272 | LEG,Leggett & Platt,Industrials,52.03,2.66,21.56,2.41,8.03,36.64,52.03,6.99,0.5966,1.77,6.37,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LEG 273 | LEN,Lennar Corp.,Consumer Discretionary,49.16,0.34,13.12,3.75,27.92,37.14,56.04,10.77,1.25,1.02,1.7,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LEN 274 | LH,Laboratory Corp. of America Holding,Health Care,135.3,0,23.47,5.76,50.6,97.79,135.63,13.85,1.74,1.5,2.61,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LH 275 | LKQ,LKQ Corporation,Consumer Discretionary,33.09,,23.98,1.38,10.55,23.95,34.26,10.15,0.8629,1.34,3.03,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LKQ 276 | LLL,L-3 Communications Holdings,Industrials,149.72,1.91,,-1.48,56.61,101.11,150.77,11.52,1.16,1.09,2.59,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LLL 277 | LLTC,Linear Technology Corp.,Information Technology,47.31,2.77,23.42,2.02,7.04,36.41,47.89,11.31,0.6908,7.72,6.56,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LLTC 278 | LLY,Lilly (Eli) & Co.,Health Care,79.66,2.55,36.71,2.17,14.16,67.88,92.85,84.43,5.1,4.17,5.6,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LLY 279 | LM,Legg Mason,Financials,29.81,3.05,,-0.25,39.38,24.93,52.57,3.14,0.49247,1.14,0.73,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LM 280 | LMT,Lockheed Martin Corp.,Industrials,251.9,2.64,22.28,11.31,10.44,181.91,252.3,76.69,6.41,1.59,23.94,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LMT 281 | LNC,Lincoln National,Financials,38.88,2.67,9.28,4.19,61.33,30.39,59.51,9.29,1.51,0.67,0.61,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LNC 282 | LNT,Alliant Energy Corp,Utilities,40.55,3.18,24.3,3.34,16.58,27.14,40.99,9.21,0.994,2.83,2.4,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LNT 283 | LOW,Lowe's Cos.,Consumer Discretionary,82.34,1.74,27.42,3,8.07,62.62,82.42,72.96,6.95,1.19,9.98,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LOW 284 | LRCX,Lam Research,Information Technology,84.88,1.46,18.89,4.49,35.73,61.2,87.19,13.55,1.36,2.25,2.3,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LRCX 285 | LUK,Leucadia National Corp.,Financials,17.46,1.46,,-0.87,27.85,14.27,25.39,6.33,0.49486,0.59,0.62,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LUK 286 | LUV,Southwest Airlines,Industrials,40.54,1.02,11.94,3.4,11.74,32.94,51.34,25.89,5.41,1.27,3.4,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LUV 287 | LVLT,Level 3 Communications,Telecommunications Services,52.73,,5.54,9.52,28.97,40.86,56.11,18.87,2.62,2.23,1.77,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LVLT 288 | LYB,LyondellBasell,Materials,76.74,4.56,8.04,9.55,14.82,69.1,101.49,32.75,6.89,1.02,5.03,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=LYB 289 | M,Macy's Inc.,Consumer Discretionary,34.36,4.49,11.23,3.06,13.45,29.94,73.61,10.6,3.26,0.39,2.5,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=M 290 | MA,Mastercard Inc.,Information Technology,88.56,0.87,26.68,3.32,4.97,74.61,101.76,97.33,5.59,9.76,17.66,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MA 291 | MAC,Macerich,Financials,87.49,3.59,15.5,5.64,31.23,71.82,87.54,12.99,0.76304,10.17,2.75,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MAC 292 | MAR,Marriott Int'l.,Consumer Discretionary,69.85,1.76,21.35,3.27,-14.43,56.43,79.88,17.76,1.56,6.06,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MAR 293 | MAS,Masco Corp.,Industrials,32.22,1.23,27.61,1.17,-0.38,22.52,32.92,10.59,1.12,1.42,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MAS 294 | MAT,Mattel Inc.,Consumer Discretionary,32.62,4.7,31.52,1.03,7.27,19.45,34.76,11.11,0.87073,1.95,4.45,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MAT 295 | MCD,McDonald's Corp.,Consumer Discretionary,121.31,2.94,23.31,5.2,4.4,87.5,131.96,106.49,9.03,4.19,27.48,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MCD 296 | MCHP,Microchip Technology,Information Technology,51.87,2.85,34.81,1.49,10.54,37.77,53.17,11.14,0.68437,4.98,4.78,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MCHP 297 | MCK,McKesson Corp.,Health Care,192.79,0.58,19.87,9.7,39.66,148.29,236.86,43.38,4.62,0.23,4.82,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MCK 298 | MCO,Moody's Corp,Financials,96.73,1.57,21.71,4.45,-2.99,77.76,113.87,18.79,1.52,5.33,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MCO 299 | MDLZ,Mondelez International,Consumer Staples,46.1,1.51,9.93,4.64,17.86,35.88,48.58,71.55,4.55,2.47,2.53,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MDLZ 300 | MDT,Medtronic plc,Health Care,88.36,1.97,35.63,2.48,37.21,55.54,88.56,123.24,8.74,4.23,2.35,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MDT 301 | MET,MetLife Inc.,Financials,39.2,4.18,8.41,4.66,68.98,35,58.13,43.07,8.77,0.61,0.55,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MET 302 | MHK,Mohawk Industries,Consumer Discretionary,194.2,,,49.9,69.51,148.56,212.16,14.39,1.49,1.68,2.72,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MHK 303 | MJN,Mead Johnson,Consumer Staples,89.36,1.85,33.71,2.65,-3.4,65.53,92.01,16.68,1.03,4.17,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MJN 304 | MKC,McCormick & Co.,Consumer Staples,106.96,1.62,31.72,3.37,13.87,75.68,107.84,13.55,0.7235,3.08,7.64,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MKC 305 | MLM,Martin Marietta Materials,Materials,196.7,0.82,39.79,4.94,62.08,108.31,198.23,12.5,0.82559,3.68,3.15,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MLM 306 | MMC,Marsh & McLennan,Financials,67.17,2.04,22.39,3,12.82,50.81,68.69,35.01,2.85,2.68,5.21,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MMC 307 | MMM,3M Company,Industrials,177.12,2.53,22.77,7.78,19.34,134,177.79,107.43,8.57,3.52,9.04,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MMM 308 | MNK,Mallinckrodt Plc,Health Care,62.29,,15.63,3.98,46.64,50.9,127,6.81,1.53,1.87,1.32,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MNK 309 | MNST,Monster Beverage,Consumer Staples,161.5,,46,3.51,24.58,113.08,162.33,32.79,1.05,11.78,6.55,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MNST 310 | MO,Altria Group Inc,Consumer Staples,69.83,3.26,25.2,2.77,1.4,47.41,70.15,136.59,9.06,7.09,49.39,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MO 311 | MON,Monsanto Co.,Materials,102.68,2.15,45.19,2.27,11.68,81.22,114.26,44.93,3.64,3.31,8.62,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MON 312 | MOS,The Mosaic Company,Materials,25.48,2.9,9.42,2.71,28.58,22.02,45.98,8.91,1.88,1.04,0.87,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MOS 313 | MPC,Marathon Petroleum,Energy,36.4,3.51,9.97,3.65,24.34,29.24,60.38,19.29,5.12,0.31,1.46,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MPC 314 | MRK,Merck & Co.,Health Care,59.35,3.13,36.39,1.63,15.82,45.69,60.07,164.28,14.52,4.13,3.72,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MRK 315 | MRO,Marathon Oil Corp.,Energy,14.92,1.36,,-3.39,22.82,6.52,25.25,12.65,1.39,2.56,0.65,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MRO 316 | MS,Morgan Stanley,Financials,26.37,2.34,11.62,2.27,35.33,21.16,41.04,51.08,0,1.5,0.73,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MS 317 | MSFT,Microsoft Corp.,Information Technology,52.3,2.75,40.32,1.3,9.51,39.72,56.85,411.1,29.15,4.65,5.41,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MSFT 318 | MSI,Motorola Solutions Inc.,Information Technology,66.38,2.52,22.98,2.89,-0.84,57.79,76.83,11.59,1.25,2,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MSI 319 | MTB,M&T Bank Corp.,Financials,115.94,2.45,16,7.25,95.02,100.08,134,18.43,0,3.88,1.2,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MTB 320 | MU,Micron Technology,Information Technology,12.62,0,36.26,0.34,11.75,9.31,20.57,13.1,3.62,0.99,1.04,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MU 321 | MUR,Murphy Oil,Energy,30.66,5.1,,-14.2,30.23,14.3,40.89,5.28,-1.44,2.09,0.99,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MUR 322 | MYL,Mylan N.V.,Health Care,44.54,0,28.5,1.56,20.91,37.59,71.95,22.64,2.94,2.28,2.09,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=MYL 323 | NAVI,Navient,Financials,12.69,5.27,5.24,2.42,11.54,8.2,18.5,4.19,0,1.75,1.05,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NAVI 324 | NBL,Noble Energy Inc,Energy,35.98,1.11,,-6.49,23.43,23.77,39.92,15.44,1.35,5.17,1.54,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NBL 325 | NDAQ,NASDAQ OMX Group,Financials,65.88,1.97,20.35,3.24,34.63,47.95,67.61,10.84,1.12,3.1,1.87,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NDAQ 326 | NEE,NextEra Energy,Utilities,129.93,2.86,21.74,5.98,49.65,93.74,131.98,59.96,8,3.44,2.58,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NEE 327 | NEM,Newmont Mining Corp. (Hldg. Co.),Materials,41.14,0.24,242,0.17,21.39,15.39,41.46,21.83,2.89,2.79,1.91,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NEM 328 | NFLX,Netflix Inc.,Information Technology,97.06,,334.69,0.29,5.41,79.95,133.27,41.57,0.31974,5.69,17.58,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NFLX 329 | NFX,Newfield Exploration Co,Energy,43.82,,,-21.03,7.83,20.84,44.79,8.6,0.835,5.63,5.46,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NFX 330 | NI,NiSource Inc.,Utilities,26.13,2.72,42.28,0.62,12.05,16.04,26.94,8.4,1.29,1.98,2.16,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NI 331 | NKE,Nike,Consumer Discretionary,56.72,1.15,26.26,2.16,7.29,47.25,68.19,95.43,5.17,2.91,7.67,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NKE 332 | NLSN,Nielsen Holdings,Industrials,52.87,2.37,32.1,1.65,12.51,42.76,55.06,19.09,1.53,3.04,4.18,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NLSN 333 | NOC,Northrop Grumman Corp.,Industrials,221.97,1.62,20.15,11.01,31.08,152.31,223.42,40.05,3.51,1.69,7.09,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NOC 334 | NOV,National Oilwell Varco Inc.,Energy,32.59,4.76,,-3.17,43.37,25.74,46.51,12.29,1.27,0.99,0.73,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NOV 335 | NRG,NRG Energy,Utilities,15.07,3.18,,-19.16,8.65,8.8,23.07,4.75,2.97,0.33,1.68,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NRG 336 | NSC,Norfolk Southern Corp.,Industrials,86.42,2.74,16.02,5.39,41.33,64.51,98.75,25.56,4.07,2.4,2.03,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NSC 337 | NTAP,NetApp,Information Technology,24.54,3.17,31.87,0.77,10.25,20.66,34.81,6.87,0.631,1.21,2.33,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NTAP 338 | NTRS,Northern Trust Corp.,Financials,64.53,2.27,15.89,4.06,37.01,54.38,79.25,14.72,0,3.02,1.72,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NTRS 339 | NUE,Nucor Corp.,Materials,53.19,2.94,47.49,1.12,23.36,33.9,53.32,16.91,1.83,1.04,2.21,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NUE 340 | NVDA,Nvidia Corporation,Information Technology,50.85,0.97,43.39,1.17,7.86,19.09,51.09,27.15,1.22,5.06,6.22,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NVDA 341 | NWL,Newell Rubbermaid Co.,Consumer Discretionary,48.86,1.58,39.21,1.25,6.62,33.26,50.9,13.1,1.02,2.16,7.27,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NWL 342 | NWS,News Corp. Class B,Consumer Discretionary,12.04,1.7,,-0.51,20.08,10.74,15.74,6.98,0.616,0.82,0.59,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NWS 343 | NWSA,News Corp. Class A,Consumer Discretionary,11.67,1.78,,-0.51,20.08,10.21,15.92,6.77,0.616,0.79,0.57,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=NWSA 344 | O,Realty Income Corporation,Financials,69.91,3.36,65.4,1.07,24.23,43.15,71.92,17.55,0.9472,16.64,2.85,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=O 345 | OI,Owens-Illinois Inc,Materials,17.44,,21.88,0.8,1.84,11.58,24.05,2.82,1.02,0.43,9.21,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=OI 346 | OKE,ONEOK,Energy,47.36,5.24,37.38,1.27,1.37,18.84,48.78,9.95,1.55,1.28,34.42,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=OKE 347 | OMC,Omnicom Group,Consumer Discretionary,83.12,2.37,18.53,4.49,9.99,64.12,85.95,19.76,2.23,1.29,8.24,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=OMC 348 | ORCL,Oracle Corp.,Information Technology,40.87,1.48,19.74,2.03,11.45,33.13,42,168.5,14.75,4.51,3.54,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ORCL 349 | ORLY,O'Reilly Automotive,Consumer Discretionary,280.61,,28.93,9.7,20.06,225.12,280.81,27.07,1.81,3.25,13.73,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ORLY 350 | OXY,Occidental Petroleum,Energy,76.13,3.98,,-9.86,31.15,58.24,78.31,58.14,4.41,5,2.42,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=OXY 351 | PAYX,Paychex Inc.,Information Technology,61.33,3.04,29.34,2.09,5.3,41.59,61.5,22.1,1.26,7.4,11.42,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PAYX 352 | PBCT,People's United Financial,Financials,14.83,4.64,17.05,0.87,15.8,13.62,16.93,4.5,0,3.54,0.93,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PBCT 353 | PBI,Pitney-Bowes,Industrials,17.8,4.33,9.18,1.94,0.64,16.24,21.81,3.36,0.78579,0.92,27.1,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PBI 354 | PCAR,PACCAR Inc.,Industrials,52.12,1.89,29.22,1.78,18.1,43.46,66.43,18.27,2.73,0.96,2.8,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PCAR 355 | PCG,PG&E Corp.,Utilities,64.83,3.04,33.42,1.94,33.52,47.33,65.43,32.16,4.16,1.89,1.92,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PCG 356 | PCLN,Priceline.com Inc,Consumer Discretionary,1329.46,,26.17,50.81,182.37,954.02,1476.52,65.99,3.65,6.76,7.11,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PCLN 357 | PDCO,Patterson Companies,Health Care,49.83,1.96,26.02,1.91,15.1,38.51,53.07,4.76,0.4438,0.87,3.25,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PDCO 358 | PEG,Public Serv. Enterprise Inc.,Utilities,46.14,3.51,14.98,3.08,26.37,36.8,47.41,23.34,4.05,2.33,1.73,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PEG 359 | PEP,PepsiCo Inc.,Consumer Staples,108.27,2.84,30.59,3.5,8.6,76.48,109,155.82,12.12,2.49,12.5,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PEP 360 | PFE,Pfizer Inc.,Health Care,36.12,3.35,29.61,1.22,10.4,28.25,36.46,219.06,19.57,4.25,3.44,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PFE 361 | PFG,Principal Financial Group,Financials,41.59,3.7,10.62,3.92,34.58,33.09,58.02,12.05,1.64,0.94,1.16,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PFG 362 | PG,Procter & Gamble,Consumer Staples,85.77,3.28,27.03,3.17,21.84,65.02,85.95,228.31,19.19,3.17,3.88,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PG 363 | PGR,Progressive Corp.,Financials,33.69,2.68,16.11,2.09,12.97,27.23,35.54,19.64,2.16,0.9,2.56,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PGR 364 | PH,Parker-Hannifin,Industrials,111.33,2.33,20.66,5.39,37.3,83.32,117.78,14.99,1.56,1.26,2.9,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PH 365 | PHM,Pulte Homes Inc.,Consumer Discretionary,20.48,1.8,14.01,1.46,13.78,14.61,22.1,7.09,0.86663,1.1,1.45,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PHM 366 | PKI,PerkinElmer,Health Care,53.95,0.53,27.7,1.95,18.8,39.5,56.12,5.88,0.42734,2.52,2.8,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PKI 367 | PLD,Prologis,Financials,49.55,3.4,35.83,1.38,27.72,35.25,50.74,26.03,1.6,10.13,1.76,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PLD 368 | PM,Philip Morris International,Consumer Staples,103.09,4.01,24.31,4.24,-8.22,76.54,103.16,159.92,11.03,6.01,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PM 369 | PNC,PNC Financial Services,Financials,80.62,2.57,11.02,7.31,83.52,77.4,100.52,40.26,0,2.68,0.95,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PNC 370 | PNR,Pentair Ltd.,Industrials,61.43,2.29,,-0.47,22.6,41.57,65.63,11.1,1.16,1.64,2.62,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PNR 371 | PNW,Pinnacle West Capital,Utilities,81.17,3.09,21.27,3.82,41.39,57.33,82.78,9.02,1.41,2.57,1.96,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PNW 372 | PPG,PPG Industries,Materials,106.32,1.55,20.17,5.27,19.4,82.93,118.27,28.29,2.63,1.79,5.31,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PPG 373 | PPL,PPL Corp.,Utilities,37.46,4.08,49.42,0.76,14.43,29.18,39.92,25.36,3.73,3.36,2.56,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PPL 374 | PRGO,Perrigo,Health Care,93.73,0.62,,-1.57,68.77,84.85,198.42,13.42,1.35,2.27,1.35,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PRGO 375 | PRU,Prudential Financial,Financials,70.99,3.69,6.62,10.72,111.13,57.19,92.6,31.38,8.44,0.53,0.62,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PRU 376 | PSA,Public Storage,Financials,257.34,2.72,41.31,6.23,29.29,195.46,277.6,44.62,1.78,17.63,8.67,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PSA 377 | PSX,Phillips 66,Energy,74.85,3.3,11.2,6.68,43.36,69.79,94.12,39.34,5.03,0.49,1.71,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PSX 378 | PVH,PVH Corp.,Consumer Discretionary,97.32,0.17,11.67,8.34,60.04,64.16,120.67,7.87,1.03,0.95,1.58,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PVH 379 | PWR,Quanta Services Inc.,Industrials,24.36,,15.95,1.53,19.76,16.77,28.98,3.68,0.45767,0.48,1.2,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PWR 380 | PX,Praxair Inc.,Materials,114.74,2.68,22.24,5.16,17.14,95.6,120.04,32.73,3.49,3.03,6.53,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PX 381 | PXD,Pioneer Natural Resources,Energy,153.72,0.05,,-3.04,59.23,103.5,171.88,25.14,1.16,7.74,2.52,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PXD 382 | PYPL,PayPal,Information Technology,37.36,,34.28,1.09,11.42,30,42.55,44.5,2.02,4.48,3.18,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=PYPL 383 | QCOM,QUALCOMM Inc.,Information Technology,54.19,4.05,17.09,3.17,20.21,42.24,66.05,79.6,8.27,3.44,2.62,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=QCOM 384 | QRVO,Qorvo,Information Technology,56.02,,,-0.2,39.25,33.3,80.79,7.14,0.72472,2.66,1.39,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=QRVO 385 | R,Ryder System,Industrials,64.64,2.64,11.23,5.76,38.08,45.12,93.86,3.47,1.79,0.5,1.63,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=R 386 | RAI,Reynolds American Inc.,Consumer Staples,53.13,3.13,11.21,4.74,14.83,35.69,54.48,75.83,4.83,6.55,3.57,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=RAI 387 | RCL,Royal Caribbean Cruises Ltd,Consumer Discretionary,68.38,2.25,20.82,3.29,36.54,64.21,103.4,14.72,2.18,1.71,1.83,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=RCL 388 | REGN,Regeneron,Health Care,378.35,,59.99,6.31,36.1,329.09,605.93,39.46,1.38,8.73,10.29,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=REGN 389 | RF,Regions Financial Corp.,Financials,8.44,3.15,10.66,0.79,12.86,7,10.87,10.69,0,2.04,0.64,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=RF 390 | RHI,Robert Half International,Industrials,38.66,2.33,14.05,2.75,8.08,34.34,58,5,0.64186,0.94,4.67,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=RHI 391 | RHT,Red Hat Inc.,Information Technology,72.69,,63.76,1.14,7.45,59.59,84.44,13.16,0.37462,6.05,9.59,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=RHT 392 | RIG,Transocean,Energy,12.14,0,2.91,4.16,40.42,7.67,17.19,4.43,2.51,0.72,0.3,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=RIG 393 | RL,Polo Ralph Lauren Corp.,Consumer Discretionary,93.25,2.18,20.18,4.62,45.16,82.15,137.38,7.73,1.07,1.03,2.03,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=RL 394 | ROK,Rockwell Automation Inc.,Industrials,115.7,2.57,20.32,5.69,17.01,87.53,125.6,15.07,1.21,2.43,6.64,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ROK 395 | ROP,Roper Industries,Industrials,170.04,0.72,25.05,6.79,53.77,150.91,195.93,17.21,1.25,4.68,3.11,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ROP 396 | ROST,Ross Stores,Consumer Discretionary,58.19,0.95,22.84,2.55,6.36,43.47,59.68,23.25,1.92,1.87,8.9,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ROST 397 | RRC,Range Resources Corp.,Energy,44.13,0.19,,-5,16.04,19.21,47.95,7.35,0.60891,6.52,2.65,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=RRC 398 | RSG,Republic Services Inc,Industrials,52.56,2.3,25.14,2.09,22.53,39.48,52.66,18.08,2.56,1.95,2.31,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=RSG 399 | RTN,Raytheon Co.,Industrials,138.49,2.12,21.47,6.45,34.1,96.68,138.67,41.13,3.25,1.71,4.02,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=RTN 400 | SBUX,Starbucks Corp.,Consumer Discretionary,56.51,1.41,33.44,1.69,3.48,42.05,64,82.78,4.57,4.13,16.36,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SBUX 401 | SCG,SCANA Corp,Utilities,75.08,3.26,20.56,3.65,38.76,50.17,76.41,10.73,1.46,2.55,1.92,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SCG 402 | SCHW,Charles Schwab Corporation,Financials,25.73,1.11,23.39,1.1,9.33,21.51,35.72,34.01,0,5.1,2.71,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SCHW 403 | SE,Spectra Energy Corp.,Energy,36.36,5.15,150.87,0.24,10.47,21.43,36.88,24.88,2.5,4.93,3.44,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SE 404 | SEE,Sealed Air Corp.(New),Materials,47.03,1.33,29.1,1.62,2.85,38.02,55.84,9.27,1.07,1.31,16.05,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SEE 405 | SHW,Sherwin-Williams,Materials,306.52,1.12,26.94,11.38,10.94,218.27,309,28.04,1.88,2.41,27.61,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SHW 406 | SIG,Signet Jewelers,Consumer Discretionary,84.23,1.26,13.46,6.26,39.52,77,152.27,6.57,0.9677,0.94,2.09,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SIG 407 | SJM,Smucker (J.M.),Consumer Staples,154.08,1.75,26.75,5.76,60.26,104.3,154.71,17.94,1.69,2.28,2.54,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SJM 408 | SLB,Schlumberger Ltd.,Energy,78.74,2.57,62.25,1.26,28.23,59.6,86.61,98.61,8.51,3.07,2.75,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SLB 409 | SLG,SL Green Realty,Financials,105.98,2.79,42.6,2.49,70.4,80.12,121.94,10.62,0.99745,5.97,1.46,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SLG 410 | SNA,Snap-On Inc.,Consumer Discretionary,160.16,1.56,19.09,8.39,43.29,133.09,174.52,9.31,0.858,2.53,3.63,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SNA 411 | SNI,Scripps Networks Interactive Inc.,Consumer Discretionary,64.41,1.58,10.8,5.96,14.31,47.62,68.44,8.31,1.44,2.57,4.42,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SNI 412 | SO,Southern Co.,Utilities,54.14,4.26,21.16,2.56,22.65,41.81,54.49,49.71,6.71,2.85,2.37,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SO 413 | SPG,Simon Property Group Inc,Financials,219.56,3.21,38.53,5.7,14.69,173.09,220.33,67.94,3.98,12.47,14.67,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SPG 414 | SPGI,"S&P Global, Inc.",Financials,108.87,1.35,25.87,4.21,0.84,78.55,112.75,28.81,2.25,5.28,127.9,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SPGI 415 | SPLS,Staples Inc.,Consumer Discretionary,8.85,5.52,15.8,0.56,8.48,8,15.65,5.72,1.35,0.27,1.01,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SPLS 416 | SRCL,Stericycle Inc,Industrials,104.7,,36.24,2.89,33.08,91.05,151.57,8.89,0.81567,2.71,3.08,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SRCL 417 | SRE,Sempra Energy,Utilities,114.11,2.67,23.29,4.9,47.83,86.72,114.66,28.5,3.1,2.78,2.36,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SRE 418 | STI,SunTrust Banks,Financials,41.44,2.34,11.38,3.64,44.97,31.07,45.84,20.94,0,2.59,0.91,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=STI 419 | STJ,St Jude Medical,Health Care,80.58,1.55,32.37,2.49,14.44,48.83,80.84,22.91,1.6,4.04,5.55,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=STJ 420 | STT,State Street Corp.,Financials,53.23,2.61,12.15,4.38,47.51,50.6,81.26,21.08,0,2.01,1.1,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=STT 421 | STX,Seagate Technology,Information Technology,24.01,10.62,23.59,1.02,5.64,18.42,52.88,7.17,1.51,0.62,4.21,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=STX 422 | STZ,Constellation Brands,Consumer Staples,165.99,0.97,,5.55,0,114.49,167.91,,,,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=STZ 423 | SWK,Stanley Black & Decker,Consumer Discretionary,114.97,1.96,19.01,6.05,37.76,88.72,115.36,17.26,1.78,1.51,2.99,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SWK 424 | SWKS,Skyworks Solutions,Information Technology,62.91,1.67,12.24,5.14,18.63,54.5,106.5,11.97,1.37,3.41,3.27,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SWKS 425 | SWN,Southwestern Energy,Energy,12.87,0,,-15.34,2.99,5,22.7,4.95,0.946,1.71,4.13,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SWN 426 | SYF,Synchrony Financial,Financials,27.31,,10.15,2.69,15.84,23.25,36.4,22.77,0,3.15,1.64,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SYF 427 | SYK,Stryker Corp.,Health Care,122.29,1.35,28.62,4.27,23.55,86.68,122.4,45.73,2.72,4.5,5.14,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SYK 428 | SYMC,Symantec Corp.,Information Technology,20.7,1.47,5.58,3.71,6.01,16.14,23.99,12.67,0.892,3.48,3.4,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SYMC 429 | SYY,Sysco Corp.,Consumer Staples,51.59,2.42,37.55,1.37,7.03,35.55,51.7,29.07,2.48,0.59,7.29,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=SYY 430 | T,AT&T Inc,Telecommunications Services,42.61,4.45,18.06,2.36,20.05,30.97,43.89,262.31,49.76,1.68,2.11,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=T 431 | TAP,Molson Coors Brewing Company,Consumer Staples,102.56,1.64,44.61,2.3,46.1,63.91,104.15,22.02,0.6407,6.08,2.17,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TAP 432 | TDC,Teradata Corp.,Information Technology,25.94,,,-2.08,6.14,21.98,37.53,3.37,0.379,1.32,4.11,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TDC 433 | TDG,TransDigm Group,Industrials,269.81,0,31.05,8.69,-18.16,180.76,270.08,14.29,1.33,4.64,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TDG 434 | TEL,TE Connectivity Ltd.,Information Technology,57.53,2.62,10.9,5.28,20.72,51.7,67.99,20.57,2.47,1.7,2.72,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TEL 435 | TGNA,Tegna,Consumer Discretionary,23.64,2.39,12.4,1.91,9.92,21.11,32.93,5.14,1.13,1.64,2.36,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TGNA 436 | TGT,Target Corp.,Consumer Discretionary,71.31,3.42,13.2,5.4,21.13,65.5,85.31,42.02,7.41,0.57,3.32,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TGT 437 | TIF,Tiffany & Co.,Consumer Discretionary,61.35,3.02,17.66,3.47,23.35,56.99,96.43,7.73,0.9392,1.86,2.55,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TIF 438 | TJX,TJX Companies Inc.,Consumer Discretionary,78.96,1.35,23.2,3.4,6.86,63.53,79.2,52.2,4.39,1.62,11.26,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TJX 439 | TMK,Torchmark Corp.,Financials,61.32,0.93,14.56,4.21,36.27,48.47,63.26,7.4,0.85226,1.92,1.67,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TMK 440 | TMO,Thermo Fisher Scientific,Health Care,152.69,0.4,30.73,4.97,53.17,117.1,154.81,60.09,4.23,3.38,2.8,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TMO 441 | TRIP,TripAdvisor,Consumer Discretionary,67.13,,60.53,1.11,10.05,53.48,94,9.78,0.233,6.45,6.53,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TRIP 442 | TROW,T. Rowe Price Group,Financials,73.24,3.02,15.75,4.65,19.2,63.57,79.74,18.18,1.96,4.26,3.73,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TROW 443 | TRV,The Travelers Companies Inc.,Financials,118.08,2.28,11.09,10.65,82.65,95.21,119.3,34.53,5.69,1.28,1.42,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TRV 444 | TSCO,Tractor Supply Company,Consumer Discretionary,93.69,1.04,30.35,3.09,10.15,75,97.25,12.5,0.79272,1.94,9.09,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TSCO 445 | TSN,Tyson Foods,Consumer Staples,68.92,0.89,18.65,3.7,25.19,39.05,70.44,26.79,3.51,0.68,2.69,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TSN 446 | TSO,Tesoro Petroleum Co.,Energy,72.72,2.86,6.12,11.88,43.66,67.8,119.67,8.7,3.78,0.31,1.6,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TSO 447 | TSS,Total System Services,Information Technology,54.01,0.76,26.49,2.04,10.48,37.47,56.69,9.92,0.7015,3.38,5.02,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TSS 448 | TWX,Time Warner Inc.,Consumer Discretionary,77.96,2.12,15.64,4.98,30.22,55.53,91.34,61.31,8.05,2.12,2.52,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TWX 449 | TXN,Texas Instruments,Information Technology,63.27,2.49,22.08,2.87,9.72,43.49,63.31,63.54,5.27,4.82,6.36,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TXN 450 | TXT,Textron Inc.,Industrials,36.99,0.22,14.3,2.59,18.57,30.69,44.98,9.94,1.6,0.71,1.92,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TXT 451 | TYC,Tyco International,Industrials,42.77,1.97,41.16,1.04,9.75,28.94,43.98,18.2,1.57,1.83,4.28,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=TYC 452 | UA,Under Armour,Consumer Discretionary,40.43,,75.71,0.53,2.66,31.61,52.94,35.33,0.53372,8.42,15.23,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=UA 453 | UAL,United Continental Holdings,Industrials,41.48,0,2.15,19.33,23.11,37.41,62.21,13.97,7.3,0.36,1.74,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=UAL 454 | UDR,UDR Inc,Financials,37.09,3.22,35.32,1.05,10.95,30.03,38.61,9.91,0.5551,10.71,3.34,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=UDR 455 | UHS,"Universal Health Services, Inc.",Health Care,137.16,0.3,19.72,6.96,44.2,100.82,148.57,13.31,1.69,1.41,3.05,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=UHS 456 | ULTA,Ulta Salon Cosmetics & Fragrance Inc,Consumer Discretionary,250.82,0,46.53,5.39,21.07,120.38,253.11,15.66,0.72085,3.74,11.73,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ULTA 457 | UNH,United Health Group Inc.,Health Care,141.27,1.78,22.71,6.22,36.87,95,142.96,134.32,12.73,0.81,3.82,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=UNH 458 | UNM,Unum Group,Financials,31.2,2.43,8.81,3.54,37.52,23.99,38.15,7.42,1.49,0.67,0.81,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=UNM 459 | UNP,Union Pacific,Industrials,90.69,2.5,16.94,5.36,24.35,67.06,99.71,76.27,9.79,3.52,3.62,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=UNP 460 | UPS,United Parcel Service,Industrials,109.52,2.89,19.9,5.5,2.78,87.3,109.85,96.67,9.96,1.62,38.85,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=UPS 461 | URBN,Urban Outfitters,Consumer Discretionary,29.09,,16.13,1.8,10.02,19.26,36.99,3.41,0.49862,0.95,2.8,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=URBN 462 | URI,"United Rentals, Inc.",Industrials,67.44,,11.32,5.96,16.79,41.9,82.63,5.97,1.78,0.98,3.85,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=URI 463 | USB,U.S. Bancorp,Financials,40.09,2.6,12.68,3.16,23.82,37.07,46.26,69.21,0,3.64,1.65,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=USB 464 | UTX,United Technologies,Industrials,103.66,2.59,12.15,8.53,33.88,83.39,112.36,86.75,10.11,1.52,3.01,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=UTX 465 | V,Visa Inc.,Information Technology,76.42,0.75,26.64,2.87,12.22,60,81.73,182.28,9.63,12.45,6.1,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=V 466 | VAR,Varian Medical Systems,Health Care,84.99,0,21.02,4.04,17.68,71.07,90.78,8.09,0.60497,2.56,4.74,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=VAR 467 | VFC,V.F. Corp.,Consumer Discretionary,64.05,2.36,22.95,2.79,11.74,52.21,77.4,26.71,2.02,2.11,5.35,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=VFC 468 | VIAB,Viacom Inc.,Consumer Discretionary,45.2,3.72,8.11,5.57,9.82,30.11,62.63,17.9,3.79,1.31,4.38,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=VIAB 469 | VLO,Valero Energy,Energy,47.73,5.08,6.63,7.2,43.97,46.88,73.88,22.42,7.58,0.27,1.07,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=VLO 470 | VMC,Vulcan Materials,Materials,123.61,0.66,60.09,2.06,33.15,78.83,124.28,16.46,0.89797,4.58,3.67,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=VMC 471 | VNO,Vornado Realty Trust,Financials,100.46,2.57,39.61,2.54,27.8,78.91,103.41,18.96,1.22,7.44,3.52,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=VNO 472 | VRSK,Verisk Analytics,Industrials,83.4,,28.48,2.93,7.68,64.79,83.4,14.03,0.99243,6.32,10.65,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=VRSK 473 | VRSN,Verisign Inc.,Information Technology,85.6,0,28.72,2.98,-10.18,63.42,93.94,9.29,0.68909,8.35,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=VRSN 474 | VRTX,Vertex Pharmaceuticals Inc,Health Care,88.96,,,-1.65,3.87,75.9,143.45,22,-0.16976,17.24,23.27,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=VRTX 475 | VTR,Ventas Inc,Financials,72.63,4.05,54.98,1.32,28.49,46.87,73.83,24.56,1.72,7.32,2.53,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=VTR 476 | VZ,Verizon Communications,Telecommunications Services,55.9,4.08,12.68,4.41,4.57,38.06,56.95,227.86,49.09,1.71,12.11,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=VZ 477 | WAT,Waters Corporation,Health Care,146.53,0,25.91,5.66,25.97,112,146.96,11.86,0.66179,5.61,5.49,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=WAT 478 | WBA,Walgreens Boots Alliance,Consumer Staples,81.8,1.77,28.27,2.89,28.55,71.5,97.3,88.53,8.27,0.74,2.82,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=WBA 479 | WDC,Western Digital,Information Technology,49.35,4.2,13.94,3.54,41.24,34.99,88.46,11.5,2.22,0.88,1.16,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=WDC 480 | WEC,Wisconsin Energy Corporation,Utilities,65.03,3.02,24.35,2.67,27.94,46,66.1,20.53,2.14,3.02,2.3,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=WEC 481 | WFC,Wells Fargo,Financials,47.79,3.26,11.74,4.07,34.62,44.5,58.77,242.63,0,2.82,1.35,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=WFC 482 | WFM,Whole Foods Market,Consumer Staples,33.58,1.63,22.91,1.47,10.11,28.07,41.97,10.78,1.39,0.69,3.29,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=WFM 483 | WHR,Whirlpool Corp.,Consumer Discretionary,171.38,2.38,18.27,9.38,62.6,123.6,193.59,13.02,2.09,0.62,2.68,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=WHR 484 | WLTW,Willis Towers Watson,Financials,125.06,1.54,26.71,4.68,80.57,104.11,129.7,17.31,1.16,3.48,1.54,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=WLTW 485 | WM,Waste Management Inc.,Industrials,67.61,2.44,26.87,2.52,11.9,47.55,70.5,30.04,3.46,2.28,5.66,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=WM 486 | WMB,Williams Cos.,Energy,20.99,12.43,,-0.94,7.59,10.22,58.77,15.75,3.24,2.09,2.68,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=WMB 487 | WMT,Wal-Mart Stores,Consumer Staples,73.84,2.72,16.32,4.52,24.06,56.3,74.14,230.13,33.22,0.47,3.06,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=WMT 488 | WRK,Westrock Co,Materials,38.55,4.04,,-0.55,43.77,29.73,64.74,9.63,2.26,0.67,0.85,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=WRK 489 | WU,Western Union Co,Information Technology,19.57,3.34,12.22,1.6,2.52,16.02,20.62,9.61,1.38,1.71,7.54,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=WU 490 | WY,Weyerhaeuser Corp.,Financials,30.67,4.12,37.86,0.81,13.53,22.06,32.72,22.91,1.51,3.14,2.23,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=WY 491 | WYN,Wyndham Worldwide,Consumer Discretionary,72.35,2.84,14.46,5,7.48,60.59,87.33,8.1,1.25,1.43,9.5,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=WYN 492 | WYNN,Wynn Resorts Ltd,Consumer Discretionary,89.75,2.22,29.01,3.09,-0.83,49.95,110.31,9.1,0.9572,2.27,,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=WYNN 493 | XEC,Cimarex Energy,Energy,118.43,0.27,,-23.01,27.57,72.77,124.91,11.23,0.65789,8.17,4.16,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=XEC 494 | XEL,Xcel Energy Inc,Utilities,44.59,3,21.13,2.11,21.01,32.43,45.42,22.65,3.43,2.08,2.11,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=XEL 495 | XL,XL Capital,Financials,33.01,2.45,8.31,3.97,40.83,25.56,40.48,9.4,1.59,0.88,0.8,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=XL 496 | XLNX,Xilinx Inc,Information Technology,46.97,2.9,22.91,2.05,10.21,38.73,50.72,11.92,0.73832,5.24,4.48,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=XLNX 497 | XOM,Exxon Mobil Corp.,Energy,93.54,3.23,30.13,3.11,41.53,66.55,94.49,387.87,27.74,1.75,2.24,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=XOM 498 | XRAY,Dentsply Sirona,Health Care,63.39,0.5,30.82,2.06,35.79,49.48,65.83,14.85,0.5812,5.25,1.75,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=XRAY 499 | XRX,Xerox Corp.,Information Technology,9.54,3.3,38.31,0.25,9.01,8.48,11.46,9.66,1.73,0.53,1.04,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=XRX 500 | XYL,Xylem Inc.,Industrials,46.41,1.43,24.53,1.89,12.07,29.9,46.67,8.3,0.598,2.23,3.78,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=XYL 501 | YHOO,Yahoo Inc.,Information Technology,37.74,,,-4.76,30.03,26.15,39.98,35.82,0.24544,7.37,1.25,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=YHOO 502 | YUM,Yum! Brands Inc,Consumer Discretionary,85.76,2.18,28.29,3.03,0.38,64.58,92.33,34.94,2.97,2.62,220.13,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=YUM 503 | ZBH,Zimmer Biomet Holdings,Health Care,124.89,0.79,307.61,0.41,48.52,88.27,124.98,24.88,2.63,3.59,2.51,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ZBH 504 | ZION,Zions Bancorp,Financials,24.74,0.98,20.45,1.21,33.23,19.65,32.42,5.06,0,2.44,0.73,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ZION 505 | ZTS,Zoetis,Health Care,48.5,0.8,63.98,0.76,2.35,37.73,50.39,24.07,1.53,4.9,20.32,http://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=ZTS 506 | -------------------------------------------------------------------------------- /Data/s&p.txt: -------------------------------------------------------------------------------- 1 | ABT 2 | ABBV 3 | ACN 4 | ACE 5 | ADBE 6 | ADT 7 | AAP 8 | AES 9 | AET 10 | AFL 11 | AMG 12 | A 13 | GAS 14 | APD 15 | ARG 16 | AKAM 17 | AA 18 | AGN 19 | ALXN 20 | ALLE 21 | ADS 22 | ALL 23 | ALTR 24 | MO 25 | AMZN 26 | AEE 27 | AAL 28 | AEP 29 | AXP 30 | AIG 31 | AMT 32 | AMP 33 | ABC 34 | AME 35 | AMGN 36 | APH 37 | APC 38 | ADI 39 | AON 40 | APA 41 | AIV 42 | AMAT 43 | ADM 44 | AIZ 45 | T 46 | ADSK 47 | ADP 48 | AN 49 | AZO 50 | AVGO 51 | AVB 52 | AVY 53 | BHI 54 | BLL 55 | BAC 56 | BK 57 | BCR 58 | BXLT 59 | BAX 60 | BBT 61 | BDX 62 | BBBY 63 | BRK-B 64 | BBY 65 | BLX 66 | HRB 67 | BA 68 | BWA 69 | BXP 70 | BSK 71 | BMY 72 | BRCM 73 | BF-B 74 | CHRW 75 | CA 76 | CVC 77 | COG 78 | CAM 79 | CPB 80 | COF 81 | CAH 82 | HSIC 83 | KMX 84 | CCL 85 | CAT 86 | CBG 87 | CBS 88 | CELG 89 | CNP 90 | CTL 91 | CERN 92 | CF 93 | SCHW 94 | CHK 95 | CVX 96 | CMG 97 | CB 98 | CI 99 | XEC 100 | CINF 101 | CTAS 102 | CSCO 103 | C 104 | CTXS 105 | CLX 106 | CME 107 | CMS 108 | COH 109 | KO 110 | CCE 111 | CTSH 112 | CL 113 | CMCSA 114 | CMA 115 | CSC 116 | CAG 117 | COP 118 | CNX 119 | ED 120 | STZ 121 | GLW 122 | COST 123 | CCI 124 | CSX 125 | CMI 126 | CVS 127 | DHI 128 | DHR 129 | DRI 130 | DVA 131 | DE 132 | DLPH 133 | DAL 134 | XRAY 135 | DVN 136 | DO 137 | DTV 138 | DFS 139 | DISCA 140 | DISCK 141 | DG 142 | DLTR 143 | D 144 | DOV 145 | DOW 146 | DPS 147 | DTE 148 | DD 149 | DUK 150 | DNB 151 | ETFC 152 | EMN 153 | ETN 154 | EBAY 155 | ECL 156 | EIX 157 | EW 158 | EA 159 | EMC 160 | EMR 161 | ENDP 162 | ESV 163 | ETR 164 | EOG 165 | EQT 166 | EFX 167 | EQIX 168 | EQR 169 | ESS 170 | EL 171 | ES 172 | EXC 173 | EXPE 174 | EXPD 175 | ESRX 176 | XOM 177 | FFIV 178 | FB 179 | FAST 180 | FDX 181 | FIS 182 | FITB 183 | FSLR 184 | FE 185 | FSIV 186 | FLIR 187 | FLS 188 | FLR 189 | FMC 190 | FTI 191 | F 192 | FOSL 193 | BEN 194 | FCX 195 | FTR 196 | GME 197 | GPS 198 | GRMN 199 | GD 200 | GE 201 | GGP 202 | GIS 203 | GM 204 | GPC 205 | GNW 206 | GILD 207 | GS 208 | GT 209 | GOOGL 210 | GOOG 211 | GWW 212 | HAL 213 | HBI 214 | HOG 215 | HAR 216 | HRS 217 | HIG 218 | HAS 219 | HCA 220 | HCP 221 | HCN 222 | HP 223 | HES 224 | HPQ 225 | HD 226 | HON 227 | HRL 228 | HSP 229 | HST 230 | HCBK 231 | HUM 232 | HBAN 233 | ITW 234 | IR 235 | INTC 236 | ICE 237 | IBM 238 | IP 239 | IPG 240 | IFF 241 | INTU 242 | ISRG 243 | IVZ 244 | IRM 245 | JEC 246 | JBHT 247 | JNJ 248 | JCI 249 | JOY 250 | JPM 251 | JNPR 252 | KSU 253 | K 254 | KEY 255 | GMCR 256 | KMB 257 | KIM 258 | KMI 259 | KLAC 260 | KSS 261 | KRFT 262 | KR 263 | LB 264 | LLL 265 | LH 266 | LRCX 267 | LM 268 | LEG 269 | LEN 270 | LVLT 271 | LUK 272 | LLY 273 | LNC 274 | LLTC 275 | LMT 276 | L 277 | LOW 278 | LYB 279 | MTB 280 | MAC 281 | M 282 | MNK 283 | MRO 284 | MPC 285 | MAR 286 | MMC 287 | MLM 288 | MAS 289 | MA 290 | MAT 291 | MKC 292 | MCD 293 | MHFI 294 | MCK 295 | MJN 296 | MMV 297 | MDT 298 | MRK 299 | MET 300 | KORS 301 | MCHP 302 | MU 303 | MSFT 304 | MHK 305 | TAP 306 | MDLZ 307 | MON 308 | MNST 309 | MCO 310 | MS 311 | MOS 312 | MSI 313 | MUR 314 | MYL 315 | NDAQ 316 | NOV 317 | NAVI 318 | NTAP 319 | NFLX 320 | NWL 321 | NFX 322 | NEM 323 | NWSA 324 | NEE 325 | NLSN 326 | NKE 327 | NI 328 | NE 329 | NBL 330 | JWN 331 | NSC 332 | NTRS 333 | NOC 334 | NRG 335 | NUE 336 | NVDA 337 | ORLY 338 | OXY 339 | OMC 340 | OKE 341 | ORCL 342 | OI 343 | PCAR 344 | PLL 345 | PH 346 | PDCO 347 | PAYX 348 | PNR 349 | PBCT 350 | POM 351 | PEP 352 | PKI 353 | PRGO 354 | PFE 355 | PCG 356 | PM 357 | PSX 358 | PNW 359 | PXD 360 | PBI 361 | PCL 362 | PNC 363 | RL 364 | PPG 365 | PPL 366 | PX 367 | PCP 368 | PCLN 369 | PFG 370 | PG 371 | PGR 372 | PLD 373 | PRU 374 | PEG 375 | PSA 376 | PHM 377 | PVH 378 | QRVO 379 | PWR 380 | QCOM 381 | DGX 382 | RRC 383 | RTN 384 | O 385 | RHT 386 | REGN 387 | RF 388 | RSG 389 | RAI 390 | RHI 391 | ROK 392 | COL 393 | ROP 394 | ROST 395 | RLC 396 | R 397 | CRM 398 | SNDK 399 | SCG 400 | SLB 401 | SNI 402 | STX 403 | SEE 404 | SRE 405 | SHW 406 | SIAL 407 | SPG 408 | SWKS 409 | SLG 410 | SJM 411 | SNA 412 | SO 413 | LUV 414 | SWN 415 | SE 416 | STJ 417 | SWK 418 | SPLS 419 | SBUX 420 | HOT 421 | STT 422 | SRCL 423 | SYK 424 | STI 425 | SYMC 426 | SYY 427 | TROW 428 | TGT 429 | TEL 430 | TE 431 | TGNA 432 | THC 433 | TDC 434 | TSO 435 | TXN 436 | TXT 437 | HSY 438 | TRV 439 | TMO 440 | TIF 441 | TWX 442 | TWC 443 | TJK 444 | TMK 445 | TSS 446 | TSCO 447 | RIG 448 | TRIP 449 | FOXA 450 | TSN 451 | TYC 452 | UA 453 | UNP 454 | UNH 455 | UPS 456 | URI 457 | UTX 458 | UHS 459 | UNM 460 | URBN 461 | VFC 462 | VLO 463 | VAR 464 | VTR 465 | VRSN 466 | VZ 467 | VRTX 468 | VIAB 469 | V 470 | VNO 471 | VMC 472 | WMT 473 | WBA 474 | DIS 475 | WM 476 | WAT 477 | ANTM 478 | WFC 479 | WDC 480 | WU 481 | WY 482 | WHR 483 | WFM 484 | WMB 485 | WEC 486 | WYN 487 | WYNN 488 | XEL 489 | XRX 490 | XLNX 491 | XL 492 | XYL 493 | YHOO 494 | YUM 495 | ZBH 496 | ZION 497 | ZTS -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Vaibhav Khaitan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Patterns/BABA_highLow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vaibhav/Stock-Analysis/d5aefe8bb783aab660ff657611e2d4303c70887a/Patterns/BABA_highLow.png -------------------------------------------------------------------------------- /Patterns/BABAtrend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vaibhav/Stock-Analysis/d5aefe8bb783aab660ff657611e2d4303c70887a/Patterns/BABAtrend.png -------------------------------------------------------------------------------- /Patterns/BABAtrendSegments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vaibhav/Stock-Analysis/d5aefe8bb783aab660ff657611e2d4303c70887a/Patterns/BABAtrendSegments.png -------------------------------------------------------------------------------- /Patterns/CompareToSPY.PY: -------------------------------------------------------------------------------- 1 | ############################ 2 | ### 3 | # Vaibhav Khaitan 4 | # February 2017 5 | # Module compares the S&P to the given stock 6 | # and tries to find any correlation they have. 7 | ### 8 | ############################ 9 | 10 | # Starting with 2009 11 | # Do not want to include the market crash in 2008 since it is outlier data 12 | # May add a 2008 crash handler in the future 13 | 14 | # Date Open High Low Close Volume Adj Close 15 | # 2009-01-02 16 | from datetime import datetime, timedelta 17 | import sys 18 | import time 19 | import csv 20 | from yahoo_finance import Share 21 | 22 | 23 | def print_header_section(heading): 24 | print("=====================================================================") 25 | print("==========================" + heading + "======================================") 26 | print("=====================================================================") 27 | 28 | 29 | def print_footer_section(): 30 | print("=====================================================================") 31 | 32 | version = sys.version_info[0] 33 | 34 | now = datetime.now() 35 | DateNow = str(now.year) + "-" + str(now.month) + "-" + str(now.day) 36 | 37 | SPY = {} 38 | ticker = "" 39 | startDate = "" 40 | counter1 = 1 41 | counter2 = 0 42 | SPYdata = [] 43 | givenStock = [] 44 | 45 | # a = index of list in list of lists 46 | # b = index of element in the list 47 | # [a, b] 48 | 49 | 50 | def findItem(theList, item): 51 | return [(ind, theList[ind].index(item)) for ind in range(len(theList)) if item in theList[ind]] 52 | 53 | 54 | def getSP500(): 55 | with open('s-and-p-500-2009.csv', 'r') as source: 56 | rdr = csv.reader(source) 57 | next(rdr, None) 58 | for r in rdr: 59 | tmp = [] 60 | date = r[0] # datetime.strptime(r[0], "%Y-%m-%d") 61 | day_open = float(r[1]) 62 | high = float(r[2]) 63 | low = float(r[3]) 64 | close = float(r[4]) 65 | volume = int(r[5]) 66 | adjclose = float(r[6]) 67 | tmp.append(date) 68 | tmp.append(day_open) 69 | tmp.append(high) 70 | tmp.append(low) 71 | tmp.append(close) 72 | tmp.append(adjclose) 73 | tmp.append(volume) 74 | SPYdata.append(tmp) 75 | # SPY[date] = tmp 76 | return SPYdata 77 | 78 | 79 | def getStockData(theTicker): 80 | global startDate 81 | print("Getting Data for ... " + theTicker) 82 | stock = Share(theTicker) 83 | print(startDate) 84 | data = stock.get_historical(startDate, DateNow) 85 | for d in data: 86 | tmp = [] 87 | volume = int(d['Volume']) 88 | adjclose = float(d['Adj_Close']) 89 | high = float(d['High']) 90 | low = float(d['Low']) 91 | close = float(d['Close']) 92 | date = d['Date'] 93 | open = float(d['Open']) 94 | # newDate = datetime.strptime(date, "%Y-%m-%d") 95 | tmp.append(date) 96 | tmp.append(open) 97 | tmp.append(high) 98 | tmp.append(low) 99 | tmp.append(close) 100 | tmp.append(adjclose) 101 | tmp.append(volume) 102 | givenStock.append(tmp) 103 | return givenStock 104 | 105 | 106 | # takes in datetime 107 | def dayUpDown(theDate, data): 108 | today = theDate.strftime("%Y-%m-%d") 109 | ind = findItem(data, today) 110 | if len(ind) < 1: 111 | return 0 112 | indx = ind[0][0] 113 | point = data[indx] 114 | open = point[1] 115 | close = point[5] 116 | 117 | if close < open: 118 | return 1 119 | elif close == open: 120 | return 0 121 | else: 122 | return -1 123 | 124 | 125 | # takes in datetime 126 | def closeUpDown(theDate, data): 127 | today = theDate.strftime("%Y-%m-%d") 128 | tmp = theDate - timedelta(days=1) 129 | yesterday = tmp.strftime("%Y-%m-%d") 130 | ind = findItem(data, today) 131 | ind2 = findItem(data, yesterday) 132 | if len(ind) < 1 or len(ind2) < 1: 133 | return 0 134 | indx = ind[0][0] 135 | indx2 = ind2[0][0] 136 | point1 = data[indx] 137 | point2 = data[indx2] 138 | close1 = point1[5] 139 | close2 = point2[5] 140 | if close1 < close2: 141 | return 1 142 | elif close2 == close1: 143 | return 0 144 | else: 145 | return -1 146 | 147 | 148 | # takes in datetime 149 | def openUpDown(theDate, data): 150 | today = theDate.strftime("%Y-%m-%d") 151 | tmp = theDate - timedelta(days=1) 152 | yesterday = tmp.strftime("%Y-%m-%d") 153 | ind = findItem(data, today) 154 | ind2 = findItem(data, yesterday) 155 | if len(ind) < 1 or len(ind2) < 1: 156 | return 0 157 | indx = ind[0][0] 158 | indx2 = ind2[0][0] 159 | point1 = data[indx] 160 | point2 = data[indx2] 161 | open1 = point1[1] 162 | close2 = point2[5] 163 | if close2 < open1: 164 | return 1 165 | elif close2 == open1: 166 | return 0 167 | else: 168 | return -1 169 | 170 | 171 | def AskUser(): 172 | global ticker, startDate 173 | ticker = input("Please enter a ticker...\n") 174 | ticker = ticker.upper() 175 | print("Do you want to specify a date? (Y/N) ") 176 | needDate = input() 177 | if needDate.startswith("y") or needDate.startswith("Y"): 178 | start = input("When do you want to start comparison? (YYYY-MM-DD) ") 179 | # startDate = datetime.strptime(start, "%Y-%m-%d") 180 | startDate = start 181 | else: 182 | # startDate = datetime.strptime("2009-01-02", "%Y-%m-%d") 183 | startDate = start = "2009-01-02" 184 | return ticker, start 185 | 186 | 187 | if __name__ == '__main__': 188 | SPYdata = getSP500() 189 | theTicker, start = AskUser() 190 | givenStock = getStockData(theTicker) 191 | givenStock.reverse() 192 | 193 | length = len(SPYdata) 194 | print(length) 195 | length = len(givenStock) 196 | print(length) 197 | 198 | dayUp = 0 199 | dayDown = 0 200 | dayNeutral = 0 201 | 202 | openUp = 0 203 | openDown = 0 204 | openNeutral = 0 205 | 206 | closeUp = 0 207 | closeDown = 0 208 | closeNeutral = 0 209 | 210 | 211 | for i in SPYdata: 212 | curDate = i[0] 213 | newDate = datetime.strptime(curDate, "%Y-%m-%d") 214 | j = dayUpDown(newDate, SPYdata) 215 | k = closeUpDown(newDate, SPYdata) 216 | l = openUpDown(newDate, SPYdata) 217 | if j == 1: 218 | dayUp += 1 219 | elif j == -1: 220 | dayDown += 1 221 | else: 222 | dayNeutral += 1 223 | 224 | if k == 1: 225 | closeUp += 1 226 | elif k == -1: 227 | closeDown += 1 228 | else: 229 | closeNeutral += 1 230 | 231 | if l == 1: 232 | openUp += 1 233 | elif l == -1: 234 | openDown += 1 235 | else: 236 | openNeutral += 1 237 | 238 | "{0:.2f}".format(13.949999999999999) 239 | 240 | print_header_section(" S&P 500 ") 241 | print("Up Days: " + str(dayUp) + " " + "{0:.2f}".format(100 * float(dayUp) / float(length)) + "%") 242 | print("Down Days: " + str(dayDown) + " " + 243 | "{0:.2f}".format(100 * float(dayDown) / float(length)) + "%") 244 | print("Neutral Days: " + str(dayNeutral) + " " + 245 | "{0:.2f}".format(100 * float(dayNeutral) / float(length)) + "%") 246 | 247 | 248 | print("Up Open Days: " + str(openUp) + " " + 249 | "{0:.2f}".format(100 * float(openUp) / float(length)) + "%") 250 | print("Down Open Days: " + str(openDown) + " " + 251 | "{0:.2f}".format(100 * float(openDown) / float(length)) + "%") 252 | print("Neutral Open Days: " + str(openNeutral) + " " + 253 | "{0:.2f}".format(100 * float(openNeutral - 1) / float(length)) + "%") 254 | 255 | 256 | print("Up Close Days: " + str(closeUp) + " " + 257 | "{0:.2f}".format(100 * float(closeUp) / float(length)) + "%") 258 | print("Down Close Days: " + str(closeDown) + " " + 259 | "{0:.2f}".format(100 * float(closeDown) / float(length)) + "%") 260 | print("Neutral Close Days: " + str(closeNeutral) + " " + 261 | "{0:.2f}".format(100 * float(closeNeutral - 1) / float(length)) + "%") 262 | print_footer_section() 263 | 264 | dayUp, dayDown, dayNeutral = (0, 0, 0) 265 | openUp, openDown, openNeutral = (0, 0, 0) 266 | closeUp, closeDown, closeNeutral = (0, 0, 0) 267 | j, k, l = (0, 0, 0) 268 | test = 0 269 | 270 | for n in givenStock: 271 | if test == 0: 272 | test += 1 273 | continue 274 | curDate = n[0] 275 | newDate = datetime.strptime(curDate, "%Y-%m-%d") 276 | j = dayUpDown(newDate, givenStock) 277 | k = closeUpDown(newDate, givenStock) 278 | l = openUpDown(newDate, givenStock) 279 | if j == 1: 280 | dayUp += 1 281 | elif j == -1: 282 | dayDown += 1 283 | else: 284 | dayNeutral += 1 285 | 286 | if k == 1: 287 | closeUp += 1 288 | elif k == -1: 289 | closeDown += 1 290 | else: 291 | closeNeutral += 1 292 | 293 | if l == 1: 294 | openUp += 1 295 | elif l == -1: 296 | openDown += 1 297 | else: 298 | openNeutral += 1 299 | 300 | 301 | print_header_section(theTicker) 302 | print("Up Days: " + str(dayUp) + " " + 303 | "{0:.2f}".format(100 * float(dayUp) / float(length)) + "%") 304 | print("Down Days: " + str(dayDown) + " " + 305 | "{0:.2f}".format(100 * float(dayDown) / float(length)) + "%") 306 | print("Neutral Days: " + str(dayNeutral) + " " + 307 | "{0:.2f}".format(100 * float(dayNeutral) / float(length)) + "%") 308 | 309 | 310 | print("Up Open Days: " + str(openUp) + " " + 311 | "{0:.2f}".format(100 * float(openUp) / float(length)) + "%") 312 | print("Down Open Days: " + str(openDown) + " " + 313 | "{0:.2f}".format(100 * float(openDown) / float(length)) + "%") 314 | print("Neutral Open Days: " + str(openNeutral) + " " + 315 | "{0:.2f}".format(100 * float(openNeutral - 1) / float(length)) + "%") 316 | 317 | 318 | print("Up Close Days: " + str(closeUp) + " " + 319 | "{0:.2f}".format(100 * float(closeUp) / float(length)) + "%") 320 | print("Down Close Days: " + str(closeDown) + " " + 321 | "{0:.2f}".format(100 * float(closeDown) / float(length)) + "%") 322 | print("Neutral Close Days: " + str(closeNeutral) + " " + 323 | "{0:.2f}".format(100 * float(closeNeutral - 1) / float(length)) + "%") 324 | print_footer_section() 325 | -------------------------------------------------------------------------------- /Patterns/MACD.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Author: Vaibhav Khaitan 3 | Date: 8/17/2018 4 | Description: Creates a dataframe with moving averages and MACD oscillator 5 | ''' 6 | import matplotlib.pyplot as plt 7 | import numpy as np 8 | import pandas as pd 9 | from datetime import datetime, timedelta 10 | from iexfinance import get_historical_data 11 | 12 | moving_avg1 = 10 13 | moving_avg2 = 20 14 | ticker = "BABA" 15 | 16 | now = datetime.now() 17 | start = now - timedelta(days=90) 18 | df = get_historical_data(ticker, start=start, end=now, output_format='pandas') 19 | 20 | 21 | def macd(dat): 22 | dat['10dma'] = dat['close'].rolling(window=moving_avg1, min_periods=1).mean() 23 | dat['20dma'] = dat['close'].rolling(window=moving_avg2, min_periods=1).mean() 24 | 25 | return dat 26 | 27 | 28 | def add_macd(df): 29 | 30 | df = macd(df) 31 | df['position'] = 0 32 | 33 | df['position'][moving_avg1:] = np.where(df['10dma'][moving_avg1:] >= df['20dma'][moving_avg1:], 1, 0) 34 | 35 | df['signals'] = df['position'].diff() 36 | df['oscillator'] = df['10dma'] - df['20dma'] 37 | 38 | return df 39 | 40 | 41 | df = add_macd(df) 42 | # print(df) 43 | print(df.loc[df['signals'] == 1]) 44 | print(df.loc[df['signals'] == -1]) 45 | -------------------------------------------------------------------------------- /Patterns/README.md: -------------------------------------------------------------------------------- 1 | ## TrendLine 2 | 3 | Edit these lines to modify the amount of data you wish to draw trendlines for. 4 | You can also change the ticker symbol from "BABA" to any other stock. 5 | 6 | 7 | ```python 8 | today = datetime.now() 9 | d = timedelta(days=365) 10 | start = today - d 11 | dat = data.DataReader("BABA", "iex", start, today)['close'] 12 | ``` 13 | 14 | 15 | Run the file: **python TrendLine.py** 16 | 17 | Results from Alibaba's stock data for past year. 18 | 19 | ![BABA TrendLines](BABAtrend.png) 20 | 21 | 22 | ![BABA TrendLines using Segments](BABAtrendSegments.png) 23 | 24 | 25 | ![BABA Highs and Lows](BABA_highLow.png) -------------------------------------------------------------------------------- /Patterns/TrendLine.py: -------------------------------------------------------------------------------- 1 | ## Requires Python 3 2 | 3 | import numpy as np 4 | from matplotlib.pyplot import plot, grid, show 5 | from pandas_datareader import data, wb 6 | import pandas as pd 7 | from datetime import datetime, timedelta 8 | 9 | def trendGen(xDat, window=1.0/3.0, needPlot=True): 10 | 11 | x = np.array(xDat) 12 | xLen = len(x) 13 | window = window * xLen 14 | window = int(window) 15 | 16 | # find index of min and max 17 | absMax = np.where(x == max(x))[0][0] 18 | absMin = np.where(x == min(x))[0][0] 19 | 20 | if absMax + window > xLen: 21 | xmax = max(x[0:(absMax - window)]) 22 | else: 23 | xmax = max(x[(absMax + window):]) 24 | 25 | 26 | if absMin - window < 0: 27 | xmin = min(x[(absMin + window):]) 28 | else: 29 | xmin = min(x[0:(absMin - window)]) 30 | 31 | xmax = np.where(x == xmax)[0][0] # index of the 2nd max 32 | xmin = np.where(x == xmin)[0][0] # index of the 2nd min 33 | 34 | # Create the trend lines 35 | # rise over run 36 | slopeMax = (x[absMax] - x[xmax]) / (absMax - xmax) 37 | slopeMin = (x[absMin] - x[xmin]) / (absMin - xmin) 38 | amax = x[absMax] - (slopeMax * absMax) 39 | amin = x[absMin] - (slopeMin * absMin) 40 | bmax = x[absMax] + (slopeMax * (xLen - absMax)) 41 | bmin = x[absMin] + (slopeMax * (xLen - absMin)) 42 | maxline = np.linspace(amax, bmax, xLen) 43 | minline = np.linspace(amin, bmin, xLen) 44 | 45 | trends = np.transpose(np.array((x, maxline, minline))) 46 | 47 | trends = pd.DataFrame(trends, index=np.arange(0, len(x)), 48 | columns=['Data', 'Resistance', 'Support']) 49 | 50 | if needPlot: 51 | plot(trends) 52 | grid() 53 | show() 54 | 55 | return trends, slopeMax, slopeMin 56 | 57 | 58 | def findTops(x, window=1.0/3, charts=True): 59 | 60 | x = np.array(x) 61 | xLen = len(x) 62 | 63 | if window < 1: 64 | window = int(window * xLen) 65 | 66 | sigs = np.zeros(xLen, dtype=float) 67 | 68 | i = window 69 | 70 | while i != xLen: 71 | if x[i] > max(x[i-window:i]): sigs[i] = 1 72 | elif x[i] < min(x[i-window:i]): sigs[i] = -1 73 | i += 1 74 | 75 | xmin = np.where(sigs == -1.0)[0] 76 | xmax = np.where(sigs == 1.0)[0] 77 | 78 | ymin = x[xmin] 79 | ymax = x[xmax] 80 | 81 | if charts is True: 82 | plot(x) 83 | plot(xmin, ymin, 'ro') 84 | plot(xmax, ymax, 'go') 85 | show() 86 | 87 | return sigs 88 | 89 | def trendSegments(x, segs=2, charts=True): 90 | y = np.array(x) 91 | 92 | # Implement trendlines 93 | segs = int(segs) 94 | maxima = np.ones(segs) 95 | minima = np.ones(segs) 96 | segsize = int(len(y)/segs) 97 | for i in range(1, segs+1): 98 | ind2 = i*segsize 99 | ind1 = ind2 - segsize 100 | maxima[i-1] = max(y[ind1:ind2]) 101 | minima[i-1] = min(y[ind1:ind2]) 102 | 103 | # Find the indexes of the maximums 104 | x_maxima = np.ones(segs) 105 | x_minima = np.ones(segs) 106 | for i in range(0, segs): 107 | x_maxima[i] = np.where(y == maxima[i])[0][0] 108 | x_minima[i] = np.where(y == minima[i])[0][0] 109 | 110 | if charts: 111 | plot(y) 112 | grid() 113 | 114 | for i in range(0, segs-1): 115 | maxslope = (maxima[i+1] - maxima[i]) / (x_maxima[i+1] - x_maxima[i]) 116 | a_max = maxima[i] - (maxslope * x_maxima[i]) 117 | b_max = maxima[i] + (maxslope * (len(y) - x_maxima[i])) 118 | upperline = np.linspace(a_max, b_max, len(y)) 119 | 120 | minslope = (minima[i+1] - minima[i]) / (x_minima[i+1] - x_minima[i]) 121 | a_min = minima[i] - (minslope * x_minima[i]) 122 | b_min = minima[i] + (minslope * (len(y) - x_minima[i])) 123 | lowerline = np.linspace(a_min, b_min, len(y)) 124 | 125 | if charts: 126 | plot(upperline, 'g') 127 | plot(lowerline, 'm') 128 | 129 | if charts: 130 | show() 131 | 132 | # OUTPUT 133 | return x_maxima, maxima, x_minima, minima 134 | 135 | 136 | today = datetime.now() 137 | d = timedelta(days=365) 138 | start = today - d 139 | dat = data.DataReader("BABA", "iex", start, today)['close'] 140 | 141 | trendSegments(dat) 142 | trendGen(dat) 143 | findTops(dat) 144 | -------------------------------------------------------------------------------- /Prediction/svc.py: -------------------------------------------------------------------------------- 1 | # Machine learning classification libraries 2 | from sklearn.svm import SVC 3 | from sklearn.metrics import scorer, accuracy_score 4 | 5 | # For data manipulation 6 | import pandas as pd 7 | import numpy as np 8 | from math import floor 9 | 10 | # To plot 11 | import matplotlib.pyplot as plt 12 | 13 | # To fetch data 14 | from pandas_datareader import data as pdr 15 | import yfinance as yf 16 | from datetime import datetime 17 | 18 | # Fetch the data 19 | ticker = "MSFT" 20 | df = yf.Ticker(ticker).history(period="2y") 21 | df= df.dropna() 22 | 23 | # Create features 24 | y = np.where(df['Close'].shift(-1) > df['Close'],1,-1) 25 | df['Open-Close'] = df.Open - df.Close 26 | df['High-Low'] = df.High - df.Low 27 | 28 | x=df[['Open-Close','High-Low', 'High', 'Low', 'Volume']] 29 | 30 | split_percentage = 0.75 31 | split = int(floor(split_percentage*len(df))) 32 | 33 | # Train data set 34 | x_train = x[:split] 35 | y_train = y[:split] 36 | 37 | # Test data set 38 | x_test = x[split:] 39 | y_test = y[split:] 40 | 41 | cls = SVC().fit(x_train, y_train) 42 | 43 | accuracy_train = accuracy_score(y_train, cls.predict(x_train)) 44 | accuracy_test = accuracy_score(y_test, cls.predict(x_test)) 45 | 46 | print('Train Accuracy:{: .2f}%'.format(accuracy_train*100)) 47 | print('Test Accuracy:{: .2f}%'.format(accuracy_test*100)) 48 | 49 | df['Predicted_Signal'] = cls.predict(x) 50 | 51 | # Calculate returns 52 | lag_price = df.Close.shift(1) 53 | 54 | df['Return'] = (df.Close - lag_price) / lag_price 55 | df['Strategy_Return'] = df.Return * df.Predicted_Signal.shift(1) 56 | 57 | # Plot results 58 | 59 | df.Strategy_Return.iloc[split:].cumsum().plot(figsize=(10,5)) # Strategy returns 60 | plt.plot(df.Return.iloc[split:].cumsum()) # buy and hold 61 | plt.ylabel("Strategy Returns (%)") 62 | plt.show() 63 | 64 | # print(df) 65 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Stock Analysis 2 | 3 | This repository contains python scripts that I am devleoping to perform analysis on stock prices and visualization of stock prices and other data such as volume. 4 | 5 | Some of the goals I want to achieve with this project include: 6 | - Get the data I need from Yahoo Finance or other API. Able to specify what I need and the time range. 7 | - Different regression implementations on the close price data. (Linear, SVM, etc.) Possibly try to fit a polynomial function which follows the data. 8 | - Predicting Stock price for the next day. 9 | 10 | 11 | ## Trends 12 | 13 | TrendLine.py Results 14 | 15 | ![trendy](readme/figure_1.png) 16 | 17 | ![trendy](readme/figure_1-1.png) 18 | 19 | ![trendy](readme/figure_1-3.png) 20 | 21 | ![trendy](readme/figure_1-4.png) 22 | 23 | 24 | ## Regression 25 | 26 | Using my code for linear regression and Nvidia's (NVDA) stock prices of each day. I got a slope of 0.1850399032986727 and a y intercept of 24.54867003005582. The 50.08 number is the price predicted for the next day based on the linear formula it calculated. 27 | 28 | ```python 29 | [0.1850399032986727, 24.54867003005582] 30 | 50.0841766853 31 | ``` 32 | 33 | ### Screenshots 34 | 35 | 36 | ![Linear Regression performed on NVDA Stock data from January 2016](/Regression/NVDA2016.png) 37 | 38 | 39 | #### New Screenshots 40 | 41 | #### AEIS 42 | ![AEIS February 20](readme/AEIS-feb20.png) 43 | #### FB 44 | ![Facebook February 20](readme/FB-feb20.png) 45 | 46 | 47 | ## Version 48 | 49 | 1.0.0 - Released Stock Scraper 50 | 51 | 1.0.1 - Minor bug fixes with duplicate entries in the CSV File 52 | 53 | 54 | ### Todo 55 | 56 | - [ ] Use Machine Learning algorithms to predict stock close price for the next day 57 | - [ ] Add data visualization with technical indicators such as moving average, volume, STOCH. 58 | - [ ] Add Stock screener, to screen through every stock and see which ones are best buys. 59 | 60 | 61 | ## Star History 62 | 63 | [![Star History Chart](https://api.star-history.com/svg?repos=Vaibhav/Stock-Analysis&type=Date)](https://star-history.com/#Vaibhav/Stock-Analysis&Date) 64 | 65 | #### License 66 | 67 | MIT 68 | 69 | **Free Software, Hell Yeah!** 70 | -------------------------------------------------------------------------------- /Regression/AEIS_2017-2017.csv: -------------------------------------------------------------------------------- 1 | Date,Open,High,Low,Close,Adj Close,Volume 2 | 2017-02-17,61.779999,61.799999,60.84,61.560001,61.560001,346800 3 | 2017-02-16,62.529999,62.66,61.169998,61.790001,61.790001,391200 4 | 2017-02-15,61.93,62.619999,61.5,62.529999,62.529999,372500 5 | 2017-02-14,62.049999,62.849998,61.450001,61.939999,61.939999,215900 6 | 2017-02-13,62.5,62.939999,61.950001,62.240002,62.240002,303600 7 | 2017-02-10,62.27,62.98,61.48,61.990002,61.990002,260700 8 | 2017-02-09,61.57,62.540001,61.57,62.0,62.0,320000 9 | 2017-02-08,62.0,62.029999,60.889999,61.5,61.5,407900 10 | 2017-02-07,61.23,62.290001,61.189999,61.619999,61.619999,452700 11 | 2017-02-06,61.970001,62.5,60.59,61.189999,61.189999,632000 12 | 2017-02-03,61.369999,62.75,61.360001,61.700001,61.700001,446600 13 | 2017-02-02,59.580002,61.950001,58.869999,61.279999,61.279999,597000 14 | 2017-02-01,59.57,61.0,58.869999,59.799999,59.799999,639600 15 | 2017-01-31,63.5,63.75,56.07,58.84,58.84,1549600 16 | 2017-01-30,59.400002,59.82,58.02,59.610001,59.610001,772500 17 | 2017-01-27,59.029999,59.540001,58.639999,59.369999,59.369999,332700 18 | 2017-01-26,58.869999,59.139999,58.529999,58.759998,58.759998,200100 19 | 2017-01-25,58.580002,59.0,58.400002,58.790001,58.790001,338600 20 | 2017-01-24,56.849998,58.189999,56.689999,57.91,57.91,300300 21 | 2017-01-23,56.77,57.509998,56.540001,56.619999,56.619999,235300 22 | 2017-01-20,56.84,57.209999,56.549999,56.700001,56.700001,165300 23 | 2017-01-19,57.27,57.77,56.5,56.84,56.84,297100 24 | 2017-01-18,56.5,57.66,56.310001,56.900002,56.900002,311200 25 | 2017-01-17,57.32,57.490002,55.759998,56.110001,56.110001,355100 26 | 2017-01-13,57.560001,58.310001,57.470001,57.939999,57.939999,393800 27 | 2017-01-12,57.880001,57.880001,56.380001,57.389999,57.389999,279200 28 | 2017-01-11,56.540001,57.459999,56.080002,57.41,57.41,262100 29 | 2017-01-10,55.919998,56.599998,55.509998,56.310001,56.310001,233100 30 | 2017-01-09,55.889999,56.310001,55.459999,56.029999,56.029999,214600 31 | 2017-01-06,55.779999,56.049999,54.950001,55.619999,55.619999,239500 32 | 2017-01-05,57.68,57.98,55.68,55.939999,55.939999,259300 33 | 2017-01-04,54.68,56.209999,54.5,56.029999,56.029999,418200 34 | 2017-01-03,55.040001,55.650002,53.790001,54.799999,54.799999,280800 35 | -------------------------------------------------------------------------------- /Regression/FB_2017-2017.csv: -------------------------------------------------------------------------------- 1 | Date,Open,High,Low,Close,Adj Close,Volume 2 | 2017-01-03,116.029999,117.839996,115.510002,116.860001,116.860001,20602600 3 | 2017-01-04,117.550003,119.660004,117.290001,118.690002,118.690002,19549800 4 | 2017-01-05,118.860001,120.949997,118.32,120.669998,120.669998,19443100 5 | 2017-01-06,120.980003,123.879997,120.029999,123.410004,123.410004,28504400 6 | 2017-01-09,123.550003,125.43,123.040001,124.900002,124.900002,22861600 7 | 2017-01-10,124.82,125.5,124.279999,124.349998,124.349998,17247300 8 | 2017-01-11,124.349998,126.120003,124.059998,126.089996,126.089996,18298500 9 | 2017-01-12,125.610001,126.730003,124.800003,126.620003,126.620003,18561300 10 | 2017-01-13,127.489998,129.270004,127.370003,128.339996,128.339996,24838700 11 | 2017-01-17,128.039993,128.339996,127.400002,127.870003,127.870003,15228000 12 | 2017-01-18,128.410004,128.429993,126.839996,127.919998,127.919998,13069000 13 | 2017-01-19,128.229996,128.350006,127.449997,127.550003,127.550003,12157100 14 | 2017-01-20,128.100006,128.479996,126.779999,127.040001,127.040001,18798000 15 | 2017-01-23,127.309998,129.25,126.949997,128.929993,128.929993,16514200 16 | 2017-01-24,129.380005,129.899994,128.380005,129.369995,129.369995,15130100 17 | 2017-01-25,130,131.740005,129.770004,131.479996,131.479996,18731300 18 | 2017-01-26,131.630005,133.139999,131.440002,132.779999,132.779999,19818100 19 | 2017-01-27,132.679993,132.949997,131.080002,132.179993,132.179993,19493900 20 | 2017-01-30,131.580002,131.580002,129.600006,130.979996,130.979996,18891400 21 | 2017-01-31,130.169998,130.660004,129.520004,130.320007,130.320007,19444000 22 | 2017-02-01,132.25,133.490005,130.679993,133.229996,133.229996,42482700 23 | 2017-02-02,133.220001,135.490005,130.399994,130.839996,130.839996,54179400 24 | 2017-02-03,131.240005,132.850006,130.759995,130.979996,130.979996,24325000 25 | 2017-02-06,130.979996,132.059998,130.300003,132.059998,132.059998,16911200 26 | 2017-02-07,132.240005,133,131.660004,131.839996,131.839996,14563800 27 | 2017-02-08,132.600006,134.440002,132.440002,134.199997,134.199997,22329500 28 | 2017-02-09,134.490005,134.5,133.309998,134.139999,134.139999,16441600 29 | 2017-02-10,134.100006,134.940002,133.679993,134.190002,134.190002,14557400 30 | 2017-02-13,134.699997,134.699997,133.699997,134.050003,134.050003,13503300 31 | 2017-02-14,134.100006,134.229996,132.550003,133.850006,133.850006,14340100 32 | 2017-02-15,133.449997,133.699997,132.660004,133.440002,133.440002,13144500 33 | 2017-02-16,133.070007,133.869995,133.020004,133.839996,133.839996,12809800 34 | 2017-02-17,133.5,134.089996,133.169998,133.529999,133.529999,12249900 35 | -------------------------------------------------------------------------------- /Regression/LR based on Volume.py: -------------------------------------------------------------------------------- 1 | # Linear Regression for Stock based on Date 2 | # Currently only works for month 3 | # http://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#example-linear-model-plot-ols-py 4 | 5 | import csv 6 | import numpy as np 7 | from sklearn import datasets, linear_model 8 | import matplotlib.pyplot as plt 9 | 10 | close_prices = [] 11 | volumes = [] 12 | 13 | f = input('Enter filename: \n') 14 | 15 | if not(f.endswith('.csv')): 16 | f = f + '.csv' 17 | 18 | with open(f, 'r') as file: 19 | the_data = csv.reader(file) 20 | the_data.next() 21 | 22 | for row in the_data: 23 | x = float(row[4]) 24 | close_prices.append(float("{0:.2f}".format(x))) 25 | volumes.append(float(row[5])) 26 | 27 | # convert lists to numpy arrays 28 | prices_arr = np.reshape(close_prices, (len(close_prices), 1)) 29 | volumes_arr = np.reshape(volumes, (len(volumes), 1)) 30 | 31 | 32 | # Creating lin reg object 33 | regr = linear_model.LinearRegression() 34 | regr.fit(volumes_arr, prices_arr) 35 | 36 | print 'Coefficients: ' 37 | print regr.coef_ 38 | 39 | # Explained variance score: 1 is perfect prediction 40 | print 'Variance score: %.2f' % regr.score(volumes_arr, prices_arr) 41 | 42 | 43 | minpr = min(close_prices) 44 | maxpr = max(close_prices) 45 | minv = min(volumes) 46 | maxv = max(volumes) 47 | 48 | # Draw black dots representing prices 49 | plt.figure(figsize=(10, 10), dpi=240) 50 | plt.scatter(volumes_arr, prices_arr, color='black', label='Close Prices') 51 | plt.plot(volumes_arr, regr.predict(volumes_arr), color='red', 52 | linewidth=4, label='Estimated Linear Function') 53 | plt.xlabel('Volume of Shares') 54 | plt.ylabel('Close Price') 55 | plt.title('Linear Regression') 56 | plt.ylim([minpr - 3, maxpr + 3]) 57 | plt.xlim(minv - 1000, maxv + 1000) 58 | plt.subplots_adjust(bottom=0.13) 59 | plt.subplots_adjust(top=0.92) 60 | plt.subplots_adjust(left=0.07) 61 | plt.subplots_adjust(right=0.96) 62 | plt.legend() 63 | plt.show() 64 | -------------------------------------------------------------------------------- /Regression/Linear Regression.py: -------------------------------------------------------------------------------- 1 | # Linear Regression for Stock based on Date 2 | # Currently only works for month 3 | # http://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#example-linear-model-plot-ols-py 4 | 5 | import csv 6 | import numpy as np 7 | from sklearn import datasets, linear_model 8 | import matplotlib.pyplot as plt 9 | 10 | close_prices = [] 11 | dates = [] 12 | 13 | f = input('Enter filename: \n') 14 | 15 | if not(f.endswith('.csv')): 16 | f = f + '.csv' 17 | 18 | with open(f, 'r') as file: 19 | the_data = csv.reader(file) 20 | the_data.next() 21 | 22 | for row in the_data: 23 | x = float(row[4]) 24 | close_prices.append(float("{0:.2f}".format(x))) 25 | dates.append(int(row[0].split('/')[0])) 26 | 27 | 28 | # convert lists to numpy arrays 29 | length_of_dates = len(dates) + 1 30 | day = [] 31 | day.extend(range(1, length_of_dates)) 32 | 33 | rev = input('Is the newest price first? (y/n)') 34 | if rev.startswith('y'): 35 | close_prices.reverse() 36 | 37 | prices_arr = np.reshape(close_prices, (len(close_prices), 1)) 38 | days_arr = np.reshape(day, (len(day), 1)) 39 | 40 | print close_prices 41 | print day 42 | 43 | # Creating lin reg object 44 | regr = linear_model.LinearRegression() 45 | regr.fit(days_arr, prices_arr) 46 | 47 | print 'Coefficients: ' 48 | print regr.coef_ 49 | 50 | # Explained variance score: 1 is perfect prediction 51 | print 'Variance score: %.2f' % regr.score(days_arr, prices_arr) 52 | 53 | 54 | minpr = min(close_prices) 55 | maxpr = max(close_prices) 56 | 57 | maxdt = max(day) 58 | mindt = min(day) 59 | 60 | # Draw black dots representing prices 61 | plt.figure(figsize=(15, 15), dpi=240) 62 | plt.scatter(days_arr, prices_arr, color='black', label='Close Prices') 63 | plt.plot(days_arr, regr.predict(days_arr), color='red', 64 | linewidth=4, label='Estimated Linear Function') 65 | plt.xlabel('Day') 66 | plt.ylabel('Close Price') 67 | plt.title('Linear Regression') 68 | plt.ylim([minpr - 3, maxpr + 3]) 69 | plt.xlim([mindt - 1, maxdt + 5]) 70 | plt.subplots_adjust(bottom=0.13) 71 | plt.subplots_adjust(top=0.92) 72 | plt.subplots_adjust(left=0.07) 73 | plt.subplots_adjust(right=0.96) 74 | plt.legend() 75 | plt.show() 76 | -------------------------------------------------------------------------------- /Regression/NVDA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vaibhav/Stock-Analysis/d5aefe8bb783aab660ff657611e2d4303c70887a/Regression/NVDA.png -------------------------------------------------------------------------------- /Regression/NVDA2016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vaibhav/Stock-Analysis/d5aefe8bb783aab660ff657611e2d4303c70887a/Regression/NVDA2016.png -------------------------------------------------------------------------------- /Regression/NVDA_2016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vaibhav/Stock-Analysis/d5aefe8bb783aab660ff657611e2d4303c70887a/Regression/NVDA_2016.png -------------------------------------------------------------------------------- /Regression/README.md: -------------------------------------------------------------------------------- 1 | Copy over a csv file containing the data. 2 | 3 | To run: ``` python StockPredictPrices.py ``` 4 | 5 | then follow instructions. 6 | -------------------------------------------------------------------------------- /Regression/StockPredictPrice.py: -------------------------------------------------------------------------------- 1 | # Linear Regression for Stock based on Date 2 | # Currently only works for month 3 | # http://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#example-linear-model-plot-ols-py 4 | 5 | import csv 6 | import numpy as np 7 | from sklearn import datasets, linear_model 8 | from sklearn.svm import SVR 9 | import matplotlib.pyplot as plt 10 | 11 | close_prices = [] 12 | dates = [] 13 | 14 | f = input('Enter filename: \n') 15 | 16 | if not(f.endswith('.csv')): 17 | f = f + '.csv' 18 | 19 | with open(f, 'r') as file: 20 | the_data = csv.reader(file) 21 | the_data.next() 22 | 23 | for row in the_data: 24 | print row 25 | x = float(row[4]) 26 | close_prices.append(float("{0:.2f}".format(x))) 27 | dates.append(int(row[0].split('/')[0])) 28 | 29 | # convert lists to numpy arrays 30 | length_of_dates = len(dates) + 1 31 | day = [] 32 | day.extend(range(1, length_of_dates)) 33 | 34 | prices_arr = np.reshape(close_prices, (len(close_prices), 1)) 35 | days_arr = np.reshape(day, (len(day), 1)) 36 | 37 | #days_arr = np.reshape(dates, (len(dates), 1)) 38 | 39 | print '0' 40 | # Fit regression model 41 | svr_rbf = SVR(kernel='rbf', C=1e3, gamma=0.1) 42 | svr_lin = SVR(kernel='linear', C=1e3) 43 | svr_poly = SVR(kernel='poly', C=1e3, degree=2) 44 | print '1' 45 | svr_rbf.fit(days_arr, close_prices) 46 | svr_lin.fit(days_arr, close_prices) 47 | svr_poly.fit(days_arr, close_prices) 48 | 49 | predict_num = int(dates[0]) + 1 50 | 51 | print "RBF = " + str(svr_rbf.predict(predict_num)) 52 | print "Lin = " + str(svr_lin.predict(predict_num)) 53 | print "Poly = " + str(svr_poly.predict(predict_num)) 54 | 55 | minpr = min(close_prices) 56 | maxpr = max(close_prices) 57 | 58 | maxdt = predict_num 59 | mindt = 1 60 | 61 | # Draw black dots representing prices 62 | plt.figure(figsize=(15, 15), dpi=240) 63 | plt.scatter(days_arr, prices_arr, color='black', label='Close Prices') 64 | 65 | plt.plot(days_arr, svr_lin.predict(days_arr), color='blue', linewidth=3, label='Linear Model') 66 | plt.plot(days_arr, svr_poly.predict(days_arr), color='green', linewidth=3, label='Polynomial Model') 67 | plt.plot(days_arr, svr_rbf.predict(days_arr), color='red', linewidth=4, label='RBF Model') 68 | 69 | plt.xlabel('Day') 70 | plt.ylabel('Close Prices') 71 | plt.title('SVR Model') 72 | plt.ylim([minpr - 3, maxpr + 3]) 73 | plt.xlim([mindt - 1, maxdt + 5]) 74 | plt.subplots_adjust(bottom=0.13) 75 | plt.subplots_adjust(top=0.92) 76 | plt.subplots_adjust(left=0.07) 77 | plt.subplots_adjust(right=0.96) 78 | plt.legend() 79 | plt.show() 80 | 81 | # 742.95 82 | -------------------------------------------------------------------------------- /Regression/StockPredictPrices.py: -------------------------------------------------------------------------------- 1 | # Linear Regression for Stock based on Date 2 | # Currently only works for month 3 | # http://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#example-linear-model-plot-ols-py 4 | 5 | import csv 6 | import numpy as np 7 | from sklearn import datasets, linear_model 8 | from sklearn.svm import SVR 9 | import matplotlib.pyplot as plt 10 | 11 | close_prices = [] 12 | dates = [] 13 | 14 | f = input('Enter filename: \n') 15 | 16 | if not(f.endswith('.csv')): 17 | f = f + '.csv' 18 | 19 | with open(f, 'r') as file: 20 | the_data = csv.reader(file) 21 | the_data.next() 22 | 23 | for row in the_data: 24 | x = float(row[4]) 25 | close_prices.append(float("{0:.2f}".format(x))) 26 | dates.append(int(row[0].split('-')[0])) 27 | 28 | # convert lists to numpy arrays 29 | length_of_dates = len(dates) + 1 30 | day = [] 31 | day.extend(range(1, length_of_dates)) 32 | day.reverse() 33 | 34 | prices_arr = np.reshape(close_prices, (len(close_prices), 1)) 35 | days_arr = np.reshape(day, (len(day), 1)) 36 | 37 | # days_arr = np.reshape(dates, (len(dates), 1)) 38 | 39 | print '0' 40 | # Fit regression model 41 | svr_rbf = SVR(kernel='rbf', C=1e3, gamma=0.1) 42 | svr_lin = SVR(kernel='linear', C=1e3) 43 | svr_poly = SVR(kernel='poly', C=1e3, degree=2) 44 | print '1' 45 | svr_rbf.fit(days_arr, close_prices) 46 | svr_lin.fit(days_arr, close_prices) 47 | svr_poly.fit(days_arr, close_prices) 48 | 49 | predict_num = day[0] + 1 50 | 51 | print "RBF = " + str(svr_rbf.predict(predict_num)) 52 | print "Lin = " + str(svr_lin.predict(predict_num)) 53 | print "Poly = " + str(svr_poly.predict(predict_num)) 54 | 55 | minpr = min(close_prices) 56 | maxpr = max(close_prices) 57 | 58 | maxdt = predict_num 59 | mindt = 1 60 | 61 | # Draw black dots representing prices 62 | plt.figure(figsize=(15, 15), dpi=240) 63 | plt.scatter(days_arr, prices_arr, color='black', label='Close Prices') 64 | 65 | plt.plot(days_arr, svr_lin.predict(days_arr), color='blue', linewidth=3, label='Linear Model') 66 | plt.plot(days_arr, svr_poly.predict(days_arr), color='green', linewidth=3, label='Polynomial Model') 67 | plt.plot(days_arr, svr_rbf.predict(days_arr), color='red', linewidth=4, label='RBF Model') 68 | 69 | plt.xlabel('Day') 70 | plt.ylabel('Close Prices') 71 | plt.title('SVR Model') 72 | plt.ylim([minpr - 3, maxpr + 3]) 73 | plt.xlim([mindt - 1, maxdt + 5]) 74 | plt.subplots_adjust(bottom=0.13) 75 | plt.subplots_adjust(top=0.92) 76 | plt.subplots_adjust(left=0.07) 77 | plt.subplots_adjust(right=0.96) 78 | plt.legend() 79 | plt.show() 80 | 81 | # 742.95 82 | -------------------------------------------------------------------------------- /Regression/TrueLinearRegression.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | import pandas as pd 5 | import numpy as np 6 | import matplotlib.pyplot as plt 7 | import pylab as pl 8 | import csv 9 | 10 | 11 | def get_data(f, close_prices, dates): 12 | 13 | if not(f.endswith('.csv')): 14 | f = f + '.csv' 15 | 16 | with open(f, 'r') as file: 17 | the_data = csv.reader(file) 18 | # Skip the row with headers 19 | the_data.next() 20 | 21 | for row in the_data: 22 | # convert close price to float 23 | x = float(row[4]) 24 | # convert close price to a price (2 decimal points) 25 | close_prices.append(float("{0:.2f}".format(x))) 26 | dates.append(int(row[0].split('/')[0])) 27 | 28 | length_of_dates = len(dates) 29 | days = [] 30 | days.extend(range(1, length_of_dates + 1)) 31 | 32 | return days, close_prices 33 | 34 | 35 | def linear_regression(x, y): 36 | length_of_x = len(x) 37 | sum_of_x = sum(x) 38 | sum_of_y = sum(y) 39 | 40 | sum_of_x_squared = sum(map(lambda m: m * m, x)) 41 | 42 | sum_of_products = sum([x[i] * y[i] for i in range(0, length_of_x)]) 43 | 44 | m = (sum_of_products - (sum_of_x * sum_of_y) / length_of_x) / \ 45 | (sum_of_x_squared - ((sum_of_x ** 2) / length_of_x)) 46 | b = (sum_of_y - m * sum_of_x) / length_of_x 47 | tmp = [m, b] 48 | return tmp 49 | 50 | 51 | close_prices = [] 52 | dates = [] 53 | f = input('Enter filename: \n') 54 | x, y = get_data(f, close_prices, dates) 55 | 56 | rev = input('Is the newest price first? (y/n)') 57 | if rev.startswith('y'): 58 | y.reverse() 59 | temp = linear_regression(x, y) 60 | 61 | maxx = max(x) 62 | maxy = max(y) 63 | miny = min(y) 64 | 65 | print temp 66 | m = float(temp[0]) 67 | b = float(temp[1]) 68 | 69 | # Predict next day price based on linear line 70 | # y = mx + b 71 | 72 | print((m * (maxx + 1)) + b) 73 | 74 | pl.figure(figsize=(7, 5), dpi=120) 75 | pl.scatter(x, y, color='black', label='Close Prices') 76 | pl.plot(x, m * np.asarray(x) + b, color='red', linewidth=4, label="Linear Regression Model") 77 | pl.xlabel('Day') 78 | pl.ylabel('Close Price') 79 | pl.title('Linear Regression') 80 | pl.xlim([0, maxx + 1]) 81 | pl.ylim([miny - 5, maxy + 5]) 82 | pl.grid() 83 | pl.legend() 84 | pl.show() 85 | -------------------------------------------------------------------------------- /Regression/UVXY data using True Lin Reg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vaibhav/Stock-Analysis/d5aefe8bb783aab660ff657611e2d4303c70887a/Regression/UVXY data using True Lin Reg.png -------------------------------------------------------------------------------- /Regression/UVXY data using scikit-learn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vaibhav/Stock-Analysis/d5aefe8bb783aab660ff657611e2d4303c70887a/Regression/UVXY data using scikit-learn.png -------------------------------------------------------------------------------- /Regression/linear-svc-machine-learning.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import matplotlib.pyplot as plt 3 | from sklearn import svm, preprocessing 4 | import pandas as pd 5 | from matplotlib import style 6 | style.use("ggplot") 7 | import pandas as pd 8 | import os 9 | import time 10 | from datetime import datetime 11 | 12 | path = "X:/Backups/intraQuarter" 13 | 14 | def Key_Stats(gather="Total Debt/Equity (mrq)"): 15 | statspath = path+'/_KeyStats' 16 | stock_list = [x[0] for x in os.walk(statspath)] 17 | print(stock_list) 18 | 19 | for each_dir in stock_list[1:]: 20 | each_file = os.listdir(each_dir) 21 | if len(each_file) > 0: 22 | for file in each_file: 23 | date_stamp = datetime.strptime(file, '%Y%m%d%H%M%S.html') 24 | unix_time = time.mktime(date_stamp.timetuple()) 25 | print(date_stamp, unix_time) 26 | #time.sleep(15) 27 | 28 | Key_Stats() 29 | 30 | 31 | ''' 32 | 33 | 34 | FEATURES = ['DE Ratio', 35 | 'Trailing P/E', 36 | 'Price/Sales', 37 | 'Price/Book', 38 | 'Profit Margin', 39 | 'Operating Margin', 40 | 'Return on Assets', 41 | 'Return on Equity', 42 | 'Revenue Per Share', 43 | 'Market Cap', 44 | 'Enterprise Value', 45 | 'Forward P/E', 46 | 'PEG Ratio', 47 | 'Enterprise Value/Revenue', 48 | 'Enterprise Value/EBITDA', 49 | 'Revenue', 50 | 'Gross Profit', 51 | 'EBITDA', 52 | 'Net Income Avl to Common ', 53 | 'Diluted EPS', 54 | 'Earnings Growth', 55 | 'Revenue Growth', 56 | 'Total Cash', 57 | 'Total Cash Per Share', 58 | 'Total Debt', 59 | 'Current Ratio', 60 | 'Book Value Per Share', 61 | 'Cash Flow', 62 | 'Beta', 63 | 'Held by Insiders', 64 | 'Held by Institutions', 65 | 'Shares Short (as of', 66 | 'Short Ratio', 67 | 'Short % of Float', 68 | 'Shares Short (prior '] 69 | 70 | def Build_Data_Set(): 71 | data_df = pd.DataFrame.from_csv("key_stats.csv") 72 | 73 | #data_df = data_df[:100] 74 | 75 | X = np.array(data_df[FEATURES].values)#.tolist()) 76 | 77 | y = (data_df["Status"] 78 | .replace("underperform",0) 79 | .replace("outperform",1) 80 | .values.tolist()) 81 | 82 | X = preprocessing.scale(X) 83 | 84 | return X,y 85 | 86 | 87 | def Analysis(): 88 | test_size = 1000 89 | X, y = Build_Data_Set() 90 | print(len(X)) 91 | 92 | clf = svm.SVC(kernel="linear", C=1.0) 93 | clf.fit(X[:-test_size], y[:-test_size]) 94 | 95 | correct_count = 0 96 | 97 | for x in range(1, test_size + 1): 98 | if clf.predict(X[-x])[0] == y[-x]: 99 | correct_count += 1 100 | 101 | print("Accuracy:", (correct_count / test_size) * 100.00) 102 | 103 | 104 | Analysis() 105 | 106 | ''' -------------------------------------------------------------------------------- /Screener/QMAScreener.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Author: Vaibhav Khaitan 3 | Date: 8/15/2018 4 | Description: Script attempts to filter out stocks which can be used for quantified moving average strategy. 5 | ''' 6 | from datetime import datetime, timedelta 7 | import pandas as pd 8 | from pandas_datareader import data 9 | from iexfinance import Stock, get_historical_data, get_available_symbols 10 | 11 | masterlist = [] 12 | minorlist = [] 13 | now = datetime.now() 14 | 15 | rangeResistance = 0.01 # Range resistance level, the range between moving averages 16 | numberOfStocks = 100 # number of stocks to test 17 | 18 | def analyze(dma10, dma20, dma50, ticker): 19 | theRange = 0.01 * dma10 20 | if dma10 - theRange < dma20 and dma20 < dma10 + theRange: 21 | minorlist.append(ticker) 22 | if dma10 - theRange < dma50 and dma50 < dma10 + theRange: 23 | masterlist.append(ticker) 24 | 25 | 26 | def get_ma(ticker): 27 | stock = Stock(ticker) 28 | start = now - timedelta(days=25) 29 | try: 30 | keyStats = stock.get_key_stats() 31 | if (stock.get_price() < 5): 32 | return -1,-1,-1 33 | 34 | df_hist = get_historical_data(ticker, start=start, end=now, output_format='pandas') 35 | dma50 = keyStats['day50MovingAvg'] 36 | dma10 = df_hist.tail(10)['close'].mean() 37 | dma20 = df_hist.tail(20)['close'].mean() 38 | except: 39 | return -1,-1,-1 40 | 41 | return dma10, dma20, dma50 42 | 43 | 44 | listOfTickers = get_available_symbols(output_format='pandas') 45 | df = pd.DataFrame(listOfTickers) 46 | df = df.loc[df['type'] == 'cs'] 47 | df = df.head(numberOfStocks) 48 | 49 | for i,r in df['symbol'].iteritems(): 50 | print("Getting Averages for "+r+"\n") 51 | dma10, dma20, dma50 = get_ma(r) 52 | if dma10 == -1 or dma20 == -1 or dma50 == -1: 53 | continue 54 | else: 55 | analyze(dma10, dma20, dma50, r) 56 | 57 | 58 | print("Major List:") 59 | print(masterlist) 60 | print("Minor List") 61 | print(minorlist) 62 | -------------------------------------------------------------------------------- /Screener/README.md: -------------------------------------------------------------------------------- 1 | To run: ``` python QMAScreener ``` 2 | 3 | 4 | 5 | You can modify two variables, ```numberOfStocks``` and ```rangeResistance```. 6 | -------------------------------------------------------------------------------- /Sentiment/README.md: -------------------------------------------------------------------------------- 1 | work in progress 2 | -------------------------------------------------------------------------------- /Sentiment/analyse.py: -------------------------------------------------------------------------------- 1 | import json 2 | import re 3 | import threading 4 | import timeit 5 | import urllib.request, urllib.error, urllib.parse 6 | from time import gmtime, strftime 7 | 8 | import RSS_URL 9 | import requests 10 | from SA_Scrape import getSaURL 11 | from newspaper import Article 12 | from vaderSentiment import vaderSentiment 13 | 14 | ######################################### 15 | ## ANALYSIS PARAMETERS 16 | 17 | # setting lock variable for threading 18 | global lock 19 | lock = threading.Lock() 20 | 21 | def SaSentimentRSS(symbol): 22 | url = "http://seekingalpha.com/symbol/" + symbol + ".xml" 23 | url2 = "http://feeds.finance.yahoo.com/rss/2.0/headline?s=" + symbol + "®ion=US&lang=en-US" 24 | url3 = "http://www.google.ca/finance/company_news?q=" + symbol + "&output=rss" 25 | # gets list of links from above RSS feed 26 | NewsURLs = getSaURL(url) 27 | NewsURLs += RSS_URL.getURLs2(url2) 28 | NewsURLs += RSS_URL.getURLs2(url3) 29 | 30 | # String to be written to file 31 | toBeWrittenToFile = '' 32 | 33 | for link in NewsURLs: 34 | try: 35 | # gets article portion of the htmltext 36 | a = Article(link) 37 | a.download() 38 | a.parse() 39 | 40 | # not working if it's RSS title link or has no title or cannot be accessed 41 | if symbol in a.title and not 'Earnings Call Webcast' in a.title and not 'Stock Market Insights' in a.title and not '400 Bad Request' in a.title and not '403 Forbidden' in a.title and a.title != '': 42 | UnicodeArticle = a.text 43 | StringArticle = UnicodeArticle.encode('ascii', 'ignore') 44 | StrippedArticle = StringArticle.replace('\n', '') 45 | 46 | # not working with articles less than 300 words 47 | if len(StrippedArticle) > 200: 48 | 49 | # remove ascii symbols 50 | ArticleTitle = a.title.encode('ascii', 'ignore').replace(',', '') 51 | 52 | # filters out irrelevant articles 53 | if 'Transcript' not in ArticleTitle and 'Summary' not in ArticleTitle: 54 | 55 | # writes sentiment from sentiment API to file 56 | # locks this block so that only one thread can write to file at a time 57 | 58 | # vader sentiment dictionary 59 | s = vaderSentiment.sentiment(StrippedArticle) 60 | 61 | # not writing articles with zero sentiments 62 | # collect a string to be written to file 63 | if s['compound'] != 0: 64 | # print(ArticleTitle) 65 | toBeWrittenToFile += ( 66 | str(symbol) + ',' + str(s['neg']) + ',' + str(s['neu']) + ',' + str(s['pos']) + ',' + str( 67 | s['compound']) + ',' + ArticleTitle + ',' + str(link) + '\n') 68 | 69 | except Exception as ex: 70 | template = "An exception of type {0} occured. Arguments:\n{1!r}" 71 | message = template.format(type(ex).__name__, ex.args) 72 | print(message) 73 | # write variable to file 74 | lock.acquire() 75 | try: 76 | myfile.write(toBeWrittenToFile) 77 | finally: 78 | lock.release() 79 | 80 | 81 | start = timeit.default_timer() 82 | 83 | # creating file in local 'data' directory 84 | myfile = open('data\SAsentiment' + strftime("%Y-%m-%d", gmtime()) + '.csv', 'w+') 85 | myfile.write('Ticker,neg,neu,pos,compound,Title,url' + '\n') 86 | myfile.close() 87 | 88 | # Getting all symbols into list 89 | symbolfile = open("SAsymbols.txt") 90 | symbolslistR = symbolfile.read() 91 | symbolslist = symbolslistR.split('\n') 92 | 93 | symbolfile.close() 94 | 95 | # tracks threads running 96 | threadlist = [] 97 | 98 | # open "myfile" file for SentimentRSS to write in 99 | myfile = open('data\SAsentiment' + strftime("%Y-%m-%d", gmtime()) + '.csv', 'a') 100 | 101 | for u in symbolslist: 102 | t = threading.Thread(target=SaSentimentRSS, args=(u,)) 103 | t.start() 104 | threadlist.append(t) 105 | # sets top limit of active threads to 100 106 | while threading.activeCount() > 3: 107 | a = 0 108 | # finishes threads before closing file 109 | for b in threadlist: 110 | b.join() 111 | 112 | print(('# of threads: ' + str(len(threadlist)))) 113 | # close file 114 | myfile.close() 115 | # timer 116 | stop = timeit.default_timer() 117 | print((stop - start)) 118 | 119 | 120 | ############################################### 121 | post_url = 'http://text-processing.com/api/sentiment/' 122 | 123 | data_text = 'text=' 124 | 125 | 126 | def analyse(str): 127 | post = requests.post(url=post_url, data='text=' + str) 128 | 129 | ## JSON PARSING 130 | pjson_data = json.loads(post.content) 131 | 132 | pos = pjson_data['probability']['pos'] 133 | neg = pjson_data['probability']['neg'] 134 | neutral = pjson_data['probability']['neutral'] 135 | 136 | return {'pos': pos, 'neg': neg, 'neutral': neutral} 137 | 138 | 139 | def getSaURL(rss): 140 | # setup your header, add anything you want 141 | hdr = { 142 | 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36', 143 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 144 | 'Connection': 'keep-alive'} 145 | 146 | request = urllib.request.Request(rss, headers=hdr) 147 | page = urllib.request.urlopen(request) 148 | RSSContent = page.read() 149 | 150 | regex = '(.+?)' 151 | pattern = re.compile(regex) 152 | links = re.findall(pattern, RSSContent) 153 | return links 154 | -------------------------------------------------------------------------------- /Sentiment/getSentiment.py: -------------------------------------------------------------------------------- 1 | import os 2 | from nltk.sentiment.vader import SentimentIntensityAnalyzer 3 | import nltk 4 | import json 5 | from pprint import pprint 6 | 7 | ''' 8 | def sentimentScore(texts): 9 | analyzer = SentimentIntensityAnalyzer() 10 | scores = [] 11 | for text in texts: 12 | score = SentimentIntensityAnalyzer().polarity_scores(text)["compound"] 13 | try: return score 14 | except ZeroDivisionError: return 0 15 | 16 | 17 | text = "shares jump as shipments more than double winning" 18 | print(sentimentScore(text)) 19 | ''' 20 | 21 | nltk.download('vader_lexicon') 22 | 23 | # --- examples ------- 24 | sentences = ["VADER is smart, handsome, and funny.", # positive sentence example 25 | "VADER is not smart, handsome, nor funny.", # negation sentence example 26 | "VADER is smart, handsome, and funny!", # punctuation emphasis handled correctly (sentiment intensity adjusted) 27 | "VADER is very smart, handsome, and funny.", # booster words handled correctly (sentiment intensity adjusted) 28 | "VADER is VERY SMART, handsome, and FUNNY.", # emphasis for ALLCAPS handled 29 | "VADER is VERY SMART, handsome, and FUNNY!!!",# combination of signals - VADER appropriately adjusts intensity 30 | "VADER is VERY SMART, uber handsome, and FRIGGIN FUNNY!!!",# booster words & punctuation make this close to ceiling for score 31 | "The book was good.", # positive sentence 32 | "The book was kind of good.", # qualified positive sentence is handled correctly (intensity adjusted) 33 | "The plot was good, but the characters are uncompelling and the dialog is not great.", # mixed negation sentence 34 | "At least it isn't a horrible book.", # negated negative sentence with contraction 35 | "Make sure you :) or :D today!", # emoticons handled 36 | "Today SUX!", # negative slang with capitalization emphasis 37 | "Today only kinda sux! But I'll get by, lol" # mixed sentiment example with slang and constrastive conjunction "but" 38 | ] 39 | 40 | examples = [ 41 | "$AAPL Apple Dividend Stock Analysis http://dividendvaluebuilder.com/apple-aapl-dividend-stock-analysis/ #dividend #yield #tech #cashcow #growth #DVB #AAAMP", 42 | "Unusual Options Activity - 02.24.2017 - $AAPL $NKE $PBR $JCP $FDX $MBLY $LUV $CMCSA $MTG $ATVI", 43 | "$AAPL The British pound dipped noticeably in early Asian trade on Monday watching the currency for any Brexit-related jitters SELL", 44 | "$AAPL watch the red carpet tomorrow morningFUTURES", 45 | "$SPY $AAPL $NFLX $AMZN. And tge oscar goes to Hillarious. C l i t o n", 46 | "$AAPL $SPY First award nomination goes to a guy named a l i.", 47 | "$AAPL $SPY J i m m y. P e r p e t u a l l y i llo gically d r u n k.", 48 | "$AAPL one trick pony, back up the truck at $120, soon", 49 | "$AAPL An introduction to Generative Adversarial Networks https://github.com/AYLIEN/gan-intro", 50 | "$AAPL Apple's first AI research paper focuses on computer vision http://appleinsider.com/articles/16/12/26/apples-first-ai-research-paper-focuses-on-computer-vision via @AppleInsider", 51 | "$NVDA never catch falling knife!!! $AAPL 135 - 90 $GPRO 67 to 7 , $LL 120 to 9 , $MU 33 to 7 , baba 112 to 58 now $NVDA", 52 | "five promises : $AAPL $GS $C $FB $BA any three can triple or quadruple your girth or worth. 2019 calls.", 53 | "$AAPL May 11th, 2017 Applied Artificial Intelligence Conference https://www.eventbrite.com/e/applied-artificial-intelligence-conference-2017-tickets-30560299679?aff=es2 $AMZN", 54 | "$AAPL about 2 years ago Cook said India's a long game for Apple 7-10 years. Right on schedule!", 55 | "$AAPL 140c June '17", 56 | "Google Assistant Expands Past Pixel In Fight Vs. Apple's Siri, Amazon's Alexa: http://www.investors.com/news/technology/google-assistant-expands-past-pixel-in-fight-vs-apples-siri-amazons-alexa/ $GOOGL $AAPL $AMZN $GPRO", 57 | "Stocks Set To Open At Highs: Workday, Priceline Earnings Due; Trump Looms: http://www.investors.com/market-trend/stock-market-today/dow-looks-to-extend-run-workday-priceline-earnings-due-trump-looms/ $WDAY $PCLN $SNAP $UNH $AAPL $GOOGL $AMZN", 58 | "$AAPL 140p June '17", 59 | "$AAPL 100c June '17", 60 | "$AAPL As a bag holder it hurts me to read this.. http://appleinsider.com/articles/17/02/24/apple-inc-valuation-now-more-than-134-billion-greater-than-alphabets-google guess I shall bag hold this for 10 more years. what do u think?", 61 | "$AAPL Faber on Apple U.S. stock market is vulnerable to a seismic sell-off—one that could start any time in a very unassuming way.", 62 | "$AAPL Apple Inc. valuation now more than $134 billion greater than Alphabet's Google http://appleinsider.com/articles/17/02/24/apple-inc-valuation-now-more-than-134-billion-greater-than-alphabets-google @AppleInsider", 63 | "$AAPL Someone showed me this-funny.", 64 | "THE BEST WAY TO TEACH YOUR KIDS ABOUT TAXES IS BY EATING 30% OF THEIR ICE CREAM.", 65 | "$AAPL Biz stats, insider trades, news, chart and more via finviz http://finviz.com/quote.ashx?t=AAPL", 66 | "$AAPL option cash value for March '17 using Google data", 67 | "$AAPL volatility, price, & volume", 68 | "$TSLA $AMZN $AAPL $FB WHAT SIDE OF HISTORY ARE YOU ON???????" 69 | ] 70 | 71 | bullish = 0 72 | bearish = 0 73 | 74 | def read_tickers(): 75 | print("Reading tickers from \"tickers.txt\":") 76 | f = open("tickers.txt", 'r') 77 | names = [] 78 | # read tickers from tickers.txt 79 | for line in f: 80 | line = line.strip('\n') 81 | line = line.upper() 82 | line = line.strip('\t') 83 | names.append(line) 84 | print(names) 85 | return names 86 | 87 | 88 | def sentimentScore(sentences): 89 | analyzer = SentimentIntensityAnalyzer() 90 | results = [] 91 | for sentence in sentences: 92 | vs = analyzer.polarity_scores(sentence) 93 | print("vs: " + str(vs)) 94 | results.append(vs) 95 | return results 96 | 97 | # sentimentScore(examples) 98 | 99 | with open('feb26.json') as data_file: 100 | data = json.load(data_file) 101 | 102 | list1 = [] 103 | 104 | for i in data['AAPL']: 105 | list1.append(i['body']) 106 | # print(type(i['entities']['sentiment'])) 107 | if not(i['entities']['sentiment'] is None): 108 | sentiment = i['entities']['sentiment']['basic'] 109 | if (sentiment == "bullish" or sentiment == "Bullish"): 110 | bullish += 1 111 | else: 112 | bearish += 1 113 | 114 | tmp = sentimentScore(list1) 115 | sum = 0.0 116 | count = 0.0 117 | for j in tmp: 118 | if j['compound'] != 0: 119 | pprint(j['compound']) 120 | sum += j['compound'] 121 | count += 1.0 122 | 123 | print("avg: " + str(sum/count)) 124 | print(bullish) 125 | print(bearish) 126 | -------------------------------------------------------------------------------- /Sentiment/headlines.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | import requests 3 | import json 4 | from bs4 import BeautifulSoup 5 | 6 | INPUT_FILE = "tickers.txt" 7 | FILENAME = "headlines.json" 8 | 9 | 10 | # TODO: Needs to support JS when scraping Finviz 11 | class Headlines(): 12 | def __init__(self) -> None: 13 | self.data = {} 14 | self.tickers = [ 15 | "AAPL", "MMM", "AXP", "T", "BA", "CAT", "CVX", "CSCO", "KO", "DIS", "DD", "XOM", "GE", "GS", "HD", "IBM", 16 | "INTL", "JNJ", "JPM", "MCD", "MRK", "MSFT", "NKE", "PFE", "PG", "TRV", "UNH", "VZ", "V", "WMT", "NVS", "TM", 17 | "PLTR", "WFC", "BABA", "TWTR", "FB", "GOOG", "AAPL", "YHOO", "BP", "PEP" 18 | ] 19 | 20 | @staticmethod 21 | def get_headlines(ticker): 22 | print("Downloading data..") 23 | URL = "http://www.finviz.com/quote.ashx?t=" + ticker 24 | connection = requests.get(URL).text.encode("utf-8").decode('ascii', 'ignore') 25 | soup = BeautifulSoup(connection, "html.parser") 26 | return soup.find(id="news-table").findAll("tr") 27 | 28 | def extract_headlines(self, headlines): 29 | ret = [] 30 | date = "" 31 | for headline in headlines: 32 | tds = headline.findAll("td") 33 | if len(tds) >= 2 and tds[1].find("script") is None: 34 | timestamp = tds[0].text.strip() 35 | url = tds[1].find("a").attrs["href"] 36 | if timestamp != "": 37 | timestamp_split = timestamp.split(" ") 38 | if len(timestamp_split) == 2: 39 | date = timestamp_split[0] + " " 40 | else: 41 | timestamp = date + timestamp 42 | append = {"timestamp": timestamp, 43 | "url": url} 44 | ret.append(append) 45 | return ret 46 | 47 | def get_all_headlines(self, tickers=None): 48 | if tickers is None: 49 | tickers = self.tickers 50 | for ticker in tickers: 51 | print("Getting headlines for", ticker) 52 | try: 53 | headlines = Headlines.get_headlines(ticker) 54 | print("Received headlines") 55 | extracted = self.extract_headlines(headlines) 56 | self.data.update({ticker: extracted}) 57 | except Exception as e: 58 | print(e) 59 | print("Error getting", ticker) 60 | return self.data 61 | 62 | def write_to_file(self, filename, data): 63 | with open(filename, 'w+') as f: 64 | print("Dumping JSON to", filename) 65 | json.dump(data, f, sort_keys=True, indent=4, separators=(',', ':')) 66 | 67 | def read_tickers(self, input_file = INPUT_FILE): 68 | print("Reading tickers from", input_file) 69 | f = open(input_file, 'r') 70 | for line in f: 71 | line = line.strip('\n\t') 72 | line = line.upper() 73 | self.tickers.append(line) 74 | return self.tickers 75 | 76 | 77 | if __name__ == "__main__": 78 | x = input("Do you want to specify name of output file?") 79 | if x.startswith("y") or x.startswith("Y"): 80 | filename = input("What is file name?") 81 | if not (filename.endswith(".json")): 82 | filename = filename + ".json" 83 | FILENAME = filename 84 | 85 | headlines = Headlines() 86 | data = headlines.get_all_headlines() 87 | headlines.write_to_file(FILENAME, data) 88 | -------------------------------------------------------------------------------- /Sentiment/stocktwits.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | import requests 3 | import json 4 | import datetime 5 | 6 | INPUT_FILE = "tickers.txt" 7 | FILENAME = "stocktwits.json" 8 | REMOVE_OLDER_THAN = 21 # in days 9 | KEEP_NULL_SENTIMENT = False 10 | 11 | class Sentiment(): 12 | def __init__(self): 13 | self.tickers = [] 14 | self.data = {} 15 | 16 | # write to JSON file and properly formats the file 17 | def write_to_file(self, nameOfFile, data): 18 | with open(nameOfFile, 'w+') as f: 19 | print("Dumping JSON to", nameOfFile) 20 | json.dump(data, f, sort_keys=True, indent=4, separators=(',', ':')) 21 | 22 | # get the data using StockTwits API 23 | def get_twits(self, ticker): 24 | url = "https://api.stocktwits.com/api/2/streams/symbol/{0}.json".format(ticker) 25 | response = requests.get(url).json() 26 | return response 27 | 28 | 29 | # Get data for each ticker in the tickers list 30 | def get_twits_list(self, tickers=None): 31 | if tickers is None: 32 | tickers = self.tickers 33 | for ticker in tickers: 34 | print("Getting data for", ticker) 35 | try: 36 | data = self.get_twits(ticker) 37 | symbol = data['symbol']['symbol'] 38 | msgs = data['messages'] 39 | self.data.update({symbol: msgs}) 40 | except Exception as e: 41 | print(e) 42 | print("Error getting", ticker) 43 | return self.data 44 | 45 | def read_tickers(self, input_file = INPUT_FILE): 46 | print("Reading tickers from", input_file) 47 | f = open(input_file, 'r') 48 | self.tickers = [] 49 | for line in f: 50 | line = line.strip('\n\t') 51 | line = line.upper() 52 | self.tickers.append(line) 53 | return self.tickers 54 | 55 | # Removes data older than age_limit 56 | def remove_old(self, original = None, age_limit=REMOVE_OLDER_THAN): 57 | if original is None: 58 | original = self.data 59 | result = {} 60 | print("Removing tweets that are more than", age_limit, "days old") 61 | threshold = datetime.datetime.now() - datetime.timedelta(age_limit) 62 | 63 | for ticker in list(original.keys()): 64 | result[ticker] = [] 65 | for msg in original[ticker]: 66 | dt = datetime.datetime.strptime(msg["created_at"], "%Y-%m-%dT%H:%M:%SZ") 67 | sentiment = True if KEEP_NULL_SENTIMENT else msg["entities"]["sentiment"] 68 | if dt >= threshold and sentiment != None: 69 | result[ticker].append(msg) 70 | return result 71 | 72 | 73 | if __name__ == "__main__": 74 | x = input("Do you want to specify name of output file? Type y or Y for yes.\n").lower() 75 | 76 | if x.startswith("y"): 77 | filename = input("Enter JSON file name:\n") 78 | if not (filename.endswith(".json")): 79 | filename = filename + ".json" 80 | FILENAME = filename 81 | 82 | sentiment = Sentiment() 83 | 84 | codes = sentiment.read_tickers() 85 | twitdata = sentiment.get_twits_list() 86 | twitdata = sentiment.remove_old(twitdata) 87 | sentiment.write_to_file(FILENAME, twitdata) 88 | -------------------------------------------------------------------------------- /Sentiment/tickers.txt: -------------------------------------------------------------------------------- 1 | AAPL 2 | MMM 3 | AXP 4 | T 5 | BA 6 | CAT 7 | CVX 8 | CSCO 9 | KO 10 | DIS 11 | DD 12 | XOM 13 | GE 14 | GS 15 | IBM 16 | INTC 17 | JNJ 18 | JPM 19 | MCD 20 | MRK 21 | MSFT 22 | NKE 23 | PFE 24 | PG 25 | TRV 26 | UNH 27 | VZ 28 | V 29 | WMT 30 | NVS 31 | TM 32 | PTR 33 | WFC 34 | BABA 35 | TWTR 36 | FB 37 | GOOG 38 | YHOO 39 | BP 40 | PEP 41 | -------------------------------------------------------------------------------- /readme/AEIS-feb20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vaibhav/Stock-Analysis/d5aefe8bb783aab660ff657611e2d4303c70887a/readme/AEIS-feb20.png -------------------------------------------------------------------------------- /readme/FB-feb20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vaibhav/Stock-Analysis/d5aefe8bb783aab660ff657611e2d4303c70887a/readme/FB-feb20.png -------------------------------------------------------------------------------- /readme/figure_1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vaibhav/Stock-Analysis/d5aefe8bb783aab660ff657611e2d4303c70887a/readme/figure_1-1.png -------------------------------------------------------------------------------- /readme/figure_1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vaibhav/Stock-Analysis/d5aefe8bb783aab660ff657611e2d4303c70887a/readme/figure_1-2.png -------------------------------------------------------------------------------- /readme/figure_1-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vaibhav/Stock-Analysis/d5aefe8bb783aab660ff657611e2d4303c70887a/readme/figure_1-3.png -------------------------------------------------------------------------------- /readme/figure_1-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vaibhav/Stock-Analysis/d5aefe8bb783aab660ff657611e2d4303c70887a/readme/figure_1-4.png -------------------------------------------------------------------------------- /readme/figure_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vaibhav/Stock-Analysis/d5aefe8bb783aab660ff657611e2d4303c70887a/readme/figure_1.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | iexfinance==0.3.4 2 | matplotlib==2.2.3 3 | numpy==1.22.0 4 | pandas==0.23.4 5 | pandas-datareader==0.6.0 6 | python-dateutil==2.7.3 7 | scikit-learn==0.19.2 8 | scipy==1.1.0 9 | --------------------------------------------------------------------------------