Fear and Greed Index on TradingView: Sources and Proxies
CNN measures US equity sentiment; Alternative.me publishes a Bitcoin sentiment index. A TradingView script may import a sourced series or calculate a different proxy. Identify which one you have before comparing values or testing a rule.
Source review: October 17, 2026. Educational information, not investment advice.
Three readings that must stay separate
| Source | Market and inputs | Update timing |
|---|---|---|
| CNN Fear & Greed | US equities; seven equally weighted components, normalized to a 0 to 100 score. | As new component data arrives. Check the displayed timestamp. |
| Alternative.me | Bitcoin; price, volume, social, dominance, and search inputs. | Daily. The API supplies an observation timestamp and a next-update countdown for the latest value. |
| This page's proxy | SPY momentum and inverse VIX deviation, equally weighted. | Prior daily observations, held between daily updates. No imported publisher score. |
CNN's seven inputs cover momentum, stock strength, breadth, put/call activity, volatility, safe-haven demand, and junk bonds. Its published summary does not supply every data-processing detail needed for an exact reproduction. A replacement ETF or a different normalization window changes the series. See CNN's methodology.
Alternative.me lists nominal weights of 25% volatility, 25% momentum/volume, 15% social media, 15% surveys, 10% dominance, and 10% trends. Surveys are marked paused; do not invent a redistribution of that weight or describe the remaining 85% as a complete replicating formula. Its methodology identifies the current index as Bitcoin-specific. See Alternative.me's source and API documentation.
Verify a TradingView script before using it
- Open the script description and source when available. Record the author, provider, requested symbols, formula, timeframe, and whether historical values can change.
- Compare several dates against the named provider at matching timestamps. A copied current value or a manually entered input is not a historical data feed.
- Check missing values and market closures. A US equity series held through a crypto weekend does not become a new crypto sentiment observation.
- Keep provider observations and proxy outputs in separate columns in your research log. Record source date, retrieval time, chart timezone, and any delay.
Data access and publication limits
A public chart does not establish permission to redistribute its underlying data. For CNN components and feeds, verify the applicable publisher and data-vendor terms before republishing; this example does not grant a license. Alternative.me permits commercial data use with attribution beside the displayed data and prohibits impersonating its service.
Pine cannot fetch arbitrary JSON URLs. Its supported data requests use TradingView data contexts. An external API address is not a ticker for request.security. Review a community script's data path before trusting claims that it displays an official index.
A transparent equity sentiment proxy in Pine v6
This educational formula combines two observable series. The multipliers and equal weights are design choices, with no fitted performance claim. It omits breadth, credit, options volume, social data, and the publishers' normalization. Label its output "Custom proxy" in charts, alerts, and exports.
//@version=6
indicator("Custom Equity Sentiment Proxy (prior daily)", overlay=false, precision=1)
// Educational model. Not CNN or Alternative.me index data.
if timeframe.in_seconds() > timeframe.in_seconds("1D")
runtime.error("Use a standard daily or intraday chart.")
clamp(float value) =>
math.max(0.0, math.min(100.0, value))
// Each expression uses the previous completed daily bar.
[spy, spyAverage] = request.security("AMEX:SPY", "1D", [close[1], ta.sma(close, 125)[1]], gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on, ignore_invalid_symbol=true)
[vix, vixAverage] = request.security("CBOE:VIX", "1D", [close[1], ta.sma(close, 50)[1]], gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on, ignore_invalid_symbol=true)
float momentum = not na(spy) and spyAverage > 0 ? clamp(50.0 + 500.0 * (spy / spyAverage - 1.0)) : na
float calm = not na(vix) and vixAverage > 0 ? clamp(50.0 - 200.0 * (vix / vixAverage - 1.0)) : na
float proxy = (momentum + calm) / 2.0
plot(proxy, "Custom proxy, 0 to 100", color=color.blue, linewidth=2, style=plot.style_stepline)
plot(momentum, "Momentum component", color=color.teal, display=display.data_window)
plot(calm, "Inverse volatility component", color=color.orange, display=display.data_window)
hline(50, "Model midpoint", color=color.gray)
Paste into the Pine Editor, save, and add to a standard SPY chart.
Recalculate a hypothetical reading
Assume the prior SPY close is 510 and its 125-day simple average is 500; the prior VIX close is 24 and its 50-day average is 20. Clamp means cap the result at 0 and 100.
Momentum = clamp(50 + 500 × (510 / 500 − 1)) = 60
Calm = clamp(50 − 200 × (24 / 20 − 1)) = 10
Custom proxy = (60 + 10) / 2 = 35
A score of 35 means only that these two rules averaged to 35. If VIX rises to 30 with its average unchanged, the raw calm score is −50 and is clamped to 0; the composite becomes 30. Clamping hides further extremes, so retain the raw observations in research.
Timing, missing data, and failure cases
Use a standard SPY daily or intraday chart. Every requested expression is offset by one daily bar; lookahead_on therefore maps prior completed values, not future closes. The daily chart intentionally shows the previous observation. Do not remove the offsets while keeping lookahead_on.
The averages need 125 SPY and 50 VIX daily observations, plus the one-bar offset. Missing inputs or nonpositive denominators produce no score. gaps_off carries observations through gaps; different source sessions, holidays, provider revisions, or data access can cause stale or differing values. Weekly and higher charts stop with an error. This indicator places no orders and contains no validated entry or exit signal.
Continue the research in Pineify
Market Insights includes a Market Tide view for call and put premium context. It measures a different quantity from either publisher's fear and greed index. Compare its observation time and units before using it alongside a proxy.
The Pine Script AI Coding Agent can help edit a documented proxy and check Pine syntax. Supply the exact formula, symbols, and timing rules; review the generated code and chart behavior. Syntax checking does not establish data rights, replication accuracy, or trading performance.
Review the volatility input separately with the VIX tracker.