trading / confluences / b_adx

b_adx — Wilder ADX(14) trend-strength floor DEAD

Corpus lane — RG-23 · Scored and did not clear its own noise floor.

BURNED DATA — 2019–2026 was selected on before this lab existedNOT TV-VERIFIEDSCREENING ≠ CERTIFICATIONOPTIMISTIC FILL MODEL — touch fills, zero slippageMES ONLY · P1 M2 managementSOLO LEDGER IS NOT A BOOK — never summed

What it asks

Is there enough trend strength to bother? The bit wants ADX(14) on closed 5m bars at or above 20.

Exact definition · verbatim docstring from backtests/conf_lab/bits.py (sha1 5473adbbf694)

RG-23 trend-strength floor. 1 iff Wilder ADX(14) on CLOSED 5m bars at
the decision is >= 20.

Textbook Wilder construction, recomputed here through the restricted view:
TR / +DM / -DM per closed bar, Wilder-smoothed over 14 (first value = the
14-sum, then `prev - prev/14 + current`), +DI/-DI, DX = 100*|+DI - -DI| /
(+DI + -DI), and ADX = the Wilder smoothing of DX over 14 (first value =
the mean of the first 14 DX). Reads `view.history("m5", n=400)`.

Fixed a priori in SCREEN-2026-08-07-DESIGN.md §A.1: period 14, threshold 20
(the sources say "20-25"; 25 is NOT tested — one value, no sweep).
Fewer than 3*14+1 = 43 usable bars, or any non-finite intermediate -> 0.

Fixed parameters & provenance

Every parameter below was fixed in the design document before any candidate value was computed. No sweep, no tuning: a bit that needs tuning to pass has failed.

FieldValue
Source componentRG-23-adx-trend-strength-floor
Evidence tierCLAIMED
Backlog rank#21 · 7 source threads
frame"m5"
history_bars400
method"Wilder"
min_usable_bars43
period14
threshold20
Notesources say '20-25'; 20 fixed a priori and 25 is NOT tested — one value, no sweep
Design docbacktests/conf_lab/SCREEN-2026-08-07-DESIGN.md
Doc sha256e2ba7ca77acce01c03ebcdb7afb51ffade7bb7a591303a2923329dba13a91d94

Screen analytics — screen-2026-08-07

Conditional association on mean solo R, stratified on the count of the OTHER live bits, against a per-bit prevalence-matched null (50,000 i.i.d. Bernoulli draws at this bit's own prevalence, scored on its own strata). Population: 2,882 candidates, 2,289 filled, MES, 2019-06-04 → 2026-07-31.

Prevalence
72.26%
of filled rows
Pooled Δ mean R
-0.0510
stratified, vs bit=0
Matched-null p
0.4118
58.82th pctile of own null
BH q (15-bit family)
0.8236
q=0.25 gate
Bootstrap 95% CI
[-0.173, +0.070]
week-block, n=20,000 · p=0.4138
Win-rate Δ
-0.0249
secondary statistic

Per era · reported separately, never pooled into a verdict — each cell is a smaller sample than the headline

Eran filledPrevalenceΔ mean Rmatched pboot 95% CIflag
pre-20251,79072.74%-0.06120.3771[-0.199, +0.071]
2025+49970.54%-0.01290.9289[-0.283, +0.257]

Funnel & fill conditioning · a bit that mostly predicts whether a limit FILLS is not the same discovery as a bit that predicts whether a trade WINS

MeasureValue
Candidate rate (all 2,882)72.59%
Limit fill rate — bit = 179.06%
Limit fill rate — bit = 080.38%
Fill-conditioning gap-0.0132
Live take rate — bit = 116.30%
Live take rate — bit = 020.38%

Novelty vs the six live bits · high agreement means the bit is mostly restating a gate that is already in the stack

Live bitAgreementJaccard
c1_trend40.02%0.2705
c2_vwap54.04%0.4937
c3_volume67.41%0.6484
c4_sweep56.62%0.5466
c5_htf40.50%0.2561
c6_room32.72%0.0978

By stratum — does it work where the method actually trades? · the live A/B take rule is count >= 4, so the count>=4 rows are the only ones that could change a live trade

Stratumn onn offmean R onmean R offcrude Δ
other live bits == 0 SMALL11+0.3762-1.3246+1.7007
other live bits == 18323-0.3084-0.1537-0.1547
other live bits == 2503166-0.0862-0.0067-0.0794
other live bits == 3673280-0.0402+0.0186-0.0587
other live bits == 4339137+0.1106+0.1252-0.0146
other live bits == 55025+0.0306-0.1402+0.1708
other live bits == 6 SMALL53-0.4494+0.2295-0.6789

Status — DEAD

NEGATIVE: pooled −0.051 R, win-rate delta −0.025, matched p=0.412 (58.8th percentile — squarely inside its own null), q=0.824. Worth stating what was NOT done: sources say '20–25' and only 20 was fixed a priori. 25 was never tested and will not be, because testing the second value after seeing the first fail is the definition of the sweep the design forbids.

Retest path

None on this data. A trend-strength gate is not refuted in general — one fixed parameterisation of it, on one method, on one instrument, failed to separate from noise.

Standing caveats

screen-2026-08-07stream conflab-pop-v1opportunity sha256 b62ca795de4a647b…harness ok · 0 real violations