Reading the EDA charts
Exploratory data analysis (EDA) answers one question: does this signal's value predict trade outcomes? Four charts do the answering. Time Series shows the value behaving across history, Distribution shows how often it lands where, Scatter shows the value against the outcome one trade at a time, and Decile groups trades by signal value and reads the average outcome per group. All four live on the Signal tab, alongside the main time-series chart. There is no separate EDA screen and no button. Save a signal, set a benchmark context, and the charts appear.
What EDA is for
Look at a signal's behaviour, and its relationship to a trade outcome, before you commit it to a model or a backtest. EDA is where you find out whether the relationship is worth building on or whether you are about to curve-fit noise.
Two of the four charts need an outcome axis to plot against. That axis is a benchmark: a return dataset of trade outcomes the signal is read against. Set one through benchmark context. Without a benchmark, Scatter and Decile have nothing on the Y-axis, so only the two value-only charts (Time Series and Distribution) carry meaning.
The four charts at a glance
The first two read the signal in isolation. The last two read it against outcomes, so they need a benchmark set.
Time Series
The signal value plotted over history, the same series as the main chart, sometimes resized so you can compare it side by side with the others. Read three things: the level (where the value sits), regime shifts (a step change that lines up with a change in the market), and spikes (single-print excursions you can check against a known event).
Values sit on the 09:31 to session-close spine. A null renders as a break in the line, not a zero, so a gap is missing data, not a value of zero. Use this chart as a sanity check first: if the line does something the market did not, the signal has a bug before it has an edge.
Distribution
A histogram of the signal's values: the X-axis is signal-value buckets, the Y-axis is frequency. It tells you how often the signal lands at each value, which tells you how selective a candidate threshold would be. A threshold sitting in the fat middle of the distribution fires constantly. A threshold out in a tail fires rarely.
Read the skew and the tails, then locate where a proposed entry threshold actually falls. A threshold you thought was selective can turn out to sit right in the mode, firing on half your history.
Scatter
One dot per historical trade in the benchmark return dataset. The X-axis is the signal's value at that trade's entry time. The Y-axis is that trade's return. A trend line and a correlation coefficient are drawn on top. This is the chart that directly answers the question the whole exercise exists for: does my signal predict outcomes?
Read it with discipline. A visible slope with a low correlation is a weak, noisy relationship, not a tradable edge. The slope is real and the noise is also real, and the two coexist all the time. Watch for a cloud whose slope is carried by a handful of influential points; pull those few trades and the line goes flat. A relationship you would trade shows a slope the bulk of the dots agree with, not one a corner of outliers drags into place.
Decile
Every benchmark trade split into 10 equal groups by signal value at entry, lowest group to highest, with each bar showing the average trade return for that group. Where Scatter shows every point, Decile compresses the same data into a shape you can read at a glance.
A clean staircase confirms the signal's predictive direction: low signal to poor returns rising to high signal to good returns, or the mirror image. What you are reading for is monotonicity across the deciles. That is the signal. One hot bucket surrounded by flat ones is noise, however good that single bar looks. Deciles that rise and then reverse at the tails are a warning, not a green light.
Reading every chart honestly
Every chart above is a view of a computed series, so the defaults that shaped the series shape the chart. Keep these in view while you read.
Rolling inputs are observation-count on the current spine, not calendar windows. A rolling_rank(iv_daily, 252) over a daily series is one year; the same window on a 1-minute series is 252 minutes. Sample to daily first when you mean days. A daily or bucketed value is visible only at its session-close label (no-lookahead), so it is not readable intraday. null (missing data) and NaN (invalid computation) are distinct, and neither is zero. See the execution model.
The core distinction runs under all four charts: a relationship can be real but noisy and still not be tradable. Real means the slope, the correlation, or the staircase is genuinely there in the data. Tradable means the edge survives the noise, the costs, and the handful of trades that carry it. Separate the two before you build. A signal that shows a true, weak relationship on the Scatter and a bumpy, non-monotone Decile is real research and a bad trade. Treating the first as the second is how backtests lie.
From a chart to a model or a backtest
Each view points somewhere next.
A strong, monotone Decile paired with a Scatter that is scattered but carries a real slope means the single signal has direction but not clean separation on its own. That motivates the Model stage: combine it with other signals and validate walk-forward. Go to building and training a model.
A clean single-signal relationship with a clear threshold, where the Distribution shows the threshold is selective and the Decile is a tidy staircase, motivates going straight to a backtest. You have found where the signal fires and what tends to follow; the next question is what it does inside a position with real fills and exits.