/JS-Realtime-Dashboard

The Capstone for Coding Dojo DS Bootcamp

Primary LanguageJupyter NotebookMIT LicenseMIT

Real-Time Crypto Tracker

Intoduction

The purpose of this project is to build a real-time predictive analysis dashboard for bitcoin prices.
This project was the capstone project for SDA's Data Science Bootcamp in cooporation with CodingDojo.

Team members:

Business Problem

Day Traders often seek out the market's most volatile financial assets in order to take advantage of intra-day price action and short-term momentum strategies. It can be said that cryptocurrency is one of the most volatile asset among them all.
For that reason, and also due to the recent hype in cryptocurrencies, we thought that it would be interesting to build a predictive model for the day traders.
The model should help them take actions based on those predictions ahead of time, before any other market participant.

Data

The Data used in this project were fetched from 3 sources:

Project Description

In this project we utilized different technologies to come up with a real-time dashboard for bitcoin prices.
The project went through 4 stages:

  • Stage 1: Fetch the bitcoin prices from Coin Market Cap web page & Coin Desk API then insert it into the database.
  • Stage 2: Fetch tweets from Twitter API, process it through Kafka, then finally insert the tweets as (negative , positive )into the database.
  • Stage 3: Read the data from SQL and train the model to predict the price.
  • Stage 4: Build the dashboard as a web page using React to make it accessible for end users.

Visualization

Let's take a look at the price of Bitcoin over the course of a whole day.
bitcoin_price!

In order for us to capture the uncertainty of bitcoin prices we had to come up with a creative solution!

Model

In the modeling process we decided to use 4 different models:

  • ARIMA, which can help us capture seasonality & trends.
  • VARMAX, which can help us find relation between the Bitcon price & Tweets
  • SES, which is the simplest approcach to Time Series Forecasting.
  • Random Forest Regressor. By using the predictions from the other 3 models, we can train a random forest to help us get better accuracy.

Data Flow From Source to Every Model

This is an over view of the models performace:
all-models!

Prpject Structure

Models Folder have Jupyter Notebooks for all different models used in the modeling stage.
client-react is the react web application.
server is a Flask back-end for the react web application.

Future Improvements

Due to time constraints, the project didn't reach it's full potentional, but here we will outline few ideas that can be further developed:

  • Include more features that may influence BTC price. E.g.: number of active BTC addresses, bid & ask prices, inflation rates, etc.
  • Include other models to compare the results, such as, Facebook Prophet.
  • Develop more sophisticated trading strategies other than the basic ones that we are using in our capstone model.
  • Implementing some risk management techniques that could minimize our loses if the cryptocurrency market crashes.
  • Building deep neural networks to look for new opportunities that will enhance the predictability of our model.
  • Adding in the transaction fees and the market cost to make our model give us more realistic returns.

Conclusion

  • This project shows that, simple financial data has some predictive power in forecasting short-term changes in price.
    But as we may add more factors into account to make it reflect a real-world transaction, there may be no practical opportunities to profit from these predicted information, and this particular predictive model will be relatively useless from a trading perspective.

  • It is not a straightforward method to build a model with the predictive power to beat the market.

Disclaimer

Nothing herein is financial advice, or even a recommendation to trade real money.
Many platforms exist for simulated trading (paper trading) which can be used for building and developing the strategies discussed.
Please use common sense.