Every result is a pure function of its inputs.
A run is defined by its build, parameters, data, execution assumptions and seed, so rerunning it returns the same bytes.
| Build | bld:3f9a1c20 |
|---|---|
| Parameter set | par:419f20ba8b |
| Model bindings | none |
| Dataset manifest | bars-1m@v12 · 951000 |
| Execution profile | exe:768536a0ee |
| Time range | 2016-09 → 2021-12 |
| Purpose | development |
| Engine version | 1.4.0 |
| Fill model | fill-model-v1 |
| Metric definitions | metrics-v3 |
| Seed | 42 |
- Original run4c8b0d01
Illustrative hashes and figures throughout this page. Reproduction checks also run on a schedule in CI and production.
Strategies are C#, built in a sandbox.
The agent writes against the Evrant SDK. Code from the editor or an upload takes the same checked build path.
- Parameters are declared in code and must match the specification
- Reflection, I/O, network, threads and the wall clock are rejected
- A verifier checks every reference before a build can run
- Failed builds go back to the agent, up to five build attempts
// OpeningRangeBreakout.cs — parameter excerpt, not a complete strategy.
// Specification v1. Example market, one-minute bars.
[IntegerParameter("or_minutes", 30, 15, 60, 5)]
public int OpeningRangeMinutes { get; set; } = 30;
[IntegerParameter("stop_ticks", 2, 0, 8, 1)]
public int StopBufferTicks { get; set; } = 2;
[ContinuousParameter("target_r", 2.00, 1, 3, 0.25)]
public double TargetRiskMultiple { get; set; } = 2.00;
[ContinuousParameter("rel_volume_min", 1.00, 0.8, 1.6, 0.1)]
public double MinimumRelativeVolume { get; set; } = 1.00;
// stop_ticks is the buffer beyond the opposite range edge.
// Complete strategy: first completed-bar close beyond the opening range,
// once per direction, with relative volume at or above the minimum.
// Stop beyond the opposite range edge; target = target_r times initial risk.
// Flat by 15:55 exchange time. Session state and order handling omitted.- 14:31:44.112runnerBuild 9f2c41e started for source v7 (OpeningRangeBreakout.cs, 5.6 kB)
- 14:31:45.692roslynCompiled in 1.58 s, 0 errors, 0 warnings
- 14:31:45.896analyzerallow-list-v1: 0 findings; no suppressions, module initialisers or mutable statics
- 14:31:45.987staticParameter schema extracted: 4 parameters, matches specification v1
- 14:31:52.822smoke17 entries, 17 exits, 0 open at range end, peak state 6 fields
- 14:31:57.132lookaheadFull and truncated runs identical at 12 cut points
- 14:31:57.284verifier401 member references checked against allow-list-v1, 0 rejected
- 14:31:57.290runnerBinary sha256:9f2c41e7b0d85a3c6e1f verified and executable
Instruments · 4
Instrumentpublished
- Asset class
- futures
- Currency
- USD
- Price semantics
- observed parent
- Volume semantics
- observed parent
- Roll rule
- roll-rule-v1
- Frequencies
- PT1M · PT5M · PT1H
Chart series · 3
Measured gap, shown on any run that crosses it
Versioned market data, measured before use.
Every dataset records its coverage, gaps and version so a result can be traced back to its inputs. The catalogue in the app shows each market's coverage before you use it.
- One adapter per provider, all writing the same normalised bars
- Back-adjusted prices for signals, raw contract prices for fills
- Higher timeframes built from one-minute bars, anchored to the session
- Gaps are measured and shown on any run that crosses them
Fills that assume the worst.
Every run records its fill model version. fill-model-v1 takes the market's side wherever a one-minute bar leaves room for doubt.
Models filter trades. They don't replace the strategy.
The strategy proposes an entry, an XGBoost model scores it as of that moment, and a threshold decides.
- Features use only data available at decision time
- Time-ordered splits only, with purge and embargo
- SHAP hints become deterministic studies you can read
- No out-of-sample gain means the model is rejected
What the results saydevelopment evidence
Ranks holdout winners modestly above losers
- Holdout trades
- 212
- Unfiltered win rate
- 45.3%
Model qualitytraining → holdout
Trade selectionexplore · does not change the model
At 50% the filter keeps 118 of 212 holdout trades
- Win rate of kept
- 51.7%
- Winners kept
- 63.5%
- Total net P&L
- $11,240
- Avg per kept trade
- $95
- Largest drawdown
- −$2,640
Stored stable-region threshold: 50%. A selection estimate, before a paired backtest of the filtered strategy.
Nothing is replaced. Nothing is left to chance.
Every change creates a new immutable version, rival ideas live on branches, and parallel compute returns the same bytes as a single thread.
Immutable versions
Changes to logic, parameters, model or execution create a new version with its parent recorded.
Branches share ancestry
Creating a branch never touches the base, and branches compare on identical data and ranges.
Primary branch
Promotion moves a pointer
Making a branch primary copies nothing and changes no version. Try it above.
Parallel, still deterministic
Trials, walk-forward windows and Monte Carlo paths spread across threads and match a sequential run.
Early access
Run it again. Get the same answer.
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.