Web scraping and Data Analysis for Investment Opportunities

Posted on Mar 26, 2021
The skills I demoed here can be learned through taking Data Science with Machine Learning bootcamp with NYC Data Science Academy.



I had been reading The Intelligent Investor by Benjamin Graham and wanted to perform some value investing/fundamental analysis research, so this motivation fit perfectly with a project that required web scraping and pandas data manipulation and analysis.  


Given the limited amount of time for this project, the primary goal was to use the principles of value investing to generate a shortlist of stocks that could then warrant deeper research for potential long-term investment.

The Scrape

I chose to scrape Yahoo Finance because it is a rich source of useful information ranging from trading data, financials, analyst estimates, sustainability information, and corporate governance.  All the data for a given company/ticker is organized into different sections of the website: Summary, Statistics, Profile, Financials, Analysis, etc. 

Web scraping and Data Analysis for Investment Opportunities
Example of some of scraped data in the red box


I primarily used Scrapy, a fast and powerful scraping and web-crawling framework, to gather most of the desired data.  I also used Selenium, an automated browser-based scraper, because some data was presented in javascript tables and could not be retrieved using scrapy (image below).

Web scraping and Data Analysis for Investment Opportunities
Had to use Selenium for this data

The Data

Note: all data is as of 2/11/21

With value and defensive investing as the theme, I chose to restrict the analysis to the S&P 500, the largest 500 companies in the United States, due to the reliability of the financial data, the stability of the companies, and the depth of the analyst coverage.  The data that I primarily used for my analysis fell into three broad categories:

  • Stock price-related information: PE ratio, dividends, beta, etc.
  • Financials: ROE, ROA, profit margin, current ratio, etc.
  • Governance Scores and Sustainability scores (from Institutional Shareholder Services and Sustainalytics)


After a good amount of data wrangling, cleaning and aggregation, I had a feature-rich pandas dataframe in hand and was ready to perform the research. I approached the stock search from two perspectives: bottom-up and top-down:

Bottom-up: the goal of this type of search was to find top contenders along the following categories and then find the companies that showed up in the top quantiles of multiple groups through cross referencing.  The categories were as follows:

  • Operating figures: current ratio, operating margin, profit margin, ROA, ROE, etc.
  • Reasonable market valuations: PE, PEG, Price-to-sales, Price-to-revenues, EV-to-Rev, EV-to-EBITDA, etc.
  • Governance scores (ESG and ISS)
  • Good dividends
  • Consensus 1-year Analyst Estimates for 2021

Top-down: this first step in the approach was to determine which sectors were most attractive and then apply the above-mentioned bottom-up categories to screen for specific stocks.

Bottom-up Data Findings

Companies with good ‘Operating Figures.’  The stocks that look most attractive are boxed in red:

Web scraping and Data Analysis for Investment Opportunities

Selected companies based on ‘reasonable market valuations’

Governance Scores

While not part of the investment theme, the data was there, so I also decided to explore companies that looked like they could be good to short.  This category was based on ‘short’ market data and bearish 1yr analyst estimates.

Top-Down Data Findings:

Using different metrics to evaluate the various sectors in the S&P 500, the sector that looked to best option was the Utilities sector

A screen of the Utilites sector using the bottom-up approach yielded the following companies:

Final Thoughts

I was a little surprised to find that Utilites was the sector that stuck out when reviewing the data.  While typically passed over because of limited growth potential, they might be a good addition to one's portfolio at this point in time (writing as of Feb 2021) especially if you believe that the market is overvalued and due for a correction.

Are we due for a correction?


Overall this project was a tremendous learning experience for me.  I came away with much deeper experience in web scraping and data wrangling and analysis in pandas.  Also, I came away from this project with a list of stocks that I ordinarily would not have considered.  I look forward to the next step which is to perform much deeper research and financial statement analysis to see if any of them are undervalued companies/worthy investments.  First step completed!  The search continues...

About Author

Eugene Ng

Aspiring data scientist
View all posts by Eugene Ng >

Leave a Comment

No comments found.

View Posts by Categories

Our Recent Popular Posts

View Posts by Tags

#python #trainwithnycdsa 2019 2020 Revenue 3-points agriculture air quality airbnb airline alcohol Alex Baransky algorithm alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus ames dataset ames housing dataset apartment rent API Application artist aws bank loans beautiful soup Best Bootcamp Best Data Science 2019 Best Data Science Bootcamp Best Data Science Bootcamp 2020 Best Ranked Big Data Book Launch Book-Signing bootcamp Bootcamp Alumni Bootcamp Prep boston safety Bundles cake recipe California Cancer Research capstone car price Career Career Day citibike classic cars classpass clustering Coding Course Demo Course Report covid 19 credit credit card crime frequency crops D3.js data data analysis Data Analyst data analytics data for tripadvisor reviews data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization database Deep Learning Demo Day Discount disney dplyr drug data e-commerce economy employee employee burnout employer networking environment feature engineering Finance Financial Data Science fitness studio Flask flight delay gbm Get Hired ggplot2 googleVis H20 Hadoop hallmark holiday movie happiness healthcare frauds higgs boson Hiring hiring partner events Hiring Partners hotels housing housing data housing predictions housing price hy-vee Income Industry Experts Injuries Instructor Blog Instructor Interview insurance italki Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter las vegas airport lasso regression Lead Data Scienctist Lead Data Scientist leaflet league linear regression Logistic Regression machine learning Maps market matplotlib Medical Research Meet the team meetup methal health miami beach movie music Napoli NBA netflix Networking neural network Neural networks New Courses NHL nlp NYC NYC Data Science nyc data science academy NYC Open Data nyc property NYCDSA NYCDSA Alumni Online Online Bootcamp Online Training Open Data painter pandas Part-time performance phoenix pollutants Portfolio Development precision measurement prediction Prework Programming public safety PwC python Python Data Analysis python machine learning python scrapy python web scraping python webscraping Python Workshop R R Data Analysis R language R Programming R Shiny r studio R Visualization R Workshop R-bloggers random forest Ranking recommendation recommendation system regression Remote remote data science bootcamp Scrapy scrapy visualization seaborn seafood type Selenium sentiment analysis sentiment classification Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau teachers team team performance TensorFlow Testimonial tf-idf Top Data Science Bootcamp Top manufacturing companies Transfers tweets twitter videos visualization wallstreet wallstreetbets web scraping Weekend Course What to expect whiskey whiskeyadvocate wildfire word cloud word2vec XGBoost yelp youtube trending ZORI