The Brain

The Brain is tool for crypto-currency markets aiming to help with users trading activities. It features programmatic, config based and on-the-fly strategies, data and opportunity analyzers.

https://image.ibb.co/i1HaJG/The_Brain_2.jpg

Contents

About

Why?

As trading hundreds of cryptocoins in tens of markets could be really hard for users, The Brain aims to help with decision taking by presenting the user best possible summarized information.

How?

The Brain consists of multiple parts for use; The UI and Engine. The Brain Engine is responsible for running everything behind the curtain including reading & analyzing market data and processing it with opportunity analyzers & strategies.

Market Data

The Brain can read market data from hundres of possible cryptocoin exchanges. Yet again users can also develop their own market data reader programmatically and The Brain will be then executing it.

Yet again, The Brain can read from fiat conversion API’s available through the web to execute cross-fiat conversions.

Data Analyzers

Once the market data from all available sources are read, The Brain Engine will then will start executing the available data-analyzer modules.

A data analyzer is a basic module that can read, process and finally manipulate the data from markets.

As an example MergedMarketsForPairs data analyzer merges all currency pairs within the market data and will then find each market with best ask & bid prices.

Opportunity Analyzers

Once data analyzers are all processed, The Brain Engine will move on executing opportunity analyzers.

An opportunity analyzers is a basically another type of module that has access to results from data analyzers.

They can basically take the results and check for any outstanding opportunities for the current market state.

As an example, a simple opportunity analyzer can read from the previous MergedMarketsForPairs data analyzer’s results and calculate if any outstanding opportunities stand for available currency pairs, in which our case buying from the lowest ask market and selling it back in highest bid market would be one.

As well as presenting the user percentage profit, the opportunity analyzer can then create a on-the-fly strategy which will be then later executed and calculate the exact outcome.

Strategies

Strategies are basically executed by The Brain Engine to calculated expected outcome & profit for a given set of actions. The Brain Engine can run 3 kind of strategies;

  • Configuration based strategies
  • Programmatic strategies
  • On-the-fly strategies.

Strategies

Strategies are basically executed by The Brain Engine to calculated expected outcome & profit for a given set of actions. The Brain Engine can run 3 kind of strategies;

  • Configuration based strategies
  • Programmatic strategies
  • On-the-fly strategies.

Configured

Configuration based strategies are simple YAML markup based strategies. Although it has a pretty basic syntax, it can easly handle the most basic tasks for creating simple strategies.

name: TR markets - BTC
description: BTC arbitrage strategy for Turkish markets
region: TR
author: Bonesoul
version: 1.0
enabled: true

defaults:
  input: &input 1000 TRY # default input amount

variants:

        - name: Koinim > Paribu
          description: Buy BTC [Koinim] > Sell BTC [Paribu]
          exec:
                - cashin: # Cash in TRY to Koinim.
                  - market: Koinim
                  - amount: *input
                - buy: BTC # Buy BTC using TRY.
                - transfer: Paribu # Transfer Btc to Paribu.
                - sell: TRY # Sell BTC for TRY.
                - cashout: # Cash out TRY.

The above strategy will basically execute these actions;

  • The above strategy will basically cash in 1000 USD to Bitcoin exchange called Koinim.
  • Will buy Bitcoin with all it’s fiat.
  • Transfer Bitcoins to another exchange called Paribu.
  • Will sell all the Bitcoins.
  • Will cash out from the market.

Programmatic

Programmatic strategies are custom developed strategies by the user with C# or any other .Net based language. They are far more powered compared to Configuration based strategies as the user will be able to develop virtually every possible trading & arbitrage strategy.

As an example, the code below executes the same above strategy;

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using Brain.Framework.Finances.Currencies;
using Brain.Framework.Finances.Generic;
using Brain.Framework.Strategies.Programmatic;
using Brain.Framework.Strategies.Variants;
using Brain.Framework.Strategies.Variants.Programmatic;

namespace Brain.Strategies
{
        [Serializable]
        public class Strategy : IProgrammaticStrategy
        {
                public string Name { get; }

                public string Author { get; }

                public IReadOnlyCollection<IVariant> Variants { get; }

                [NonSerialized]
                private readonly IList<IVariant> _variants;

                private readonly FiatCurrency _try = new FiatCurrency("TRY");

                private readonly CoinCurrency _btc = new CoinCurrency("BTC");

                public Strategy2()
                {
                        Name = "TR markets - BTC";
                        Author = "Bonesoul";

                        _variants = new List<IVariant>();
                        Variants = new ReadOnlyCollection<IVariant>(_variants);
                }

                public void Load()
                {
                        var variant = new ProgrammaticVariant(this, "Koinim -> Paribu");
                        variant1.Execute = new Action(() =>
                        {
                                variant.CashIn("Koinim", new Amount(1000, _try));
                                variant.Buy(_btc);
                                variant.Transfer("Paribu");
                                variant.Sell(_try);
                                variant.CashOut();
                        });

                        _variants.Add(variant);
                }
        }
}

Yet again it will execute the same actions;

  • The above strategy will basically cash in 1000 USD to Bitcoin exchange called Koinim.
  • Will buy Bitcoin with all it’s fiat.
  • Transfer Bitcoins to another exchange called Paribu.
  • Will sell all the Bitcoins.
  • Will cash out from the market.

On-the-fly

On-the-fly strategies are strategies that are not created by the user but The Brain Engine itself based on current market oppurtunities. Once the market data is read and processed by data analyzers, a oppurtunity analyzer that can evaluate possible profit opportunities within the markets and if so, it can dynamically create a suitable on-the-fly strategy for it.

The basic workflow for On-the-fly strategies is;

  • The Brain Engine will read data from markets.
  • Available data analyzers will be executed where they will process the market data.
  • Opportunity analyzers will be evaluating the outcome from data analyzers. Once an opportunity is found, it’ll present the user percentage profit and create a on-the-fly strategy utilizing it to exactly calculate the expected outcome.

Indices and tables