fear-divergence-scout
# fear-divergence-scout This Claude Code skill identifies high-conviction cryptocurrency assets defying broad market capitulation when the Fear & Greed Index falls below 25. It scans memory-stored market context data to locate assets with positive or near-zero seven-day returns while Bitcoin and Ethereum decline sharply, extracts their structural catalysts from the active narratives store, and generates a brief conviction setup summary. Use it during market fear episodes to surface divergence signals with institutional or regulatory tailwinds that conventional analysis overlooks.
git clone --depth 1 https://github.com/aaronjmars/aeon /tmp/fear-divergence-scout && cp -r /tmp/fear-divergence-scout/skills/fear-divergence-scout ~/.claude/skills/fear-divergence-scoutSKILL.md
Today is ${today}. If `soul/` files exist, read `soul/SOUL.md` and `soul/STYLE.md` before writing any output.
## Why this skill exists
`market-context-refresh` runs daily and keeps `memory/topics/market-context.md` fresh. But no skill acts on that data to find the **divergence signal** — the assets defying broad market fear. During capitulation episodes (F&G < 25), assets that stay green or lose far less than BTC/ETH often have structural catalysts: institutional rails locking in, perp DEX volume migration, regulatory clarity events. These are the highest-conviction setups. This skill surfaces them daily when the condition is live.
No external API calls needed — all data comes from memory, already updated by upstream skills.
## Steps
### 1. Read market context
Read `memory/topics/market-context.md`. Extract:
- **Date line** — "as of YYYY-MM-DD" at the top. If the file date is more than 2 days before today, note it as STALE (still run, but flag it).
- **Fear & Greed index** — parse the line `Fear & Greed: {number} ({label})`. Extract the number.
- **BTC 7d %** — from the BTC line, e.g. `BTC $67,103 (-3.86% 24h, -11.38% 7d)`. Extract the 7-day number.
- **ETH 7d %** — same pattern.
- **Today's Notable Movers section** — every bullet with asset name, 24h %, 7d % (if present), and narrative note.
- **Trending Coins section** — every bullet.
- **Active Narratives section** — every bullet with phase label (rising, rising fast, peak, digesting, etc.).
If `memory/topics/market-context.md` doesn't exist, log `FEAR_DIVERGENCE_SKIP: no market-context.md — enable market-context-refresh first` and stop.
### 2. Check trigger condition
If Fear & Greed >= 25:
- Log `FEAR_DIVERGENCE_SKIP: F&G {N} ({label}) — above threshold` to `memory/logs/${today}.md`
- Stop here. Do not notify.
If Fear & Greed < 25: continue.
### 3. Identify diverging assets
Define market baseline as BTC 7d % (e.g., -11.38% 7d).
From the Notable Movers + Trending Coins sections, classify each asset:
**Diverging (worth surfacing):**
- Any asset with POSITIVE 7d % when BTC 7d < -5%
- Any asset with 7d % within 4 percentage points of zero when BTC 7d < -5% (i.e., losing far less than the market)
- Any asset with POSITIVE 24h % when BTC 24h < -3%
**Not worth surfacing:**
- Stablecoins (USDT, USDC, USDS, DAI)
- Assets with no discernible narrative catalyst (pure noise movers)
For each diverging asset, extract:
- % performance vs BTC baseline
- Its narrative from the Active Narratives section (or from its bullet description)
If zero assets qualify as diverging: log `FEAR_DIVERGENCE_SKIP: F&G {N} — no assets diverging significantly from BTC` and stop.
### 4. Synthesize catalysts
For each diverging asset, look for a catalyst explanation:
- Check the Active Narratives section for a matching entry (e.g., "Perp DEX dominance — HYPE")
- Check the asset's own bullet description in Notable Movers
- Check `memory/topics/beat-tracker.md` if it exists — active beats may explain continued momentum
- If no clear catalyst is found, note "catalyst unclear" — don't invent one
Look for patterns across diverging assets:
- Are they all in the same sector (privacy, RWA, infrastructure, perp DEX)?
- Do they share a macro thesis (institutional, regulatory clarity, structural utility)?
- Is there a broader observation (e.g., "assets people actually USE are outperforming assets people just hold")?
### 5. Write the output
Write a brief synthesis to `.pending-notify-temp/fear-divergence-scout-${today}.md`:
**Format — the operator's voice (soul files). Punchy. No hedging. State observation first, explanation after. Under 600 chars.**
```
fear divergence — ${today}
F&G {N} (extreme fear). BTC {7d %}% 7d.
holding up:
{forEach diverging_asset}
- {TICKER} {performance_summary} — {one-line catalyst}
{end}
{IF pattern_observation}
{pattern observation — one punchy sentence}
{end}
{IF stale_data_warning}
⚠️ market-context.md is {N}d old — refresh may be needed
{end}
read it: https://github.com/aaronjmars/aeon/blob/main/skills/fear-divergence-scout/SKILL.md
```
**Voice guidelines for catalysts:**
- "perp DEX eating CEX volume. structural, not bounce."
- "DTCC rails catalyst locked in. institutional, not retail."
- "SEC closure + ETF filing. regulatory clarity event."
- Don't write "appears to be" or "may indicate" — state the catalyst directly if known, say "catalyst unclear" if not
- No corporate hedging. No "it's worth noting that..."
### 6. Send notification
Run:
```bash
./notify -f .pending-notify-temp/fear-divergence-scout-${today}.md
```
### 7. Update memory
Append to `memory/topics/market-context.md` a new section `## Fear Divergence — ${today}` (or update if it exists) with:
```markdown
## Fear Divergence — ${today}
- **F&G:** {N} ({label})
- **BTC 7d:** {%}
- **Diverging:** {asset1} ({perf}), {asset2} ({perf}), ...
- **Pattern:** {pattern_observation or "none identified"}
```
### 8. Log
Append to `memory/logs/${today}.md`:
```markdown
## Fear Divergence Scout
- **F&G:** {N} ({label})
- **BTC 7d:** {%}
- **Diverging assets found:** {N} — {list}
- **Pattern:** {one-liner or "none"}
- **Notification:** sent
- FEAR_DIVERGENCE_SCOUT_OK
```
If skipped:
```markdown
## Fear Divergence Scout
- FEAR_DIVERGENCE_SKIP: {reason}
```
## Required Env Vars
None. All reads from local `memory/` files. Notification via `./notify` (reads TELEGRAM/DISCORD/SLACK secrets internally).
## Sandbox Note
No external network calls. All data comes from `memory/topics/market-context.md` (written by `market-context-refresh`) and `memory/topics/beat-tracker.md` (if available). Notification via `./notify -f` — use the `-f` flag, not inline multi-line argv (the sandbox trips on long multi-line arguments).
## Trigger Logic Summary
| Condition | Action |
|-----------|--------|
| F&G >= 25 | Skip silently (`FEAR_DIVERGENCE_SKIP`) |
| F&G < 25, no diverging assets | Skip silently |
| F&G < 25, ≥1 diverging asset | Synthesize + notify |
| market-context.md staMention/keyword sweep on social platforms for [REPLACE: KEYWORDS] — trends, sentiment, top posts
5 concrete real-life actions, leverage-scored against open loops with specificity and anti-fluff gates
Curated AI-agent tweets, clustered into narratives with insight summaries
Tracker of AI agent substitution signals — which roles, companies, and industries show real headcount displacement. Named roles + real deployments only.
Competitive-intelligence digest on the AI agent framework space — momentum, releases, breaking changes across a curated watchlist
Cross-domain market pulse from AIXBT's free grounding endpoint — crypto, macro, tradfi, geopolitics. Refreshes taxonomy references (clusters, chains) as a bonus.
Pre-batch API provider health check — detects credit exhaustion or auth failure for every configured provider key before the scheduled batch runs, giving the operator a window to act before skills degrade
List a wallet's live ERC-20 token approvals on Base and flag unlimited / risky spender grants. Keyless via Base RPC (eth_getLogs + eth_call) — no explorer key needed.