Giter VIP home page Giter VIP logo

financial_news_sentiments's Introduction

Financial_News_Sentiments

Extracts financial sentiments about stocks from the news sources and uses the data to create simple predictions of the stock market.

TLDR; How to make a gazillion dollars off the stock market with https://recommend-my-stocks.streamlit.app/.

And now for the slightly less clickbaity version - a neat little project Avihai Didi and I worked on to address our personal gripes as amateur traders.

Starting with my biggest complaint, finding investment leads. With the whirlpool of media outlets covering the financial markets, I need to spend 1-4 hours a week reading news in order to follow my current portfolio, not to mention the research behind finding a new stock to purchase. Therefor, the first feature of the tool collects over 1000 articles daily and extracts all the stocks mentioned in each one, along with the article's sentiment towards each company. While the tech giants are obviously the most trending compnies, the feature also unveils stocks that a noob trader such as myself wouldnt think to look at (because who has time to read about every company in the S&P500).

The next step is a feature to display the company's financial data. While stock prices, moving averages, highs, and lows are important indicators to consider, more experienced traders may also focus on additional features such as EPS, income statements, quarterly earnings, and balance sheets. As such, the tool will provide these features for a more comprehensive analysis. While the some of the features are WIP, the EPS tool suggests companies that had the largest EPS delta compared to the previous quarter, suggesting that a stock price change might be coming up.

Now for more buzzwords - AI. Every major platform I encountered used a cryptic grading system, often a simple "this is the combined recommendation of our analysts", which is usually hidden behind a paywall. And since there are machine learning approaches for time series prediction, the required feature should let me:

  1. Choose a model for stock prediction (could vary from random forests and ARIMA to LSTMs and Transformers) (WIP)
  2. Get the performance of the model - not only in niche terms such as RMSE or R^2, but in terms of actual profit I could make by using the model

And the final requirement - I want a product, not a github repo gathering dust. So the entire project is hosted in aws and while not all the features mentioned above are supported, the app is available in a streamlit app through the following URL: https://recommend-my-stocks.streamlit.app/

And if you have any notes, or (hopefully) a will to contribute to the project, feel free to reach out to me!

Project

financial_news_sentiments's People

Contributors

davidpeleg6 avatar avihaididi avatar

Stargazers

 avatar

Watchers

 avatar

financial_news_sentiments's Issues

Add earnings to stock recommendation page

show stats like:
-top 5 most profitable companies (given by best eps for the last quarter)
-show another column for the histogram indicating the future estimated eps
-top 5 most surprising companies (given by biggest surprise percentage)

Recreate keys

recreate keys and assign them to all services that need it

update graphs in readme

add graphs to the readme page and update the about page of the app.
Also change the aws diagram

add volume X sentiment indicators

In the stock reccomendations, we would like to see as pop ups stocks that are trending at news and also have an anomalous volume of trading

convert ec2 collection to make less db calls

since dynamodb costs start to pile up, investigate other options such as moving to S3 as storage and saving dataframes in parquet.
check whether you could get sql like access from it then

also lower the ec2 time to 2 hours

Update ReadMe with shiny new graphs

Once there are new graphs, Update the readme file with:

  1. New Graphs (and maybe the streamlit page example and api example) - Avihai
  2. Documentation of what the repo does in general - Dudu

Upload best model to a production container

Once theres a new and improved model for analysis, upload the model in inference mode to production in a dedicated ec2 container.
also build an easy pipeline for uploading retrained models/ new models

convert databases to rds

dynamodb is a nosql database, which is unfit for storing relational data such as stock data.
move tables to rds, and store the saved models in dynamodb

time is never added

this line throws an exception (probably went unnoticed because it was only a print there):
if "time" not in kwargs: raise Exception(f"Invalid use of the cache_dec decorator. {func} must have a time variable")

in dataloader.py

Create an automatic price scraper in aws

Create an EC2 container in aws that scrapes the stock prices and updates the dynamoDB table accordingly.
Connect the container to a lambda function and an event bridge watcher so it will be activated once a day.

Improve stock recommendations

improve prediction of stock prices by:

  1. hyper param search on XGBoost
  2. adding monthly earnings to the dataset
  3. using DNN such as LSTM, GRU, Transformers (last resort, probably sucks) etc...

add links to articles

in the news sentiment page, let the user see links to the most relevant articles for each stock

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.