Giter VIP home page Giter VIP logo

philipxjm / steward Goto Github PK

View Code? Open in Web Editor NEW
34.0 8.0 10.0 8.86 MB

A stock portfolio manager that provides neural net based short-term predictions for stocks and natural language processing based analysis on community sentiments.

CSS 1.57% JavaScript 18.75% Java 67.96% Shell 0.76% FreeMarker 10.24% PLpgSQL 0.72%
stock stock-market stock-price-prediction sentiment-analysis porfolio webapp java

steward's Introduction

Steward: a smart stock portfolio manager that provides short-term predictions and social media sentimental analysis for stocks selections.

Team Members: Kevin Jin (kjin2), Will Povell (wpovell), Matt Robins (mrobins), Philip Xu (jx24)

Mentor: Sean Segal ([email protected])

Project Specs and Mockup

Specs:

Interfaces:
  1. Graphical User Interface:

    The user interface of this project will be a web application. The layout is demonstrated in the mockups.
    Features:

    1. Signup, Login and Data Retention:

      Users should be able to sign up on our service using an username, password, and email.
      Users should be able to log in to the service and create/edit their portfolio. That information should be retained and everytime the user logs in they should be able to have access to the same portfolio they created.
      Users should also be able to log out, change their passwords, or delete their accounts.

    2. Portfolio Editting:

      Users should be able to create and edit their portfolios using a search box through symbol or stock name query. There should be an extensive stock database containing all currently traded NYSE or more stocks.

    3. Stock Information Display:

      When a user clicks on a stock, for example AAPL, the stock's candlestick chart, statistics, fundamentals, predictions, should be displayed. Users should be able to zoom in on the graph, mouse over for more daily information, and draw trendlines with percentage displays. The current traded price, volumes traded, volatility, and fundamentals of the company will be displayed below the graph, and a user can click to see more details. News articles or twitter feeds regarding the stock will be displayed on the right, along with a sentamental analysis of social media feeds.

  2. Backend Interface:

    The backend interface will do the following:

    1. A neural network API, a stock data API, a twitter feed API, and other relevant finance news APIs such as Yahoo Finance will be used.
    2. A neural network will be trained using the quantitative variables of a stock’s fundamentals and a sentiment value (as obtained from using our sentiment API on relevant news data)
      1. At the very least, the sentiment value will be obtained by applying the sentiment API to tweets that use the stock’s ticker symbol. However, it would be ideal to extend this model by using multiple keywords to assess sentiment such as company name, CEO name, sector name, etc. through different news mediums
      2. The neural network will be used to make both a one-day price prediction and a five-day price prediction.
    3. When a stock’s home page is presented on the front end, all of the fundamentals, graph data, and prediction data will come from a GSON variable sent from the backend. This GSON will include the following key, value pairs:
      1. (Daily Data) “dd/mm/yyyy” contains an array of the following:
        1. Open, Close, Daily, High, Daily, Low, Volume
      2. (Minute Data) “dd/mm/yyyy@hh:mm:ss” is used for displaying a stock chart for more recent intervals, including the past week and the current day, and will contain an array of:
        1. Current Price, Total Daily Volume
      3. (Fundamental) “fundamental” i.e. P/E Ratio, Dividend Yield, Shares Outstanding, and other fundamentals will be included as key, value pairs where the key is the name of the fundamental (String) and the value is a number representing the value of the fundamental
      4. (5 Day prediction) “FiveDay” is generated by the neural network in the backend and contains a number representing a five-day prediction for the given stock price
      5. (1 Day prediction) “OneDay” is generated by the neural network in the backend and contains a number representing a one-day prediction for the given stock price
    4. Predictions for stocks in the portfolio will be cached and predictions for portfolio stocks should be generated in less than 2 second.
    5. Predictions for stocks not in the portfolio will be generated in under twenty seconds, a loading bar with approximate time remaining will be displayed.
Functionalities:
  1. User Login/Signup:
    Users should be able to sign up on our service using an username, password, and email. Users should be able to log in to the service and create/edit their portfolio. That information should be retained and everytime the user logs in they should be able to have access to the same portfolio they created.
    Users should also be able to log out, change their passwords, or delete their accounts.
  2. Portfolio Management: Users will have access to a complete set of all stocks currently trading in the U.S.. Users should be able to edit their portfolio and have access to it when they re log in.
  3. Stock: Users should be able to have access to all relevant stock information: Current price, fundamentals, daily open, daily close, daily low, daily low, daily volume, volatility, news articles, projections, and sentimental analysis informations.
    Users should be able to draw trendlines, zoom onto graphs, have access to info on the graphs.
Performance:

Minimal computations will be performed on the frontend, most of the data manipulation and preperations will be done on the backend.

  1. User data management.
    User data will be stored in a SQL database. Insertions upon creation, and query upon login. All performance will be limited by SQL operations, which will likely O(log(n)).
  2. Prediction.
    The backend will performance prediction using APIs for recurrent neural networks and sentimental analysis. The performance of this will depend on the APIs used. After the initial run the results will be cached and any redundant queries will be retrieved from the cache instead to speed up querying.
  3. Stock Info Querying:
    The backend will provide information of charts and fundamentals. This information will be queried from a SQL database and cached for future uses.
Safety:

Our app will not have any financial transactions or irreversible actions. We will store the usernames and passwords for logins on the site in a database on the server. We will find an online package to use as a password hasher.

Compatibility:

Our portfolio manager will be a web app that supports at least Chrome that can be accessed from personal computers. Our stretch goals include support for Firefox, Safari, IE, Edge, and smartphone browsing.

We will not require any files to be provided from the client.

Mockups:

Main page

Main page

Register page

Register page

Graph page

Graph page

steward's People

Contributors

joerromano avatar kjin97 avatar philipxjm avatar wpovell avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

steward's Issues

Slow to show unrealized gains graph for the first time

When calculating unrealized gains for the first time, I believe we're loading in ALL data for that stock, even if it isn't all going to be used. Might be better to load less allowing for a quicker return? Also, I think this issue may be related with #36

5-day only showing 4 days

screen shot 2017-04-23 at 9 48 14 pm

Noticed that the 5-day graph only showed 4 days worth of data. Might just be because its a Sunday, earlier days get cutoff? Pretty sure its an API not a graphing issue, but maybe something to look into.

Stock data only goes back ten years or so

This prevents the user from adding a stock to his portfolio from more than ten years ago in a past transaction and also limits us to showing at most ten years worth of data on the stock's graph page.

Prevent AutoLogin

When the server is restarted and a user navigates to the home page, GoogleAuth automatically runs the login. Because of the way this causes the home page to flicker and refresh a couple times, I think it'd be better if it just stayed logged out, allowing for a more controlled log in to occur. Assigning @kjin97 since he did a lot of the log in stuff.

Update API doc

Definitely not urgent, but we should probably update API.md (or delete it).

Different gains graph first time quotes is loaded

When you nuke quotes.sqlite3 and then generate an unrealized gains graph, it is different then the graph show on future reloads. However the graph doesn't look totally wrong either. Weird bug, I think it has to do with how prices are initially loaded when getting priceData for the range. Adding @mcrob23 to this since he wrote a lot of that backend stuff.

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.