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.
Observed, simulated, model-estimated and planned claims remain visibly separate.
Open research instrumentExecution Reality LabEducational, not evidence
What changes when you charge for fills, delay and market impact?
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. Canli Capital, the research house that publishes ALPHAC, runs this calculator free, with no account or key required.
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.
Preset comparison. These curves use the published execution assumptions. The controls update the isolated assumption table below.
one series, assumptions stacked: brightest is the honest next-open fill, fading as each is added
Across 200 independent series, 2 of these 5 assumptions are a cost: it reduces the result on essentially every series (Spread and fees, Market impact). The other 3 are not, and subtracting a single slippage number for them would misstate both their size and, on any one series, their sign. That is the difference this page exists to show, and no single equity chart can show it. Note that Decision-to-fill delay sits just under the threshold at this sample size (|t| below 2). That is a sweep without the power to resolve the effect, not evidence there is none. Raise the number of series and watch it settle.
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 isolation | Mean effect | t | Worse | Verdict |
|---|---|---|---|---|
| Fill at the decision price | -0.0003 | -0.1 | 48% | indistinguishable |
| Spread and fees alone | -0.0327 | -73.5 | 100% | cost |
| Decision-to-fill delay alone | -0.0162 | -1.4 | 54% | indistinguishable |
| Market impact alone | -0.0523 | -73.7 | 100% | cost |
| Venue outages alone | -0.0012 | -0.5 | 37% | indistinguishable |
Measured cumulatively, market impact inherits the delay's variance and is misclassified as a re-timing when it is a pure cost.
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.
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.
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.
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.