08Validation

Built to break your strategy.

A strategy earns trust by surviving attempts to disprove it. Evrant tests a frozen configuration on data it has never seen.

Default suite v1base-orb, cfg bed514Running
  1. Out-of-sample

    Validation range, 2022-01 to 2024-06

    62% of expectancy keptPass
  2. Walk-forward

    8 rolling windows

    6 of 8 profitablePass
  3. Monte Carlo drawdown

    2,000 bootstrap paths

    Drawdown within limitPass
  4. Monte Carlo loss

    Over 100 trades

    9% chance of lossPass
  5. +1 tick slippage

    Per side

    Expectancy −31%Pass
  6. 1-bar entry delay

    Robustness

    Fragile, −52%Warning
  7. Sealed range

    2024-07 onwards

    Waiting for youSealed

Illustrative run, not a performance claim.

Decide what the strategy never sees.

You set the boundaries between development, validation and sealed data. The engine enforces them on every job.

  • One calendar boundary applies across markets
  • A one-week embargo keeps straddling trades out
  • Checked by the app, then again by the data reader
  • Frozen at the first validation job
split plan · base-orb · v1draft

Common coverage · sample markets · 1-minute

2016-09 → 2026-07

55%25%20%
Embargo between ranges
Sealed range
Development

2016-09 → 2021-12

Bars
–
Trades
–
Validation

2022-01 → 2024-06

Bars
–
Trades
–
Sealed

2024-07 →

Bars
–
Trades
–

Off. Validation runs to the end of coverage.

Freezes on the first validation job. Edit freely until then. Later changes create a new plan version, and evidence stays attached to the plan it was produced under.

Gates exist only to protect the evidence.

Move in any direction. These rules exist because breaking them corrupts evidence, not because the workflow needs an order.

Validate only what is frozen

Validation jobs run against a frozen configuration and execution profile.

A result you cannot pin to one build, parameter set and fill model is not evidence.

Ranges stay apart

Development jobs cannot read validation or sealed bars. Validation jobs cannot read sealed bars.

Once development code has read the test data, the test measures memory, not edge.

Sealed data needs a person

Sealed-range evaluation takes an explicit human action and is recorded as an exposure event.

The last unseen data can be spent once. Someone should decide to spend it.

Candidates are earned

A candidate needs a completed suite on that exact configuration and your recorded decision.

A candidate is a claim about one configuration, so its evidence must be about that one.

Change it, test it again

Any change to logic, parameters, model or features creates a new configuration to validate.

After a tweak, the old results describe a strategy that no longer exists.

Paper trading, coming later

When it arrives, paper trading will run only a candidate exactly as it was validated.

Same build, parameters, models and features, or it is a different strategy.

Exposure demo · separate lineage

Validation exposures

0

Sealed exposures

0

  1. base-orb v1

    cfg bed514 · frozen

    clean
  2. Out-of-sample run

    validation range · 2022-01 → 2024-06

    exposure 1
  3. Walk-forward · 8 windows

    development + validation

    exposure 2
  4. base-orb v2

    cfg 3b056a · stop_ticks 2 → 3

    validation_informed · exposures 2
  5. Default suite on v2

    OOS · WF · MC · robustness

    exposure 3

Sealed range · 2024-07 → locked

agent → request_job(range: "sealed") denied

Every look at test data is counted.

A strategy changed after seeing validation results is no longer tested out of sample. Evrant records it instead of pretending.

  • Every validation job adds an exposure
  • Later versions are marked validation_informed
  • Sealed data opens once, for you, after two confirmations
  • The agent can never request the sealed range

Step 1 of 2

Evaluate on the sealed range?

configuration
base-orb v2 · cfg 3b056a
range
sealed · 2024-07 →
use
single use per configuration
record
exposure event, listed in the dossier

A feature that peeks ahead is rejected.

Leakage rarely looks like cheating. It looks like a centred smoothing window. Switch the definition and move the cut point.

  • Every value carries an available_at time
  • Strategies see only completed bars
  • New feature versions must pass truncation invariance
  • ML splits are purged and embargoed
Truncation invariance
bar 62

Four tests that try to disprove it.

A versioned suite of tests with pass criteria you set. It runs on one frozen configuration and stays attached to it.

Your pass criteria

Out-of-sample degradation

The frozen configuration runs on the validation range. Evrant compares it with in-sample for expectancy, trade frequency and distribution, drawdown and risk-adjusted return, and asks whether each one persists.

  • expectancy persistsCI excludes 0
  • trade distributionKS p = 0.31
  • OOS / IS expectancy62%
  • criterion
0.26R0.16R

Expectancy

62% of IS

7.87.1

Trade rate

91% of IS

1.310.82

Sharpe

63% of IS

−6.2R−7.9R

Max drawdown

27% deeper

The last word is yours.

The top trial is never promoted automatically. The dossier shows every piece of evidence, including what argues against it.

Candidate decision · base-orb
Configuration
base-orb · bed514
Suite · default v1
5 pass, 1 warning
Walk-forward
6 / 8 windows · WFE 0.58
Monte Carlo DD95
−18.2R · within 20R
Robustness
fragile · 1-bar delay
Exposure
validation 1 · sealed 0
Lineage
clean · first validation
Configurations tried
90

Awaiting your decision. Evrant has reported; it has not decided.

Early access

Bring a strategy you want to break.

Join free for an early-access invitation. No account or payment required. We’ll confirm market coverage before you choose a plan.

For your early-access invitation only. Request removal anytime at [email protected]. See our privacy notice.