emerging-movers▌
senpi-ai/senpi-skills · updated Apr 8, 2026
Tracks Smart Money market concentration across all Hyperliquid assets and flags assets accelerating up the ranks before they become crowded top-3 plays. By the time an asset hits the top of the SM leaderboard, the easy money is gone. This catches the trajectory.
Emerging Movers Detector v3.1
Tracks Smart Money market concentration across all Hyperliquid assets and flags assets accelerating up the ranks before they become crowded top-3 plays. By the time an asset hits the top of the SM leaderboard, the easy money is gone. This catches the trajectory.
One API call per scan. Near-zero LLM tokens. Runs every 60 seconds.
How It Works
The SM Profit Concentration Leaderboard
Senpi's leaderboard_get_markets returns all assets ranked by percentage of total Smart Money profit in the last 4-hour rolling window. This isn't trader count — it's where the money is actually flowing.
#1 ETH SHORT 31.4% 286 traders
#2 BTC SHORT 25.1% 436 traders
#3 HYPE SHORT 24.2% 330 traders
...
#36 ASTER SHORT 0.2% 18 traders ← 60s later: #13, 0.82%, 65 traders
The script tracks this leaderboard over time and detects acceleration.
Detection Signals
Immediate Action Signals (v3+)
| Signal | Condition | Priority |
|---|---|---|
| IMMEDIATE_MOVER | 10+ rank jump from #25+ in ONE scan | Highest — act now |
| NEW_ENTRY_DEEP | Appears in top 20 from nowhere | Very high |
| CONTRIB_EXPLOSION | 3x+ contribution increase in one scan | Very high |
| DEEP_CLIMBER | 5+ rank jump from #25+ | High |
Trend Signals
| Signal | Condition |
|---|---|
| NEW_ENTRY | First appearance in top 50 |
| RANK_UP | Jumped 2+ positions in one scan |
| CLIMBING | 3+ positions up over several scans |
| ACCEL | Contribution % increasing scan-over-scan |
| STREAK | Consistently climbing every check |
| VELOCITY | Sustained positive contribution growth |
v3.1 Quality Filters
These prevent false IMMEDIATE signals that looked great on rank jump alone but failed on execution:
| Filter | Rule | Rationale |
|---|---|---|
| Erratic rank | >5 rank reversals in history → erratic: true, downgraded |
Bouncing ranks are noise |
| Velocity gate | contribVelocity < 0.03 → lowVelocity: true, excluded from IMMEDIATE |
No momentum behind the move |
| Trader count floor | <10 traders → SKIP IMMEDIATE | Single whale risk |
| Max leverage check | max leverage < 10x → SKIP | Not worth the limited position sizing |
See references/quality-filters.md for implementation details and real-world examples.
Architecture
┌────────────────────────────────────┐
│ Cron: every 60 seconds │
├────────────────────────────────────┤
│ scripts/emerging-movers.py │
│ • Loads scan history from JSON │
│ • Fetches leaderboard (1 API call) │
│ • Parses top 50 markets │
│ • Compares with previous scans │
│ • Detects signals + v3.1 filters │
│ • Saves updated history │
│ • Outputs JSON with alerts │
├────────────────────────────────────┤
│ Agent reads output: │
│ • IMMEDIATE alerts → evaluate now │
│ • Deep climbers → queue for review │
│ • No alerts → silent │
└────────────────────────────────────┘
Files
| File | Purpose |
|---|---|
scripts/emerging-movers.py |
Scanner script |
emerging-movers-history.json |
Auto-managed scan history (last 60 scans) |
max-leverage.json |
Optional: asset max leverage reference |
Output
See references/output-schema.md for the complete JSON schema.
Key top-level fields: alerts[], topMovers[], immediateMovers[], deepClimbers[], scanCount, timestamp.
Per-alert fields: asset, direction, rank, prevRank, contribution, traderCount, reasons[], contribVelocity, isImmediate, isDeepClimber, erratic, lowVelocity.
Cron Setup
*/1 * * * * python3 scripts/emerging-movers.py
Agent Response Logic
isImmediate: true+erratic: false+lowVelocity: false→ Evaluate immediately for entry via ScannerisDeepClimber: true→ Queue for next scanner runerratic: trueorlowVelocity: true→ Log but do not act- No alerts → Silent
Companion skills
- opportunity-scanner — use Scanner to deep-dive assets flagged by Emerging Movers
- autonomous-trading — full loop integrating Emerging Movers as entry trigger
- wolf-strategy — uses IMMEDIATE_MOVER as primary entry signal