Skip to main content

Fees

Every account references one fee tier. The values below are the launch tier for a market-maker account. An account with different commercial terms is attached to a different tier. Fill records carry the fees actually charged. Trading-fee rates are basis points of index notional, and the trading-fee cap is basis points of leg value. The settlement rate is parts per million because it is smaller than one basis point. The settlement price and expiry sequence the settlement fee is charged against are on Settlement.

How fees are charged

There are two fees. A trading fee is charged when a fill executes, to each side at its own tier’s rate. A settlement fee is charged at expiry to the holder of an in-the-money position. The writer pays nothing at settlement. The trading fee is computed per leg and summed over the package:
index_notional is the underlying’s index price at execution times the leg quantity. leg_value is the leg’s premium: the package premium for a one-leg package, and the leg’s mark value for a multi-leg package. There is no combo discount, so a two-leg structure pays on both legs. Both sides pay their own rate, and the maker rate is 0 at launch. Fees are collected on chain in the fill transaction and reported as maker_fee on the fill. The settlement fee is the smaller of 0.015 % of the index notional and 12.5 % of the intrinsic value, charged to in-the-money holders and netted per account for the expiry, so it never exceeds what the settlement pays. The formula and the expiry sequence are on Settlement. There is no rebate at any volume.

Signed maxima

Every quote and every acceptance carries two signed maxima: the largest fee that party will pay on the fill, and the largest total locked balance its subaccount may hold after the fill. The risk signer may attest any value at or below them; the on-chain program rejects a fill above either one, and a later standalone lock may not exceed the ceiling stored by the last fill. Both are absolute USDC amounts with 6 decimals, never basis points, and zero means nothing is authorized. The venue derives the values it shows from the unbuffered requirement with exactly one configured tolerance each, rounded up once: The tolerance exists because index and margin move between the moment a requirement is read and the moment the signer freezes the fill. The enforced minimum is the unbuffered requirement: a maker’s max_maker_fee and max_maker_locked_balance must cover the largest fee and post_fill_locked across the taker sides the quote prices, recomputed at the signed bid and ask (a side the maker leaves out, or a single-sided request does not allow, contributes nothing), and a taker’s maxima must cover the side it accepts. The buffered max_fee and max_locked_balance are what to sign so that movement before the fill does not take the requirement above the maxima. A maximum below the current requirement is refused before the quote or acceptance becomes durable, and the venue never raises a signed maximum on a party’s behalf.

Limits

The gateway enforces these bounds. A request over a limit is rejected or the connection is closed; the gateway does not queue it. The rate budget is a fixed window rather than a refilling bucket. The counter opens on the first charged request and resets once a full window has elapsed since it opened, so a burst that exhausts the budget is refused until the window turns over. Public methods and both RFQ subscribe methods are not charged. Order reports fan out to every live account session, while RFQ pushes go only to sockets subscribed to the relevant RFQ channel. Next: Settlement