Code Monkey home page Code Monkey logo

crypto_trader's Introduction

Crypto_Trader

A Live Machine-Learning based Cryptocurrency Trader for the Poloniex Exchange

If you would like to follow our progress or reach out to developers, feel free to join our discord channel at: https://discord.gg/UPNV2fH

The goal of the project is to create an open sourced, machine learning based cryptocurrency portfolio optimizer including as many relevant variables as possible.

These will include:

  • Community Sentiment (such as forum and twitter sentiment analysis)
  • Analyst Opinions (notable twitter account/analyst feeds with a history of winning strategies - ex. "Haejin" a successful elliot wave trader with an established history)
  • Global Economic Indexes (DOW, Nikkei225, FOREX data, etc.)
  • Open/Close/High/Low/Volume
  • Live Orderbook Data (spread, bid, ask, order size)
  • Technical Indicators (MACD's, MA's, VWAPS, etc.)
  • Any Other Variable of interest found to be important (Please feel free to brainstorm and send suggestions)

A Boruta Analysis (variation of Random forest) will be used to reduce these input variables by removing "unimportant" features.

Using this input dataset, a machine learning Binary Classifier will be created to assign trading pairs on Poloniex a confidence score from 0 to 1. This value will represent the confidence that the trading pair will increase over a certain timeframe. Multiple machines may be constructed to score for a 5 minute window, 10 minute, 15 minute, 30 minute, 1 hour, etc.

Using these scores, a Q-Learning Bot ("reinforcement learning") will be created that will optimize a trading strategy based on the binary classifier scores. The machine will read the amount of capital in the users Poloniex Account, and automatically place trades to optimize the portfolios holdings. These strategies will use stop losses and sell limits. Because it is q learning based, the machine will receive, and use live data to make decisions in a live auto-updating context with a reward that optimizes profit. This will allow the machine to continue to train and optimize itself over time while feeding in live data and placing trades.

Ultimately, the program will have the ability to be run 24 hours a day while optimizing a portfolio using live data, while taking into account fees in order to identify and take advantage of all trading opportunities accross the entire cryptocurrency market on Poloniex. Because of the decimal based system of cryptocurrencies, in theory a portfolio of any size should be able to be used as long as the user has the minimum trade size on Poloniex.

Major Design Features Purpose
Identified Variables Related to Price Action
Data Scraper Live Variables to Array
Binary Classifers Score Trading Pairs Live
Q-Learning Bot Optimize Trade Strategy
Poloniex API Link Allow Bot to Make Trades

If you would like to donate to the project, please do so at the following Bitcoin/Litecoin/Ethereum addresses. All donations appreciated :)

DONATIONS

Currency Address
Bitcoin 1GjVgMUDfKHzhxgeauRagVfp1GCrSJXijb
Litecoin 0x9852389Bd431A90A9AEcb48EdA50Da1ac05Bd4d8
Ethereum M9oJaUnCB6Soistk3wSETziFDzz8gAaJCU

crypto_trader's People

Contributors

andrewvaliente avatar bshaw2019 avatar enummela 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

crypto_trader's Issues

Binary Classification vs Regression

I feel as if it would be a better idea to have a regression for predicted price for the next time window (whatever increment we end up choosing).

This is because, in the scenario the price goes up, it is only profitable to trade when the expected profit exceeds trade costs (gas). If we had context for the price increase we could avoid losing money on negligible increases.

Thoughts?

We need to specify date format for arrow.get()

https://github.com/bshaw19/Crypto_Trader/blob/2f0f416c78b917d00f99b7c2ec0babcfbf33bc7e/Variable_Functions/Twitter_Sentiment.py#L16

@bshaw19 I'm not sure what date format you intend to use here. When I wrote this code for the LSTM stock model the input date worked without specifying a formatting argument to the arrow.get() function.

I was running this today and ran into problems with the "YYYY-MM-DD" format as without a formatting argument, it assumes another format and thus returns tweets for the wrong dates. When we know our date format we can add the argument to avoid this problem.

Arrow documentation: http://arrow.readthedocs.io/en/latest/

Readme typo

"feed free to join...". I think it should be "feel free to join ..."

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.