- Market
- Example market
- Timeframe
- 1-minute bars
- Session
- RTH 09:30–16:00Assumed
- Entry
- Close beyond 30-min range
- Stop
- Opposite side of range
- Target
- 2 × risk
- Filter
- Above-average volume
- Exit
- Unspecified
- Sizing
- Unspecified
From a hunch to a candidate.
Follow one opening-range breakout on an example market through all nine chapters. The agent does the legwork, and the engine produces every number.
Figures in the product windows below are illustrative, not performance claims.
01Idea
Start with the idea, in your words.
Describe the strategy to the research agent the way you would to a colleague. Your thesis is stored verbatim.
- Gaps are marked unspecified, not filled in
- Assumptions wait for you to confirm them
Trade the breakout of the first 30 minutes on an example market. Go long above the opening-range high, short below the low, stop two ticks beyond the other side of the range, target twice the risk. Only on days with above-average volume.
Saved your thesis word for word. The exit and sizing are unspecified, and I assumed the regular session for you to confirm.
02Theory
Write down what would prove it wrong.
Before any code exists, the agent sets out why the edge might exist and which computable result would falsify it.
Why it might work
Opening auctions concentrate institutional flow. A break of the first 30-minute range shows which side is absorbing it, and trend followers add to the move.
What would prove it wrong
expectancy_R < 0.05DevelopmentFalsifiesprofit_factor < 1.00Development, +1 tickFalsifiestrade_count < 150DevelopmentInconclusive
Open questions
03Specification
Rules written down before code exists.
The theory becomes fixed rules and tunable parameters with ranges. Each version is recorded and never overwritten, so you can always see what is being tested.
| Parameter | Type | Default | Range |
|---|---|---|---|
| or_minutes | Integer | 30 | 15–60, step 5 |
| stop_ticks | Integer | 2 | 0–8, step 1 |
| target_r | Decimal | 2.00 | 1.0–3.0, step 0.25 |
| rel_volume_min | Decimal | 1.00 | 0.8–1.6, step 0.1 |
- R1Opening range is the high and low of the first or_minutes after 09:30 ET.
- R2Enter on the first 1-minute close beyond the range, once per direction.
- R3Stop stop_ticks beyond the far side of the range; target at target_r × risk.
- R4Skip entries below rel_volume_min. Flat by 15:55 ET.
- Instrument
- Example market, back-adjusted signals, raw fills
- Session
- RTH 09:30–16:00, New York
- Costs
- Commission plus 1 tick slippage
- Fill model
- Pinned version, recorded on every run
04Build
Compiled in a sandbox. Checked before it runs.
The agent writes C# against the Evrant Strategy SDK, and a pinned compiler rejects anything non-deterministic.
- Wall clocks, I/O, threads and reflection are blocked
- Diagnostics go back to the agent for repair
- A smoke run compares full and truncated data
AX0107 DateTime.Now is not allowed. Wall-clock reads break determinism.
Agent repaired it from the structured diagnostic.
- Compiled with 0 errors and 0 warnings
- Every member reference is on the allow-list
- Four parameters match specification v1
- Smoke run found entries and closed every position
- Full and truncated data give identical results
05Baseline
See every trade the code actually took.
A verified build runs a baseline on development data straight away. Every marker shows the rule that fired, and you confirm the trades follow your rules before research begins.
- Net profit
- $48,210
- Trades
- 1,284
- Win rate
- 44.6%
- Profit factor
- 1.41
Trade #214, longEntry
R2: close 4515.00 above range high 4511.50
06Research
Ask why it works, and when it doesn't.
Each experiment states a question, a hypothesis, what changed and the result that would falsify it.
- Trade counts and intervals for every bucket
- Thin buckets look as weak as they are
Is the edge concentrated in the first hour after the range forms?
- Hypothesis
- Breakouts before 11:00 ET carry most of the expectancy.
- Falsified if
- The first-hour interval overlaps later buckets.
Whiskers show 95% bootstrap intervals. Hatched buckets have fewer than 30 trades.
07Optimisation
Choose the plateau, not the peak.
Grid, random or Bayesian search on development data scores each point by its neighbours.
- The top trial is never auto-promoted
- Every trial counts towards the deflated Sharpe ratio
- You choose what goes to validation, with a reason
- Not promotedTop trial, Sharpe 1.48. Its neighbours collapse.
- SelectedPlateau centre, neighbourhood 0.88. Reason recorded.
08Validation
Then Evrant tries to break it.
Out-of-sample, walk-forward, Monte Carlo and stress tests run on a frozen configuration.
- Pass criteria you can edit before the run
- Validation jobs cannot read sealed data
- Every run adds to the exposure count
- 62% of expectancy keptPass
Out-of-sample
Validation range, 2022-01 to 2024-06
- 6 of 8 profitablePass
Walk-forward
8 rolling windows
- Drawdown within limitPass
Monte Carlo drawdown
2,000 bootstrap paths
- 9% chance of lossPass
Monte Carlo loss
Over 100 trades
- Expectancy −31%Pass
+1 tick slippage
Per side
- Fragile, −52%Warning
1-bar entry delay
Robustness
09Candidate
A candidate comes with its evidence.
A configuration becomes a candidate only with a completed suite and a decision you record.
- Unresolved assumptions stay on the list
- Your decision is recorded with the evidence
Opening-range breakout, example market
Branch base-orb, immutable report
- Configuration
- c-bed514885f3daa66
- Parameters
- or_minutes 35, stop_ticks 2, target_r 2.00, rel_volume_min 1.0
- Data
- Illustrative 1-minute bars, v2026.09
- Split plan
- v1, 55 / 25 / 20, one-week embargo
- Validation suite
- Thesis fidelity
- Exposure
- Open assumptions
The loop, not a pipeline.
Any finding can send the strategy back a chapter. Move in any direction. The hard rules only protect the evidence.
- Frozen before validation
- Validation runs only on a frozen configuration.
- Development stays blind
- Development jobs never read validation or sealed data.
- Sealed opens once
- Sealed data opens only by your explicit, recorded action.
- You make the call
- A candidate needs a completed suite and a decision you record.
Early access
Run your own idea through it.
Join free for an early-access invitation. No account or payment required. We’ll confirm market coverage before you choose a plan.
You’re on the list. We’ll email you when your invitation is ready.
For your early-access invitation only. Request removal anytime at [email protected]. See our privacy notice.