Delta.

Start with one strategy.

Send the fills from a single strategy. We check them against what the market genuinely did at each of those instants and walk you through what we found — at no cost, on the understanding that you tell us whether it was useful.

What you get back

What you getWhat it means
Per-fill verdicts, with the reasonFor every fill you send: whether it would have happened, how much of it, what it really cost, and which check bound. A row we cannot check comes back unknown and is excluded from the totals, never counted as fine.
Book condition at the moment of the fillHow far each book was from its own normal depth, in either direction, banded. A flag on the fill, never a deduction from it.
Coverage, including what cannot be answered whereWhich venues, which instruments, at what resolution, over what history - and which questions stop being answerable where, separated into what cannot be measured and what is not recorded yet.
An answer that keepsEvery response carries the engine revision, the baseline window and how the data reached it. The baseline ends on the fill's own day, so the same fills return the same numbers next year.

Plus the walkthrough, which is the part that matters on a first run: which check bound, on which fills, and whether the pattern is something your model can be changed to avoid.

What we need from you

One row per fill, as CSV or JSON. Five required fields, two that improve the answer. If you already have a fills file, you almost certainly already have these.

FieldRequiredNotes
tsrequiredunix seconds or ISO-8601
venuerequiredmust be a venue we record - the coverage page lists them
symbolrequiredas that venue names it
siderequiredbuy or sell
size_usdrequirednotional. Every venue measures size differently; dollars is the one thing everyone can produce
priceoptional
pnl_usdoptionalwithout it you get verdicts but no money figure, and the response says so
Rows we cannot read do not fail the request.They come back named, with the reason, and every other row is still processed. You want the four thousand that parsed and the list of the six that did not, rather than an error about the first one.

Where your data goes

Your executions are your clients' data before they are yours, and they carry retention obligations of their own. So the rule is narrow enough to state in two sentences.

The file you send is never written to disk. It is parsed in memory, checked, and released — there is no staging copy and no temporary file. The report is kept until you delete it, and the report contains a row per fill — derived, in our format, but still a record of what you traded. We will not tell you we keep nothing, because that would not be true.

One request removes a run and everything in it. Storage boundary and jurisdiction are stated in writing before a first upload, because those are the questions your own compliance function will ask before ours does.

This page itself collects nothing. There is no form endpoint behind it, no analytics, and nothing to decline — the button below opens a message in your own mail client, which you read before you send.

Ask

Four things. Name, firm, an address we can reply to, and what you trade — that last one decides whether we can answer you at all, because it tells us whether your venues are in the recording.

Opens your mail client with the four answers filled in. Nothing is sent from this page, and nothing leaves your browser until you press send in your own client.

Or write to hello@delta.example directly.

Before you ask

It is worth two minutes on what is recorded first. If the venues you trade are not in there, a first check cannot tell you anything, and we would rather you found that out from a page than from us. What we answer, and when →