trading / confluences / b_dryup

b_dryup — volume dry-up (the anti-c3 hypothesis) UNDERPOWERED

Corpus lane — EN-37 (inversion) · One arm too rare to refute anything.

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

The opposite of a volume spike: does the breakout work BETTER when the decision bar is quiet — 0.70× or less of the 20-bar average?

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

EN-37 volume dry-up (the ANTI-c3 hypothesis). 1 iff the decision 5m
bar's volume is <= 0.70 x the mean volume of the 20 preceding 5m bars on
the CONTINUOUS series (the same series and lookback c3 / `b_volhard` use).

Fewer than 21 closed 5m bars, or a non-finite / non-positive mean -> 0.

The 0.70 multiple is OURS, not sourced: the backlog card gives no number.
Declared as such in SCREEN-2026-08-07-DESIGN.md §A.1 and in
`SCREEN_PROVENANCE`; it was fixed there before any value was computed.

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 componentEN-37-volume-dry-up
Evidence tierCLAIMED
Backlog rank#36 · 2 source threads
frame"m5"
lookback_bars20
series"continuous"
vol_mult0.7
Notethe 0.70 multiple is OURS, not sourced — the card gives no number; fixed in the design doc before any value was computed (design §A.1, and §A.2 records why the same latitude was refused to EN-12)
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.

UNDERPOWERED — one arm holds under 5% of the filled rows; a null result here is 'underpowered', not 'refuted'.
Prevalence
2.49%
of filled rows
Pooled Δ mean R
+0.1034
stratified, vs bit=0
Matched-null p
0.5618
43.82th pctile of own null
BH q (15-bit family)
0.8739
q=0.25 gate
Bootstrap 95% CI
[-0.207, +0.440]
week-block, n=20,000 · p=0.5415
Win-rate Δ
+0.0392
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,7902.90%+0.11610.5289[-0.233, +0.491]
2025+4991.00%-0.10960.8636[-0.942, +0.720]

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)2.15%
Limit fill rate — bit = 191.94%
Limit fill rate — bit = 079.15%
Fill-conditioning gap+0.1279
Live take rate — bit = 16.45%
Live take rate — bit = 017.66%

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_trend66.80%0.0219
c2_vwap39.14%0.0393
c3_volume16.95%0.0000
c4_sweep25.64%0.0252
c5_htf70.42%0.0188
c6_room88.42%0.0221

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 SMALL02-0.4742
other live bits == 15101+0.1462-0.2956+0.4418
other live bits == 228641-0.0234-0.0683+0.0449
other live bits == 320933-0.3125-0.0167-0.2958
other live bits == 44472+2.1602+0.0974+2.0627
other live bits == 5075-0.0263
other live bits == 6 SMALL08-0.1948

Status — UNDERPOWERED

UNDERPOWERED, and that word was chosen before the number was seen. The bit fires on 2.5% of filled rows (61 of 2,289), so one arm holds well under 5% of the data and the screen declared in advance that a null here means 'we could not tell', NOT 'refuted'. The measured pooled delta is +0.103 R with matched p=0.562 and a bootstrap CI spanning [−0.207, +0.440] — a range wide enough to contain almost any hypothesis. Its 0.70 multiple is also OURS, not sourced: the backlog card gives no number, and the design doc says so out loud (§A.1) while §A.2 records why the same latitude was refused to EN-12.

Retest path

It needs POWER, not a rerun: many more rows in the rare arm, which means a longer forward window or a wider population, and a pre-declared minimum detectable effect. Re-running it on these 2,289 rows would produce the same shrug and spend another multiplicity slot.

Standing caveats

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