Xiphers Research·← Back to indexDEEN

RV4 — direction of the RTH from open to close · NQ

NQ · decision at 09:30 New York · 1607 daily bars up to 2026-08-14

Verdict — NQ

Can we tell at 09:30 whether the RTH closes above its open?

Criterion not met — BSS -0.8 % [-1.5 ; -0.0], AUC 47.4 %, accuracy 52.3 % against a base rate of 54.4 %, n = 916 days pooled forward.

Criterion: BSS > 0 and accuracy ≥ 55 %, pooled forward across 2023–2026

Setup
Decision time09:30 New York — bars up to t−1 complete, the opening print and every tick of session t before 09:30
Targetrc − ro > 0
Data window2020-05-29 to 2026-08-14 · 1607 daily bars · last day 2026-08-14
Walk-forwardDev ≤ 2022 (definitions only), test 2023 / 2024 / 2025 / 2026, expanding with a yearly refit
ModelL2 logistic regression on 15 preregistered set C features, standardised on the training window; C from inner validation (the last training year). Features: open_below_va, open_above_va, open_pos_va, open_dist_vah_atr, open_dist_val_atr, gap_atr, on_range_atr, on_delta_norm, open_pos_on, on_high_vs_rh1_atr, on_low_vs_rl1_atr, open_vs_on_vwap_atr, on_ext_recency, prev_ln_relr_rth, prev_box20_pos
HoldoutThe PX holdout from 2026-05-01 concerns the PX theses on the tick store. This study is a walk-forward over 2023 to 2026 on daily data — explicitly approved by the user for regime rounds 1 and 2. Every test year is computed from data before it only; no fit ever sees its own test slice.

Test years and pooled forward

Every row is a forecast over the same days. Base rate, majority and persistence are the baselines; the model has to beat them, otherwise it does not count.

RowYearnBase Rate %Acc %AUC %BrierBSS %
Base Rate202325257.557.550.00.24660.0
Majority202325257.557.5
Persistence202325257.557.552.10.24630.1
Always long202325257.557.5
Model (LogReg)202325257.551.248.10.2491-1.0
Base Rate202425552.552.550.00.24960.0
Majority202425552.552.5
Persistence202425552.552.549.10.2498-0.1
Always long202425552.552.5
Model (LogReg)202425552.551.849.00.2507-0.4
Base Rate202525255.655.650.00.24720.0
Majority202525255.655.6
Persistence202525255.655.649.80.24720.0
Always long202525255.655.6
Model (LogReg)202525255.656.048.50.2494-0.9
Base Rate202615750.350.350.00.25140.0
Majority202615750.350.3
Persistence202615750.350.346.30.2516-0.1
Always long202615750.350.3
Model (LogReg)202615750.349.046.50.2538-0.9
Base Ratepooled91654.454.447.50.24840.0
Majoritypooled91654.454.4
Persistencepooled91654.454.447.10.24840.0
Always longpooled91654.454.4
Model (LogReg)pooled91654.452.347.40.2504-0.8

Block bootstrap (20-day blocks, 1000 runs, pooled forward): BSS 95 % interval [-1.5 ; -0.0].

Confusion matrix pooled: true 0 correct 40 of 418, true 1 correct 439 of 498 (recall 0 = 9.6 %, recall 1 = 88.2 %).

Regularisation chosen per refit — 2023: C = 0.01, n_train = 588 · 2024: C = 0.01, n_train = 840 · 2025: C = 0.01, n_train = 1095 · 2026: C = 0.01, n_train = 1347.

Calibration and sharpness

Decilenmean p %observed %difference
19247.659.812.2
29250.748.9-1.8
39251.652.20.6
49252.455.43.0
59253.372.819.5
69254.150.0-4.1
79154.857.12.3
89155.648.4-7.3
99156.942.9-14.0
109159.756.0-3.6

Sharpness: p ≥ 0.7 on 0.0 % of the days (n = 0), hitting — % there · p ≤ 0.3 on 0.0 % (n = 0), hitting — % there.

How to read this report
Base Ratethe unconditional frequency in the training window, and at the same time the constant comparison forecast.
Baselinethe number a model has to beat. Three of them here: base rate, majority (always the more frequent class) and persistence.
Persistencethe forecast “today like yesterday” — the value of the same target on the previous day, turned into a rate.
BSSBrier skill score: what percentage of the base rate constant's Brier score the model saves. 0 means equally good, negative means worse.
AUCthe probability that a random positive day is scored above a random negative one. 50 is a coin flip.
Brierthe mean squared error of the probability. Smaller is better.
Sharpnesson what percentage of the days the model says something clear (p ≥ 0.7 or ≤ 0.3) and how often it hits there. A calibrated model without sharpness is useless.
Value Areathe price band [rval, rvah] in which 70 % of the RTH volume traded. Always the previous day's here.
Trend Dayan RTH with a body ratio ≥ 0.6 — the body of the daily candle fills at least 60 % of its range.
Body Ratiobr = |rc − ro| / (rh − rl), computed on the RTH session.
relrRTH range divided by the median of the 20 previous RTH ranges. relr ≥ 1 means: today is bigger than the typical one of the last four weeks.
Walk-Forwardevery test year is computed from a model that has only seen data before it; the training window grows with every year. No fit sees its own test.

The numbers in this report are recomputed on every publish — from data/daily-bars-*.json and data/open-features-*.json, which the extractor builds from the tick store.

Run: 1607 daily bars, 0.5 s.