On this page

Documentation

What every exchange charges, and how to talk to the engine directly over WebSocket.

Exchange fees

Maker and taker rates by 30-day trading volume. These are the numbers the engine subtracts before it calls an edge executable.

30-day volumeTakerMaker

The highlighted row is the rate the profit calculation assumes. If your 30-day volume puts you on a lower tier, your real edge is wider than what the engine reports.

Parameters

Every event frame is built from this vocabulary. Values outside these sets are rejected. Names and values are case-sensitive.

event
The action to perform. enumsee the nine values opposite
pairs
Instruments to watch. Each entry carries an instrument field. arrayten supported pairs, opposite
exchange
Which venues to include. enumAll, Binance, Bitfinex, Kraken, Gemini, Coinbase
channel
Data channel. enumBook
type
Data type. enumQuote
email
Where alert mail is delivered. stringvalid email address
min_profit
Lower profit bound that arms the alert. f64greater than 0.001, up to and including 10 (percent)
max_profit
Upper profit bound. f64greater than min_profit, under 1000 (percent)
fee
Overall fee percentage subtracted from profit. f64between 0 and 1
expire_date
When the alert stops firing. datetimeYYYY-MM-DD hh:mm:ss.000, in the future
threshold
Trigger level for the volume-based events. numberpositive or negative
side
Book side. enumbid, ask
action
Whether the rule is added or removed. enumAdd, Remove
enum · event
"Alert"
"Subscribe"
"Unsubscribe"
"Compare"
"MarketImbalance"
"OrderBookHeatMap"
"LargeOrderAlert"
"QuoteStuffingAlert"
"SpreadAlert"
array · pairs
"BTC/USD"   "ETH/USD"   "SOL/USD"
"ADA/USD"   "ATOM/USD"  "MATIC/USD"
"BNB/USD"   "XRP/USD"   "ENJ/USD"
"ALGO/USD"

Events

Alert

client → server

Sets up an alert on a trading pair across exchanges. Mail is sent when the spread clears your profit band, net of the fee you supply, until the expiry date passes.

Parameters

event
"Alert"
exchange
Exchanges to include. "All" watches every exchange.
pairs
Trading pairs to monitor, each with an instrument field.
channel
Data channel to monitor.
type
Type of data to monitor.
email
Where alert notifications are sent.
min_profit
Minimum profit percentage that triggers the alert.
max_profit
Maximum profit percentage.
fee
Overall fee percentage subtracted from profit.
expire_date
When the alert expires and stops firing.
request
{
  "event": "Alert",
  "exchange": "All",
  "pairs": [
    {
      "instrument": "BTC/USD"
    }
  ],
  "channel": "Book",
  "type": "Quote",
  "email": "example@mail.com",
  "min_profit": 1.0,
  "max_profit": 100.0,
  "fee": 0.05,
  "expire_date": "2027-06-26 10:46:00.000"
}

Subscribe

client → server

Subscribes to real-time data updates for a specific trading pair on an exchange.

Parameters

event
"Subscribe"
exchange
The exchange the subscription is made on.
pairs
The trading pair to subscribe to, with an instrument field.
channel
Data channel to subscribe to.
type
Type of data to subscribe to.
request
{
  "event": "Subscribe",
  "exchange": "Gemini",
  "pairs": [
    {
      "instrument": "BTC/USD"
    }
  ],
  "channel": "Book",
  "type": "Quote"
}

Compare

client → server

Compares quotes for a trading pair across all exchanges, so you can see where the edge sits before routing anything.

Parameters

event
"Compare"
exchange
Exchanges to include in the comparison.
pairs
Trading pairs to compare, each with an instrument field.
channel
Data channel for the comparison.
type
Type of data to compare.
request
{
  "event": "Compare",
  "exchange": "All",
  "pairs": [
    {
      "instrument": "BTC/USD"
    }
  ],
  "channel": "Book",
  "type": "Quote"
}

