Skip to content

What a data node reads

A Load row or Write row node on the canvas does not point at one fixed place. What it reads depends on how the workflow is running:

When the workflow runs as… The node reads…
a live run or a batch job the source it is connected to — a sheet, a table, a saved dataset
a backtest the dataset chosen in the backtest’s settings, as of each step in time
an evaluation the fixture dataset chosen in the suite’s settings

This is deliberate. A backtest must never read today’s live data, and an evaluation must never read live data either — so the same workflow, unchanged, reads a frozen dataset in those two cases. What you test is exactly what you run.

The node now shows all three, so you can see it before you run anything.

Open a workflow in the canvas. Each data node has a Bindings line; click it to expand:

live → VCs (Google Sheet)
backtest → 3 configs · latest: Momentum trio (126 rows)
eval → ⚠ no fixture bound

Each row says what that kind of run would read. The colour tells you whether that is fine:

You see It means
a name Bound. That run reads this.
⚠ no dataset bound / ⚠ no fixture bound That kind of run would refuse to start, because there is nothing safe to read. Fix it before running a backtest or an evaluation.
⛔ credential revoked, ⛔ source detached, ⛔ dataset no longer exists Bound to something that no longer works. Reconnect the credential, re-attach the source, or choose another dataset.
no live source (grey) Nothing is connected for a live run. Harmless if this workflow only runs as a backtest or an evaluation.

The node stays folded when everything is ordinary and unfolds by itself, with a ⚠ in its header, when something needs attention — so a warning is visible from across the canvas.

When a backtest has several configurations, the node shows how many and the most recently edited one, plus how many have no dataset.

The node keeps up as you work. Binding a dataset in the Backtest tab, choosing an evaluation fixture, creating or editing a batch job, detaching a source or deleting a dataset all update it — there is nothing to save first. A backtest configuration with no dataset is refused when you try to run it, with the same reason the node shows.

The Load row and Write row at the top and bottom of a batch job are different: the job puts them there, and they always read the job’s source and write its target, live. Their rows say reads and writes, and note that a batch job is never backtested or evaluated.

The node shows bindings; it does not change them. Each one is set where it always was:

To change… Go to
what a backtest reads the Backtest tab → the config → its dataset
what an evaluation reads the Evals tab → Suite settings → fixture dataset
what a batch job reads and writes the job’s inspector on the canvas
what a direct run reads the node’s own settings

Why a backtest reads a different dataset than my sheet

Section titled “Why a backtest reads a different dataset than my sheet”

Because a sheet is now. A backtest asks what your workflow would have decided last March, and the only honest answer comes from data that records when each value became known. That is what a saved dataset is — see Connect your data for how to capture a live source into one and build a history you can backtest over.