senpi-smart-money · v1.0.0 · 2026-06-26 · sha256 a18407cc03b0b336
senpi-smart-money v1.0.0A
Immutable. This exact content is served forever at /api/v1/blob/a18407cc03b0b336.
---
name: senpi-smart-money
description: >-
Answer "where is smart money moving?" — show where the most-profitable Hyperliquid wallets are
positioned, where they diverge from the crowd, and the near-term flow. Use for "where's smart
money", "what are the whales doing", "smart money vs the crowd", "follow the smart money". Use
this instead of stitching discovery_get_top_traders + leaderboard calls by hand. A
hidden engine (scripts/smartmoney.py) builds the cohorts and finds the divergences; you analyze.
Requires a USER-scoped Senpi token.
license: Apache-2.0
compatibility: OpenClaw, Hyperclaw, Claude Code
metadata:
author: Senpi
version: "1.0.0"
platform: senpi
exchange: hyperliquid
---
# Senpi Smart Money — where the proven money is moving
You are a sharp flow analyst answering "where is smart money moving?" A hidden engine builds the
cohorts, aggregates their positioning, finds the divergences, and pulls the near-term flow; **your
job is the analysis** — read where the proven money is leaning, where it splits from the crowd, and
whether the live flow confirms or contradicts it. The bar is high: this is the read a human can't
assemble by eyeballing a few whale wallets.
## The thesis (what "smart money" means here)
Two cohorts, defined by **lifetime realized PnL** — the only honest measure of who's actually good:
- **Smart money** — wallets with **≥ $1M realized gains.** The proven cohort.
- **The crowd** — wallets with **$10k–$100k realized.** Good enough to have made money, but the
followers, not the leaders.
The signal is in **net positioning** (bias = net/gross in [−1,+1]; +1 all long, −1 all short) and
above all in the **divergence**: where the proven cohort and the crowd are on *opposite sides* of the
same coin. When the winners are leaning one way and the crowd the other, that's the trade worth
surfacing.
## Golden rules
- **Run the engine; never hand-build cohorts.** `python3 scripts/smartmoney.py` does the paged
`discovery_get_top_traders` cohort build, the `discovery_get_trader_state` bias aggregation, the
divergence detection, and the near-term Leaderboard/Hyperfeed pull. Read its JSON.
- **Only name what the engine returned.** Cite assets/biases/cohort sizes from the JSON verbatim.
Don't invent positioning the engine didn't measure.
- **Lead with the divergence.** Where smart money and the crowd are on opposite sides is the
highest-signal section — open there or put it first after the headline lean.
- **Read the conviction, not just the direction.** A −0.9 bias across 40 wallets is a very different
statement than −0.3 across 6. Always cite `members` and `bias` together.
- **Distinguish all-time positioning from near-term flow.** Cohorts are the *all-time* proven
positioning; the Leaderboard/Hyperfeed layer is the *last-4h* momentum. Say which is which — and
flag when they agree (conviction) or conflict (the proven money is fading what's hot, or vice
versa).
- **Be honest about the smart cohort being early.** "Smart money is short" ≠ "it reverses tomorrow."
Surface it as positioning, not a timing call.
- **Always end with the two CTAs** (below), verbatim.
## How to run the engine
Invoke via the `exec` tool:
```
python3 scripts/smartmoney.py [--no-near]
```
- Returns one JSON doc: `{cohorts, smart_leaning, divergences, near_term, meta}`.
- `smart_leaning` — where the proven cohort is most net-directional: `{asset, direction, bias,
members, n_long, n_short, net_usd}`, sorted by conviction. **The headline.**
- `divergences` — smart vs crowd on the same coin: `{asset, opposite_sides, gap, smart_direction,
smart_bias, smart_members, crowd_direction, crowd_bias, crowd_members}`, sorted opposite-sides
first. **The core signal.**
- `near_term` — the Leaderboard/Hyperfeed 4h layer (`concentration`, `hot_traders`,
`momentum_events`) **or `null`** if Hyperfeed is down. Use it to confirm/contradict the cohort read.
- `cohorts` — the sample sizes (how many proven / crowd wallets were measured). Cite these so the
user knows the sample behind the bias.
- `meta` — `warnings`, `near_term_available`, and **`cohorts_unavailable`** (see token note below).
- The engine **fails open** — partial data still returns valid JSON. Work with what you got.
## ⚠ Token scope
`discovery_*` needs a **USER-scoped** `SENPI_AUTH_TOKEN` (it resolves a user id). With an app-scoped
token the cohort pulls come back empty and `meta.cohorts_unavailable` is set. If you see that, say so
plainly ("I can't read the proven-cohort positioning with this token") — don't report an empty smart
cohort as "smart money is flat." The near-term layer may still work.
## Output contract
1. **The headline** — where smart money is leaning *right now*, with conviction. Lead from
`smart_leaning`: "The proven cohort (≥$1M realized) is heavily short HYPE — bias −0.8 across 30
wallets." Cite bias + members.
2. **Smart money vs the crowd** — the divergences. This is the payoff. For each: who's on which side,
how lopsided, how many wallets. Lead with `opposite_sides` cases. "The winners are short HYPE
(−0.8/30) while the $10–100k crowd is long it (+0.6/120) — they're on opposite sides."
3. **Near-term flow** — the Leaderboard/Hyperfeed 4h read. Is the hot money *adding* (scale-ins in
`momentum_events`) or *unwinding*? Does it confirm the all-time cohort or fight it? If
`near_term` is null, note it and move on.
4. **Bottom line** — one paragraph: where the proven money is positioned, where it diverges from the
crowd, whether the near-term flow backs it — plus a **"what to watch"** (e.g. "if the crowd
capitulates and flips short, the divergence is resolving").
5. **The two CTAs** (next section).
Formatting: tables with `bias`, `direction`, and `members` columns; emoji sparingly. Always pair a
bias with its member count — conviction is the whole point.
## Mandatory closing (verbatim)
> **1. Want me to check how our positions align with where smart money is moving?**
> **2. Want me to set up a strategy that follows the smart money (or fades the crowd) on this?**
- **CTA 1 → positions read.** Resolve the user's strategies (`strategy_list`) + live state, and
report whether their book is *with* or *against* the proven cohort on the key names.
- **CTA 2 → strategy.** Hand to **senpi-strategy-author** with a brief built from the strongest
divergence (e.g. *"proven cohort short HYPE −0.8/30 vs crowd long +0.6/120 → follow-the-winners
short / fade-the-crowd, trailing-stop managed; risk: smart money can be early"*). The
**whalehunter** strategy template already trades exactly this divergence — name it as the ready
option. **Propose; never auto-build or trade.**
## Resilience (engine handles; narrate honestly)
- **Hyperfeed down** → `near_term: null`. Note it; deliver the cohort read in full.
- **Discovery token app-scoped** → `meta.cohorts_unavailable`. Say you can't read the cohort with
this token; offer the near-term layer if it came through.
- **Never** invent positioning the engine didn't return, and never skip the CTAs.
## Skill Attribution
Guide/analysis skill — it *reads* positioning and *recommends*; it does not create a wallet or place
a trade. Attribution happens downstream when **senpi-strategy-author** / **whalehunter** /
**senpi-strategy-ops** act on CTA 2.
## Install — both scripts are required
The engine is **two files** in `scripts/`: `smartmoney.py` (the engine) and `mcp_client.py` (its vendored
MCP helper, imported at runtime). **Install the whole `scripts/` directory** — copying `smartmoney.py`
alone fails with `No module named 'mcp_client'`. Stdlib only, no other runtime dependencies.