Response shape
{
"score": 44,
"label": "Neutral",
"updated": "2026-05-19",
"dax": {
"level": 24635.04,
"change_pct": 1.346,
"recent_30d": [22921.59, 24080.63, 23806.99, ...]
},
"eur_usd": 1.1627,
"components": [
{ "name": "Market Momentum", "weight": 25, "score": 37, "note": "DAX 40 is 1.9% above its 125-session moving average — a relatively weak momentum reading by 2-year history." },
{ "name": "Volatility", "weight": 25, "score": 19, "note": "DAX 20-session realized volatility at 18.7% annualized — elevated realized risk." },
{ "name": "Currency", "weight": 25, "score": 77, "note": "EUR/USD has moved -1.31% over 60 sessions — euro on the softer side of its recent 2-year range (tailwind for exporters)." },
{ "name": "European RS", "weight": 25, "score": 43, "note": "DAX lagged Stoxx 600 by 0.4pp over 60 sessions — within usual cross-market range." }
],
"history": {
"prev_close": { "date": "2026-05-16", "score": 47 },
"week": { "date": "2026-05-12", "score": 35 },
"month": { "date": "2026-04-19", "score": 52 },
"year": { "date": "2025-05-19", "score": 68 }
},
"meta": {
"methodology": "equal-weight 4-component model (25% × 4): Market Momentum, Volatility (20d realized), Currency (EUR/USD 60d), European RS (DAX vs Stoxx 600 60d)",
"history_size": 1205,
"generated_at_utc": "2026-05-19T17:00:04+00:00"
},
"available": true,
"state": "NEUTRAL"
}
Fields
| Field | Type | Description |
| score | int 0–100 | Composite Fear & Greed score. |
| label | string | One of: Extreme Fear, Fear, Neutral, Greed, Extreme Greed. |
| updated | date | Frankfurt trading date the score reflects (YYYY-MM-DD). |
| dax.level | float | DAX 40 closing level. |
| dax.change_pct | float | Day-over-day percent change. |
| dax.recent_30d | array | Last 30 DAX 40 closes for sparkline use. |
| eur_usd | float | Latest EUR/USD rate from FRED DEXUSEU. |
| components | array | Each component: name, weight, score, note. |
| history | object | Score values from prev_close, week, month, year ago. |
| meta.methodology | string | Static model description — DAX uses a fixed 4-component model with no fallback. |
| meta.history_size | int | Total number of dates in the history series. |
| meta.generated_at_utc | string | ISO-8601 timestamp of when the cron generated this score. |
| available | bool | True when a valid score is available (mirrors the score-file presence). |
| state | string | Uppercase label, consumed by the homepage sector-card and /global page. |
Examples
JavaScript
fetch('https://dax.feargreedchart.com/api/?action=dax')
.then(r => r.json())
.then(d => console.log(d.score, d.label));
Python
import requests
r = requests.get(
'https://dax.feargreedchart.com/api/?action=dax'
).json()
print(r['score'], r['label'])
cURL
curl -s https://dax.feargreedchart.com\
/api/?action=dax | jq .score