https://github.com/fremantle-capital/tai
  
  
    A composable, real time, market data and trade execution toolkit. Built with Elixir, runs on the Erlang virtual machine 
    https://github.com/fremantle-capital/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: 8 months ago 
        JSON representation
    
A composable, real time, market data and trade execution toolkit. Built with Elixir, runs on the Erlang virtual machine
- Host: GitHub
 - URL: https://github.com/fremantle-capital/tai
 - Owner: fremantle-industries
 - License: mit
 - Created: 2017-07-28T03:07:18.000Z (over 8 years ago)
 - Default Branch: main
 - Last Pushed: 2024-12-07T00:58:56.000Z (11 months ago)
 - Last Synced: 2025-03-09T11:01:48.659Z (8 months ago)
 - Topics: 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
 - Language: Elixir
 - Homepage:
 - Size: 5.83 MB
 - Stars: 469
 - Watchers: 25
 - Forks: 78
 - Open Issues: 14
 - 
            Metadata Files:
            
- Readme: README.md
 - License: LICENSE.md
 
 
Awesome Lists containing this project
- fucking-awesome-elixir - Tai - A composable, real time, cryptocurrency market data and trade execution toolkit. (Applications)
 - awesome-elixir - Tai - A composable, real time, cryptocurrency market data and trade execution toolkit. (Applications)
 - freaking_awesome_elixir - Elixir - A composable, real time, cryptocurrency market data and trade execution toolkit. (Applications)
 - fucking-awesome-elixir - Tai - A composable, real time, cryptocurrency market data and trade execution toolkit. (Applications)
 
README
          # Tai - Orchestrate Your Trading
[](https://github.com/fremantle-industries/tai/actions?query=workflow%3Atest)
[](https://coveralls.io/github/fremantle-industries/tai?branch=main)
[](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
[](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 - alex+git@fremantle.io
## License
`tai` is released under the [MIT license](./LICENSE.md)