CryptoBot v1.0.0

<img src="images/bot.png" alt="" width="201" height="155"/>

About

CryptoBot is an automated, high(ish) frequency trading bot for cryptocurrencies. It uses Machine Learning to decide when to trade. Currently it supports only Bitcoins, and trading on the BTCC exchange. In the future I intend on adding other currencies and exchanges.

This project is a very-hard-fork of Christopher Bynum's BitPredict which can be seen at: https://github.com/cbyn/bitpredict. The base code, and the idea, is modeled off the BitPredict project, so credit is due. However, CryptoBot has evolved immensely and looks very different than BitPredict, and have been taken several steps further.

The project is written entirely in Python, with the exception of some shell scripts.

Details

Data is collected from BTCC using their JSON RPC API, and stored in MongoDB using scripts located in the app/collect_data folder:

Features are created and saved to disk using the create_live_features.py script. The Machine Learning features include:

A target (named "final") is created using the future midpoint prices (at 5, 10, 15, 20, 25, 30 seconds in the future) of the midpoint between bids/asks for the books at those moments:

Using the features, we train a Machine Learning classifier model (using the strategy.py script) against the target value to give us one of three options:

I have tried it using the following classifiers:

predict.py is used to do the live trading.

Inner Workings

Disclaimer

The bot is fully functional. However, this was more of an exercise to teach myself Machine Learning. I have not be able to make a consistent profit. Neither should you expect to. Please be very careful in using this bot, and assume all responsibility yourself. Never use it for trading more than you're willing to lose (i.e. use it for fun only).

Other Notes

This is very much a work in progress. Contributions are welcome. If you can bring it to a consistent profitability, do share!

License

Licensed under the Apache License