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"}
]
end
Create 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.IEx
Run the setup
mix task to:
- Download dependencies
- Create an orders database
- Generate tai migrations for the orders database
- Run migrations
$ mix setup
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.
iex -S mix
Bump the required version number in mix.exs
and download the dependencies.
$ mix deps.update tai
Regenerate new or updated migrations
$ mix tai.gen.migration
Rerun ecto migrations
$ mix ecto.migrate
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.
- Alex Kwiatkowski - [email protected]
tai
is released under the MIT license