# Cryptyx Signal Backtest

> Cryptyx Signal Backtest is a paid API for AI agents from www.cryptyx.ai, paid per call via x402, $0.05/call, status unknown (last checked 2026-10-12).

Backtests a named crypto signal over a date range, returning trigger statistics, per-day rows, performance metrics across 1d/7d/14d/30d horizons, and out-of-sample walk-forward validation results.

## Facts

- Endpoint: POST https://www.cryptyx.ai/api/signals/backtest?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-12
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/cryptyx-signal-backtest-0de237e8
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_Toi-q4ScZWNnztJ-S-IYd

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability cryptyx-signal-backtest-0de237e8 -d '<json body>'
```

Example prompt: Run a full backtest of signal TR_MOMO_CONT_14D on CRYPTYX from 2024-01-01 to 2024-12-31 and tell me the trigger rate, hit rates across all horizons, reliability grades, and how the out-of-sample walk-forward numbers compare to the in-sample results.

## When to prefer this

Use this endpoint when you need to statistically validate a specific named CRYPTYX signal — checking both its historical trigger behavior and whether its apparent edge survives out-of-sample testing. It is uniquely suited for quantitative due diligence on a signal before live use, combining in-sample performance stats with walk-forward OOS validation in a single call. Prefer this over the per-asset endpoints when you care about universe-level signal properties rather than a specific asset's history.

## Known failure modes

- Invalid or unknown signal_id returns error — must be a valid registry ID from the 143 atomic or 9 composite signals
- Date range exceeding 365 days is rejected
- from date after to date returns validation error
- dryrun=true omits performance block and nulls totalTriggerEvents/avgConfidence
- Payment failure or missing x402 payment header results in 402 response
- Malformed date format (non-YYYY-MM-DD) causes parsing error

## Output

Returns a JSON object with: totalDays, triggeredDays, triggerRate, totalTriggerEvents, avgConfidence, per-day rows[] (day, triggered, confidence), a performance block with 1d/7d/14d/30d horizon statistics (sample_size, mean_return, median_return, hit_rate, bootstrap_ci_95, statistical_significance, is_reliable, reliability_grade in green/yellow/red, caveats), and a top-level walk_forward block with out-of-sample metrics (is_ic, oos_ic, overfit_ratio, ic_delta, reliability_grade) for cross-checking IS vs OOS conclusions.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "properties": {
    "body": {
     "required": [
      "signal_id",
      "from",
      "to"
     ],
     "properties": {
      "to": {
       "type": "string",
       "description": "End date YYYY-MM-DD. Range must be <=365d and from<=to"
      },
      "from": {
       "type": "string",
       "description": "Start date YYYY-MM-DD"
      },
      "dryrun": {
       "type": "boolean",
       "description": "If true, uses signal_dryrun_count() and skips writes to signal_log. Default false. dryrun=true nulls totalTriggerEvents/avgConfidence and omits performance block."
      },
      "signal_id": {
       "type": "string",
       "description": "Signal registry ID, e.g. TR_MOMO_CONT_14D (uppercased server-side)"
      }
     }
    },
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "POST",
      "PUT",
      "PATCH"
     ],
     "type": "string"
    },
    "bodyType": {
     "enum": [
      "json",
      "form-data",
      "text"
     ],
     "type": "string"
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "application/json",
 "example": {
  "to": "2025-12-31",
  "days": [
   {
    "day": "2025-06-15",
    "triggered": true,
    "confidence": 0.81
   }
  ],
  "from": "2025-01-01",
  "signal_id": "TR_MOMO_CONT_14D",
  "total_events": 42,
  "trigger_rate": 0.15,
  "avg_confidence": 0.73
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/cryptyx-signal-backtest-0de237e8/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from www.cryptyx.ai](https://www.zero.xyz/host/www.cryptyx.ai/llms.txt)
