How the sentiment score is built
The current implementation uses 15 indicators in five pillars. Each indicator is mapped to a historical percentile-style contribution and then assigned a fixed number of points. The point totals sum to 100. Higher points indicate a more supportive or complacent reading in the direction used by the dashboard; the labels below are the dashboard's labels, not a promise of future returns.
| Pillar | Weight | Inputs |
|---|---|---|
| Volatility Regime | 20 points | VIX Level (8), MOVE Index (6), VIX Term Structure (6) |
| Credit Market Stress | 15 points | High-yield credit spreads (10), yield curve (5) |
| Positioning & Behavior | 25 points | SPY put/call (5), total put/call (3), AAII bull–bear spread (7), CFTC positioning (5), Dark Pool Index (5) |
| Market Internals | 20 points | S&P 500 stocks above 200-day moving average (10), NYSE highs/lows (10) |
| Macro Sentiment Backdrop | 20 points | ISM manufacturing PMI (7), consumer sentiment (6), earnings revisions (7) |
Percentiles, direction, and zones
For each input, the app compares the current observation with a stored historical lookback. Inputs where a high number usually represents stress—such as VIX, MOVE, high-yield spreads, and put/call ratios—use an inverted percentile so a calmer reading contributes more points. Other inputs use their ordinary historical rank. The yield-curve and PMI calculations use their explicit branches around zero and 50 respectively.
The final score is the sum of the fifteen point contributions. The dashboard maps it to five zones: 0–20 Extreme Fear, 20–40 Bearish, 40–55 Neutral, 55–75 Bullish, and 75–100 Extreme Greed.
A high score does not mean prices must rise, and a low score does not mean a bottom is in. Sentiment can remain extreme while prices continue to move. Use the factor breakdown and the date of each observation rather than treating the composite as a standalone signal.
Data quality and limitations
Most inputs are fetched from public or licensed provider feeds and are cached for different periods. If an input is unavailable, the API may use a clearly tracked fallback value so the dashboard can remain readable; the response exposes fallbackFactors, confidence fields, and alerts. A reading with many fallbacks should not be treated as equivalent to a fully live reading. Provider delays, revisions, lookback changes, and different publication schedules can also move a percentile without a large change in the underlying market.
The score is not investment advice, a trading recommendation, or a calibrated probability of a gain or loss.
Underlying sources
- Federal Reserve Economic Data (FRED) for many macroeconomic, rates, credit, and market series.
- Yahoo Finance for selected market and volatility history.
- Multpl for Shiller CAPE and S&P 500 price-to-book history.
- The Wall Street Journal market data for the current S&P 500 forward P/E input.
- Cboe, AAII, CFTC, CNN Fear & Greed, FinViz, Treasury Fiscal Data, and other clearly labeled provider feeds for individual indicators.