★ My

How we test › Case 01 › Prereg

Case 01 preregistration (redacted)

Redacted copy of a frozen preregistration. Paths and third-party names removed. This is not the original frozen file, so no hash is shown.

A preregistration means: we write the test rules down before seeing any result, then freeze them. That way the rules can't quietly change after the numbers come in.

Small print: the timestamp comes from our own computer, so it's our word, not hard proof. Two code files were changed 1–2 minutes after the freeze, before the first result. Because this is not the original file, we do not show a hash.

<!-- Redacted copy of a frozen preregistration. Paths and third-party names removed. This is not the original frozen file, so no hash is shown. -->
# REDACTED COPY — not the original frozen file; no hash is shown

# Pre-registration: T-WYS Claim Check backtests (claims 1-5), Sat 31-10-2026
Written and frozen BEFORE any signal, trade or outcome was computed (time recorded at freeze; this public page is a redacted copy only).
Research only: no orders, no live broker/API calls, no alerts, no messages. Nothing outside the research folder is written.
Source claims: internal research report (ranks 1-4 and 6). Exact quotes: transcripts/key_quotes.md.
**Fidelity note:** all claims were made for US stocks / futures. We test them on crypto perpetual futures (24/7), so "the open" is tested twice: 00:00 UTC and the US cash open.

## 0. Data, coins, periods (fixed)
- 16 coins (BASE16): ADA ATOM AVAX BCH BNB BTC DOGE DOT ETH LINK LTC NEAR SOL SUI TRX XRP. Binance USD-M perpetuals, 1m OHLCV.
  - 2021-06..2022-08 downloaded from data.binance.vision (public monthly zips, into data/raw); 2022-09..2026-10-23 from `data_extra/loaders.load_crypto`. Built by scripts/build_data.py (data/build.log).
  - SUI starts 2023-05-03. LTC NEAR SOL TRX XRP have a 5-day gap in the Binance archive; any session whose window has missing 1m bars is skipped.
  - Funding: real Binance funding per settlement (2021-06..2026-09-30). After 2026-09-30 funding = 0 (not in our dataset).
- Daily bars = UTC days (00:00-24:00). ATRd = daily ATR14 (Wilder) of the last fully closed UTC day before the session start. SMA50 = simple mean of the last 50 closed UTC daily closes.
- **IS** = sessions starting 2021-07-01 .. 2023-12-31. **OOS** = 2024-01-01 .. data end (2026-10-23). Rules are fixed here; nothing is tuned on OOS (nor on IS).
- No hold-out coin set: the 12 hold-out coins have no 1m data before 2022-09 in our dataset (stated as a limit).

## 1. Sessions ("the open")
- **U0** = 00:00 UTC, every calendar day.
- **US** = 09:30 America/New_York (13:30 UTC during US daylight time, 14:30 UTC in winter; converted with zoneinfo, so DST is exact), Monday-Friday only (US exchange holidays are NOT removed; stated as a limit).
- Session start S = open of the first 1m bar at that time. "Session end" for intraday trades = S + 6h30m (length of the US cash session), used for both U0 and US so they are comparable.
- "Previous day" (box theory): U0 = previous UTC day high/low; US = high/low of the previous US weekday's 09:30-16:00 New York window (crypto prices in that window), mirroring the stock "previous day" (regular session).

## 2. Costs and simulation (our standard cost model B, same as in our earlier tests)
- Taker 0.04019% + 0.02% slippage per side for market, stop-entry, stop-loss and time exits; maker 0.0134% for take-profit (limit) fills. Real funding over (entry, exit], long pays positive funding.
- Result per trade in **R** = (gross P&L − costs − funding) / |entry − stop at entry|. Sensitivity: costs × 2.
- 1m simulation. Entry minute: OHLC path o→l→h→c if c ≥ o, else o→h→l→c; the entry fills at the first crossing (at the open if gapped through), after which the rest of that path is checked for stop/TP. Later minutes: stop is checked before TP; a gap through a level fills at the bar open. Time exit at the open of the first minute ≥ the exit time.
- Every rule has a stop. One trade per coin per session per variant.

## 3. Claim rules

