Code Monkey home page Code Monkey logo

flashbot's Introduction

Flashbot

Build Status License

Flashbot is a Java and Scala framework for building, simulating, and running robust, low-latency Cryptocurrency trading strategies as a cluster of trading engines and market data servers.

Crypto markets are unique in the world of finance because the "playing field is level". I.e. If you have an idea for a high-frequency trading strategy, you don't need to pay millions for infastructure, data, and co-location to get started. But you do still have to write performant software. Flashbot helps with that by providing a simple interface for building complex strategies and a common infrastructure to run them on.

Here for a code review?

Check out the following core files (on the branch v1):

Interfaces

Core

Sample strategy

Features

  • Cross-platform. Windows, Linux, and Mac OS
  • Pluggable strategies, exchanges, and data sources
    • Market data server works for other financial markets too
  • Backtests with simulated fees and latency
  • Support for derivatives such as the XBTUSD futures contract
  • Bots that run in live or paper mode
  • Fault tolerance for strategies (bots are restored if they crash)
  • Dashboards & alerting
  • Configurable market data database via JDBC
  • Delta compression for efficient streaming and storage of order books
  • Automatic historical data collection and retention
  • Tolerant to network and websocket failures (i.e. it manages the retries)

Docs

Check out the wiki for documentation.

Installation

Flashbot is published to Bintray, so you'll have to add our repository as a resolver in your build tool and then list Flashbot as a dependency.

SBT

Add the following line to your project settings in build.sbt:

resolvers += Resolver.bintrayRepo("infixtrading", "flashbot")

And then add the flashbot-client and flashbot-server dependencies as well:

libraryDependencies ++= Seq(
  "com.infixtrading" %% "flashbot-client" % "0.0.1",
  "com.infixtrading" %% "flashbot-server" % "0.0.1"
)

Gradle

First add the repo to your gradle.build file:

repositories {
    maven {
        url "https://dl.bintray.com/infixtrading/flashbot"
    }
}

Then add the dependencies to the file:

compile 'com.infixtrading:flashbot-client_2.12:0.0.1'
compile 'com.infixtrading:flashbot-server_2.12:0.0.1'

Maven

First add the repository to your pom.xml file:

...
 <repositories>
   ...
   <repository>
       <id>bintray-<username>-maven</id>
       <name>flashboot</name>
       <url>https://dl.bintray.com/infixtrading/flashbot</url>
   </repository>
   ...
 </repositories>
...

Add the following dependencies to your pom.xml:

...
  <dependencies>
    ...
    <dependency>
      <groupId>com.infixtrading</groupId>
      <artifactId>flashbot-server_2.12</artifactId>
      <version>0.0.1</version>
      <type>pom</type>
    </dependency>

    <dependency>
      <groupId>com.infixtrading</groupId>
      <artifactId>flashbot-client_2.12</artifactId>
      <version>0.0.1</version>
      <type>pom</type>
    </dependency>
    ...
  </dependencies>
...

Configuration

The default configuration file contains a list of available options. You can override any of the settings in your own application.conf file.

Requirements

Akka is used for persistence, streaming, clustering, fault-tolerance, and concurrency control. Akka Cluster 2.5.x is a dependency, but running a cluster is not required. You may use Flashbot in standalone mode on a non-cluster actor system.

Status

This project is alpha software. In it's current state it's a good tool for prototyping and simulating strategies however the unit tests are minimal and it hasn't been battle tested in production yet. Do not use it out of the box with real money yet! You have been warned.

Contributing

Contributions are very welcome! This project is young, it's scope is large, and needs more manpower. Please propose issues through GitHub first before submitting a pull request.

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.