# From an idea to a tested result

Build the first graph, test it, price the search and read the remaining limits.

## Six steps, from a bar file to a priced result

- 1 - a kernel, an instrument, a horizon: one node, one decision, one first curve
- 2 - costs on the canvas: fees, spread, slippage, financing - or the run is labelled gross
- 3 - a split and your gates: the window you fit on, the window you read, the bar you set
- 4 - the sweep: the parameter space, and the selection score that prices it
- 5 - the readings that try to break it: deflated Sharpe, bootstrap, PBO, Reality Check, SPA
- 6 - what leaves the harness: an export target or a research paper, verdict and cost label attached

## Bring the idea; the harness prices it

The search starts with a claim you already hold: a pattern, a filter, a horizon. The route below begins after that claim exists, and it consists of turning the claim into a run whose result carries its own conditions of validity.

Two costs are paid along the way. The first is causality: a series that reads ahead of itself produces a curve that no future data can reproduce. The second is multiplicity: the more configurations you try, the more the best one owes to luck, and that debt grows whether or not you look at it.

- what you bring: the claim, the data, the risk you accept
- what the run adds: a causality probe, a multiplicity price, and the conditions of both

## A kernel, an instrument, a horizon

Place a strategy kernel, connect a data node, and set the timeframe. Run it once with a single configuration. The point of this first run is a curve you can look at, and a confirmation that the graph reaches the engine at all.

Read the funnel before the metrics. It reports how many configurations entered, how many traded, and how many were removed. A funnel that reports no trades sends you back to the data or to the thresholds, and no downstream reading is worth interpreting until it moves.

01A graph on the Build workspace and the question that comes before any metric: what would tell me the edge is not real? The assistant answers from the nodes on the canvas, naming the out-of-sample split, the deflated Sharpe gate and its trial count, and the bootstrap interval on the Sharpe.

- what to read first: the funnel — entered, traded, removed
- a funnel reporting no trades: a data or threshold problem, upstream of any metric

## Costs on the canvas, before any comparison

A curve with no cost node is labelled a gross run in the result. Place the cost nodes that match your venue: a taker fee, a spread, slippage, and financing if you hold overnight. Each one states what it charges, and the run reports the total it applied.

Doing this before comparing configurations matters, because costs do not scale uniformly across them. A short-horizon configuration pays more of them, so a comparison made gross ranks turnover as if it were free.

[what each cost node charges](https://stochastly.com/docs/nodes): Node catalogue

## A split you declare, and a gate you wire

Place a split node to separate the window you fit on from the window you read. Then wire the gates that carry your bar: a minimum out-of-sample reading, a drawdown ceiling, whatever your own standard requires. With gates wired, the verdict comes from them.

A run with no gate wired falls back to the engine default, and the result states it in those terms. The default is a reasonable floor, and it is not your bar.

- with gates wired: the verdict comes from your bar
- with none wired: the engine default applies, and the result names it as such

## The sweep, and the bill it runs up

Widen the parameter ranges and run the space. The result now carries a selection score: a p-value adjusted by Romano–Wolf StepM over the unfiltered population, whose penalty comes from the correlation measured between your configurations.

Read it as the price of the search. A low score places the best configuration apart from the luckiest draw among those you tried; a high one leaves it among them, and no further reading rescues that.

- what the selection score prices: the search you ran, through the correlation between configurations
- what it does not price: a search you ran earlier in another session

[Screenshot: Parameter sensitivity in Stochastly, Parameter search · 24 configs, light theme.](https://stochastly.com/screenshots-current/docs-find-alpha--parameter-sensitivity--search.png)

The recorded search varies the two EMA settings. These curves describe generated demonstration data.

## The readings that try to break the result

The anti-overfitting family ships 47 nodes, of which 41 are validated by executable checks. A deflated Sharpe against the number of trials, a stationary bootstrap, PBO through purged and embargoed blocks, White's Reality Check and Hansen's SPA each report a separate reading of the same run.

Beside them, the Monte-Carlo family ships 23 nodes, 22 of them validated, for path resampling and for the distribution of outcomes under your risk settings. None of these nodes excludes a configuration: they judge the set you tried.

[Screenshot: Threshold sweep in Stochastly, Parameter search · 24 configs, light theme.](https://stochastly.com/screenshots-current/docs-find-alpha--threshold-sweep--search.png)

Surviving configurations and their measured result as the selection threshold changes. Generated demonstration data.

## What leaves the harness

A result you intend to keep leaves in one of 6 targets, or as a research paper carrying the run's own figures. An export states the coverage it achieved and, under the declared threshold, is written with its verification flag set to false and the reason named.

```
File › Export strategy → pick a target → the dialog states coverage before it writes
```

[what an export reproduces](https://stochastly.com/research/fidelity): Fidelity

[the export targets](https://stochastly.com/docs/exports): Exports

## The same six steps, driven by an agent

An MCP-capable agent composes, inspects and runs a graph once the app is signed in to an active plan, early access included. The pipeline is the same one the app uses.

[MCP launcher source on GitHubstochastly-mcp · MIT](https://github.com/Stochastly/stochastly-mcp)

[the tools, class by class](https://stochastly.com/docs/mcp): the read and write split, with registered tool and resource counts

## A refusal, and what it hands you

A sweep is probed before the first configuration runs. When the probe disagrees with the full-series read, the run stops and raises an error carrying three things: what is identified as the source, the size of the disagreement, and the timestamp where it first appears. The source is the strategy kernel, or the set of wired filter nodes, or a combined-run case that calls for a further check.

The error identifies the next repair target, and the remaining configurations are then not evaluated against a leaking series.

[the mechanism, with its constants](https://stochastly.com/research/causality): Why a run gets refused

## What this route establishes, and what it leaves open

### Following the steps produces a result whose conditions of validity are stated: the bars loaded, the costs charged, the gates wired, and the price of the search.

Scope: The readings cover the configurations submitted in that run, on the instruments and timeframe selected.
Effect: A search spread over several sessions is priced per run, so the multiplicity of the whole program is understated by the selection score of any single one.
Control: The trial ledger reports distinct specifications per registry, so repeated sweeps stay countable across sessions.

The production installer includes the strategy engine and stops before packaging if it is missing. An explicit non-deliverable demo build can omit it and use a labelled generic cross-sectional fallback. Check that label before interpreting a result.

No step described above is a statement about future performance.

---
Source: https://stochastly.com/docs/find-alpha
