A composable, real time, market data and trade execution toolkit. Built with Elixir, runs on the Erlang virtual machine
Getting Started | Built with Tai | Commands | Architecture | Examples | Configuration | Observability
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
| 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] |
| 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 | [ ] | [ ] | [ ] | [ ] | [ ] |
tai requires Elixir 1.11+ & Erlang/OTP 22+. Add tai to your list of dependencies in mix.exs
def deps do
[
{:tai, "~> 0.0.75"}
# Choose your order data store
# {:ecto_sqlite3, "~> 0.5.6"}
# {:postgrex, "~> 0.15"}
]
endCreate an .iex.exs file in the root of your project and import the tai helper
# .iex.exs
Application.put_env(:elixir, :ansi_enabled, true)
import Tai.IExRun the setup mix task to:
- Download dependencies
- Create an orders database
- Generate tai migrations for the orders database
- Run migrations
$ mix setuptai 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.
iex -S mixBump the required version number in mix.exs and download the dependencies.
$ mix deps.update taiRegenerate new or updated migrations
$ mix tai.gen.migrationRerun ecto migrations
$ mix ecto.migrateIf 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.
- Alex Kwiatkowski - [email protected]
tai is released under the MIT license