---
title: "Validate Signal"
method: POST
path: "/v1/validate/signal"
---

# Validate Signal

`POST /v1/validate/signal`

## Request

- Base URL: `https://api.alphaassay.com`
- URL: `https://api.alphaassay.com/v1/validate/signal`
- Auth: HTTP bearer

## Headers

- `Idempotency-Key` string, nullable

## Request body

- ValidateSignalRequest
  - `trades` TradeRow[], required
    - `pnl` number, required
    - `return_pct` number, nullable
  - `label` string
  - `fee_bps_per_side` number
  - `n_trials` integer, nullable
  - `variants_tested` integer, nullable
  - `selected_from_variants` integer, nullable
  - `out_of_sample` boolean, nullable
  - `pit_evidence` object, nullable
  - `source_rights` object, nullable

## Response `200`

Successful Response

- SignalOutput
  - `_meta` PublicMeta, required
    - `engine_version` string, required
    - `api_version` string, required
    - `as_of` string, date-time, required
    - `input_digest` string, required
    - `request_digest` string, required
    - `tenant_scope` string, required
    - `tenant_scope_version` string, required
    - `request_id` string, nullable, required
    - `source_identity_digest` string, required
    - `operation` string, required
    - `statefulness` 'pure' | 'public_read' | 'tenant_read' | 'tenant_write', required
    - `not_financial_advice` true, required
    - `disclaimer` string, required
  - `verdict` VerdictEnvelope, required
    - `schema_version` '0', required
    - `verdict` 'pass' | 'conditional' | 'fail' | 'insufficient_evidence', required
    - `agent_action` 'continue_due_diligence' | 'require_additional_validation' | 'gather_more_evidence' | 'reject_current_evidence' | 'owner_data_decision_required', required
    - `findings` VerdictFinding[], required
      - `failure_class` 'data_rights' | 'pit_lookahead' | 'survivorship' | 'selection_multiple_testing' | 'effective_n' | 'oos_walk_forward' | 'cpcv' | 'costs_slippage_capacity' | 'pbo_dsr_overfit' | 'null_placebo' | 'regime' | 'execution' | 'reproducibility' | 'benchmark_overlap', required
      - `severity` 'hard_fail' | 'cap_verdict' | 'major_penalty' | 'minor_penalty' | 'trust_gate', required
      - `detail` string, required
    - `benchmark_overlap` union
      - BenchmarkUnavailable
        - `status` 'benchmark_not_supplied' | 'invalid_benchmark', required
        - `note` string, required
        - `failure_codes` string[], required
      - BenchmarkComputed
        - `status` 'computed', required
        - `n_observations` integer, required
        - `beta` union, required
          - integer
          - number
        - `alpha_per_obs` union, required
          - integer
          - number
        - `alpha_tstat` union, required
          - integer
          - number
        - `alpha_pvalue` union, required
          - integer
          - number
        - `alpha_significant` boolean, required
        - `correlation` union, required
          - integer
          - number
        - `tracking_error_per_obs` union, required
          - integer
          - number
        - `failure_codes` string[], required
    - `reproducible` boolean, required
    - `reproducibility_readiness` ReproducibilityReadiness
      - `tier` 'R0' | 'R1' | 'R2' | 'R3', required
      - `label` string, required
      - `severity` 'trust_gate', required
      - `present` string[], required
      - `missing` string[], required
      - `cap_reason` string, nullable, required
      - `detail` string, required
    - `leakage_taxonomy` LeakageTaxonomy, required
      - `classes` string[], required
      - `label` 'clean' | 'class_I' | 'class_II' | 'class_III' | 'multiple_leakage_classes', required
      - `detail` string, required
    - `leakage_attribution` LeakageAttribution
      - `label` 'clean' | 'attributed', required
      - `attributions` LeakageAttributionEntry[], required
        - `leakage_class` 'I' | 'II' | 'III', required
        - `failure_class` 'data_rights' | 'pit_lookahead' | 'survivorship' | 'selection_multiple_testing' | 'effective_n' | 'oos_walk_forward' | 'cpcv' | 'costs_slippage_capacity' | 'pbo_dsr_overfit' | 'null_placebo' | 'regime' | 'execution' | 'reproducibility' | 'benchmark_overlap', required
        - `severity` 'hard_fail' | 'cap_verdict' | 'major_penalty' | 'minor_penalty' | 'trust_gate', required
        - `source` 'finding' | 'execution_attestation', required
      - `detail` string, required
    - `provenance` VerdictProvenance, required
      - `tool` string, required
      - `tool_version` string, required
      - `schema_ref` string, required
      - `schema_version` '0', required
      - `inputs_hash` string, required
      - `request_hash` string, nullable
      - `generated_at` string, required
      - `evidence_refs` string[], required
      - `check_refs` string[], required
  - `explanation` Explanation, required
    - `schema_version` '0', required
    - `research_only` true, required
    - `tool` 'explain_backtest_failure', required
    - `tool_version` string, required
    - `verdict` 'pass' | 'conditional' | 'fail' | 'insufficient_evidence', required
    - `agent_action` 'continue_due_diligence' | 'require_additional_validation' | 'gather_more_evidence' | 'reject_current_evidence' | 'owner_data_decision_required', required
    - `summary` string, required
    - `provenance_attestation` ExplanationProvenance, required
      - `source_tool` string, required
      - `source_tool_version` string, required
      - `schema_ref` string, required
      - `schema_version` '0', required
      - `inputs_hash` string, required
      - `request_hash` string, required
      - `generated_at` string, required
      - `evidence_refs` string[], required
      - `check_refs` string[], required
    - `leakage_taxonomy` LeakageTaxonomy, required
      - `classes` string[], required
      - `label` 'clean' | 'class_I' | 'class_II' | 'class_III' | 'multiple_leakage_classes', required
      - `detail` string, required
    - `blocking_findings` string[], required
    - `explanations` ExplanationFinding[], required
      - `failure_class` 'data_rights' | 'pit_lookahead' | 'survivorship' | 'selection_multiple_testing' | 'effective_n' | 'oos_walk_forward' | 'cpcv' | 'costs_slippage_capacity' | 'pbo_dsr_overfit' | 'null_placebo' | 'regime' | 'execution' | 'reproducibility' | 'benchmark_overlap', required
      - `severity` 'hard_fail' | 'cap_verdict' | 'major_penalty' | 'minor_penalty' | 'trust_gate', required
      - `detail` string, required
      - `what_it_means` string, required
      - `evidence_to_lift` string, required
    - `next_actions` string[], required

## Other responses

- `401`: Request could not be completed
- `402`: Request could not be completed
- `403`: Request could not be completed
- `409`: Request could not be completed
- `413`: Request could not be completed
- `422`: Request could not be completed
- `429`: Request rate limit exceeded
- `500`: Internal execution failure
- `503`: Request could not be completed

---

[API](https://skmtc.dev/alphaassay/apis/alphaassay-api.md) · [All operations](https://skmtc.dev/alphaassay/apis/alphaassay-api/llms.txt) · [OpenAPI document](https://skmtc.dev/alphaassay/apis/alphaassay-api/revisions/cdbc99b01a7e?raw)
