Trading cost methodology
Methodology v8 · active since 2026-09-11 · stored history starts 2026-07-17.
This page describes a measurement, not a promise. The engine reads each venue's public order book at one moment and simulates one order. Your own fill depends on your account tier, your order type, and the book at the second you trade. Treat every figure as an estimate of the cost of the simulated order.
Total cost history · BTC $100k
6-hour sweepsFee + half-spread + price impact for one standardized $100,000 taker buy, at the base fee tier.
- Median across venues
A venue that could not fill the order publishes no total cost, so it is left out of that sweep's median and its own line breaks. Gas and referral discounts are excluded.
The chart reads the stored sweeps, not the live engine. Points from different methodology versions are never drawn as one line: the header states the version on screen, and says so when the active version has no stored sweeps yet and an older stored series is shown instead.
What is measured
- The equation. Total cost = venue fee + half-spread + price impact. Each term is counted once, and the tool shows all three.
- Side. The side is explicit. A buy walks the ask side and a sell walks the bid side. The two are never mixed in one row.
- Sizes. The stored ladder uses $10k, $100k, $1m. The live tool accepts any size and snaps it to a fixed bucket so the cache stays sound.
- Fee basis. Every fee is the published base rate at the standard tier (base-tier-no-discount). The value comes from the canonical venue registry, and the fee calculator reads the same record.
- Half-spread, once. The half-spread is the one-sided cost of crossing from the mid-price to the effective touch. It is a separate term and is never also counted inside the price impact.
- Price impact from the effective touch. The effective touch is the first level that holds at least $5,000 of cumulative notional. A dust top of book does not set the reference price.
- 2% band. Levels more than 2% away from the touch are treated as junk and are excluded from the walk.
- 99.5% fill rule. A walk that fills less than 99.5% of the requested size is not a fill. The row publishes no cost and cannot take a rank.
- Depth-confidence gate. Each row is labelled high or low depth confidence. A row is low when its in-band depth is implausible against the venue's own open interest and against the deepest tier-1 book in the same sweep. No venue is removed; a low-confidence row ranks after high-confidence rows of the same fill class.
- Hyperliquid, two resolutions. Hyperliquid returns a fixed number of levels per side, so the requested aggregation decides how much book we can see. The engine reads the fine aggregation for the touch and the half-spread, and a coarser one for the deep walk, then merges them. The bucket that straddles the seam is dropped, which under-counts depth.
- Oracle and pool venues. A venue that prices from an oracle or a pool has no order book. Its row uses the venue's position-fee model and its documented or live position-increase impact. A size-independent oracle row leaves the headline ranking for orders larger than $1m.
- GMX v2 impact is read on chain. GMX has no order book, but it charges a price impact that grows with order size. The engine calls the GMX Reader contract on Arbitrum, which runs the protocol's own pricing code against the on-chain DataStore. The row therefore carries the impact GMX would charge for this exact size and side. The engine prices only GMX pools that accept stablecoin collateral. If the on-chain read fails, the row falls back to the oracle entry price alone, says so, and does not take a headline rank for orders larger than $1m.
- Gas is excluded. Network gas and bridge costs are not in any figure. A venue that charges on open and on close is priced for one side only.
- Referral discounts are excluded by default. A neutral cost tool must show list prices. The referral toggle and the VIP volume selector are opt-in, and the tool states when it applied one.
Cadence
- The live engine re-measures each order book every 25 to 30 seconds, and the cost comparison tool polls it every 30 seconds.
- The stored history sweep runs four times a day (cron 55 */6 * * *), buy side and taker only, across 7 perp assets.
- Each response states its own freshness. A response served from cache after an upstream failure is labelled stale, and the label is part of the payload.
Retention
- Every sweep is stored as an append-only record. The raw per-venue rows are never rewritten.
- The stored version is part of the path, so rows from different methodology versions are kept apart and are never merged into one series.
- Aggregates and raw rows are both kept. No job deletes cost measurements.
- The history endpoint serves 7 days by default, up to 14 days on request, and always states which methodology version it returned.
Versioning
The active version is Methodology v8, operational since 2026-09-11. A change to how a cost is measured requires a new version number, a changelog entry, tests against the previous version, and a separate stored series. Historical points are never reinterpreted.
What changed in this version: Order-book VWAP now equals filled quote notional divided by filled base quantity for both buys and sells. The former quote-notional weighting counted price twice. Invalid prices, negative quantities and non-finite inputs cannot produce an executable quote. The 2 percent band, 99.5 percent fill threshold and effective touch are unchanged. UI rankings retain depth confidence and ranking eligibility. ALL-assets comparisons require the complete requested basket, apply pair-specific fee adjustments before averaging, and retain null costs for incomplete coverage. Historical v1 through v7 observations remain unchanged and separate from v8.
The full changelog for every pipeline lives in the registry changelog. See the data operations status page for the active version of each dataset and for its last successful run.
Limits of this measurement
- Displayed depth is what a venue publishes. The depth-confidence gate flags what it cannot confirm, but it cannot prove that a level is real.
- A maker fee is a fee-sensitivity scenario. The simulated order still crosses the spread, because maker fill probability cannot be known in advance.
- Book venues quote in different numeraires. Prices are compared as one USD class, and a hard stablecoin depeg would make that comparison unsafe.
- The engine reads public endpoints. A venue that caps how much book it returns produces a row labelled beyond fetched depth, which is our reading limit and not a measurement of the venue.
Questions
- What does the total cost include?
- Total cost is the venue fee plus the half-spread plus the price impact. The half-spread is the one-sided cost of crossing from the mid-price to the effective touch. Price impact is the extra cost of walking the book beyond that touch. Each term is counted once.
- Why is the half-spread used instead of the full spread?
- One market order crosses one side of the book. Charging the full bid-ask spread would price a round trip, not the single fill that the tool simulates. The full spread is still published as a separate field.
- Does the ranking include referral discounts?
- No. Every published rate is the base rate at the standard tier, with no VIP tier and no referral discount. You can turn on a referral discount or a VIP volume tier yourself, and the tool then states that it applied one.
- Are network gas costs included?
- No. Gas and bridge costs are excluded for every decentralised venue. A venue that charges its fee on open and on close is priced for one side only, and the row says so.
- What happens when a venue cannot fill the order?
- The row publishes no cost. Total cost, price impact and the fill price are all null, the partial-fill numbers move to a separate field, and the row cannot take a rank. A venue that cannot fill the order must never outrank one that can.
Use the tools