Trading Bot HQModels & runsTestsResearch

Pre-registration: fable_mentor_internal_btc — mentor v2 spec transplanted to BTCUSD

Date registered: 2026-07-22, before any test execution of this spec on BTC. Lineage: mentor (Track R; gates 0.1/0.2 open — no result is evidence about the mentor's edge). Program rung: the R2 lineage continued to the primary benchmark instrument, per the decision tree registered in 2026-07-22-mentor-btc-v1.md (branch b): the displacement spec is the only mentor formalization with demonstrated gross signal (R2 gold: +0.1002R vs coin-flip −0.1306R), while the pullback-condition transplant (R8) was refuted at n=11,836. This run asks whether R2's signal replicates on BTC.

This is an instrument transplant, not a rule change. Signal logic byte-identical to v2 (expansion.py: displacement ≥ k× baseline, body ≥ 60%, compression precondition, first-pullback confirmation, cancels, 3/day cap, optional H4 alignment, zero-baseline guard, stop floor). Only instrument-denominated constants are translated, by the declared rules below. Same walk-forward harness, same coin-flip baseline, same registry path as R2.

Scope (split governance)

Research split only: Binance BTCUSDT M1, 2017-08-17 → 2022-12-31. Validation (10/10 looks) and Vault untouched. Research-split scan: unlimited looks, never validation evidence. Fresh instrument segment: iteration budget resets — this registration covers run 1 of 3. No in-sample smoke tests of this spec have been run on BTC.

Data representation (declared before running; the one structural adaptation)

BTC spans $3.2k → $69k inside the research split — a 21× range that makes absolute pip-denominated constants meaningless across the span. The engine therefore runs on a scale-normalized index: N_t = P_t / ref_t × 100, where ref_t = trailing 90-day median of daily median closes, shifted one full day (no lookahead), min 30 days of history (spec start ≈ 2017-09-17). One index pip (0.01 at index≈100) ≡ 1 bp of price, uniformly across the split. Every spec statistic is a ≤24 h window (24 h baseline median, 1 h compression, 24 h H4-align reference), over which the 90-day reference moves negligibly — the transformation rescales, it does not reshape. R-multiples are ratios and are unaffected. Declared consequence: report prices are index units, and dollar P&L is nominal (risk-normalized 1% sizing, as every prior run).

Synthetic bid/ask: Binance klines are mid-only. Bid/ask = N × (1 ∓ 0.02775%) — the Dukascopy-measured $50/0.0555% flat spread floor (BTC-COST-PREVIEW-v1.md), halved per side. Spread is thereby proportional and paid in fill prices exactly as in every prior run (long entries at ask, exits at bid). The measured floor is flat across all 24 hours, so a flat synthetic spread loses nothing the source actually contains.

Cost model (frozen; costmodel.for_symbol("BTCUSD") added with these constants)

Parameter Value Basis (declared, not tuned)
pip_size 0.01 index units (= 1 bp of price) Normalization above
pip_value_per_lot $10.0 Nominal, aligns R math with FX/gold
spread_pips (all sessions) 5.55 Measured Dukascopy floor, flat by hour
commission_per_lot_rt $7.0 (≈0.7 pips) Same raw-account placeholder class as FX/gold
slippage_entry_pips 1.0 0.18× spread — same fraction as gold's 1.0/5.5
slippage_stop_exit_pips 4.0 0.72× spread — same fraction as gold's 4.0/5.5
swap per lot-night −35 / −35 Pessimistic placeholder; hold_max ≤ 45 min ⇒ ~never fires

Round-trip friction ≈ 5.55 + 5.0 + 0.7 ≈ 11.3 bp on a stopped trade — almost exactly gold's 11.4 pips, by coincidence of units. Drag at a 30 bp floored stop ≈ 0.38R; at a 100 bp structural stop ≈ 0.11R.

Constant translation (declared rules — same rules that produced the gold constants)

Walk-forward 12-month IS / 3-month OOS rolling (harness default); IS selection = best net expectancy, ≥20 IS trades. Baseline: coin-flip control, identical event set, per OOS window (baseline_for_windows, seed 7 — harness default). Registry: strategy fable_mentor_internal_btc, pair BTCUSD, lineage mentor, kind backtest.

Registered hypotheses

Pass criteria (identical to every prior run, stitched OOS only)

  1. OOS net expectancy > +0.05R · 2. beats baseline net · 3. |max DD| ≤ 2× baseline's ·
  2. ≥ 100 OOS trades

Honest prior

FAIL on criterion 1 — drag arithmetic sits at 0.11–0.38R against a plausible gross of 0.05–0.15R; nothing about BTC changes that. Sample (criterion 4) should finally clear: 24/7 event surface over 5.4 years. The live questions are H1 and H4: if gold's gross signal replicates on BTC, the mentor-mechanics branch survives with two-instrument evidence and the wide-stop/cheap-execution geometry work inherits a real target; if gross ≤ 0 here, the displacement spec joins the pullback spec as refuted-on-BTC and the mentor branch's remaining life is R7 (S/R engine) plus whatever his verified data eventually re-anchors.

Iteration budget

Run 1 of 3 on the BTCUSD research-split segment. Any rule, grid, translation, or cost change after seeing results = new pre-registration. Hypotheses logged vs project budget: 4.


Result (filled 2026-07-22, after run 1)

FAIL — criteria 1 and 2; H1 and H4 REFUTED, H2 and H3 held. The gold signal does not replicate on BTC — it inverts. Stitched OOS 2018-09→2022-12: 165 trades (criterion 4 finally clears, first time in the project), gross −0.0706R, net −0.2224R, win 29.7%, max DD −37.76R, drag 0.1518R. Coin-flip baseline on the identical event set: 403 trades, gross +0.0526R, net −0.0816R. Registry run 18, fable_mentor_internal_btc@490c38b6, cost btcusd@80939dd7; artifacts reports/fable-mentor-internal-btc/.

Where this leaves the mentor branch on BTC: 0-for-2 (pullback-conditions spec refuted at n=11,836; displacement spec refuted at n=165 with information inversion). R2's gold result stands but is now evidence about gold, not about the mechanics in general. Remaining mentor-lineage life: R7 S/R level engine (the one observable his record supports that nothing has tested), and re-anchoring against his verified data if Gate 0.2 ever delivers. Runs 2–3 of this segment remain; neither may be spent without a new registration.