The five regime labels
- Early Recovery . momentum turning positive after a downturn. Selective positioning rewarded, large beta still risky.
- Markup . broad-based uptrend, breadth confirming. High-beta tokens and concentration in leading narratives historically rewarded.
- Distribution . topping signals, narrowing breadth, leadership rotating. The regime where momentum-chasing punishes most.
- Markdown . broad-based downtrend. Capital preservation rewarded over re-entry timing.
- Unclear . mixed signals. Balanced positioning with patience tends to outperform conviction trades.
The data we pull
- Top-100 momentum. For every token in the top 100 by market cap, we pull 24h and 7d price changes.
- BTC dominance. Pulled directly from CoinGecko's global endpoint. Falls back to a top-100-derived estimate if the API call fails.
- Breadth. The % of top-100 tokens with positive 7d change.
- Volatility proxy. Average absolute value of 24h % changes across the top-100.
Classification. heuristic baseline
Before any AI runs, we compute a deterministic baseline label from the data so the dashboard never shows an empty state:
Volatility and risk are derived from the same inputs:
AI refinement (optional)
If ANTHROPIC_API_KEY is configured, we pass the same numeric inputs to Claude with a tight prompt asking for the label and a one-sentence read. Claude can re-label between the same five categories but never invents new ones. If the response is malformed, we fall back to the heuristic. the dashboard never breaks because the AI did.
The one-liner you see at the top of the dashboard ("Selective positioning rewarded, momentum confirming" etc.) is always written by Claude when available, falling back to a static per-label sentence otherwise.
Refresh cadence + caching
Regime is cached for 10 minutes. The cron-generated daily brief uses the same shared cache so two requests in the same window get the same label without re-running the model. Regime can change between requests, but rarely within minutes.
What this does NOT do
- Predict the next regime change. only labels the current state.
- Use technical indicators (RSI, MACD, etc.). we don't think these add signal at the regime level.
- Use order-book or options data. out of scope for v1.
- Personalize the regime to a user. same label for everyone.