AlphaAssay $ test my signal
PRODUCTS

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.

01 · VALIDATE

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.
$0.05 PER COMPLETED CHECK · LIVE PRICE

Never stored: the trial keeps a one-way fingerprint, the verdict and coarse trial statistics — your rules and code stay with you. how

diagnosis — strat_4217 · illustrative

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
}
02 · PRE-REGISTER

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

03 · FORENSICS

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

04 · CERTIFY

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

EVERY TOOL · IN PLAIN WORDS

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

toolwhat it does — in plain wordsprice
assay_demoRuns 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_preflightChecks that your file is shaped correctly before any money moves, because a check that dies on a formatting mistake helps nobody.free
assay_graveyardLooks 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_calibrationCurrent 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_verifyChecks 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_protocolA 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

toolwhat it does — in plain wordsprice
assay_signalSend 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_gauntletRuns 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_forensicsDigs 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_backtestRuns 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_batchTests 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_falsifyAttacks your strategy from eight directions on purpose and reports back what survived, what broke, and what broke it first.live registry
assay_pboFor 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_survivorsTakes 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_reproduceWhen 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_tradelogReads 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_cpcvShows 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_esTakes 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_conformalChecks 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

toolwhat it does — in plain wordsprice
assay_registerHashes 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_verdictOnce 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

FREE · FOR EVERYONE

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.

run it now — the 60-second quickstart

for agents: every MCP tool, in plain terms

verify us in 60 seconds
# 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"]
}

Pick your signal. We do the rest.