/home/agent-jay/.claude/projects/-home-agent-jay-claudeCode-jarvis/memory/reference_milton_berg_indicator_catalog.md
Milton Berg — Indicator Catalog (source notes)
name: Milton Berg indicator catalog — extreme-tail histogram methodology
description: Full catalog of Milton Berg's market-turning-point indicators from 2026-05-18 Shapiro interview — 30k+ indicators, ~2k tradeable combos, designed to be replicated in finance/indicators
type: reference
originSessionId: d08af12a-ffd1-4f37-8c52-4a5ad683e6e9
Milton Berg Indicator Catalog
Source: Jason Shapiro / Crowded Market Report interview, YouTube 68bnJkSZCzk, recorded 2026-05-18, Berg dating 2025-04 low signals.
Guest: Milton Berg — Milton Berg Advisors. Former: Richie Commodities (1978), Oppenheimer (80% cash before '87 crash), Michael Steinhardt, Soros, Druckenmiller (2000 top trade). 10 years of solo research culminating 2026.
Sites: miltonbergedge.com (retail, $10/mo), miltonberg.com (institutional), Twitter @bergmilton.
1. CORE METHODOLOGY
The histogram-tail principle
- Daily market action is assumed random in the middle of the distribution. Berg ignores mean/median behavior.
- All signals come from extreme tails of a histogram of the indicator's historical distribution.
- Rationale: extreme readings are non-random events; market turning points are non-random; therefore extremes correlate with turns.
- "Crossing a moving average happens all the time. That doesn't get us into a trade."
Combination logic — combos, not single indicators
- ~30,000 raw indicators tracked (e.g., "S&P up 4 days, up 5 days, up 6 days … up 10 days" = separate indicators each).
- ~2,000 tradeable combination models. Each combo = 3–4 simple extreme conditions firing on the same day.
- Each combo has historically signaled ~4 times = ~8,000 individual model dates total.
- A combo is only flagged when all conditions hit simultaneously — computer pops up the signal; otherwise silent.
Signal projection / stop framework
- For each combo, look at past instances → record max 1-year forward return and max drawdown.
- Projection: median of historical 1-year forward gains across instances.
- Stop: based on max historical drawdown of prior signals + ~50bp slack. Example: if max prior drawdown was 0.5%, use 1% stop below signal day. Many leverage stops are within 0.5% of trade date.
- Aggregation: when multiple combos fire in a window, take the median of medians as the composite projection.
Why momentum into a low/high is the key insight
- Conventional wisdom: momentum is bullish into highs, bearish into lows.
- Berg's framing: at the tail end of a bear market OR a bull market, momentum becomes extreme. So extreme positive momentum = exhaustion (top) OR thrust (bottom).
- Filter the difference with the 250-day MA: same momentum extreme means "low" if price < 250DMA, "top" if price >> 250DMA. The MA is a regime filter, not a crossover trigger.
Start date
- Models begin 1957-03-04 — date S&P expanded from 90 → 500 stocks. Earlier data excluded as non-comparable.
- Some indicators only begin in 2000 (require ETF/index instruments that didn't exist earlier).
2. INDIVIDUAL INDICATORS (the building blocks)
These are the atomic extremes Berg combines. Reproduce these first.
Volume regime
| ID | Indicator | Threshold | Notes |
| V1 | NDX 5-day volume rank | Highest in 200 days | Tail extreme, used at lows |
| V2 | NYSE 5-day average volume rank | Highest in 375 days (≈1.5y) within past 20 days | High-volume regime — doesn't have to be day-of-low |
| V3 | NASDAQ 10-day upside/downside volume thrust | ≥ 1.89:1 | Volume-thrust extreme |
| V4 | NYSE upside volume as % of total 5-day volume | < 45% | Extreme downside volume regime (panic) |
| V5 | Day-of-signal volume change | Up ≥ +20% vs prior day | Confirmation volume on rally day |
| V6 | Day-of-signal volume change | +38% (observed example) | Stronger version of V5 |
Price momentum / rate-of-change
| ID | Indicator | Threshold | Notes |
| P1 | Nasdaq 3-day % change | ≤ −7% | Panic decline momentum |
| P2 | S&P 1-day % gain rank | Highest in 250 days | Thrust extreme |
| P3 | Nasdaq 10-day % change rank | Highest in 180 trading days | Thrust |
| P4 | S&P 500 10-day rate-of-change rank | Highest in 180 trading days | Thrust |
| P5 | SOX 10-day % change | ≥ +20% | Semis parabolic |
| P6 | S&P decline depth at signal-day low | ≥ −5% to −13% (multiple combo variants) | Drawdown filter |
| P7 | S&P recovery from prior 10% decline | ≥ +6% into new recovery high | Bottoming thrust |
| P8 | Single-day gain on April 9 type | ≥ +9% S&P or Nasdaq | Capitulation reversal |
| P9 | Upside/downside volume ratio | 100:1 on S&P 500 day | Generational breadth thrust |
Streak / consecutive-day counts
| ID | Indicator | Threshold | Notes |
| S1 | VIX consecutive up days | ≥ 10 (0.01% historical) | Extreme |
| S2 | VIX consecutive down days | ≥ 10 (0.04% historical) | Extreme |
| S3 | S&P 500 up days in a row | ≥ 9–11 (since 1928) | Tail |
| S4 | S&P 500 down days in a row | ≥ 9–11 | Tail |
| S5 | Russell up days in last 9 | ≥ 8 of 9 | Breadth momentum |
| S6 | Nasdaq up days in last 19 | ≥ 16 of 19 | After 10% decline + 19-day hold |
Breadth / A-D / new highs-lows
| ID | Indicator | Threshold | Notes |
| B1 | NDR Multi-Cap A/D line 7-day ratio | ≥ 2.10:1 | Index ~1,400 stocks |
| B2 | NASDAQ 10-day A/D line ratio | ≥ 1.30:1 | |
| B3 | Reverse breadth thrust | A/D line spike to downside | Companion to V4; capitulation flush |
| B4 | NASDAQ 5-day new lows − new highs | ≤ −16 | Cumulative deterioration extreme |
| B5 | NYSE new lows, market-cap-weighted | % of total market cap of NYSE, not raw count | Critical Berg innovation — see §3 |
| B6 | NYSE 60-day new low test | S&P at new ≥60-day low | Capitulation filter |
| B7 | 30-day new closing high | S&P recovery high on signal day | Confirmation |
Volatility extremes
| ID | Indicator | Threshold | Notes |
| VX1 | VIX intraday spread | trades between 45 and 60 in a session | Panic vol regime |
| VX2 | VIX standard deviation (5-day) over 20-day | ratio < 0.87 | Extreme downward VIX compression |
| VX3 | VIX absolute level above 45 | rare — "above 45 is high" | Standalone capitulation |
Sentiment / positioning
| ID | Indicator | Threshold | Notes |
| SE1 | IPO dollar value | 4-year high | Conventionally bearish, history shows mixed |
| SE2 | Market Vane bullish % | ≥ 1997 levels | Conventionally bearish, history shows OK |
| SE3 | Margin debt / GDP | record high | Conventionally bearish, history shows OK |
| SE4 | NDR overbought/oversold oscillator | < 10 (e.g. 4.44) on 0–100 scale | Genuine extreme |
| SE5 | COT positioning | not extremely long | Shapiro's domain; Berg cites as confirmation |
| SE6 | US Investing Championship % positive | only 16% positive in 2026 = participation proxy | Sentiment via P&L distribution |
Trend / regime filter
| ID | Indicator | Threshold | Notes |
| T1 | 250-day moving average | price below = downtrend regime (use to validate "low" signals); price above = uptrend regime | Used as filter, NEVER as crossover trigger |
| T2 | "Hold the low" day count | days since prior swing low without violating it; common filter values 1, 2, 3, 4, 7, 9, 19 | The longer the hold + new recovery high = stronger bottom |
3. THE MARKET-CAP-WEIGHTED NEW LOWS INSIGHT (B5)
Berg's most actionable original innovation, worth its own section.
Problem: "Many new lows at all-time highs in index" — cited as bearish (1929, 1987, 2000).
Berg's correction: raw count of new lows is meaningless when the index is dominated by trillion-dollar names and the new lows are half-billion-dollar companies.
Fix: Compute new_lows_market_cap_pct = sum(market_cap of NYSE 52w-low stocks) / sum(market_cap of NYSE universe).
Calibration table (Berg's data):
- 1979: 4.38% — no crash
- 1980: 4.15% — no crash
- 1983: 3.90% — no crash
- 2026-05 reading: ~3.12% — not at extreme
Max forward drawdown in those historical readings: 11%, 14%, 4%, 2%, 8%, 6%, 1%, 1%, 0.6%, 1%. A couple of bear markets but no crashes.
Implementation: join raw_prices (we already have NDX/MAG7 + index members) with shares outstanding → market cap → flag 52w lows → sum % of total. Run daily. Add to dashboard.
4. COMBO MODELS — EXACT RECIPES BERG SHOWED
Combo C1 — "1957-style turn" (used Oct 21 1957, June 26 1962, Sept 22 1976 bear-rally, Dec 24 2018, April 8 2025)
All on same day:
- V2: NYSE 5-day average volume highest in 375 days anytime in past 20 days
- B6: S&P at ≥60-day new low
- P6: S&P down ≥10–12% from prior high
- V4: NYSE 5-day upside volume < 45% of total
- B3: Reverse breadth thrust (A/D spike down)
Combo C2 — April 4 2025 (precedents: 1998, 2011)
- V1: NDX 5-day volume at 200-day high
- P1: Nasdaq down 7%+ in 3 days
- VX1: VIX between 45–60
Combo C3 — April 7 2025 (precedents: 1998, 2018, 2020)
- V2: NYSE 5-day average volume highest in 375 days
- SE4: NDR overbought/oversold < 10 (was 4.44)
- B4: NASDAQ 5-day new lows − new highs ≤ −16
Combo C4 — April 9 2025 "thrust day" (precedents: 1979, 1982, 1984, 2003 ×2, April 9 2025)
- T1: S&P below 250DMA (downtrend filter)
- P7: S&P up ≥6% from prior 10% decline into new recovery high
- P2: S&P highest 1-day gain in 250 days
- V5: Volume up ≥20% on the day
Combo C5 — April 30 2025 "held-low-7-days" (precedents: 1974, 1998, 2002 Oct, 2009 Mar, 2011, 2025 Apr)
- T2: S&P down ≥5% but held its low for 7 days
- P7 variant: S&P up ≥9% into new recovery high
- B1: NDR Multi-Cap 7-day A/D ratio ≥ 2.10:1
Combo C6 — April 13 2026 "held-low-9-days + thrust" (precedents: Aug 25 1982, Aug 6 1984, Oct 21 1998, Oct 14 2011)
- T2: S&P down 9% held low for 9 days
- B7: S&P closed at 30-day new recovery high
- P3: Nasdaq greatest 10-day gain in 180 days
- P4: S&P greatest 10-day rate-of-change in 180 days
Historical: 100% of time up 120 days later across all precedents.
Combo C7 — April 13 2026 variant w/ Russell streak (precedents: Aug 23 1982, Oct 21 1998)
Same as C6, plus:
- S5: Russell up 8 of 9 days
Combo C8 — April 13 2026 variant w/ Nasdaq volume thrust (precedent: Oct 14 2011 only)
- T2: S&P down 13% held low 9 days
- V3: NASDAQ 10-day upside/downside volume thrust ≥ 1.89:1
- B2: NASDAQ 10-day A/D ratio ≥ 1.30:1
Combo C9 — April 17 "SOX parabolic" (precedents: Oct 4 1987 → 28% before crash; May 5 1997)
- P5: SOX 10-day rate-of-change ≥ +20%
- B7 variant: S&P at 2-year closing high
Never been bearish. Used as continuation, not turning point.
Combo C10 — April 27 "late entry, 16 of 19 days" (precedents: Nov 4 1985 → +76%, Oct 30 1986 → +42% before '87 blow-off, Nov 22 2023 → +34%)
- P6 + T2: Nasdaq down 10% and held low for 19 days
- S6: Nasdaq up 16 of those 19 days
Continuation signal; max drawdowns post-signal were 0.22% and 0.16% — extremely tight stop possible.
Combo C11 — "4-year IPO + VIX compression" (precedents: Nov 21 2014 = top region, May 29 2020, June 5 2020, May 2026)
- SE1: 4-year high in dollar value of IPOs
- VX2: VIX 5d/20d stdev ratio < 0.87
Berg doesn't trade on this — but cites to refute Twitter "bearish" arguments.
5. TRADE MANAGEMENT (the wrapper around the indicators)
Retail model rules (miltonbergedge.com)
- Entry: buy 100% S&P at close of first combo signal, no second-guessing, no confirmation wait.
- Exit: trailing stop, exit at S&P down −8% from highest close since entry.
- Reentry: wait for next combo signal.
- Cash leg: T-bills while flat.
- Frequency: ~1 round trip per year on average.
- Historical performance 1957–2026: 18.5% per annum, 91% of buy signals profitable, 95.5% of all trades profitable, 80.9% time in S&P / 19.1% T-bills, max loss per trade < 4%.
Institutional rules
- Each combo signal carries its own stop derived from the worst historical post-signal drawdown of that combo (+ ~50bp).
- Leverage stops can be as tight as 0.5% below signal day.
- Pyramid up as additional combos fire confirming the trend.
- Use the most-momentum index for the long (SOX, OEX, QQQ), use S&P futures only when going leverage (lowest vol).
- Current position (May 2026): 175% long.
Current outlook from Berg (snapshot 2026-05-18)
- Median projection from combined April 2026 signals: S&P 8944.29 within 12 months (vs ~7500 at recording). ~+19%.
- Bullish: short covering still driving (USIC 16% positive = retail not really long).
- Indifferent: high IPO count, low VIX, high margin/GDP — all historically not crash signals.
- Inflation framing: bullish for stocks until the Fed actually fights it; don't preempt.
6. REPLICATION PLAN FOR JARVIS (proposed)
Phase 1 — atomic indicators (build first, store as time series)
Data already in finance/research.db and /var/lib/jarvis/data/raw_prices:
- V1, V2, V3, V5: need NYSE/Nasdaq volume — we have SPY/QQQ proxies in raw_prices; for true NYSE/Nasdaq composite volume need to add a data source.
- P1–P9: pure price math from
raw_prices. Easy first wins.
- S1–S6: trivial streak counters.
- B5 (market-cap-weighted new lows): needs shares-outstanding × close for NYSE universe. High-value original. Use yfinance for shares outstanding daily.
- VX1–VX3: VIX data already in
svix_compression table.
- SE4 (overbought/oversold oscillator): replicable as %B / Williams / Stoch — emulate NDR.
- T1, T2: trivial.
Phase 2 — combo engine
- Each combo C1–C11 = boolean AND of atomic conditions on the same day.
- For each combo, find historical instances 1957→present, log forward 5/10/15/20/120-day returns and max drawdown.
- Output:
combo_signals table (date, combo_id, atomic_conditions_met, forward_returns, max_dd, stop_price).
Phase 3 — daily scanner
- Cron 4:30PM ET weekdays.
- Output: dashboard panel "Berg signals fired today" with combo ID, prior precedents, median projection, suggested stop.
Phase 4 — backtest the retail rule
- Long-or-flat S&P, buy on first signal of any combo, trail −8%, T-bills otherwise.
- Compare 1957–2026 CAGR to Berg's claimed 18.5%.
Open data gaps
- True NYSE composite volume (not SPY proxy) — Polygon should serve.
- NDR-equivalent multi-cap index → use Russell 3000 or Wilshire 5000 A/D.
- US Investing Championship % positive — manual scrape; quarterly.
- Market Vane bullish % — paid service; substitute with Investors Intelligence or AAII.
7. ATTRIBUTION TO PRIOR LESSONS
- Programmatic First (CLAUDE.md): Berg explicitly says "I couldn't use AI to do it because AI doesn't understand the nuances of markets" — pure rule-based extreme detection. Aligned with our Karpathy principle.
- Always Be Testing: Berg backtests every combo against 1957→present and only acts when the historical precedent count is ≥1 and direction is consistent. Aligned.
- Walk-forward / simpler models generalize (recent lesson 7h ago): Berg uses 3–4 simple conditions per combo, no fitted parameters beyond thresholds — consistent with our walk-forward result that DEMA/TEMA overfit.
8. NEXT ACTIONS (queued, not yet executed)
- P1 — Build atomic indicator V1–V5, P1–P9, S1–S6 in
finance/indicators/berg_atoms.py. Pure math from raw_prices. ~half-day.
- P1 — Build B5 (market-cap-weighted new lows). Needs daily shares outstanding for NYSE universe. Backtest 1990→present where shares-out is reliable.
- P2 — Build combo engine (
finance/indicators/berg_combos.py) wiring atoms → C1–C11. Generate historical signal log.
- P2 — Add dashboard panel
/finance/berg-signals.
- P3 — Backtest retail rule, publish CAGR vs SPY.
- P3 — Scrape miltonbergedge.com periodically for any new combo recipes Berg publishes (he says he holds proprietary, but blog posts may reveal).
9. EXPANDED CATALOG FROM X / TWITTER & SECONDARY SOURCES (2026-05-25)
Following deep search across @bergmilton X posts + secondary appearances (Forward Guidance, prior Shapiro shows, Real Vision). Reorders by implementation confidence.
9.1 New HIGH-confidence atoms (pure math, threshold explicit)
| ID | Indicator | Threshold | Source | Confidence |
| P_ROC74 | S&P 5-day rate-of-change ≥ +7.4% | "Every bull market since 1928 began with a 5-day move ≥ 7.4%" — Forward Guidance Feb 2024 | 0.90 HIGH |
| T_RIN_HI | NYSE TRIN intraday extreme | TRIN ≥ 12.5 (capitulation) or ≥ 15.5 (rare panic) — 2020-03-12 was 15.50, Oct 2008 was 12.52 | 0.85 HIGH |
| B_DA_SP600_50_1 | S&P 600 daily decliners-to-advancers | ≥ 50:1 D/A intraday — Berg X 2026: "18 cases since 1995, 100% higher 120 days later" | 0.80 HIGH |
| B_AD_5D_087 | NYSE 5-day A/D ratio ≤ 0.87 at index ATH (within 5 days of all-time high) | "Breadth divergence at peak" — combo precondition Berg cites for tops | 0.75 MEDIUM-HIGH |
| VX_VIX_5_30 | VIX 5-day average / 30-day average | < 0.85 (compression at top) or > 1.50 (expansion at bottom) | 0.70 MEDIUM |
9.2 Macro overlays Berg cites (lower confidence — context, not triggers)
- Edson Gould "Two Tumbles and a Jump" — 2 consecutive Fed funds cuts (after a tightening cycle) historically bullish; Berg uses as regime overlay. Confidence: 0.60 MEDIUM. Implementation: trivial Fed funds delta.
- Montgomery cycles — Berg has referenced but doesn't publish formula; appears to be a fixed-period cycle overlay. Confidence: 0.25 SPECULATIVE — defer.
- Argentina M2 momentum — Berg X 2026: cites Argentina monetary regime change as analog for emerging-market bottoms. Not a quant atom; macro narrative.
9.3 Corrections to Section 5 retail stats
The 18.5% CAGR claim from the Shapiro video reconciles with Berg's X-published track record:
- 55 round-trips over 1957-2026 (≈ 1 every 15 months, NOT "1/year" — bursty)
- 90.9% profitable trades (not 95.5% as I'd transcribed)
- 21.7% average gain per winning trade
- Time in market ~78%, T-bills ~22%
- Max drawdown per trade < 4%, longest losing streak = 2 consecutive losses
- Compounded result: ~18.5% CAGR vs SPY 1957→2026 ~10.2% CAGR
- "Specialist short ratio" extremes — proprietary 1970s NYSE data, no longer published
- "Member firm short selling" — same data issue
- "Mutual fund cash positions" — ICI data exists but Berg's threshold not stated
- "Insider buying clusters" — Berg cites Vickers data but no replicable threshold
9.5 Implementation ordering by confidence (HIGH-conf first)
- P_ROC74 (5d ROC ≥7.4%) — trivial pct_change; data: SPX
- T_RIN_HI — needs TRIN feed (NYSE advances/declines × volume ratio) → Polygon
- B_DA_SP600_50_1 — needs SP600 daily A/D → Polygon mid-cap breadth
- B_AD_5D_087 — needs NYSE 5d A/D ratio + SPX ATH detector → mostly raw_prices, A/D from Polygon
- VX_VIX_5_30 — VIX already in svix_compression table → immediate
9.6 Cross-references
- B_AD_5D_087 dovetails with our existing bubble-bounds indicator (Pomorski paper): both flag "ATH with deteriorating internals." Composite signal candidate.
- P_ROC74 competes with breakout-academy ATR filter (lesson 2026-05-24): ATR(5)>ATR(20) HURT daily Sharpe. Berg's 7.4% threshold is roughly equivalent to a 2-σ daily move — re-check whether the level vs ratio framing matters.
- T_RIN_HI is a tape-reading classic; check
feedback_pipeline_first_for_resilience.md for prior-art pipeline pattern when wiring the TRIN feed.
10. PHASE 2 SHIP — 2026-05-25 (combo engine live)
Code shipped
finance/indicators/berg_atoms.py — 25 atoms (24 prior + P6_HIST)
finance/indicators/berg_combos.py — all 11 combos C1–C11 wired
finance/scripts/berg_gate_g2.py — Gate G2 backtest harness
finance/tests/test_berg_combos.py — 16 tests; 49/49 green with atoms suite
Gate G2 result — PASS 7/7 = 100% on testable precedents
| combo | live? | matches | notes |
| C2 | LIVE | 2/2 (1998-08-31, 2011-08-08 proxies) | NDX panic + VIX 45–60 |
| C4 | LIVE | 1/1 (2003 thrust day) | April thrust |
| C6 | LIVE | 2/2 (2011-10-14, 2026-04-13) | held-low-9 + 4-way thrust |
| C10 | LIVE | 2/2 (2023-11-22, 2026-04-27) | late entry 16-of-19 (after P6_HIST fix) |
| C1, C3, C5, C7, C8, C9, C11 | BLOCKED | n/a | missing data feeds (NYSE breadth, SOX, NDR, IPO calendar) |
P6_HIST atom — semantic correction
Original P6 (p6_drawdown) required current-bar drawdown ≤ threshold. But Berg's verbal phrasing "the market DECLINED 10%, held the low for 19 days" describes a historical regime: by the time the recovery thrust fires (S6: 16-of-19 up days), price has recovered past the −10% line. Without this fix, C10 missed all 3 testable precedents.
New atom: p6_drawdown_reached_within(prices, threshold=-0.10, lookback_days=60) — true if any close within the lookback window reached the drawdown threshold. Confidence 0.90 HIGH.
C10 now uses P6_HIST@-10%_60d_NDX + T2_held@19d_NDX + S6_NDX_16of19.
Coverage caveat
26 of 33 named precedents are pre-2003 (research.db starts ~2003). G2 PASS rate based on the 7 in-range cases. Phase 0 backfill (1957→2003) is the next high-leverage move to validate the long tail.
Date provenance
Catalog dates for C6/C7/C10 are 2026 (verbatim from Berg 2026-05-18 interview, dating live-as-of-recording signals). Earlier text in the catalog correctly shows 2026 throughout §4. An interim mistaken edit to 2025 was reverted after diagnostic verified 2026-04-13/2026-04-27 in our price data.
Verdict
Phase 2 SHIPPED. G2 authorizes Phase 3 (dashboard + cron) for the 4 live combos. Phase 0 (data backfill) recommended in parallel to unlock blocked combos and validate the 26 pre-2003 precedents.
Vetted from background agent (general-purpose + WebSearch). Raw at finance/research/berg_extras_raw.md. Each item confidence-rated.
11.1 CRITICAL CORRECTIONS to prior catalog
- Indicator universe (UPDATED): 30,000 indicators daily → 1,346 distinct individual indicators + 816 distinct buy-signal configurations + ~2,000 tradeable models. Prior "30k / 2k" framing collapsed indicator count with model count.
- Retail model exit (UPDATED): NOT a fixed −8% trailing stop. Per
miltonbergedge.com/faq, model "lacks fixed percentage decline triggers — has ability to adjust the exit level based upon conditions." The "8%" in Soar Financially summary is journalist simplification. Section 5 "trailing stop −8%" entry is superseded.
- Performance figures (CONFIRMED): 18.5% CAGR (1957→2026), 90.9% trade win-rate, 21.7% avg gain per winner, 78%/22% time in market vs T-bills, max DD per trade <4%. 55 round-trips / 68 years = ~1 every 15 months (bursty, NOT 1/year).
11.2 MISATTRIBUTION WARNING (negative finding)
Per Trading Flip transcript synthesis + primary source check, the following are NOT in Berg's actual public framework despite frequent third-party tweet attribution. Treat any tweet attaching these to Berg as misattribution unless verified from primary source:
- Specialist short ratio extremes
- Member firm short selling
- Vickers insider buying
- ICI mutual fund cash positions
- Hindenburg Omen (as a Berg signal)
- Zweig breadth thrust by name (Berg uses thrust concepts but not the Zweig label)
- 90% up/down days by name (Berg uses volume thrust but not the Lowry 90% framing)
11.3 NEW HIGH-confidence atoms (verified from primary)
| ID | Indicator | Threshold | Source | Confidence |
| V_NYSE_5D_375 | NYSE 5-day total volume — greatest in 375+ days | ≥375d lookback breach | miltonberg.com home | HIGH |
| V_5D_VS_90D_DEV | 5-day avg volume / 90-day avg deviation | crosses +50% AND +100% at bull starts | Wealthion 2023 | HIGH |
| V_NYSE_UD_9_1 | NYSE up:down volume ratio, 2 consec sessions | ≥9.0 for 2 consecutive days | Wealthion 2023 | HIGH |
| B_NHNL_60D_30 | 60-day net new highs / (NH+NL) at bull start | ≥30% net | Wealthion 2023 | HIGH |
| B_SP500_PCT_BELOW_20DMA | % of S&P 500 stocks below 20DMA | ≥90% (oversold bottom) | Wealthion 2023 | HIGH |
| B_SP600_PCT_BELOW_10DMA | % of S&P 600 stocks below 10DMA | ≥95% | miltonberg.com | HIGH |
| VX_VIX_3D_35 | VIX 3-day rate of change | ≥+35% in 3 days | miltonberg.com | HIGH |
| T_RIN_15_50 | TRIN extreme — historic high (Jan 8 1988 = 15.50) | TRIN ≥ 15.50 | Trading Flip transcript | HIGH (factual) |
| T_RIN_12_52 | TRIN — Oct 2011 panic bottom (12.52) | TRIN ≥ 12.52 | Trading Flip transcript | HIGH (factual) |
| P_5D_ROC_74_CONFIRM | 5d ROC ≥+7.4% bull confirmation. Precedents: 1975, 1978, 1980, 1987, 1991, 2003, 2009, 2011, 2020 | ≥+7.4% on SPX | Wealthion 2023 (full precedent set) | HIGH |
| P_5D_ROC_LACKING | Counter-cases: 6.68% (Jun '22), 6.36% (Oct '22) failed bull-confirm | <7.4% | Wealthion 2023 | HIGH |
11.4 NEW MEDIUM-confidence atoms
| ID | Indicator | Threshold | Source | Confidence |
| V_NASDAQ_RECORD | NASDAQ single-day vol record (May 17 2024) | New ATH | miltonberg.com (penny-stock distorted post-2020 — data quality flag) | MEDIUM |
| V_5D_NETUD / V_10D_NETUD / V_12D_NETUD | 5d/10d/12d net up:down vol extremes | "Extreme" (no number) | Trading Flip / IP transcript | MEDIUM |
| SE_PC_INTRADAY_HIST | Highest intraday put/call ratio in history | "Record" | Dec 2018 cited | HIGH event / MEDIUM number |
| VX_VIX_5_30_RATIO | Short-term VIX (5-8d) / longer-term (30-40d) — extreme top trigger | "Extreme" | Wealthion 2023 (Apr 21 2023 trigger) | MEDIUM |
| VX_VIX_RATIO_OUTCOME | Median 1y SPX decline AFTER VIX-ratio top: −23.43%; max gain in interim: +2.72% over 17d | Backtest claim | Wealthion 2023 | HIGH (Berg's own backtest) |
| MAC_M2_VS_IP_COMM | M2 growth vs (IP + commodity prices) extreme slowdown | Qualitative | WisdomTree 2021 Wharton podcast | HIGH (frequency: ~80% of 10%+ drops since 1960) |
| MAC_FED_2_EASE_GOULD | Edson Gould "Two Tumbles and a Jump" — 2 consec Fed cuts (15th since 1958 fired Nov 12 2024) | 2 consec cuts | @BergMilton tweet 1856393046599905395 | HIGH |
| MAC_GOLD_GDP_WT | GDP-weighted gold breakout above 2020 highs (target +40-60%, ~$2,500-$3,000) | Breakout | Wealthion 2023 | MEDIUM-HIGH |
| P_R2K_219D_4_99 | Russell 2000 219 days from low up only 4.99% (median historic = 48.52%) | Lag vs 48.52% median | Wealthion 2023 | HIGH (factual) |
| P_2GAP_OFF_LOW | Two consecutive unfilled upside gaps Days 1+2 off intraday low | Pattern | @BergMilton 1976313300628668429 (MERVAL example) | HIGH |
| SE_II_NOV21_MATCH | Investors Intelligence bull% matches Nov 2021 top reading | Match prior top | Wealthion 2023 | HIGH |
11.5 LOW-confidence / SPECULATIVE (do not implement before verification)
- MAC_GANN_90Y — Gann 90-year cycle (1932→2022). Post-hoc fit; LOW.
- P_ISLAND_REVERSAL_R2K — Adam Taggart Feb 2026 third-party attribution; pattern criteria not public. MEDIUM-but-flag.
- P_CLIMAX_TOP_TRIPLETOP — GDP-weighted gold triple top. MEDIUM, qualitative.
11.6 NEW combo recipes (additive to C1-C11)
| Combo | Conditions | Source | Confidence |
| C_BULL_CONFIRM_FULL | (1) P_5D_ROC_74_CONFIRM AND (2) V_5D_VS_90D_DEV crosses +50% AND +100% AND (3) V_NYSE_UD_9_1 (9:1 on 2 consec) AND (4) B_SP500_PCT_BELOW_20DMA ≥90% AND (5) B_NHNL_60D_30 ≥30%. Failed Jun/Oct 2022 (only 2/5 met). | Wealthion 2023 | HIGH |
| C_DEC18_BTM | (a) SE_PC_INTRADAY_HIST + (b) V_5D_NETUD extreme + (c) B_NHNL extreme + (d) day-count D+1/+2/+3 | Dec 2018 low | HIGH |
| C_TWO_TUMBLES | MAC_FED_2_EASE_GOULD = 2 consec Fed cuts (standalone macro overlay) | @BergMilton | HIGH |
| C_SICK_MKT_EXHAUSTIVE | Upside gaps + heavy vol into new highs + climax in lead names (NVDA, SMCI) + banking divergence + non-bullish momentum + Europe/Japan new highs | Forward Guidance Feb 28 2024 | MEDIUM (failed — pattern critique below) |
| C_8REASONS_DOUBT_BULL | Banking-index strange + rates deflationary + Oct '22 low divergence + China outlook (incomplete list) | Forward Guidance Sep 5 2023 | LOW |
| C_INSTITUTIONAL_SHORT_2026 | "Disturbing" Dec 2025 vol signal + R2K island reversal + gold/silver climax top + BTC speculative peak | Adam Taggart Feb 2026 | MEDIUM |
11.7 Pattern critique (operational guidance)
Berg's bottom-spotting > top-spotting. Track record:
- ✅ Strong: Dec 2018 (C_DEC18_BTM), Jan 26 2023 ("bear ended months ago"), Apr 4 2025 (54 indications fired; targets 6915-7320). Edge retail product is bottom-finding.
- ❌ Weak: Aug 23 2017 Bloomberg "30-year bear" → SPX +14% after; not vindicated through 2026. Feb 28 2024 "Sick Market" → market continued higher into Apr 2025. Sep 5 2023 "Stock Market In Trouble" → ranged then resumed higher. Mar 9 2020 "Fed's ammo doesn't work" → published days before literal bottom.
- Pattern: long-standing super-cycle bear bias → repeatedly early/wrong top calls.
- Operational rule for our model: wire Berg bottom signals FIRST. Treat top signals as confirmation only, not standalone triggers.
11.8 Prior-era anchors (newly documented)
- Oct 1987 trigger: Berg attributes crash to single Fed hike of +0.25% on Sep 4 1987 (first hike of cycle). Aug 11 1987 spike-volume signal as precursor. Oppenheimer position: 80% cash by Sep 1987.
- Edge model start date = Oct 1957 (corrects prior catalog's "Mar 4 1957"; both reference S&P 500 expansion). Per
miltonbergedge.com/newsletter.
11.9 Outcome statistics (vetted)
- 5-day breadth thrust precedent outcomes: +20% to +47% within 12 months.
- April 4 2025 buy trigger: 54 bullish indications fired 4/9 → early May; projected median max 12-month SPX target 6,915.91 – 7,320.01 (Recapio summary of David Lin interview).
- Cross-check new atoms vs existing
berg_atoms.py registry — V_NYSE_5D_375 may overlap V2 (verify lookback semantics); P_5D_ROC_74_CONFIRM extends P_ROC74 with precedent set.
- Plan-only sketch for adding new atoms to
berg_atoms.py BEFORE coding (Rob approval gate).
- Wire C_BULL_CONFIRM_FULL + C_TWO_TUMBLES as Phase 3 combo additions (gated by data availability — NYSE up:down vol + S&P 500 breadth feeds).
- Backtest MAC_M2_VS_IP_COMM "80% of 10%+ drops since 1960" claim independently before relying on it as a filter.
- Update
finance/indicators/berg_combos.py Phase 2 status: keep dynamic-exit-rule note, suppress legacy "-8% trailing stop" semantics in Phase 4 retail-rule backtest spec.
Primary fully verified:
- https://www.miltonberg.com/ — institutional home
- https://miltonbergedge.com/faq/ — dynamic exit confirmation
- https://miltonbergedge.com/newsletter/ — Edge start Oct 1957
- https://wealthion.com/news/bear-market-to-get-far-worse-than-any-in-recent-memory-milton-berg — densest source for new atoms
- https://tradingflip.com/%F0%9F%94%B4-how-to-time-the-market-w-milton-berg/ — TRIN history + misattribution exclusions
- https://www.wisdomtree.com/investments/blog/2021/08/11/conversations-with-a-market-bear — M2/IP/commodity overlay
- https://x.com/BergMilton/status/1856393046599905395 — Two Tumbles 15th since 1958
- https://x.com/BergMilton/status/1976313300628668429 — MERVAL pattern
- https://recapio.com/digest/analyst-called-market-bottom-now-up-38-reveals-2026-outlook-milton-berg-by-david-lin