Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fremantle-industries/tai

A composable, real time, market data and trade execution toolkit. Built with Elixir, runs on the Erlang virtual machine
https://github.com/fremantle-industries/tai

algorithmic-trading automated-trading bitcoin crypto-trader crypto-trading crypto-trading-bot cryptocurrency cryptocurrency-trader cryptocurrency-trading-bot derivatives fintech hft hft-trading investment quant quantitative-finance trading trading-bot trading-systems

Last synced: 30 days ago
JSON representation

A composable, real time, market data and trade execution toolkit. Built with Elixir, runs on the Erlang virtual machine

Awesome Lists containing this project

README

        

# Tai - Orchestrate Your Trading

[![Build Status](https://github.com/fremantle-industries/tai/workflows/test/badge.svg?branch=main)](https://github.com/fremantle-industries/tai/actions?query=workflow%3Atest)
[![Coverage Status](https://coveralls.io/repos/github/fremantle-industries/tai/badge.svg?branch=main)](https://coveralls.io/github/fremantle-industries/tai?branch=main)
[![hex.pm version](https://img.shields.io/hexpm/v/tai.svg?style=flat)](https://hex.pm/packages/tai)

A composable, real time, market data and trade execution toolkit. Built with [Elixir](https://elixir-lang.org/), runs on the [Erlang virtual machine](http://erlang.org/faq/implementations.html)

[Getting Started](./docs/GETTING_STARTED.md) | [Built with Tai](./docs/BUILT_WITH_TAI.md) | [Commands](./docs/COMMANDS.md) | [Architecture](./docs/ARCHITECTURE.md) | [Examples](./apps/examples) | [Configuration](./docs/CONFIGURATION.md) | [Observability](./docs/OBSERVABILITY.md)

## What Can I Do? TLDR;

Stream market data to create and manage orders with a near-uniform API across multiple venues

Here's an example of an advisor that logs the spread between multiple products on multiple venues

[![asciicast](https://asciinema.org/a/259561.svg)](https://asciinema.org/a/259561)

## Supported Venues

| Venues | Live Order Book | Accounts | Orders | Products | Fees |
| ------ | :-------------: | :------: | :----: | :------: | :--: |
| FTX | [x] | [x] | [x] | [x] | [x] |
| OkEx | [x] | [x] | [x] | [x] | [x] |
| BitMEX | [x] | [x] | [x] | [x] | [x] |

## Venues In Progress

| Venue | Live Order Book | Accounts | Orders | Products | Fees |
| ----------------- | :-------------: | :------: | :----: | :------: | :--: |
| Binance | [x] | [x] | [ ] | [x] | [x] |
| Deribit | [x] | [x] | [ ] | [x] | [x] |
| GDAX | [x] | [x] | [ ] | [x] | [x] |
| Huobi | [x] | [ ] | [ ] | [x] | [ ] |
| Delta Exchange | [x] | [ ] | [ ] | [x] | [x] |
| Bybit | [ ] | [ ] | [ ] | [x] | [ ] |
| bit.com | [ ] | [ ] | [ ] | [ ] | [ ] |
| Bitfinex | [ ] | [ ] | [ ] | [ ] | [ ] |
| Kraken | [ ] | [ ] | [ ] | [ ] | [ ] |
| CME | [ ] | [ ] | [ ] | [ ] | [ ] |
| Phemex | [ ] | [ ] | [ ] | [ ] | [ ] |
| BTSE | [ ] | [ ] | [ ] | [ ] | [ ] |
| KuCoin | [ ] | [ ] | [ ] | [ ] | [ ] |
| BitMax | [ ] | [ ] | [ ] | [ ] | [ ] |
| Bitget | [ ] | [ ] | [ ] | [ ] | [ ] |
| MEXC | [ ] | [ ] | [ ] | [ ] | [ ] |
| PrimeXBT | [ ] | [ ] | [ ] | [ ] | [ ] |
| Gate.io | [ ] | [ ] | [ ] | [ ] | [ ] |
| Coinflex | [ ] | [ ] | [ ] | [ ] | [ ] |
| bitFlyer | [ ] | [ ] | [ ] | [ ] | [ ] |

## Install

`tai` requires Elixir 1.11+ & Erlang/OTP 22+. Add `tai` to your list of dependencies in `mix.exs`

```elixir
def deps do
[
{:tai, "~> 0.0.75"}
# Choose your order data store
# {:ecto_sqlite3, "~> 0.5.6"}
# {:postgrex, "~> 0.15"}
]
end
```

Create an `.iex.exs` file in the root of your project and import the `tai` helper

```elixir
# .iex.exs
Application.put_env(:elixir, :ansi_enabled, true)

import Tai.IEx
```

Run the `setup` mix task to:

* Download dependencies
* Create an orders database
* Generate tai migrations for the orders database
* Run migrations

```bash
$ mix setup
```

## Usage

`tai` runs as an OTP application.

During development we can leverage `mix` to compile and run our application with an
interactive Elixir shell that imports the set of `tai` helper [commands](./docs/COMMANDS.md).

```bash
iex -S mix
```

## Upgrading Tai

Bump the required version number in `mix.exs` and download the dependencies.

```bash
$ mix deps.update tai
```

Regenerate new or updated migrations

```bash
$ mix tai.gen.migration
```

Rerun ecto migrations

```bash
$ mix ecto.migrate
```

## Help Wanted :)

If you think this `tai` thing might be worthwhile and you don't see a feature
or venue listed we would love your contributions to add them! Feel free to
drop us an email or open a Github issue.

## Authors

- Alex Kwiatkowski - [email protected]

## License

`tai` is released under the [MIT license](./LICENSE.md)