Skip to main content
SORY allocates on fee-inclusive prices. The venue with the worse quoted price is often the better one after fees, and that difference is the whole point.

Four things it will not do

Allocate through the bound

Your limit price, or max_slippage_bps from the touch.

Send a slice a venue rejects

Below minimum amount, minimum notional, or lot size.

Drop a remainder silently

requested == allocated + unallocated, always, with a reason.

Route to an unhealthy venue

Stale or Offline is excluded, and named.

Price bounds are mandatory

Sweeping to arbitrary depth is not acceptable, and SORY will not invent a bound on your behalf — that is a risk decision. Your limit price is a raw venue price, as you would type it. The router converts it into each venue’s all-in terms before comparing.
max_slippage_bps bounds the allocation, not the venue-side execution. SORY only allocates against levels inside the bound, but a market order carries no price to the venue, so a book that moves between planning and arrival can still fill through. If you need a hard guarantee, send a limit order at your bound.

Sub-minimum slices are re-routed

If a venue’s share lands below its minimum, that venue is dropped and the walk re-runs without it, so the quantity moves somewhere rather than evaporating. Anything genuinely unplaceable comes back as unallocated, with a reason.

Reading a plan

simulate runs the whole path and sends nothing.

Expected versus achieved

Slippage against expectation is the number that tells you whether routing is earning its keep. Track it.

Why a venue was excluded