Finn
Devpost Link
» Invite Finn to your Discord server!
An all-in-one financial analytics bot to help you gain quantitative financial insights. Finn is a Discord Bot that lets you explore the stock market like you've never before!
Explore the docs »
View Demo · Report Bug · Request Feature
Table of Contents
Disclaimer
FINN IS A PROJECT DESIGNED TO HELP USERS EXPLORE THE WORLD OF COMPUTATIONAL FINANCE. IN NO WAY ARE THE RESULTS PRODUCED BY FINN DESIGNED TO BE INTERPRETED AND/OR USED AS FINANCIAL ADVICE. THERE ARE RISKS ASSOCIATED WITH INVESTING IN SECURITIES AND INVOLVE THE RISK OF FINANCIAL LOSS. A SECURITY'S PAST PERFORMANCE IS NOT A GUARANTEE OR PREDICTOR OF FUTURE INVESTMENT PERFORMANCE. USE OF THE CODE IN THIS ASSIGNMENT IS LICENSED BY THE MIT LICENSE. SEE [LICENSE](https://github.com/Finn-Discord-Bot/finn/blob/main/LICENSE) FOR MORE. |
About The Project
A one-of-a-kind FINNancial analytics Discord bot!
Finn is a bot that seeks to provide a multitude of features to improve financial literacy and smoothen the learning curve that beginners may face coming into finance. By accessing Yahoo Finance’s python library, Finn can provide a wide range of key statistics that new or experienced investors may need when assessing whether to invest in a company. Finn can also help you plan and build a portfolio based on what you need! If you input a list of stock tickers, Finn will algorithmically produce a weighted portfolio of a specified type for your use.
Built With
- discord.py
- discord.py-slash-commands
- DataStax Astra's Apache Cassandra Databases
- Domain.com
- Linode Cloud
- yFinance
Getting Started
To get a local copy up and running follow these simple steps.
Prerequisites
This is an example of how to list things you need to use the software and how to install them.
Prerequisites
- Python
3.8.x
,pip3
-
Update before installing new packages
sudo apt-get update
-
Check Python version
python3 --version
-
If Python version <
3.8
sudo apt install python3.8
-
Validate
python3.8 --version
-
Install
pip3
sudo apt-get -y install python3-pip
-
Validate
pip3 --version
Installation
- Clone the repo
git clone https://github.com/Finn-Discord-Bot/finn.git
cd
into repo directorycd finn
- Install Prerequisite Libraries
pip3 install -r requirements.txt
- Create a Discord Bot on the Discord Developer Portal
- Configure DataStaxAstra Cassandra Database
- Initialize CQL Database with keyspace
portfolios
- Click on Connect in the initialized database. Download and add
secure-connect-database-name.zip
to main directory.
- Initialize CQL Database with keyspace
- Add tokens to
config.json
- Copy tokens from DataStax Astra Database into
config.json
- Bot tokens for Discord can be found in the Discord Developer Portal.
- Copy tokens from DataStax Astra Database into
- Start bot
python3 main.py
Usage
/help
Provides a list of all possible commands
There are three groups of commands
Stock Commands
/companyinfo
takes in a single ticker and displays the Company Location, Company Industry, and Market Capitalization of the specified ticker./stockinfo
takes in a single ticker and displays various financial statistics about the specified ticker/stockhistory
takes in a single ticker, a start date, and an end date. It displays the tickers historical values over the specified date range.
Finance Commands
/lasttradingday
displays the last date where trading has occured./options
takes in a single ticker, a range, and the option type (call or put). The range indicates how close the user will like the options to be to the current stock price. The option type indicates if the user wants to see calls or puts.
Portfolio Commands
/createportfolio
takes in a portfolio type, a list of tickers, and the starting capital. There are various types of portfolios. Equally Weighted produces a portfolio of equal weight amongst the tickers. Price Weighted weighs the tickers by the share price. Market-Capitalization Weighted weighs the tickers based off of the market capitalization of each ticker. Risky Smart Weighted weighs the tickers by considering the underlying risk of the ticker, compared to the greatest possible return. This portfolio is expected to have the greatest value movements, which may be in either direction. Safe Smart Weighted weighs the tickers by considering the overall risk of each ticker. It gives precedence to the tickers whos risk is lowest. This portfoli is expected to have the least value movements. The starting capital is the amount of cash the user wants to create the portfolio with. Every user can create their own portfolio, and will be stored seperately/displayportfolio
displays the current users portfolio./addstock
takes in a ticker and the quantity of shares. It adds the specified shares to the users portfolio./removestock
takes in a ticker and removes it from the users portfolio./cleartable
clears the users current portfolio.
For more examples, please refer to the Demo
Roadmap
- Web interface to access your portfolio and other features.
- Allow multiple portfolios.
- Enable the ability to purchase the same stock twice in a portfolio.
Contributing
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
License
Distributed under the MIT License. See LICENSE
for more information.
Contact
Timothy Zheng - Linkedin - [email protected]
Ethan Misa - Linkedin - [email protected]
Karen Huang - Linkedin - [email protected]
Daniel Jiang - Linkedin - [email protected]
Vanessa Liu - Linkedin - [email protected]
Daniel Kim - Linkedin - [email protected]
Yuqian Lin - Linkedin - [email protected]
Victoria Zhao - Linkedin - [email protected]
Jacky Xu - Linkedin - [email protected]
Devpost Link: https://devpost.com/software/finn-u7hden