Logo

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

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

Banner

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

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
  1. Update before installing new packages

    sudo apt-get update
  2. Check Python version

    python3 --version
  3. If Python version < 3.8

    sudo apt install python3.8
  4. Validate

    python3.8 --version
  5. Install pip3

    sudo apt-get -y install python3-pip
  6. Validate

    pip3 --version

Installation

  1. Clone the repo
    git clone https://github.com/Finn-Discord-Bot/finn.git
  2. cd into repo directory
    cd finn
  3. Install Prerequisite Libraries
    pip3 install -r requirements.txt
  4. Create a Discord Bot on the Discord Developer Portal
  5. 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.
  6. Add tokens to config.json
  7. 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.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. 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

GitHub

View Github