StockStats: A Shiny Web App for Investors

Lukas Frei
Posted on Dec 4, 2018


I have always been interested in analyzing stocks on websites such as Yahoo Finance or Marketwatch. As I began taking statistics, I wanted to better understand the statistical properties of these stocks I had been looking at. However, I just was not able to find such in-depth tools on most major finance websites, especially for free. Therefore, after having gained proficiency in R, I decided to make use of my skills and build something that hopefully not only benefits myself but also other curious data enthusiasts.

The idea behind StockStats is to build a web app that enables everybody with Internet access to build dashboards with statistical analyses and visualizations of stocks. These dashboards can then be saved or revisited at a later point for comparison.


While preparing for this project, I looked at many Shiny dashboards. Although Shiny, an R package, is mainly used to build data visualization dashboards, there is much more one can theoretically achieve with it. My main issues with most dashboards I explored were:

  1. Most dashboards allowed for interactive data visualizations, however, the data they were based on was static and did not adapt/change
  2. As a result, there was little incentive to revisit them after having taken a look at the data once


In order to avoid these two pitfalls, I used the quantmod package to dynamically retrieve stock data. In doing so, I was able to enable users to update their dashboards whenever they revisit the web app. To tackle the second issue of lacking incentives for users to return, I also decided not to use the widely applied Shiny Dashboards framework for my UI design and instead challenged myself by implementing semantic.dashboard, an R package released in April of 2018. semantic.dashboard comes with full integration of Semantic UI, a modern front-end development framework, powered by LESS and jQuery, thus providing more options for UI design.

Because the package was relatively new, working with semantic.dashboard proved to be a challenging yet rewarding experience due to the many options it provides. On top, it also enabled me to push the framework provided by Shiny to create a fully-functional website and not only a dashboard.


The best way to explain what StockStats can do is to demonstrate an example use case. After opening the web app, the user lands on an introductory page, explaining what StockStats is as well as offering several links to other related resources that might be of use.



To continue, click on the "Menu" button on the top left of the website. After doing so, a menu sidebar will show up, providing an overview of the services StockStats offers:



The main feature of StockStats is its dashboard tab. After clicking on it, the user will find a blank dashboard as well as instructions on how to use the dashboard. In building the web app, I focused on making StockStats as usable as possible for a wide range of potential users by inserting descriptions, helpful links, and instructions.

Now, after having typed in a stock symbol and set a date range, the user can begin exploring the stock in question. Sticking with the default, I am going to demonstrate how to use the dashboard using Apple's stock data from 2013 onwards. To gain an overview, one can tick the "Show Stock Price Plots" checkbox. A plot displaying the opening, closing, highest, lowest, and adjusted price, as well as the traded volume, will show up. The size of the plot can be adjusted. Additionally, the user can zoom in on the adjusted price by also checking the "Only Adjusted"  checkbox. After doing so, the dashboard will look like this:



Depending on what the user is interested in, additional plots can be added to the dashboard by checking additional checkboxes. Several plots, such as the "Log Returns Adjusted" plots were created using plotly and provide additional interactivity by allowing the user to hover over the plot and retrieve more information as well as enabling users to zoom into specific parts of plots.

After adding and dragging plots/statistical measures around and arranging a personalized dashboard, the user might look at something like this:



Besides the dashboard, StockStats also allows users to take a look at the stock data for further investigation. To do so, select the "Data" tab in the menu. An interactive data frame will be displayed that users can then search for specific dates or values of interest:



Finally, StockStats also includes menu tabs describing the current state as well as future goals for the project. On top, I have included a short bio in the "About" tab as well as a more detailed description of my motivation.



To put it in a nutshell, Shiny is capable of so much more than what it is mostly used for. While StockStats is a web app for data enthusiasts, similar adaptions in companies could benefit employees by giving them a tool that does not only provide aesthetically pleasing visualizations but also offers long-term value while saving them the effort to code themselves.

StockStats can be accessed here:

About Author

Lukas Frei

Lukas Frei

Lukas Frei is an aspiring data scientist currently completing the 12-week bootcamp at the New York City Data Science Academy. Besides his passion for data, he is also very interested in business and finance. Lukas holds a BS...
View all posts by Lukas Frei >

Leave a Comment

No comments found.

View Posts by Categories

Our Recent Popular Posts

View Posts by Tags

#python #trainwithnycdsa 2019 airbnb Alex Baransky alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus API Application artist aws 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 Bundles California Cancer Research capstone Career Career Day citibike clustering Coding Course Demo Course Report D3.js data Data Analyst data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization Deep Learning Demo Day Discount dplyr employer networking feature engineering Finance Financial Data Science Flask gbm Get Hired ggplot2 googleVis Hadoop higgs boson Hiring hiring partner events Hiring Partners Industry Experts Instructor Blog Instructor Interview Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter lasso regression Lead Data Scienctist Lead Data Scientist leaflet linear regression Logistic Regression machine learning Maps matplotlib Medical Research Meet the team meetup Networking neural network Neural networks New Courses nlp NYC NYC Data Science nyc data science academy NYC Open Data NYCDSA NYCDSA Alumni Online Online Bootcamp Online Training Open Data painter pandas Part-time Portfolio Development prediction Prework Programming PwC python python machine learning python scrapy python web scraping python webscraping Python Workshop R 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 Selenium sentiment analysis Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau team TensorFlow Testimonial tf-idf Top Data Science Bootcamp twitter visualization web scraping Weekend Course What to expect word cloud word2vec XGBoost yelp