PENROSE
Penrose/Documentation
Back to site

The gate stack

Penrose uses multiple independent failure lenses because no single statistic catches every way a backtest can mislead.

Before the backtest

  1. Grounding and falsifiability - the claim must be traceable to the source and capable of being rejected by evidence.
  2. Economic feasibility - a claimed edge that cannot clear its declared fee structure should not consume an expensive reconstruction.
  3. Data and binding integrity - frequency, venue, point-in-time availability, survivorship, and declared roles must be compatible.
  4. Reconstruction fidelity - the executable test must answer the claim actually submitted.

Statistical and robustness gates

  • Probabilistic and Deflated Sharpe Ratios
  • explicit search-denominator accounting
  • chronological fold sign stability
  • stationary block bootstrap intervals
  • permutation and alignment checks
  • walk-forward stability
  • combinatorial purged cross-validation
  • regime concentration and declared-regime adherence
  • parameter fragility
  • tail asymmetry and widow-maker warnings
  • cost sensitivity and capacity
  • minimum detectable effect and power
  • implausibility checks for broken reconstructions

Execution realism

Penrose resolves one venue-aware, all-in execution cost per claim from the declared execution contract and the frozen, versioned config.EXECUTION_COST_SCHEDULE. Taker is the only survivable default: a maker assertion is not fill evidence, and a daily bar cannot prove a passive fill or queue position. A declared maker order therefore remains priced at taker and carries an availability_unverified hazard.

The maker schedule is only a counterfactual. If a claim fails the 2× cost-margin gate at taker but would clear it at the venue's maker cost, the result is a cost_contingent watch, never research-supported, until forward fill-rate validation supports the cheaper execution assumption.

Confirmation controls

Discovery cannot read confirmation data. A distinct survivor may be evaluated against a single-use reserve only when the declared confirmation has enough power. A failed power preflight returns cannot_confirm without burning the reserve.

Why gates sometimes stop early

Early routing protects integrity and cost. If a claim lacks data, there is no scientific value in generating code and computing precise-looking statistics over a fabricated substitute. A clean needs_data is a successful outcome.

For the detailed plain-language treatment, see the repository's docs/GATES.md. Exact thresholds are versioned with the engine.

Penrose is a falsification referee for quantitative trading claims. A verdict is evidence about survival under the referee, never a trading instruction.