Objective
For any Berg disclosure dependent on proprietary or otherwise unavailable inputs (30k-indicator system internals, non-redistributable series), assess public proxy feasibility, license/redistribution, history length, and point-in-time availability; document as data_source investigation if proxy is viable or as explicit untestable documentation if not — with no private data in public artifacts.
Parent epic qm-tykd (Research Milton Berg turning-point signals) and its coverage ledger v1 (research/findings/berg-coverage-ledger-qm-tykd.5.md §3) defer all proprietary-data vetting to this bead. Sibling qm-m1ib closed as a deferral companion; qm-tykd.1..4 already rejected proxy-only experiments on public data.
Approach
- Intake classified as
data_sourcewithexternal_data+temporal_researchandpublication_required=true(public_artifact auto-added). No signal; not an indicator.split_required=falseat intake — child data_source tasks only if a public proxy is go and needs new acquisition. - Planning pinned two blocking work items:
feasibility_assessment(data_source_feasibility) thencoverage_publication(data_coverage_publish). - Feasibility (
data_source_feasibilitysourceberg-proprietary-inputs,go_no_go=no_go) audited four inputs per ledger §3 families and gap recordresearch/findings/qm-zzdt-berg-proxy-boundary-gap.md §§1-2: native 30k, NYSE TRIN/share-volume, NYSE advance/decline paid, native composite. Each was checked for authority/publishers, license/ToS, redistribution, history length/PIT, proxy chain, and historical-range maximization checklist (alternative proxies with relaxed thresholds, synthetic extension, constituent rebuild, third-party extended history). - Coverage publication writes this durable result note and rebuilds
docs/site-data/results.jsonvia the canonicalresearch.reports resultsproducer. Nodata/market.sqlitemutation and nodocs/hand-edit.
Per-Input Dispositions
1. Berg 30k native daily — F1, F2, F3, F4 (institutional only)
- Native status: proprietary unavailable. Authority: Milton Berg Advisors institutional system — research-process page verbatim “His system tracks over 30,000 daily — incorporating research from all disciplines…”, R3 Model Building Using Data Extremes (2023) confirms 30,000+ daily proprietary indicators.
- License/ToS: No public license/ToS for bulk daily redistribution; institutional-only. Ledger policy
no_pdf_redistribution=true,proxy_disclosures_required=true. No Berg ticker indata/market.sqlite(instruments WHERE ticker LIKE '%BERG%'= 0 rows) and no__BERG*__synthetic. - Redistribution:
not_allowedfor native. Public proxies areallowedviaresearch/input_provenance.py:public-input-provenance/v1(TradingView/Yahoo free tier, close_only). - History length: Native internal unknown; public proxy history already maximized: SPY 1993-01-29 (8428 rows),
INDEX:HIGN2001-06-05 (6331),INDEX:LOWNsame (6312),INDEX:S5FI2006-12-29 (4956),USI:UVOL1996-04-19 (7616),USI:DVOL1992-01-02 (8643),^VIX9215; 252-day warmup where applicable. - Point-in-time: Native PIT unavailable; proxies are daily close with causal
T_close → T+1 closeviabacktest/engine.py:run_backtestone-bar lag (notsame_close), close_only schema(ticker, date, close), next-close tradable;T+2extra lag verified per family. - Proxy chain:
SPYclose vs SMA distance / rolling percentile (F1),HIGN/LOWN/S5FIbreadth (F1/F3),UVOL/DVOLadvancing/declining volume proxies (F2); all persisted idempotently; quality lower than native but acceptable with disclosure per ledger §3; F4 composite is a constituent-level rebuild from F1–F3 proxies. - Historical-range maximization: (a) alternative proxies relaxed to high/low counts for A/D and return-derived capitulation for TRIN; (b) synthetic extension rejected (no calibration); (c) constituent rebuild for F4; (d) third-party scrape not pursued for proprietary internals.
- Disposition: explicit untestable entry with rationale and acceptable proxy analysis noted (ledger §3, gap record §2,
qm-tykd.1..4rejections). No child data_source task — proxies already maximized andqm-tykd.1..4already evaluated on them.
2. NYSE TRIN / share-volume — F2 (volume climaxes, capitulation)
- Native status: paid NYSE share-volume unavailable free tier. Authority: TRIN = (adv_vol/dec_vol)/(adv_issues/dec_issues);
qm-tykd.2laneTRIN_share_volume_lane = insufficient_history offline. - License/ToS: NYSE share volume/TRIN requires licensed history; free public sources incomplete; full paid history not redistributable per ledger §3 F2.
- Redistribution:
not_allowedfor true TRIN/volume;allowedfor price-derived proxy. - History length: Ideal NYSE daily 1990s; proxies
UVOL1996-04-19 (7616),DVOL1992-01-02 (8643) maximize free history;qm-tykd.2primary capitulation proxySPY ret1 <= -2.5%(183 signals, 2.17%) used due to close_onlyVolume=0(now close_only with no volume column). - Point-in-time: TRIN lag
T+0close; proxy uses same derived-closeT_close → T+1withT+2late-input test (retains atT+2perqm-tykd.2). - Proxy chain:
USI:UVOL/DVOLas declining/advancing volume proxies plus SPY return capitulation; labeled with close_only caveat;|ret|/VIXand count-derived proxies considered but rejected as unlike; TradingView source viapublic-input-provenance/v1. - Historical-range maximization: relaxed threshold to count-derived down-day proxy but retained
UVOL/DVOLas closest defensible free breadth/volume; third-party scrape for paid NYSE not authorized. - Disposition: explicit untestable for exact TRIN formula with acceptable proxy analysis and
insufficient_historylane; no new licensable feed — existing proxies sufficient and experiments already rejected.
3. NYSE advance/decline paid breadth — F3 (thrust)
- Native status: paid NYSE A/D not redistributable. Authority: A/D thrust; ledger §3 F3;
qm-tykd.3uses HL Zweig 10-day low 0.40 → high ≥0.615 within 10 days. - License/ToS: Full NYSE A/D daily is paid subscription; free tier via
INDEX:HIGN/LOWNis index-level highs/lows, not true A/D — mismatch retained per gap record §2. - Redistribution:
not_allowedfor true A/D;allowedfor index highs/lows proxies. - History length: Ideal 1990s; proxies
HIGN/LOWN2001-06-05 (6331/6312),S5FI2006-12-29 (4956),MAH/MAL2005-01-03 (5440) adjacent;SPY/QQQ/IWMmulti-index 1993+ whereDIA0 rows. - Point-in-time: Daily breadth at close; thrust on
T_close HIGN/(HIGN+LOWN)withT+1execution andT+2extra lag (qm-tykd.3retains atT+2−0.00pp). - Proxy chain:
INDEX:HIGN/LOWNas highs-lows count proxy for A/D,S5FIadjunct; multi-index 4-index reduced to 3-index whereDIAunavailable; provenance table in gap record §2. - Historical-range maximization: constituent-level rebuild considered (full NYSE constituent OHLCV) but rejected as not defensible for paid A/D ratio; alternative high/low count relaxation already applied.
- Disposition: explicit untestable for exact A/D thrust ratio (missing thrust threshold/lookback/index list per ledger §3 F3) with acceptable proxy analysis; no child task — free breadth already maximized.
4. Berg native composite series — F4 (extreme composites, confirmation, overlay)
- Native status: no proprietary composite series exists. Authority: R3 describes composite building from extremes but discloses no weight vector/aggregation/confirmation/overlay (ledger §3 F4, §4 cross-report synthesis).
- License/ToS: No licensable Berg composite data product; research-process page lists only thesis whitepapers.
- Redistribution:
not_applicable— derived composite is public-proxy aggregation only. - History length: Inherits shortest leg
S5FI2006-12-29; rule-based proxiescount>=2andz-mean>=1.5span 1994-06-01 to 2026-07-24 (8069 days,qm-tykd.4common spine); maximization via F1–F3 constituent rebuild, not synthetic. - Point-in-time: Derived daily composite count at
T closefrom F1–F3 proxy signals, tradedT+1 closewithfee_bps=10(_run → allocatesmartlynext_close);T+2extra lag retains (−1.7bps) perqm-tykd.4frozen protocol. - Proxy chain:
count>=2 (F1 dist>4% & |z252|>1.5, F2 vol_z>2 & |ret|>1%, F3 |ret10|>5%)andz-mean>=1.5, equally-weighted aggregation of F1–F3 proxies; labeled proxy (no Berg native performance claim). - Disposition: explicit untestable for exact composite weights/logic with acceptable proxy composite and overlay backtest; no child task — derivable from already-persisted F1–F3 proxies and already rejected (
qm-tykd.4overlay 8.44% vs SPY 11.00%, −2.56pp).
Behavioral Proof
python3 -m backtest.datastore status→schema_version=5,ohlcv_layout=close_only, 127 tickers, 806897 ohlcv, under soft limit;connect_readonlyquery-only.sqlite3 data/market.sqlite "SELECT COUNT(*) FROM instruments WHERE ticker LIKE '%BERG%'"→ 0 rows (no proprietary adoption).sqlite3 data/market.sqlite "SELECT ticker, start_date, end_date, n_rows, source FROM instruments WHERE ticker IN ('INDEX:HIGN','INDEX:LOWN','INDEX:S5FI','USI:UVOL','USI:DVOL')"→ 6331/6312/4956/7616/8643 as above, sourcestradingview.sqlite3 data/market.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name='ohlcv'"→(ticker TEXT, date TEXT, close REAL, PRIMARY KEY (ticker, date))— close_only, no volume column.grep -R "miltonberg.com" research/findings/berg-coverage-ledger-qm-tykd.5.md research/findings/qm-zzdt-berg-proxy-boundary-gap.md→ three whitepaper URLs plus research-process landing page cited;proxy_disclosures_required=true.bd show qm-zfl5 qm-m1ib qm-tykd.4 --json→qm-zfl5OPEN P3 → this publish,qm-m1ibclosed investigation deferral,qm-tykd.4closed rejected (n=358).python3 -m research.reports results→ rebuiltdocs/site-data/results.jsonanddocs/results.html+ detail pages via canonical producer.python3 -m research.artifacts check --mode full --offline→ deterministic shared/canary bundle current (no hand-editeddocs/bytes).
Files Changed
research/results/qm-zfl5.md— this durable result note (YAML front matterid: qm-zfl5, searchable summary; four per-input dispositions with license/history/PIT/proxy chain).docs/site-data/results.json,docs/results.html,docs/results/qm-zfl5.html— rebuilt via canonicalresearch.reports resultsproducer (qm-zfl5 newest).data/market.sqlite— not mutated (read-only verification only; 30k and paid NYSE history not imported; close_only preserved).
Validation
- No private data in public artifacts: only public closes cited; no credentials, cookies, authorization headers, or full authenticated URLs logged;
public-input-provenance/v1sanitized. python3 -m research.pipeline validateandpython3 -m research.pipeline verify --offline— graph and offline verification pass in fixture-free run for this task's profile (data_source feasibility complete, no new acquisition required).python3 research/scripts/check_static_reports.py docs— static bundle OK.
Results
Every Berg unavailable input now has a written disposition with go/no-go and proxy chain: all four are not redistributable / not licensable for public import (no_go for native Berg and paid NYSE feeds) and therefore receive explicit untestable entries with rationale and acceptable proxy analysis noted in this ledger and in the upstream ledger/gap records. Acceptable public proxies are already persisted and maximize free history at reasonable precision cost with disclosed mismatches (high/low counts for A/D, return-derived capitulation for TRIN, constituent rebuild for composite). No child data_source tasks are spawned — there is no licensable series to acquire; the existing proxy coverage already supports the qm-tykd.1..4 rejections. No private data leaked to public artifacts. Follow-on ledger v2 refresh (qm-ckab blocked) may incorporate these dispositions verbatim if the parent ledger is rereleased.