Inspiration

Although majoring in Computer Science, we are deeply interested in stock trading. However, we have no experience in anything finance related. This brought us to build finsor. What better way to learn about something than just doing it? This is the aim behind finsor: to provide an easy transition into the stock market.

What it does

finsor is a financial advising application that uses Machine and Deep Learning (ML and DL) to predict the future price of stocks. Using ML and DL allows us to study years of past data, study patterns, and predict the future price of the share. Our app works on three indicators: The sentiment Analysis score of headlines related to the company, the Relative Strength Index of the share price of the company, and predictions of the future share price of the company. Sentiment Analysis is a way to detect emotions in sentences. We adapted models to study today's headlines that are related to the company of choice. After studying the effect the news has on the stock market, we are able to provide an index value that indicates whether the price of the share increases or decreases. We also used an index known as the Relative Strength Index (RSI). The RSI is a measure of how quickly the price of the share changes. The value of the RSI ranges from 0 to 100, where a lower value relates to the stock being oversold and a higher value relates to the stock being overbought. Using this RSI value, we are able to provide an interpretation of how risky it is to buy a stock at any given point in time. We have studied the history of the share prices of companies and trained an LSTM model that predicts the future share price. Using this prediction, we are able to suggest whether buying the stock at a certain time point is ideal or not.

How we built it

We used multiple measurement indices, namely RSI, Sentiment Analysis score, and an LSTM model, that were built differently. The RSI index was calculated by creating an algorithm that uses the previous 14 days' information about the share prices of a company, the Sentiment Analysis score was found using the VADER sentiment analyzer of the nltk module, and the LSTM model provided us with predictions of the share price for the next week. Adding to this, we used Flutter to design the UI/UX of the app. We used FireBase as the back-end of our application because it gave us access to features like OTP authentication and cloud storage. We also used FireBase because of its opportunity for scalability in the future.

Challenges we ran into

The biggest challenge we encountered was connecting our python script with our Flutter application. We overcame this challenge by creating a local server on our laptop, using the flask API, which enabled us to import our TensorFlow models into the application.

Accomplishments that we're proud of

The biggest feature that we have on our app is predicting the movement of the share price based on recent headlines of a company. This is something we found innovative because Sentiment Analysis has never been integrated into the FinTech sector. We are also proud of our UI/UX design because it provides a minimalist aesthetic to the app, hence directly relating to our aim of the app - proving an easy platform for a smooth transition into stock market trading.

What we learned

One of our biggest learnings from this project was enabling python imports into the Flutter framework. This is the backbone of our project, however, we had no prior experience.

What's next for finsor

In the near future, we plan on expanding our project and making it more scalable. To do this, we will create an automated server that will enable us to cater to a larger audience. We also plan on updating our app for additional functionality. We will merge the Sentiment Analysis scores with the predicted stock price from the LSTM model to make our predictions more accurate. This will be done by providing weights for each index, then finding a value that correlates with the decision to buy or sell a stock. Additionally, we plan to add a Risk Analysis feature which recommends the best stocks for the user to buy. The feature will take the risk percentage, the desired reward, and the time frame from the user's input. We will then analyze the best stocks that match the criteria and display a list for the users to view.

Built With

Share this project:

Updates