# x402-factory Edge Signal Backtest

> x402-factory Edge Signal Backtest is a paid API for AI agents from x402-factory.com, paid per call via x402, $0.05/call, status unknown (last checked 2026-09-13).

Returns historical performance metrics for the edge signal model: hit rate, average edge captured, calibration curve, and per-hazard breakdowns over resolved markets.

## Facts

- Endpoint: GET https://x402-factory.com/v1/edge/backtest
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/x402-factory-edge-signal-backtest-8bbfc631
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_RmfJeI7qruS9yxZmt8tEd

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 x402-factory-edge-signal-backtest-8bbfc631
```

Example prompt: Show me the backtest performance of the edge signal model over the last 90 days — I want to see the hit rate, average edge captured, and the calibration curve broken down by hazard.

## When to prefer this

Use this endpoint when you need to evaluate the historical accuracy and calibration of the edge signal model over resolved prediction markets — especially for model validation, backtesting a trading strategy, or auditing whether the model's predicted probabilities match realized outcomes. Prefer this over live signal endpoints when the goal is retrospective performance analysis rather than actionable current signals.

## Known failure modes

- Invalid window parameter (out of integer range) returns validation error
- min_divergence outside 0-1 range returns validation error
- No resolved signals in the requested window returns empty or zero-count result
- Payment failure (x402 protocol) blocks access if USDC payment not processed
- Service unavailable returns 5xx error

## How this service works

Historical performance of the edge signal: hit rate, calibration, by hazard — Aggregates stored edge signals whose markets have resolved: how often the model beat the market (hit rate), average absolute-error improvement (edge captured), a model calibration curve, and per-hazard breakdowns. model_label is explicit about which model produced the signals.

## Output

Returns a JSON object with: total number of resolved signals, overall hit rate (0-1), average absolute-error improvement (avg_edge_captured), an array of calibration curve buckets (predicted vs realized probabilities), per-hazard breakdown (hazard name, count, hit rate), and the model_label identifying which model produced the signals.

## 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"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [],
     "properties": {
      "window": {
       "type": "integer",
       "default": 90,
       "maximum": 9007199254740991,
       "minimum": -9007199254740991
      },
      "min_divergence": {
       "type": "number",
       "maximum": 1,
       "minimum": 0
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "data",
      "meta"
     ],
     "properties": {
      "data": {
       "type": "object",
       "required": [
        "n_signals",
        "hit_rate",
        "avg_edge_captured",
        "calibration_curve",
        "by_hazard",
        "model_label"
       ],
       "properties": {
        "hit_rate": {
         "type": "number",
         "maximum": 1,
         "minimum": 0
        },
        "by_hazard": {
         "type": "array",
         "items": {
          "type": "object",
          "required": [
           "hazard",
           "n",
           "hit_rate"
          ],
          "properties": {
           "n": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
           },
           "hazard": {
            "type": "string"
           },
           "hit_rate": {
            "type": "number",
            "maximum": 1,
            "minimum": 0
           }
          },
          "additionalProperties": false
         }
        },
        "n_signals": {
         "type": "integer",
         "maximum": 9007199254740991,
         "minimum": -9007199254740991
        },
        "model_label": {
         "type": "string"
        },
        "avg_edge_captured": {
         "type": "number"
        },
        "calibration_curve": {
         "type": "array",
         "items": {
          "type": "object",
          "required": [
           "bucket",
           "predicted",
           "realized"
          ],
          "properties": {
           "bucket": {
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "data": {
   "hit_rate": 0.525,
   "by_hazard": [
    {
     "n": 39,
     "hazard": "precip_above",
     "hit_rate": 0.487
    },
    {
     "n": 31,
     "hazard": "temp_above",
     "hit_rate": 0.452
    },
    {
     "n": 31,
     "hazard": "any_precip",
     "hit_rate": 0.548
    },
    {
     "n": 30,
     "hazard": "wind_above",
     "hit_rate": 0.7
    },
    {
     "n": 29,
     "hazard": "named_storm_landfall",
     "hit_rate": 0.448
    }
   ],
   "n_signals": 160,
   "model_label": "stub-model",
   "avg_edge_captured": 0.0044,
   "calibration_curve": [
    {
     "bucket": "0.0–0.1",
     "realized": 0,
     "predicted": 0.068
    },
    {
     "bucket": "0.1–0.2",
     "realized": 0.333,
     "predicted": 0.148
    },
    {
     "bucket": "0.2–0.3",
     "realized": 0.462,
     "predicted": 0.254
    },
    {
     "bucket": "0.3–0.4",
     "realized": 0.316,
     "predicted": 0.348
    },
    {
     "bucket": "0.4–0.5",
     "realized": 0.667,
     "predicted": 0.431
    },
    {
     "bucket": "0.5–0.6",
     "realized": 0.474,
     "predicted": 0.541
    },
    {
     "bucket": "0.6–0.7",
     "realized": 0.583,
     "predicted": 0.644
    },
    {
     "bucket": "0.7–0.8",
     "realized": 0.737,
     "predicted": 0.75
    },
    {
     "bucket": "0.8–0.9",
     "realized": 0.889,
     "predicted": 0.842
    },
    {
     "bucket": "0.9–1.0",
     "realized": 0.75,
     "predicted": 0.953
    }
   ]
  },
  "meta": {
   "docs": "https://x402-factory.com/docs/edge.backtest",
   "sources": [
    "stub-model",
    "kalshi",
    "polymarket"
   ],
   "version": "1.0.0",
   "endpoint": "/v1/edge/backtest",
   "data_mode": "live",
   "freshness": "daily",
   "request_id": "req_00000000",
   "generated_at": "2026-08-21T03:58:57.921Z"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/x402-factory-edge-signal-backtest-8bbfc631/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402-factory.com](https://www.zero.xyz/host/x402-factory.com/llms.txt)