### Claim 1 — "Pattern scalp": fade the opening 15-minute manipulation candle (4 variants: PS-U0, PS-US, PS70-U0, PS70-US)
- Opening candle = first 15m candle [S, S+15m). Range15 = high − low. **Manipulation if Range15 > 0.20 × ATRd** (the daily ATR, as the video says; not the prior day's range). Variant PS70: Range15 ≥ 0.70 × ATRd ("I look for the ones that are around 70 to 80%").
- Direction: we fade the candle. Red opening candle (c < o) → longs only; green (c > o) → shorts only; c = o → no trade.
- 5m bars from S (bar j covers [S+5j, S+5j+5m)). Patterns are looked for in bars j = 2..11 (from the third 5m bar to the end of the first hour). Entries only from S+15m, last entry before S+2h.
- Long patterns (shorts are mirrored):
  - **Hammer ("John Wick")**: lower wick ≥ 2 × |body|, lower wick ≥ 0.5 × bar range, upper wick ≤ 0.25 × bar range. Entry = buy-stop at the hammer high, any later bar until S+2h. Stop = hammer low.
  - **Big engulfing ("Power of Tower")**: bar j−1 is red with body ≥ 0.10 × ATRd ("massively large"); during bar j (j = 3..11) price rises back to the midpoint of bar j−1's body → buy there. Stop = session low so far (low of the day since S, up to the entry minute).
  - **Small engulfing**: bar j green, bar j−1 red with body < 0.10 × ATRd, close(j) > open(j−1) and open(j) ≤ close(j−1). Treated like the hammer: buy-stop at bar j's high, stop at bar j's low.
  - A newer hammer / small-engulfing pattern replaces a pending, not-yet-triggered one. The first fill wins.
- Target = the opposite side of the opening 15m box (long: Range15 high; short: Range15 low), take-profit at maker. If entry is already at/through the target, no trade. Time exit at session end.

### Claim 2 — Box theory on the previous day's high/low (4 variants: BX-mid-U0, BX-mid-US, BX-far-U0, BX-far-US)
- Box top T and bottom B = previous day's high and low (§1); height Hb = T − B; middle M = (T + B)/2.
- At S (first 1m bar open P): P ≥ T − 0.25 Hb ("close to, at or above") → **short**; P ≤ B + 0.25 Hb → **long**; otherwise no trade ("don't idle in the middle").
- Entry at P (market, taker + slip): "You just hit the button based off of the box."
- Stop (the video gives none; our choice, fixed here): short = max(T, P) + 0.25 × ATRd; long = min(B, P) − 0.25 × ATRd.
- Target: **mid** = M; **far** = the opposite side of the box (B for shorts, T for longs) ("made a beeline to the low pivot"). Take-profit at maker. Time exit at session end.

### Claim 3 — "Just buying at the open wins 51-54%" (6 variants: BO-U0-1h/2h/full, BO-US-1h/2h/full)
- Long at P (taker + slip). Exit at S+1h, S+2h, or full session (U0: S+24h; US: S+6h30m = 16:00 New York), taker + slip.
- Catastrophe stop (house rule "always a stop"): 1 × ATRd below entry; R = result / (1 × ATRd).
- Reported: win rate gross and net of costs, mean % return, mean R. The claim is judged on win rate (> 50% after costs?) and on the edge vs a random time of day.
- Supplementary (no label): the original market. SPY 1m regular session from data_extra (2022-01-03 .. 2026-03-31, the part with full 1m data): buy at the 09:30 open, sell at 10:30, 11:30 and the 16:00 close; win rate gross. Only ±4 years, not the claimed 15.
- "Futures go up about 80% of the time": no time unit or definition given → not tested (stated).

### Claim 4 — Opening range reversal (4 variants: OR-50-U0, OR-50-US, OR-top-U0, OR-top-US)
- Bias: last closed UTC daily close > SMA50 → longs only; ≤ SMA50 → shorts only.
- Sucker move (long bias; short mirrored): after each 5m bar k (k = 0..11, first hour), L = session low so far, Hpre = highest high from S up to and including the bar that made L. **Armed if Hpre − L > 0.20 × ATRd.**
- Entry: after arming, the first 5m bar m (until S+2h) whose high exceeds the previous 5m bar's high → buy-stop at that previous bar's high ("one candle to take out the high of another candle").
- Stop = session low at the entry minute ("stop loss ... at the low of the day").
- Target: **50** = L + 0.5 × (Hpre − L) ("50% at least"); **top** = Hpre ("lean it all the way up to the top"). If entry ≥ target → no trade that session. Take-profit at maker. Time exit at session end.

### Claim 5 — IQ Capital challenge odds (descriptive, no label)
- Rules as published on iqcapital.io (general-rules and crypto pages, read 31-10-2026), crypto **$100K challenge**: profit target +8% ($8,000); max drawdown 6% trailing end-of-day (line set at each New York close 6% below the previous day's highest equity, only moves up); **no daily loss limit on crypto**; max position loss < 1% of starting balance including all costs (0.5% when funded) — a breach closes the position (soft breach), the 3rd breach ends the account; 90 calendar days; no minimum trading days; account ends after 8 calendar days without a trade. Funded: 90% split, first payout after 10 active trading days, each payout ≤ 50% of profit, cap $2,000 per payout on $100K (how-it-works page), payout resets the drawdown line to the starting balance.
- Our modelling: fixed risk per trade 0.9% of starting balance in the challenge, 0.45% funded (a 1.0R planned risk at exactly 1% would breach on costs). A trade whose net loss ≥ 1.0% (funded ≥ 0.5%) counts as a soft breach and its loss is capped at that limit. Equity = realized balance (closed trades only) at each New York close (17:00 New York); open trades are not marked to market (optimistic; stated). Pass = realized balance ≥ +8% before day 90, before the 6% line is broken, before 3 breaches and before an 8-day gap without a new trade.
- Funded: new $100K at 0.45% risk, same DD line/breach/inactivity rules; **first payout** = first moment with ≥ 10 active trading days (UTC days with an entry or exit) and profit > 0; payout = 90% × min(50% of profit, $2,000). Followed for up to 180 days. P(payout) = P(pass) × P(first payout | funded).
- Strategies (trade lists already in our dataset, fixed now, no selection on outcome):
  - A = 4h EMA100/200 cross, swing stop S00 + TP 2× (round45c cid 1, `out45c/*.parquet`), BASE16 coins, 2022-10..2026-09.
  - B = same signal with the named third-party TP ladder (strategy B) (round45c cid 2).
  - C = S9 (`scanner/validation/s9_replay_trades.csv`).
  - D = PWR1H (`scanner/validation/pwr1h_replay_trades.csv`).
  - R = random-direction twin of A (column TWR in out45c, cid 1) = zero-skill benchmark with the same stops/holds.
- Monte Carlo: 10,000 synthetic 90-day challenges per strategy and period by **week-block bootstrap** (13 calendar weeks drawn with replacement from the strategy's own history, keeping the timing of trades inside each week; seed fixed), plus historical replays starting every Monday. Funded phase: 10,000 week-block paths of 180 days. Periods: all, IS-part (< 2025-01-01, as in r45c) and OOS-part (≥ 2025-01-01).
- Reported: P(pass), split of failure causes, median days to pass, P(first payout | pass), P(payout) overall, mean first payout $, and expected value against the fee ($89 current discounted price for $100K crypto; $445 list; activation fee after passing is not on the official pages I read, so EV is shown without it and with JoinProp's $299).

## 4. Random benchmark (claims 1-4)
Per real trade K = 3 twins: same coin, same period (IS/OOS), entry at the open of a random 1m bar within ±3.5 days of the real entry (crc32 seed of coin, variant, time, k); **random direction 50/50** (claim 3: long, because the claim is "buy"); stop at the same distance in ATRd units (ATRd at the twin's time); take-profit at the same multiple of risk if the real trade had one; time exit after the same maximum holding time as the real trade had (real session end − real entry). Same costs and funding. Twin mean per trade = mean of its 3 twins.
- **t vs random** = paired t of (R − twin mean) over trades.

## 5. Statistics per variant (IS and OOS separately)
n, win rate (net), mean R, t of mean R, twin mean, difference and its t, profit factor, max drawdown (R, by exit time), 95% week-block bootstrap interval (OOS), mean without the best 5% of trades, costs × 2, per year, long/short split, coins positive.

## 6. Labels (our standard labels) and multiple testing
- N = 18 labelled variants (claims 1-4). Bonferroni one-sided 5%/18 → t ≥ 2.77. We use the stricter **round45 bar t ≥ 3.41** (and report both).
- **VERBODEN (red):** mean R ≤ 0 (after costs B + funding) in IS or OOS, or not better than the random twin in IS or OOS.
- **EERSTE INDRUK (amber):** IS and OOS > 0 and better than the twin, but not the full PAPIER bar.
- **PAPIER (paper candidate):** ≥ 300 trades with ≥ 100 OOS; IS and OOS mean ≥ +0.10R; twin beaten by ≥ +0.05R in IS and OOS; OOS 95% interval lower bound > 0; costs × 2 still ≥ 0; without the top 5% still > 0; OOS t ≥ 3.41 and OOS t vs random ≥ 2.
- **BEWEZEN (proven):** additionally all of §2 of `mentor/leraar/bewezen_edge_criteria.md` plus forward phases B-D; cannot be reached in a backtest round alone.
- Claim 3 extra verdict on the claim's own number: is the net win rate > 50% in IS and OOS for the 1h/2h/full holds?

## 7. What we will not do
No changes to rules after seeing results. If a coding bug is found after a run, the fix and its reason go into `afwijkingen.md` with time, and all variants are rerun. No OOS-based selection. Pass bar fixed above.

Education only, not financial advice. No signals. Backtests are hypothetical: real trading can be worse. Past results don't predict future results.