Skip to the lab

Open research instrumentEducational, not evidence

Not every execution assumption is a cost.

A backtest that subtracts a number for slippage has assumed every execution assumption behaves the same way. They do not. Some reduce the result on every single series. Others change which prices you get, hurt on average, and flip sign often enough that a fixed haircut misstates them. On one equity chart the two look identical, which is why this page measures each one alone across many independent series.

What this is. A synthetic demonstration of how execution assumptions behave. It spends no research hypothesis, writes to no ledger, and produces no ALPHAC performance claim.

The lab

one series, assumptions stacked: brightest is the honest next-open fill, fading as each is added

Honest baseline
0
Fully realistic
0
Sharpe lost
0
Share of the baseline
0

What each assumption actually is

Measuring.

Each assumption, measured alone

Mean change in annualised Sharpe against the honest baseline, each assumption applied by itself, across the sweep. Each assumption is measured ALONE against the honest baseline across many independent series. |t| below 2 is indistinguishable from no effect; a worse-share at or above 98 percent is a cost; anything else is a re-timing.

Assumption, in isolationMean effecttWorseVerdict

Why isolated, not stacked

Measured cumulatively, market impact inherits the delay's variance and is misclassified as a re-timing when it is a pure cost.

Why the series has a gap

Without a gap the next open IS the decision close, so the single most important comparison on this page collapses to a tie that looks like a finding. The core refuses a series with no gap rather than reporting one.

Why the samples match

Every variant prices the SAME decision bars. A delayed variant needs an extra bar of runway, so left to itself it would price one fewer decision and its Sharpe would be computed over a different sample.

The sharper test

A cost scales with its parameter: doubling the spread from 5 to 10 basis points moves the mean effect from -0.0326 to -0.0652, almost exactly double. A re-timing does not, because it is not paying for anything: the delay's effect peaks in the middle at 2 bars and is weakest at 5. A longer delay is not a bigger cost. It is a different bet.

The uncomfortable row

Filling at the price you decided from is the classic defect, and on a series with no edge it is indistinguishable from no effect at all. Its damage is proportional to how predictive your signal really is, which is the thing the backtest was meant to establish. You cannot bound the bug without already knowing the answer.

Sandbox contract. every input is stored in the URL, so a scenario is shareable and reproducible. no write path to any ledger, artifact, broker or published record exists. outputs describe a synthetic series, never an ALPHAC result.

Rendered from execution_lab_contract.json. Related: the Selection Risk Lab and the Breadth Lab.