Giter VIP home page Giter VIP logo

stock-forecast's Introduction

Stock & crypto value prediction app

This is a very simple initial version of the app.

At this moment it only can use some linear algorithms, SquareLevels, Support Vector Regression and a basic linear regression based on Cumulative Moving Averages.

Next steps:

  • apply something more sophisticated as prediction algorithm, being able to make a complete technical analysis of the stock historical values.
  • gather information about the stock from Twitter and financial news, to build a sentiment graph around the stock, to affect the predictions.
  • apply some ML to find patterns between the stock value evolution and other stocks in the same segment, to affect the predictions.
  • ...¿?

Installation

Install PHP 7.2 and Git in your local machine (Example for Mac)

Install Homebrew (package manager) if you don't have it yet, and install Git + PHP 7.2 + Composer:

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)`
$ brew install git php composer

Download app and install all dependencies

$ git clone https://github.com/obokaman-com/stock-forecast
$ cd stock-forecast
$ composer install

Examples

Forecast

You can try it with bin/console forecast:stock <base_currency> <stock/crypto code> <date_interval_magnitude (minutes/hours/days)>

$ bin/console forecast:stock USD BTC days

This will generate a table with the historical price information and a prevision for the next period based in the historical data, giving you three estimations, based on short-term, medium-term and long-term.

Output:

===== BUILDING FORECAST FOR BTC - USD USING DATA FROM LAST 30 days =====

Last real measurements:
+------------------+----------+----------+----------+------------+----------+----------+------------+---------------+
| Date             | Open     | Close    | Change   | Change (%) | High     | Low      | Volatility | Volume        |
+------------------+----------+----------+----------+------------+----------+----------+------------+---------------+
| 2017-11-15 00:00 | 6597.06  | 7283.22  | 686.16   | 10.4%      | 7330.06  | 6596.94  | 733.12     | 922828348.24  |
| 2017-11-16 00:00 | 7283.02  | 7853.68  | 570.66   | 7.84%      | 7964.64  | 7119.17  | 845.47     | 1009996825.41 |
| ------...------- | --...--- | --...--- | ---...-- | ----...--- | ---...-- | ---...-- | ----...--- | -----...----- |
| 2017-12-13 00:00 | 17083.9  | 16286.82 | -797.08  | -4.67%     | 17267.96 | 15669.86 | 1598.1     | 2575900534.34 |
| 2017-12-14 00:00 | 16286.82 | 16459.79 | 172.97   | 1.06%      | 16941.08 | 16023.64 | 917.44     | 1744832688.08 |
+------------------+----------+----------+----------+------------+----------+----------+------------+---------------+

Forecast for next days:
+---------------+----------+----------+---------+------------+----------+----------+------------+---------------+
| Date interval | Open     | Close    | Change  | Change (%) | High     | Low      | Volatility | Volume        |
+---------------+----------+----------+---------+------------+----------+----------+------------+---------------+
| Short term    | 16459.79 | 16014.7  | -445.09 | -2.7%      | 17645.78 | 17189.89 | 455.88     | 1708072344.68 |
| Medium term   | 16459.79 | 16648.77 | 188.98  | 1.15%      | 19085.95 | 16795.52 | 2290.42    | 3094114369.44 |
| Long term     | 16459.79 | 16886.1  | 426.31  | 2.59%      | 17608.83 | 15276.44 | 2332.38    | 2923450650.25 |
+---------------+----------+----------+---------+------------+----------+----------+------------+---------------+

Insights & signals

You can try it with bin/console forecast:signal <base_currency> <stock/crypto code> -t (optional for including forecast table)

$ bin/console forecast:signals EUR ETC

This will output some signals and score built based on last month / day / hour for given currency / crypto pair, or the default pairs if none are given.

Output:

===== SOME SIGNALS FOR EUR - ETC ON Jan 14th, 15:21h =====

Signals based on last hour (Score: 0):
 - Stable in this period.

Signals based on last day (Score: -1):
 - Loosing value in short term.

Signals based on last month (Score: 3):
 - Improving exponentially.
 - Recovering value in short term.
 - Having a noticeable improvement recently (6.62%).

There is a forecast:test command too that allow you to test different predicition strategies with sample sequences.

Telegram bot (@CryptoInsightsBot)

You can use this project to run a robo-advisor using Telegram. You'll find some commands and callbacks implemented under App/Controller/Telegram

If you want to test with your own bot, you should add an environment variable called TELEGRAM_BOT_TOKEN, with your assigned token. More information about creating your own Telegram bot on https://core.telegram.org/bots

An example Telegram bot is running as @CryptoInsightsBot. You can test it at https://t.me/CryptoInsightsBot

It implements two simple commands:

  • /insights: allow you to view signals for choosen currency - crypto pair
  • /subscribe: allow you to receive real-time alerts with relevant signals for choosen currency - crypto pair signal.

Telegram bot

stock-forecast's People

Contributors

deepsourcebot avatar dependabot[bot] avatar obokaman-com 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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stock-forecast's Issues

Definitions...

How do you define the Short, Medium and Long term (time frames) that your program is providing in the output?

Backtesting

Would be nice to have a way of backtesting and see the overall accuracy of the predictions for past prediction over the last year/month/day

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.