This section outlines how to configure and deploy antalla. Make sure you follow all the steps in Requirements before proceeding.
Initializing the database¶
DB_URL is set, the database can be initialized with the following
Exchange listeners have been implemented for the following centralised exchanges (CEXs) and decentralised exchanges (DEXs).
CEX exchange listeners:
☒ Coinbase Pro
☐ Huobi Global
DEX exchange listeners:
☐ Kyber Network
☐ Oasis Dex
For each exchange the API key and secret can be set via environment
variables in the format
Once the DB is initialized, antalla can be run with the following command
This will configure antalla to obtain data from the default exchanges and markets, which
are specified and can be altered in
settings.py. To specify exchanges and markets via
the command line, one can simply run the command:
antalla run --exchange <exchange> --markets-files <markets-files>
markets-files can be found in the
The list of markets to listen for can be customized through the
MARKET environment variable, which should be formatted as follow
Orderbook Snapshot Analysis¶
By setting the subparser argument
a snapshot of each order book state will be computed and stored in the
order_book_snapshots table in the db. The interval between the snapshots
is set to the default value of 1 second. By setting the
flag snapshots only for a set of specified exchanges will be generated.
Snapshots are only generated for periods during which there has been aggregated order book data collected and no connection loss has occurred. Hence, for each period between a connection and disconnect for an exchange listener snapshots will be generated according to the set snapshot interval.
Each snapshot contains relevant metrics for the current state of the order book at the time taken. The current metrics include:
bid price (mean)
ask price (mean)
bid price (median)
ask price (median)
bid price (stddev)
ask price (stddev)
price and size of highest bid
price and size of lowest ask
The order book depth per snapshot is configurable by setting the flag:
--depth <percentage>. The order book depth is specified as a
percentage relative to the mid price of the order book.
Alternatively, one may use the flag
--quartile, whereby snapshots
are computed for the upper quartile of bids and the lower quartile of
By default, a snapshot will be generated for the quartile range of the order book.
Currently, there is no web or command line interface for providing an
overview of the state of connections to different exchanges. This will
very likely be added in antalla 1.0. Nontheless, all connections and
disconnections are logged in the
events table in the db. In case of
a disconnect, the event is logged and antalla tries to reconnect to the
service. Features which make use of data (e.g. snapshots) are only
applied to data within time periods between a connection and a
diosconnect (or latest data in case no disconnect has occured). This is
important when analysing computed statistics, as values may be skewed if
they are based on data within early periods of a new connection widow if
previous values have been based on an earlier window.
antalla comes with basic built-in functionality for generating different order book plots. However, one should note that the predominant purpose of the tool lies on data aggregation.
Order Book Plots¶
For generating real-time order book plots, use the command:
antalla plot-order-book --exchange <exchange> --market <market_pair>
<market_pair> has the format, e.g.
ETH_BTC. For a list of which markets and exchanges
are valid arguments check with:
antalla plot-order-book -exchange exchange
--market flags are required. Hence,
visualising one market’s order book requires one single process.
The plots are generated, plotting all buy and sell orders that lie in a
range of +-1% of the order book mid price. Alternatively one can
OrderBookAnalyser defined in
ob_analyser.py to use
a method (
_get_ob_quartiles) plotting all bids which lie in the
upper quartile of the total bids and all asks which lie within the lower
quartile of the total asks.