---
title: "Get Backtest Summary"
method: GET
path: "/api/methodology/backtest-summary"
tags: ["methodology"]
---

# Get Backtest Summary

`GET /api/methodology/backtest-summary`

## Request

- Base URL: `https://api.equity-rank.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.equity-rank.com/api/methodology/backtest-summary`
- Auth: none declared

Return combined signal backtest proof statistics.

No authentication required. Designed for public viewing on /methodology.

Checks Supabase methodology_stats for real data (real_n >= 50); if unavailable
or insufficient, returns the hardcoded proof numbers from the synthetic simulation.

## Response `200`

Successful Response

- AppRoutersMethodologyBacktestSummaryResponse: Response model for GET /api/methodology/backtest-summary. Topline hit-rate fields are permanently null (see _WITHHELD_DATA_SOURCE note above) — kept in the model so existing consumers deserialize cleanly; every consumer must treat null as "withheld", not zero.
  - `combined_hit_rate` number, nullable
  - `combined_r2` number, nullable
  - `save_hit_rate` number, nullable
  - `innovation_hit_rate` number, nullable
  - `signal_correlation` number, nullable
  - `n_simulations` integer
  - `data_source` string
  - `real_data_since` string, nullable
  - `real_n` integer
  - `live_factor_ic` LiveFactorIC[]
    - `factor_name` string, required
    - `horizon_days` integer, required
    - `ic_rolling_20d` number, nullable, required
    - `as_of` string, nullable, required
    - `mean_ic` number, nullable
    - `t_hac` number, nullable
    - `eff_n` number, nullable
    - `significant` boolean, nullable
    - `passes_rule` boolean, nullable
    - `adequate_eff_n` boolean, nullable
  - `live_ic_as_of` string, nullable
  - `ic_series` FactorICSeries[]
    - `factor_name` string, required
    - `horizon_days` integer, required
    - `points` FactorICSeriesPoint[], required
      - `date` string, required
      - `ic` number, nullable, required
  - `realized_outcomes` RealizedOutcomeBucket[]
    - `signal_source` string, required
    - `horizon_days` integer, required
    - `n` integer, required
    - `hits` integer, required
    - `hit_rate` number, nullable
    - `base_rate` number, nullable
    - `excess_hit_rate` number, nullable
    - `excess_n` integer
    - `excess_ci_low` number, nullable
    - `excess_ci_high` number, nullable
    - `ticker_count` integer
    - `sufficient` boolean
    - `first_prediction` string, nullable, required
    - `last_evaluated` string, nullable, required
  - `realized_outcomes_total_n` integer
  - `realized_outcomes_as_of` string, nullable

---

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