MarketImbalance

client → server

Identifies imbalanced movements in the market once the bid or ask side crosses your threshold.

Parameters

event
"MarketImbalance"
exchange
Exchanges to include.
pairs
Trading pairs to watch, each with an instrument field.
channel
Data channel.
type
Type of data.
threshold
Level from which imbalance is measured, e.g. 40 or -50.
side
Side of the imbalance.
action
Whether the rule is added or removed.
request
{
  "event": "MarketImbalance",
  "exchange": "All",
  "pairs": [
    {
      "instrument": "BTC/USD"
    }
  ],
  "channel": "Book",
  "type": "Quote",
  "threshold": 20,
  "side": "bid",
  "action": "Add"
}

OrderBookHeatMap

client → serverDescription pending

Streams order-book depth by price level. A full description of the response payload is still being written — the request shape below is current.

Parameters

event
"OrderBookHeatMap"
exchange
Exchanges to include.
pairs
Trading pairs to watch, each with an instrument field.
channel
Data channel.
type
Type of data.
action
Whether the rule is added or removed.
request
{
  "event": "OrderBookHeatMap",
  "exchange": "Kraken",
  "pairs": [
    {
      "instrument": "BTC/USD"
    }
  ],
  "channel": "Book",
  "type": "Quote",
  "action": "Add"
}

SpreadAlert

client → server

Identifies a spread difference above a threshold you set.

Parameters

event
"SpreadAlert"
exchange
Exchanges to include.
pairs
Trading pairs to watch, each with an instrument field.
channel
Data channel.
type
Type of data.
spread_threshold
Level from which the spread is measured, e.g. 40 or -50.
action
Whether the rule is added or removed.
request
{
  "event": "SpreadAlert",
  "exchange": "Kraken",
  "pairs": [
    {
      "instrument": "BTC/USD"
    }
  ],
  "channel": "Book",
  "type": "Quote",
  "spread_threshold": 20,
  "action": "Add"
}

QuoteStuffingAlert

client → server

Identifies quote-stuffing occurrences in the market.

Parameters

event
"QuoteStuffingAlert"
exchange
Exchanges to include.
pairs
Trading pairs to watch, each with an instrument field.
channel
Data channel.
type
Type of data.
quote_stuffing_threshold
Level from which stuffing is measured.
side
Side of the pressure.
action
Whether the rule is added or removed.
request
{
  "event": "QuoteStuffingAlert",
  "exchange": "Kraken",
  "pairs": [
    {
      "instrument": "BTC/USD"
    }
  ],
  "channel": "Book",
  "type": "Quote",
  "quote_stuffing_threshold": 0.5,
  "side": "ask",
  "action": "Add"
}

LargeOrderAlert

client → server

Identifies heavy pressure movements — a single order above the size threshold you set.

Parameters

event
"LargeOrderAlert"
exchange
Exchanges to include.
pairs
Trading pairs to watch, each with an instrument field.
channel
Data channel.
type
Type of data.
large_order_threshold
Order size from which pressure is measured.
side
Side of the pressure.
action
Whether the rule is added or removed.
request
{
  "event": "LargeOrderAlert",
  "exchange": "Kraken",
  "pairs": [
    {
      "instrument": "BTC/USD"
    }
  ],
  "channel": "Book",
  "type": "Quote",
  "large_order_threshold": 100000,
  "side": "bid",
  "action": "Add"
}

Unsubscribe

client → server

Stops a running task — a subscription or any of the alert events above.

Parameters

event
"Unsubscribe"
channel
Data channel the task runs on.
type
Type of data the task runs on.
task
The task to unsubscribe from, e.g. "MarketImbalance".
request
{
  "event": "Unsubscribe",
  "channel": "Book",
  "type": "Quote",
  "task": "MarketImbalanceVolume"
}

Everything above runs inside the app too — charts, alerts, and the execution journal.

Open the live application