One engine. Four ways to use the verdict.
Everything below runs on the same fixed-sequence test battery. Fresh stateful calls expose their effective timestamp and cumulative state; a stored response replays only under the documented idempotency contract. What differs is what you do with the result.
Put a signal on trial.
Send a signal or backtest (returns series, equity curve or trade list). The battery tests it out of sample, against chance and against overfitting — and returns a verdict with the reasons attached: which gate it died at, how close it was, and what survived.
- ✓Verdict — pass, conditional, fail, or an honest insufficient_evidence.
- ✓Failure codes — machine-readable; your agent acts on them directly.
- ✓Placebo percentile — your timing vs. 500 random twins with the same profile.
- ✓Replay scope, certificate separately — a stateful response replays only with the same non-empty request id and canonical input; an issued certificate carries the Ed25519 signature. The free demo is unsigned.
Never stored: the trial keeps a one-way fingerprint, the verdict and coarse trial statistics — your rules and code stay with you. how
The 600 tries below are not this
caller's own: n_trials_effective is inherited from the anonymised family ledger, where
every recorded attempt at the same signal family counts against one shared budget — which is why a
first call can already fail deflation.
{
"schema": "gauntlet.v1",
"verdict": "fail",
"died_at": "family_deflation",
"failure_codes": ["deflated_out_at_n=600"],
"stages": [
{ "stage": "net_edge", "verdict": "pass",
"evidence": { "net_sharpe_annualized": 3.11, "trades": 184,
"bars": 380, "net_return_total_pct": 41.7 } },
// 380 daily bars ≈ 18 months: a high Sharpe on a short window
{ "stage": "funding_edge", "verdict": "skipped",
"evidence": { "reason": "no perpetuals in book" } },
{ "stage": "family_deflation", "verdict": "fail",
"evidence": { "dsr": 0.31, "cumulative_n": 1, "variants_in_call": 1,
"n_trials_effective": 600,
"effective_n_method": "family_ledger",
"killed_by": "deflated_out_at_n",
"family_verdict": "deflated_out" } }
// over 18 months, the best of 600 recorded family tries is expected to look
// about this good by chance alone — so 3.11 buys only dsr 0.31, not a pass
// + power_honesty, significance, cpcv, walk_forward, concentration, placebo, capacity, graveyard_prior
],
"budget": { "cumulative_n": 1, "n_trials_effective": 600 }
// cumulative_n = your own submissions; n_trials_effective counts the whole family's recorded tries
}
Call it before the data exists.
Deposit your hypothesis today; the service records its canonical hash and
acceptance time in an operator-published chained commitment. Retain the registration response
or chain head: a later mismatch is then detectable. After the market happens, evaluation uses data
from after the stored cutoff. This is not an independent timestamp or immutability guarantee while
external_anchor is empty; that claim requires an independent external anchor. It also
does not buy immunity from the trial ledger — registering ten variants still counts as ten tries
against your family's budget.
REGISTER + EVALUATE · $0.05 EACH · LIVE PRICES
The full autopsy.
When a signal fails — or barely passes — the forensics report shows the whole picture: how the edge decays when you delay execution, what realistic costs do to it, whether it survives with chunks of history removed, how it behaves across market regimes, and how much capital it could actually carry before eating itself. Know where the edge died, so you stop digging in dead ground.
$0.05 PER COMPLETED CHECK · LIVE PRICE
Credibility that travels.
After a pre-registered call is evaluated, issue its signed certificate through the separate certificate lifecycle. Whoever you show it to — an investor, a prop desk, a skeptical forum — can use our hosted verifier for a platform-trust result. Offline, a raw key check detects changed signed bytes; full platform trust also requires an independently pinned signed keyring and complete revocation history.
ISSUANCE $9.90 · LIVE PRICE · VERIFICATION FREE
Paid rows read their amount from the machine-readable live pricing registry; this product page does not duplicate mutable prices.
Every tool, in plain words.
The four products above are the jobs people hire us for; this is the instrument panel behind them. Each tool gets one honest sentence about what it actually does — and wherever a technical term is unavoidable, it arrives with its translation. If you want the machinery underneath, the tool reference goes as deep as we can responsibly go.
Try us free first
| tool | what it does — in plain words | price |
|---|---|---|
| assay_demo | Runs the full battery on a built-in example so you can see what a verdict looks like before you send us anything — no account, nothing to set up. | free |
| assay_preflight | Checks that your file is shaped correctly before any money moves, because a check that dies on a formatting mistake helps nobody. | free |
| assay_graveyard | Looks up whether this kind of idea has been tried and buried here before, and what killed it — worth knowing before you give it your weekends. | free |
| assay_calibration | Current population/status disclosure: calibration data is returned only in a valid signed snapshot; otherwise the response reports signed:false with a stale/reason state. It is not an outcome score or track record. | free |
| assay_certificate_verify | Checks a certificate fail-closed against platform trust: signature, externally pinned key history, certificate-purpose eligibility and revocations. A caller key alone is only raw-signature evidence. | free |
| assay_provider_protocol | A checklist of seven tests for judging any signal vendor or strategy validator — run it against AlphaAssay first, which is exactly what it is built for. | free |
Put a signal on trial
| tool | what it does — in plain words | price |
|---|---|---|
| assay_signal | Send your trading results — a trade list or an equity curve — and get back pass or fail with the reason spelled out, after realistic costs are charged and luck is priced in. | live registry |
| assay_gauntlet | Runs the whole battery in one call — costs, luck, overfitting, size limits — and tells you which gate killed your signal first, so you know what to fix or when to stop. | live registry |
| assay_forensics | Digs into why a signal fails — whether it quietly peeked at future data, and whether random timing would have earned just as much. | live registry |
| assay_backtest | Runs your strategy rules on your own data with honest costs, and it remembers every attempt — so trying again and again cannot quietly turn luck into a pass. | live registry |
| assay_batch | Tests up to 25 versions of one idea in a single call and counts every one of them, because showing only your best try is exactly the trick that fools people. | live registry / variant |
| assay_falsify | Attacks your strategy from eight directions on purpose and reports back what survived, what broke, and what broke it first. | live registry |
| assay_pbo | For when you tried many settings and kept the winner: it measures how likely that winner is simply the luckiest loser — the Probability of Backtest Overfitting. | live registry |
| assay_survivors | Takes everything you tried and tells you which versions the evidence actually leaves standing — disclosed in the order you sent them, never ranked, never recommended. | live registry |
| assay_reproduce | When someone claims a track record, this recomputes their numbers from the raw trades — including whether each fill was even physically possible at that bar's prices. | live registry |
| assay_tradelog | Reads a raw fill log on its own — no price data needed — and finds the contradictions inside it: duplicated fills, exits before entries, profits that disagree with the row's own prices. | live registry |
| assay_cpcv | Shows the whole distribution behind the overfitting check — how your strategy scores on every purged slice of history, not just the one lucky split a backtest happens to show. | live registry |
| assay_var_es | Takes the risk numbers your model promised in advance and counts how often — and how deeply — reality broke them; a model that understates its own risk fails like any other claim. | live registry |
| assay_conformal | Checks whether your model's confidence intervals contain reality as often as they claim — coverage that exists on the label but not in the outcomes gets named, honestly. | live registry |
Prove you called it
| tool | what it does — in plain words | price |
|---|---|---|
| assay_register | Hashes the canonical call with its service acceptance time into an operator-published chain. Keep the returned commitment or chain head so later changes are detectable; the response discloses whether an external anchor exists. | live registry |
| assay_verdict | Once the future has played out, the stored call is scored only on data from after its recorded cutoff. Certificate issuance is a separate REST lifecycle action. | $0.05 per check · live registry |
No tool has an order or broker path. Verdicts are demote-only: they can devalue a claim, never bless one. Within the published billing unit, a fail costs the same as a pass — you buy the trial, not the outcome. the technical reference · what we keep, precisely
Your agent can test us before it pays us.
- ✓Golden specimens — test cases with known semantic answer fields. Verify we get right positives, right negatives and honest abstention while volatile metadata may vary.
- ✓Public calibration state — bucketed mature-registration count plus accumulating/insufficient-history disclosure, free to pull; not yet an outcome score.
- ✓Certificate verification — check any issued AlphaAssay certificate, no account needed.
# no signup — a specimen with a known answer: $ curl -s https://api.alphaassay.com/v1/assay/demo \ -d @golden_lookahead.json { "verdict": "fail", "died_at": "net_edge", "failure_codes": ["no_net_edge"] }