Xiphers Research·← Back to indexDEEN

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

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

Verdict — ES

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

Criterion not met — BSS -1.3 % [-2.2 ; -0.6], AUC 46.7 %, accuracy 49.2 % against a base rate of 53.5 %, 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.157.150.00.24670.0
Majority202325257.157.1
Persistence202325257.157.149.00.24650.1
Always long202325257.157.1
Model (LogReg)202325257.146.042.80.2545-3.2
Base Rate202425552.552.550.00.24960.0
Majority202425552.552.5
Persistence202425552.552.552.30.2496-0.0
Always long202425552.552.5
Model (LogReg)202425552.551.449.30.2511-0.6
Base Rate202525251.251.250.00.25050.0
Majority202525251.251.2
Persistence202525251.251.252.20.25030.1
Always long202525251.251.2
Model (LogReg)202525251.249.650.10.2516-0.4
Base Rate202615752.952.950.00.24920.0
Majority202615752.952.9
Persistence202615752.952.948.80.2495-0.1
Always long202615752.952.9
Model (LogReg)202615752.950.343.90.2518-1.0
Base Ratepooled91653.553.548.00.24900.0
Majoritypooled91653.553.5
Persistencepooled91653.553.549.40.24890.0
Always longpooled91653.553.5
Model (LogReg)pooled91653.549.246.70.2523-1.3

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

Confusion matrix pooled: true 0 correct 35 of 426, true 1 correct 416 of 490 (recall 0 = 8.2 %, recall 1 = 84.9 %).

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.567.419.9
29250.662.011.4
39251.743.5-8.2
49252.551.1-1.4
59253.348.9-4.4
69254.053.3-0.8
79154.750.5-4.1
89155.451.6-3.8
99156.558.21.8
109158.848.4-10.5

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.1 s.