# Systematic-trading validation: Stage 0–1 report

Date: `2026-07-29`

## Outcome

Stage 0–1 is complete with a conditional result:

- production runtime identity, current RiskCap baseline, and data integrity inside
  observed file boundaries are verified;
- the XSMOM candidate remains `NOT_RUN`;
- candidate PnL is blocked until historical warm-up data and signal-level coverage
  evidence are complete.

## Verified runtime

- Active strategy: `VolatilityBreakoutRiskCap`
- Freqtrade: `2026.6`
- Container image ID:
  `sha256:87aa5c6d65359b34e9d99a0bb260a38c0efe0315253811e6f48c2afe8f278a6a`
- Mode: dry-run, Binance futures, isolated, 5m, 12 pairs, max four open trades
- Entry pricing: order-book `price_side=same`
- Strategy, base strategy, risk math, and Compose hashes match the local frozen
  sources.

## Baseline reproduction

| Window | Trades | Net | PF | DD |
|---|---:|---:|---:|---:|
| Training numerical anchor | 335 | +16.69% | 1.14 | 11.37% |
| Historical retrospective anchor | 175 | +11.68% | 1.22 | 7.44% |

These exactly reproduce the documented RiskCap results. Both windows contain only
short trades, so they cannot validate the XSMOM long gate.

## Data audit

The audit ran inside the remote production Freqtrade container:

- 12 pairs × 5m futures, 1d futures, settled funding, and 1h mark = 48 files;
- 48 readable, zero missing, zero NaN, zero duplicate timestamps;
- zero fixed-grid internal gaps inside observed boundaries;
- each source file has a SHA-256 in `data-audit/data_manifest.json`.

Limits:

- 5m files begin at 2026-01-01 for 11 pairs and 2026-03-19 for EDGE;
- daily files for ten non-BTC legacy pairs begin at 2026-01-01, so their 28-day
  feature is first causal on 2026-01-30;
- EDGE is first feature-eligible on 2026-04-17;
- daily data ends at 2026-07-16, so it must be updated before any later forward;
- funding has no observed gap greater than 8h, but that is not yet signal-weighted
  98%/95% coverage and does not prove equivalence to a live predicted funding rate.

## Red-team decision

Three independent workstreams agree:

1. runtime and numerical baseline identity: GO;
2. observed-boundary data structure: GO;
3. formal paired XSMOM backtest: NO-GO until warm-up and raw-signal coverage are
   repaired;
4. funding alpha: NO-GO; only a settled-event coverage audit is currently allowed;
5. fresh forward: not started and cannot be inferred from either historical window.

## Next gate

Before any candidate result:

1. supplement authentic pre-window 5m, 1d, funding, and mark history;
2. freeze authoritative exchange-tradability timestamps;
3. regenerate the remote manifest and hashes;
4. audit every authentic raw signal for XSMOM snapshot and funding-event coverage;
5. proceed only if the pre-registered coverage thresholds pass.

## Post-remediation result

The five steps above were then executed without running candidate PnL:

- pre-window history was added;
- official Binance onboard timestamps were frozen;
- a second production manifest was generated;
- a separately downloaded reference dataset matched all 48 frozen comparisons
  exactly at zero tolerance;
- the formal midnight baseline was deterministic at 331 trades, +13.02%, PF 1.11,
  and 11.40% drawdown.

The final raw-signal coverage gate did **not** pass for
`D48-XSMOM-28D-V1`: 3,964 of 4,075 training signals were fully covered
(`97.276%`, threshold `98%`). All 111 misses were new-listing cold starts on EDGE
(94) and POWER (17). The historical retrospective window was 100% covered.

Therefore V1 stops as `INCONCLUSIVE_DATA_AVAILABILITY`; no candidate PnL was run.
Settled-funding coverage was 100% overall and per pair in both windows, so the
numeric coverage gate passes. The formal funding result remains inconclusive until
the Feather timestamp/value semantics are independently tied to finalized exchange
settlements.

A new `D48-XSMOM-28D-V2` is registered before candidate PnL. It preserves the same
rank rule but passes cold-start signals through unchanged, preventing listing age
from becoming a hidden filter. V1 remains closed and unmodified.
