Lux Docs
Broker

Fee Structure

Provider fee comparison and net-price routing

The smart order router uses fee schedules to calculate net execution price. This ensures orders are routed to the cheapest venue after accounting for both spread and trading fees.

Provider Fee Schedule

Fees are configured in basis points (bps). 1 bps = 0.01%.

ProviderMaker (bps)Taker (bps)Notes
Alpaca00Commission-free equities
Tradier00Commission-free equities
Binance1010Flat rate, volume discounts available
SFOX1525Prime dealer
Kraken1626Volume-tiered
Gemini2040ActiveTrader pricing
BitGo2525Prime trading estimate
Coinbase4060Advanced Trade pricing
FalconX510Institutional RFQ
Interactive Brokers0.50.5Per-share, approximated to bps
CurrencyCloud35Tight FX spreads
LMAX23Institutional CLOB
Fireblocks00Custody/transfer, no trading fees
Circle00Stablecoin transfers
Polygon.io00Market data only
Finix00Payment processor

Net-Price Routing

The SOR calculates net execution price for each venue:

Buy:  net_price = ask_price * (1 + taker_fee_bps / 10000)
Sell: net_price = bid_price * (1 - taker_fee_bps / 10000)

For a buy order, the venue with the lowest net price wins. For a sell, the venue with the highest net price wins. This means a venue with a slightly wider spread but lower fees can beat a tighter-spread venue with higher fees.

Example

Buying 1 BTC when two venues quote:

VenueAsk PriceTaker FeeNet Price
Binance$42,155.0010 bps$42,197.16
Coinbase$42,150.0060 bps$42,402.90

Despite Coinbase having a lower ask price, Binance wins on net price due to lower fees. The difference is $205.74 per BTC -- over $2,000 on a 10 BTC order.

Split Fee Calculation

When splitting an order across venues, each leg calculates its own fee:

leg_fee = leg_qty * estimated_price * (taker_fee_bps / 10000)

The split plan response includes estimated_fees (total across all legs) and savings_vs_single_venue (bps saved compared to sending everything to the worst venue).

On this page