---
title: "Backtest a screener"
description: "Run a screener backtest: what the six horizons measure, the states a run passes through, how to read the verdict band, and what the Out of date banner means."
canonical_url: "https://fincanva.com/docs/screeners/backtest-a-screener"
last_updated: "2026-08-30"
md_url: "https://fincanva.com/docs/screeners/backtest-a-screener.md"
---

# Backtest a screener

A screener backtest re-screens the market month by month over history and measures what the matches went on to return over six holding horizons, against a benchmark. You run it from the screener's **Backtest** tab.

↗ See this in Fincanva — a screener's Backtest tab

## Before you start
You need a saved screener with at least one filter. With none, the **Backtest** tab shows "Backtest your screening rules" over "Add at least one screening rule in the filter bar above, then run it to see how it would have performed against the market, 2000 to today." — the tab is always there, it simply has nothing to run yet. A backtest runs against the screener's **last saved** filters and universe, so save your edits before running one.

## Steps
1. Open the screener and select the **Backtest** tab. Before its first run the tab shows a faded preview of the finished layout behind "See how this screener beat the market".
2. Select **Run backtest** — or **Backtest**, which is what the header's primary action reads once the screener has no unsaved changes.
3. Wait. The action reads `Backtesting {percent}%` and the panel shows "Computing performance across six horizons" with the same percentage. **Cancel** stops watching the run; it does not undo anything, and a result already on screen stays.
4. Read the verdict band when it finishes, then the panels below it.
5. Re-run it after changing filters, using **Re-run backtest** beside the out-of-date banner.

## What you should see
The verdict band states the result as an edge over the benchmark — a hero figure read as "annualized above the benchmark" or "annualized below the benchmark", the horizon it was best at, and the benchmark's own name under **Benchmark universe**. Below it, **Edge by holding horizon** charts that edge across all six horizons, **What happens after selection** plots the screener's picks against the benchmark from the moment of selection, and **Which filters earn their place** breaks the result down filter by filter. A trust strip closes the view with "Rebalanced monthly" and "Past performance does not guarantee future results".

Every figure in the band is an edge, so it is quoted in percentage points rather than as a return. A screener backtest that beat its benchmark is not a prediction and not a recommendation — see [Is this financial advice?](/docs/investing-theory/is-this-financial-advice#is-this-financial-advice).

## What exactly do the six horizons measure?
They measure what the matched instruments returned over the 1, 2, 3, 6, 12, and 24 months after each monthly screening date, averaged across every such date in the tested history. So a screener backtest has six per-horizon averages and no equity curve: it never builds a portfolio, it repeats the screen and follows what came out. That is a different question from a strategy [backtest](/docs/getting-started/backtest), which replays allocation, rebalancing, and exits to produce one path — [screener backtest](/docs/screeners/screener-backtest) covers the distinction, and [holding horizon](/docs/screeners/holding-horizon) covers the windows themselves.

## Why is my result measured against a benchmark I did not choose?
Because a screener's return means nothing on its own — the same list of matches looks strong in a rising market and weak in a falling one, and only the gap against a benchmark separates the filters from the market they ran in. The band names the benchmark it used under **Benchmark universe**. [The screener backtest benchmark](/docs/screeners/screener-backtest-benchmark) covers what that choice does to the numbers you read.

## Why did my result come back instantly the second time?
Because a screener backtest you have already run is served from the result already held rather than computed again. That lasts until the daily market-data refresh, after which the first run of the new day computes in full and its figures can shift slightly even though you changed nothing. [Screener execution and caching](/docs/screeners/screener-execution-and-caching) covers both halves.

## Common problems
### The banner reads "Out of date — filters changed since the last backtest. Showing the previous run."
You edited a filter after the run. Fincanva keeps the earlier result and dims it rather than deleting it, so you can still read it while knowing it belongs to the earlier filter set. Select **Re-run backtest** beside the banner to measure the filters you have now.

### The run failed: "This backtest couldn't complete"
The body reads "Something went wrong while running it. Your screener and filters are unchanged — try again." Nothing was lost. Select **Retry backtest**.

### The band reads "Refreshing data…" instead of a percentage
Market data is being loaded, and the run waits for it rather than answering from a partial picture. It keeps retrying on its own — there is nothing for you to do.
