Our Mission and Inspiration
The internet is littered with stories of amateur investors doing ill-timed buys on volatile stocks or trying to buy margin calls and ending up in thousands of dollars of debt. It seems nobody really knows what they're doing. This project aims to give prospective investors a way to "test the waters" and try out stock trading in a risk-free way.
We were inspired by how disastrous it has been for people on /r/WallStreetBets getting into the stock market. In SavvyTrader, you can expend virtual energy to bet on stocks and gain points when your stock predictions are successful. Make enough accurate guesses that match the increase or decrease of a stock over different intervals, and become a top ranked trader. Predictions are awarded more points when they are more dramatic, as in they differ from what expert predictions from finnhub say or what your peers on SavvyTrader are predicting, as well as for stocks farther in the future. We hope that with enough users we could potentially also gain insight into the secrets of the market by examining our top ranked users and how their trends differ from the ordinary user.
How We Built It:
We used Firebase's Firestore to store all of our data, also in the backend we queried this data and set it within our backends js file. We also queried finnhub's financial statistics for access to ticker values to create the candlestick chart for the requested stock. We also set timers for each prediction when it is set so that a user's points would be adjusted depending on the accuracy of a user's prediction.
On the frontend, we used React and Bootstrap to create a great dark mode design for the home page, leaderboard, predictions page, and for searching stocks. On the home page, we created our own candlestick graph for the stock prices using D3.js. Then we displayed a users energy, points, and predictions for that stock by communicating with the backend API. We also have a form to set new predictions for a given stock.
Dealing with communication between a frontend and backend
We deployed our backend on Heroku and our frontend on Netlify, which caused some problems with CORS and mixed content policies. We solved this by forcing both systems to use HTTPS.
None of us had used D3.js before, but it was a very useful learning experience.
Right now, our algorithm for rewarding correct predictions isn't very good and the system can be easily gamed. We can modify that reward algorithm to make SavvyTrader more realistic.
We also want to add authentication and full user accounts setup. In the future as we gain more users, we can examine data of predictions from our highest ranked users in each sector to make more accurate stock decisions in the real world. This data may show trends that could not be found elsewhere and may be useful to other developers and researchers.We also hope they can gain experience and become more prepared for entering the stock market (or realize they shouldn't enter it).
Stock market prediction, gamified