Skip to main content

Install

Python 3.11 or newer.

Set your licence key

Don’t have one? Request a key. See Licensing.

Write a fee schedule

SORY never guesses what you pay. Create fees.toml with your negotiated rates in basis points:
fees.toml
A missing entry is a startup error, never a silent zero. More on fees.

Get a consolidated book

Prices are all-in: your fees are already applied. excluded names any venue that is not contributing, and why.

Route an order

Add credentials for the venues you want to trade:
Then place. SORY splits the order across venues on best all-in price:
Every order needs a price bound: a price for limit orders, max_slippage_bps for market orders. SORY will not sweep to arbitrary depth, and will not invent a bound for you.

Try it without sending anything

Set dry_run and the whole path runs — routing, capability checks, rounding — without an order leaving the process:
Or just plan, and send nothing at all:

Next

Configuration

Every option, one table.

Routing

How allocation works.

Venues

What’s supported.