DocsSignal Analysis, Models & ValidationBenchmark context and the inheritance badge
Signal Analysis, Models & ValidationGuide

Benchmark context and the inheritance badge

A signal's EDA charts need an outcome axis, and that outcome is the benchmark context. Set it once on a Signal or Model tab and the platform knows how to build every EDA chart on that tab. The inheritance badge sits alongside it so you always know the basis for the comparison you are reading, and where it came from.

Updated Jul 20265 min read

Two things called "benchmark"

The word "benchmark" covers two different things on the platform. Only the first is the subject of this page.

  • EDA benchmark context. The outcome a signal's EDA is read against, configured on a Signal or Model tab. It is what pins the Scatter and Decile charts to a real trade result. This is the benchmark this page describes.
  • A per-backtest-run benchmark. A comparison every backtest run carries on its own results, S&P 500 total return by default, with custom benchmarks (including another backtest) under consideration later. It is a comparison line on a backtest's results, not an axis for signal EDA.

The EDA benchmark context and the per-run benchmark are different features that share a word. One is the outcome axis your signal's EDA charts are measured against. The other is a line drawn on a completed backtest's equity curve. Neither is the other.

Why a chart needs a benchmark

A scatter slope or a decile mean means nothing on its own. "The signal reads 1.4" is a number with no reference. "When the signal reads 1.4 at entry, the benchmark trade returned 6% on average" is a claim you can act on. The second sentence needs a baseline outcome. The benchmark context is that baseline, plus the rule for how its observations are built, for example sampled once per day at a set time.

You set it once. That single choice configures every EDA chart on the tab. You do not re-select it per chart.

What a benchmark context is

A benchmark context has two parts.

  1. What you compare the signal against. Either a return dataset, which is the recorded historical outcome of a trade structure, or another market measurement. A return dataset gives the Scatter and Decile charts a real trade return to plot the signal against.
  2. How the comparison observations are built. The sampling rule that decides when each observation is drawn, for example once per day at market open. This rule fixes the timestamps at which the signal and the outcome are lined up.

When the comparison is one signal against another rather than against a trade result, that pairing is defined by an anchor plan.

How context flows from the project

A project has one benchmark context setting. When you open a new Signal or Model tab, it inherits that project-level context automatically. You do not reconfigure it. Verify the badge and read the charts.

If the project's benchmark context is empty, it defaults to the first benchmark context configured in any Signal or Model tab. The first choice anyone makes becomes the project default, so later tabs open already pointed at the same comparison.

Each tab holds its own snapshot. Changing one tab's context does not touch any other tab. That isolation is what lets you keep five signal tabs open against one shared benchmark, then pin a sixth to something different without disturbing the rest.

The inheritance badge

Every Signal and Model tab shows a badge that names where its current benchmark context came from. Read it as a trust signal. It confirms the charts in front of you are built from the comparison data you think they are. When the badge names the wrong source, you know to fix it before you read anything into the Scatter or the Decile.

Badge
Meaning
Project default
Using the project-level benchmark; updates if the project setting changes
Overridden in this tab
You set the context directly in this tab
Copied from [tab name]
You explicitly copied context from a named tab

Overriding versus copying

Two actions move a tab off the project default, and each flips the badge to a different state.

Set the context directly on the tab and the badge reads Overridden in this tab. The tab now holds its own value and stops tracking the project.

Pull another tab's context in explicitly and the badge reads Copied from [tab name], with the source tab named. You get a snapshot of that tab's context at the moment you copied it, not a live link, so a later change to the source tab does not propagate.

Inheritance is the safe default when a project has one comparison every tab should share. Leave the badge on Project default and a change to the project setting updates every tab at once. Pin a local context when a tab must not move even if the project changes, for example a saved analysis you want to stay fixed against one benchmark while you retune the project around it.

Reading a chart with its benchmark

Not every EDA chart consumes the benchmark. Two of the four do.

  • Scatter requires it. The Y-axis is the benchmark trade's return, plotted against the signal's value at entry.
  • Decile requires it. Each bar is the per-group mean of benchmark returns, split by signal value at entry.
  • Time Series does not. It reads the signal value alone over history.
  • Distribution does not. It reads the signal value alone as a histogram.

So a tab with no benchmark context still renders the Time Series and Distribution. The Scatter and Decile stay empty until a benchmark is set, because there is no outcome to plot against. For what each chart shows and how to read the trend, see reading the EDA charts.

A benchmark carries its own defaults

A return-dataset benchmark is the output of the engine that produced its trades. Inheriting that benchmark inherits its assumptions along with its numbers. The Scatter's Y-axis and the Decile's bars are only as realistic as the fills behind them.

A return-dataset benchmark carries the fill mode and mid-marking of the run that generated it, and those settings shape every benchmark return you compare a signal against.

Was this page helpful?