Skip to main content
Every backtest result carries the same disclosure list. It is part of the result, not of the page rendering it, so no caller can drop it for being inconvenient, and it does not change from run to run. Alongside it, each result states the assumptions it actually ran under: the resolved buy and sell slippage percentages, that fees were modelled, and that the slippage model was fill price. Read the headline number with both in view — a P&L figure quoted without the execution cost it assumed is not a number. Here is that list, in full.

Fills

Every admitted order fills completely. There is no order-book depth, no queue position and no latency model. If your configuration allowed the order, the simulation placed it and got all of it. Slippage is applied as the fill price, not as a limit that might go unfilled. A wider slippage setting makes the simulated fill worse, never rarer. This is the single largest difference from live behaviour, where slippage is a tolerance and an order outside it simply does not fill. Limit prices are quantized to whole cents, matching the live executor’s default tick grid, and the fill is booked at that limit — except where the limit would beat the leader’s own fill price. A buy limit clamped to 99¢ under a leader fill above it, or a sell limit that rounds up toward $1.00, is instead booked at the leader’s price, because live that order would simply not have filled. Results report how many fills this correction touched. Rows the engine cannot price are dropped entirely — a fill at exactly $1.00 or 0, an unrecognised direction, a non-positive size. They are dropped from the copier and from the leader baseline, so the two stay comparable, and they appear as invalid_fill data gaps.

Decisions

Decisions are made per tape row. The live engine first folds a settlement’s fills into one order per wallet, token, side and role, and decides on the fold. Six 6fillsofonesweeparesix6 fills of one sweep are **six 6 decisions here** and one $37 decision live, and a sweep that straddles a price band is copied partially here and all-or-none live.
The settings this changes are min price, max price, ignore trades under, ignore trades over, min per trade and max per trade. Configure them against fill size when reading a result, and against sweep size when deploying the same configuration as a copy trade.

Spend caps

The cumulative USDC spend caps run through the same gate as live, at the same point in the pipeline, but against different accounting:
  • The simulator charges them against open exposure at cost and releases the budget as positions close, so a market it has sold out of can be re-entered.
  • Live charges lifetime committed spend and never gives it back. A copy trade that has spent its total spend limit stops buying permanently, and one that has spent its per-market cap never buys that market again.
A configuration whose caps let it keep trading all window here can go quiet within days of being deployed.

Valuation

Open positions are valued at the price as of the window end you supplied. Markets that resolved after the window end are marked, not settled. A mark is the last print at or before the window end within the loader’s lookback, which is 300 hourly buckets wide — so a book that stopped trading is marked at an older price rather than at nothing. Marks struck more than 24 hours before the window end are reported as stale_mark data gaps and count towards the stale-valuation reliability check, alongside positions with no mark at all. A market that resolves inside the window is redeemed to cash at the next fill on the tape, not at the instant it resolved. The equity curve values it at its payout from the resolution onward, but the cash-versus-positions split in the daily buckets catches up only at that next fill. Mid-window equity values a resolved position at its payout rather than at the last tape price carried forward — so an equity bucket can move on a resolution with no tape event behind it. Carrying a price forward applies only until a market resolves.

Fees

Fees are modelled from a pinned per-category taker schedule, not read from the tape. The fee on the tape is the leader’s, including the leader’s own builder and referral basis points, which are not yours. Maker rebates, gas and any Ballista platform fee are excluded.

Not simulated at all

Take-profit, stop-loss and balance-level take-profit and stop-loss are not simulated. They need an intra-window price path that a tape of the leader’s own fills does not contain. This is why the backtester rejects those fields outright rather than accepting and ignoring them — see Backtesting. The leader’s splits, merges, NegRisk conversions and redemptions are not simulated. None of them is a copyable order. How much of the wallet’s activity they account for is measured and disclosed on the result as structural share — see Reading a result.

Reading a result

Reliability, boundary exposure, data gaps and fee confidence.

Backtesting

What a run is, and what it accepts.

Copy trade settings

The live behaviour these notes are measured against.

Choosing a trader

Why a good backtest on a passive wallet still copies badly.