Live: dune.com/za_chain/defi-protocol-radar-1 Dashboard ID: 216253
Compare Uniswap, Aave, Lido, Maker, and Curve on one screen — eight axes, ghost trails, a 0–100 Health Index, and an audit vault. Built for curious readers and serious capital allocators.
Collapse the Dune sidebar. Dark mode recommended.
Protocol Signal Lab / DeFi Protocol Radar is a Dune dashboard that answers one question in five seconds:
Which protocol is healthiest right now, and is the set Weak / Soft / Strong / Hot vs its own recent history?
It does not invent TVL leaderboards or Twitter narratives. It builds an eight-axis radar per protocol, scores each day with shoelace polygon area, then ranks today's combined sector strength as a percentile over ~120 days. That percentile is the Health Index (0–100).
| Zone | What you look at | What you learn |
|---|---|---|
| Crown | Spider radar + ghosts + gray sector average | Who is strongest now across Liquidity · Efficiency · Revenue · Users · Health · Stickiness · Momentum · Whale |
| Scoreboard | Who Leads · Health Index · Momentum · Market Pulse · Anomaly | Plain-language headlines (e.g. 68 · Strong, Rising, Calm, STEADY) |
| Story | Rising/Softening · Current band · Health Index over time | Is the set getting healthier? Where does today sit in Weak/Soft/Strong/Hot? |
| Context | One-axis bar chart | Why the Crown looks that way — pick Liquidity, Whale, etc. |
| Vault | Glossary · Audit matrix · Heartbeat | Definitions, raw 0–1 scores, chain tip as Last block · Queried · Freshness |
Health Index bands (fixed):
| Band | Range |
|---|---|
| Weak | 0–24 |
| Soft | 25–49 |
| Strong | 50–74 |
| Hot | 75–100 |
Formula (product truth — do not invent):
sector_area(day) = SUM(protocol radar shoelace areas)
health_index = ROUND(100 * PERCENT_RANK() OVER (ORDER BY sector_area), 0)
sector_area_raw on the Health Index query is the pre-percentile shoelace sum for auditors.
Caller wants → Clone SQL → Fork on Dune → Keep Crown→Vault layout → Ship
| Path | Role |
|---|---|
README.md |
This page — GitHub audience entry |
sql/ |
Live-synced DuneSQL (query ID in filename) |
docs/architecture.md |
Pipeline, zones, ownership |
docs/sql-cte-pipeline.md |
CTE chain from raw trades → scores |
docs/widget-query-map.md |
Widget ↔ viz ↔ query IDs |
docs/health-index.md |
Math, bands, chart encoding |
docs/parameters.md |
Filter params + re-link notes |
docs/visual-intelligence.md |
VI layout + 5-second story |
docs/color-palette.md |
UI-only hex (no SQL color columns) |
docs/mcp-limitations.md |
What MCP can/can't do |
docs/changelog.md |
Ship history |
docs/live-dashboard-snapshot.json |
MCP fetch of live layout |
assets/ |
Embeds / palette notes |
CONTRIBUTING.md |
Fork-adapt on Dune |
LICENSE |
MIT |
| Query ID | Name | Zone |
|---|---|---|
| 7995136 | Master Data Pipeline | Crown |
| 7997414 | Health Scoreboard | Scoreboard |
| 7997418 | Volatility Sentinel | Scoreboard |
| 7997419 | Health Index Timeline | Story |
| 8034055 | Trend + Health Band | Story |
| 7997415 | Axis Breakdown | Context |
| 7997416 | Protocol Audit Matrix | Vault |
| 7995854 | Chain Sync Status | Vault |
SQL files live under sql/ as {queryId}-{slug}.sql.
- Visual Intelligence — First 5 seconds = Crown + Health Index band. Zones named like a terminal, not a dashboard of cards.
- Anti-slop — Plain words (
Rising/Softening,Weak/Hot). No "robust synergy" copy. No hex columns in SQL. - pstack (architect) — Module boundaries: raw → z-score → polar → shoelace → Health Index → widgets. Usage written before structure. Scrap wrong shapes (e.g. cryptic
0.5/UP/HOTcodes) and replace with readable scoreboard strings.
- Open the live dashboard.
- Fork queries from
sql/into your Dune account. - Rebuild widgets in Crown → Scoreboard → Story → Context → Vault order (see
docs/visual-intelligence.md). - Set series colors in the Dune UI — MCP cannot set hex (
docs/color-palette.md). - After any
updateDashboardAPI save, re-link params (docs/parameters.md).
Full fork notes: CONTRIBUTING.md.
dex.trades— Uniswap, Curvelending.supply— Aave, Maker (via spark mapping in pipeline)lido_ethereum.steth_evt_submitted— Lidoethereum.blocks— Heartbeat freshness
Proxy metrics (fees, TVL heuristics) are documented in SQL headers. Treat scores as relative within the selected set, not absolute USD truth.