What you are looking at
This page calls each venue’s public REST order book directly from your browser and applies
SORY’s merge, fee and allocation arithmetic — ported from
marketdata/aggregator.py and
execution/router.py — in JavaScript.It is not the Python package executing. SORY streams over WebSockets, needs a
licence key, and reads your negotiated fees. So expect these differences:- Depth and timing. One REST snapshot per venue, on demand. SORY holds a live book per venue
and re-emits every
emit_interval_ms, with anything quiet markedStaleand dropped. - Venue minimums. The real router re-allocates around a venue that cannot take its slice, using
instrument metadata from
load_markets. That metadata is not available here, so slices are shown unrounded. - Arithmetic. SORY uses
Decimalend to end; the browser hasfloat. - Fees. The rates above are an example schedule, not any venue’s published tier.
binance, okx, coinbaseexchange, kraken, bybit,
bitstamp, htx, bitget and cryptocom — because they send permissive CORS headers on their
public book endpoint. The other fifteen work identically in the package; they just
cannot be called from a web page. If a venue shows up as unreachable, it is usually geo-blocking
your region, which is exactly what excluded reports in production too.
Things worth trying
Turn all-in prices off, then on
Turn all-in prices off, then on
Watch the row order change. With a wide enough fee spread, the venue at the top of the raw book
is not the venue you should trade — that is the entire argument for SORY existing.
See Fees.
Raise one venue's fee to 60 bps
Raise one venue's fee to 60 bps
It sinks down the all-in book and stops receiving allocations, without disappearing. Nothing is
hidden; it is simply no longer the best price.
Ask for more than the book holds
Ask for more than the book holds
Set qty to something large. The plan comes back partially allocated with
unallocated and a reason — never a quiet short fill.
requested == allocated + unallocated, always. See Routing.Drop max_slippage_bps to 1
Drop max_slippage_bps to 1
The price bound bites and allocation stops at the touch. SORY will not sweep to arbitrary
depth, and it will not invent a bound for you.
Deselect every venue but one
Deselect every venue but one
The consolidated book collapses to that venue’s book, and the others appear under
Excluded with a reason. Exclusion is never invisible.
Run it for real
1
Install and set a key
2
Copy the code above
The Copy code button gives you a complete, runnable script with the venues, symbol and fees you
selected already filled in.
3
Swap the inline fees for your own
The generated config inlines
fees_bps so the snippet runs as-is. In production, point it at a
fees.toml holding your negotiated rates:Quickstart
Install to routed order in five minutes.
Routing
How allocation actually works.
Fees
Why all-in pricing is the only pricing.
