---
title: "Screener backtest"
description: "A screener backtest measures what a screener's matches returned over six fixed holding horizons, from 2000 to the latest market data, against a benchmark."
canonical_url: "https://fincanva.com/docs/screeners/screener-backtest"
last_updated: "2026-09-17"
md_url: "https://fincanva.com/docs/screeners/screener-backtest.md"
---

# Screener backtest

A screener backtest is a historical test of a [screener](/docs/getting-started/screener)'s filters: it re-screens the market month by month from 2000 to the latest market data and measures what the [matches](/docs/screeners/matches) went on to return over each of six fixed [holding horizons](/docs/screeners/holding-horizon), stated against a benchmark. It answers "would these filters have beaten the market?" rather than "what would this portfolio have been worth?", and it lives on the **Backtest** sub-view beside **Matches**. It is return-only today: no volatility, drawdown, or Sharpe figures are produced for a screener backtest.

## How a screener backtest differs from a strategy backtest

A [backtest](/docs/getting-started/backtest) of a strategy replays that strategy's own allocation, rebalancing, and exit rules over history and produces an equity curve plus a full metrics table. A screener backtest never builds a portfolio: it repeats the screen on a monthly cadence, then averages what the selected instruments did over the next 1, 2, 3, 6, 12, and 24 months. So a strategy backtest has one path and one final value, while a screener backtest has six per-horizon averages and no equity curve. The two also answer to different inputs — a strategy backtest changes when you change allocation or exits, a screener backtest changes only when the [filters](/docs/getting-started/filter) or the universe change.

## What happens while a screener backtest runs

A run is submitted and then watched until it finishes, so the view moves through named states rather than blocking:

| State | What you see |
|---|---|
| Never run | a faded preview of the finished layout behind "See how this screener beat the market", with **Run backtest** and the option to "let Fin suggest a stronger one" |
| Running | a progress bar with "Backtesting `{percent}`%" and "`{percent}`% · evaluating monthly windows, 2000 → today", plus **Cancel** |
| Refreshing data | "Refreshing data…" while market data reloads; the run keeps retrying on its own |
| Complete | the verdict band and the full result, with "Last run …" |
| Failed | "This backtest couldn't complete" and "Something went wrong while running it. Your screener and filters are unchanged — try again.", with **Retry run** |

**Cancel** stops watching the run; it does not undo anything, and a previously completed result stays on screen rather than blanking.

## What the verdict band shows

The verdict band is the standing answer to "did these filters beat the market?", and it appears on both the **Matches** and **Backtest** sub-views. It carries the [benchmark it measured against](/docs/screeners/screener-backtest-benchmark) (in the **Benchmark universe** dock), one hero figure — the annualized edge at the best horizon, read as "annualized above the benchmark" or "annualized below the benchmark" — and then all six horizons as compact figures. Every figure in the band is an edge, so it is quoted in percentage points (pp) rather than as a return: `+3.4 pp` means the matches annualized 3.4 points above the benchmark over that horizon, not that they returned 3.4%. A zero reads as a tie, in neutral styling, never as a win.

## What the "Out of date" banner means

When you change the filters after a run, the app keeps the previous result and marks it out of date rather than deleting it. The banner reads:

> Out of date — filters changed since the last backtest. Showing the previous run.

The fix is the **Re-run backtest** action beside it. The old result stays visible but dimmed, so you can still read it while knowing it belongs to the earlier filter set.

## Defaults in Fincanva

- Every screener backtest starts in **2000** and ends at the latest available market data, and it re-screens on a **monthly** cadence — the methodology strip states "Rebalanced monthly".
- The six holding horizons are fixed at **1, 2, 3, 6, 12, and 24 months** and are not configurable.
- The run tests the **saved** screener, not unsaved edits — which is why saving a change marks the last result out of date.
- The **Backtest** action needs at least one saved filter; with no rules the view shows "Backtest your screening rules" and points you at the filter bar instead.
- A completed result is not carried across visits: reopening the screener returns the **Backtest** sub-view to its never-run state, so you press **Backtest** again.
- That second run comes back quickly rather than recomputing, because the finished result is reused for an unchanged screener until new market data arrives — which is also why the same screener's figures can shift from one day to the next with no change to its filters.

## Worked example

A screener over US stocks holds three filters: `P/E < 20`, `Sector = Technology`, and `Market cap > $10B`. You press **Backtest**. The run steps to "Backtesting 41%", then completes. The verdict band names the benchmark, shows one hero figure — say `+2.8 pp` annualized at the 3-month horizon, marked as the best horizon — and lists all six horizons beside it, some positive and some negative. You then loosen the first filter to `P/E < 25`. Nothing recomputes on its own: the banner appears, the old result dims, and the numbers you are looking at still belong to `P/E < 20` until you press **Re-run backtest**.

*These figures describe what a screener's matches would have done on historical data, not what they will do. Fincanva provides no financial advice — see [Is this financial advice?](/docs/investing-theory/is-this-financial-advice).*
