← Experiments

ADL Vol Ratio Pine UVOL/DVOL >22 fidelity re-audit

Rejected qm-kdnj.2 · 2026-08-18

Does the Pine-verbatim ADL Volume Ratio daily UVOL/DVOL >22 (request.security D close, timeframe=5 unused) reproduce signal dates tick-for-tick and does the corrected signal predict capitulation (S&P 500 recovery beyond buy-and-hold or generic defensive) on maximal native span?

Pine semantics frozen and tick-for-tick correct (strict >22 daily raw ratio, 0 mismatches vs prior qm-4bx.17/22: both 24 triggers 259 active hw20 on 1996-04-19→2026-08-11 7616 ratios; sum5 max 5.08 never hits 22, MA 3/5/10/20 collapse to 0, evaluator vs direct delta 0, pinned 15-row fixture with DVOL-zero/22-edge/sum5 cases passes). Re-audit on maximal native span shows no date drift — prior already Pine-correct. Signal is sparse buy-only (0.8/yr, 3.4% native, 2.97% unified 8709), not a persistent regime. Walk-forward both halves +25% (1996-2016 9 trig 1.93→2.43, 2016-2026 15 trig 4.34→5.46), falsification passes (random 10 trig 7.94 < true 13.39, inverted 48 trig 9.67 < true), extra lag not destructive (+8.3% 14.50 vs 13.39). Generic-exit harness (one-way buy) reports head-to-head generic-only vs signal+generic on same window/costs/lag: SMA200 8.11→13.39 +65% Sharpe 0.63→0.73, SMA50 9.02→12.85 +42%, 50/200 cross 7.85→11.02 +40%, 10% trailing-stop 9.45→13.10 +38%, B&H 19.28→19.28 0% (already max long). Brittleness retained: threshold 15 best 13.42 vs 22 13.39 vs 30 9.27 vs 40 8.34, holding monotonic 60d 18.62 >20d 13.39, consensus 0, COVID 0%, 2022 +0.13%. Synthetic pre-1996 NO-GO. Economics exist vs defensive but brittle; do not promote to strategy catalog/Meta, retain as risk-signals/v1 sparse signal.

Research narrative

Generic exit harness

ADL Volume Ratio buy-only impulse Pine request.security USI:UVOL/USI:DVOL D close ratio >22 strict level hw20 fixed, blended with generic defensive via OR override (long if either generic long or ADL active) — each head-to-head generic-only vs signal+generic on same window/costs/lag via BacktestConfig.allocatesmartly() next_close 10bps; deltas SMA200 65.09% (CAGR +1.81% Sharpe +0.10), SMA50 23.43%, cross 66.32%, trailing 50.7%, BH 0.0% — window 1996-04-19→2026-07-24 same window/costs/lag next_close +10bps L20 UVOL/DVOL 7616/8643 tradingview close_only

Generic opposite-signal harness (Δ head-to-head)

Window: 1996-04-19→2026-07-24 same window/costs/lag next_close +10bps — same window/costs/lag via BacktestConfig.allocatesmartly() next_close 10bps

GenericGeneric-onlySignal+GenericΔ%ΔCAGRΔSharpe
sma502.82433.485823.43%+0.73%+0.04
sma20010.0116.5265.09%+1.81%+0.10
cross_50_20015.4325.6666.32%+1.86%+0.10
trailing_10pct5.81228.759150.70%+1.45%+0.08
bh19.2819.280.00%+0.00%+0.00

ADL Volume Ratio buy impulse daily UVOL/DVOL >22 (request.security D close, timeframe=5 input unused vs D) blended with generic defensive via OR override (long if either generic long or ADL active hw20); BH blended near BH itself; deltas vs generic-only on same window/costs/lag BacktestConfig.allocatesmartly() next_close 10bps, offline tradingview UVOL/DVOL 7616/8643 rows

ADL Volume Ratio buy-only impulse Pine request.security USI:UVOL/USI:DVOL D close ratio >22 strict level hw20 fixed, blended with generic defensive via OR override (long if either generic long or ADL active) — each head-to-head generic-only vs signal+generic on same window/costs/lag via BacktestConfig.allocatesmartly() next_close 10bps; deltas SMA200 65.09% (CAGR +1.81% Sharpe +0.10), SMA50 23.43%, cross 66.32%, trailing 50.7%, BH 0.0% — window 1996-04-19→2026-07-24 same window/costs/lag next_close +10bps L20 UVOL/DVOL 7616/8643 tradingview close_only

Equity vs S&P (aligned, rebased to 1.0)

No signal overlay for this experiment (parameter sweep / search)

Aligned window, both rebased to 1.0 at start — Aligned window, both rebased to 1.0 at start for fair comparison · S&P dashed, experiment solid. X = Date, Y = Equity (rebased to 1.0).

Signal driver & thresholds (x-aligned)

Signal timeline (sparse triggers)

Triggers when overlay takes over base strategy

Signal timeline — triggers shown as verticals on main chart above.

Stats

CAGR0.00%Sharpe0.00%
Sortino0.00%maxDD0.00%

Disposition

Rejected for risk-off-indicators/v1 and strategy promotion — fidelity verified (pinned fixture + 0 date mismatches) but brittle/optimization risk and sparse power; publish as qm-kdnj experiment with frozen Pine semantics, parity metrics, and generic-exit harness. Retain as risk-signals/v1 SHIP as signal (buy-signals-v1.json adl-vol-ratio, signals/history.json, docs/signals.html).

Follow-on work

Errors & data gaps

Native UVOL starts 1996-04-19; pre-1996 insufficient_history without licensed NYSE constituent share volume — no synthetic invented; __SYNTH_ADLVOL_RATIO__ NO-GO; daily/monthly correlation N/A Threshold 22 is within but not alone best (15 at 13.42 narrowly beats); 30/40 materially worse — high-threshold brittle; sum5 at 22 impossible (max 5.08) and MA smoothing at 22 collapses to 0 — document brittle and freeze daily raw Holding window monotonic 60d 18.62 dominates 20d 13.39 — optimization risk; 20 frozen per best-practice not 60; decay/retrigger boolean identical to fixed for sparse Consensus overlay 0 vs SMA200 (needs base bullish); additive +29% smaller — override/suppress only add value; B&H zero marginal already max long Recent crisis benefit small (COVID 0% no trigger, 2022 +0.13%) — episodic not recent dominant; DB ends 2026-08-11 ~1 week stale as of 2026-08-18; offline replay on committed snapshot passes, live update via fetch_tradingview_history+upsert_ohlcv when needed DB 104,275,968 bytes near 95 MB soft limit but under 100 MB hard; sidecar data/sim_daily.sqlite not used for ADL per qm-zl9.1; close-only store Volume=0 cannot rebuild pre-1996 Signal is sparse (24 triggers, 0.8/yr) limited power despite 30y span; ensemble 8/12/15 voting could reduce brittleness but not blended

Follow-up

gh issue create --title "Follow-up ADL Vol Ratio Pine UVOLDVOL 22 fidelity re-audit" --body "Follow-up to qm-kdnj.2: Does the Pine-verbatim ADL Volume Ratio daily UVOL/DVOL >22 (request.security D " --label "priority:p2" --label "pipeline:research" --label "agent:ready"
# deep-link