Free SKILL.md scraped from GitHub. Clone the repo or copy the file directly into your Claude Code skills directory.
npx versuz@latest install senpi-ai-senpi-skills-bald-eaglegit clone https://github.com/Senpi-ai/senpi-skills.gitcp senpi-skills/SKILL.MD ~/.claude/skills/senpi-ai-senpi-skills-bald-eagle/SKILL.md---
name: bald-eagle-strategy
description: >-
BALD EAGLE v5.0 — XYZ Contrarian Fader (senpi_runtime_helpers). Counter-
trades SM consensus on 6 high-liquidity XYZ macro assets (CL, BRENTOIL,
GOLD, SILVER, SP500, XYZ100) when SM concentration is high AND the 4h
move is exhausting. Plumbing-only migration from v4.1: producer pushes
signals via SenpiClient.push_signal, runtime owns execution + daily caps
+ cooldowns + drawdown halt + DSL exits. Thesis preserved verbatim.
license: MIT
metadata:
author: jason-goldberg
version: "5.0"
platform: senpi
exchange: hyperliquid
requires:
- senpi-trading-runtime>=1.1.0
- senpi_runtime_helpers
---
# BALD EAGLE v5.0.0 — XYZ Contrarian Fader
## v5.0.0 (2026-05-12) — plumbing-only migration
NO thesis change. v4.1 scoring, 6-asset universe, conviction-scaled
leverage (5x/7x), XYZ-tuned wide DSL, contrarian flip, spread gate,
600s stale-order auto-purge — all preserved verbatim. Migration:
mcporter → SenpiClient, scanner-side `create_position` → producer
`push_signal()` with LLM-gated runtime action, Python state files
for daily cap → `runtime.yaml risk.guard_rails`, MARKET exits →
FEE_OPTIMIZED_LIMIT, openclaw cron → `producer_daemon` (5min).
Bald Eagle is the only Senpi agent trading commodities, indices, and
equities on Hyperliquid. It fades retail/SM consensus on macro assets
when the move is exhausting — when oil is up 2%+ over 4h and SM is
piled in long, Bald Eagle shorts the exhaustion.
## Thesis
XYZ macro assets (oil, brent, gold, silver, SP500, XYZ100) on
Hyperliquid attract directional momentum traders who load up after a
clean 1-3% intraday move. By the time SM concentration crosses 10-20%
on a 4h-extended move, the trade is almost always exhausted —
mean reversion is the positive-edge play.
Bald Eagle scans the 6 deepest XYZ markets every 5 minutes. When SM
is concentrated (≥3%, ≥5 traders), and the 4h move is in the SM
direction, and contribution velocity confirms SM is still piling in,
Bald Eagle pushes a signal in the OPPOSITE direction. Wide DSL
(360-480min hard timeout, 12% retrace) gives commodities time to
mean-revert.
## Tracked assets
| Token | Surface | Why |
|---|---|---|
| CL | xyz | Crude oil — deepest SM signal (181 traders) |
| BRENTOIL | xyz | Brent crude — 166 traders |
| GOLD | xyz | 26 traders, slow but real |
| SILVER | xyz | 42 traders |
| SP500 | xyz | S&P 500 — 35 traders |
| XYZ100 | xyz | Nasdaq-100 — 50 traders |
XYZ macro assets trade 24/7 on Hyperliquid (no market-hours gating).
Oil is especially active during geopolitical risk windows.
## Pipeline
```
1. fetch SM data from leaderboard_get_markets (xyz dex only)
2. for each token in TRACKED_XYZ:
- skip if held / on cooldown
- score using all contributors (SM concentration, trader depth,
contribution velocity 1h/4h, 4h price alignment, 4h move
exhaustion, 1h momentum, 4h trend structure, volume trend,
funding alignment)
- if score >= 8, check spread (hard gate, <0.1%)
- if pass: flip direction (contrarian)
3. push best candidate via SenpiClient.push_signal
4. runtime LLM gate (EAGLE_DECISION_MODEL) honors signal, opens
FEE_OPTIMIZED_LIMIT MAKER position with conviction-tiered leverage
5. DSL manages exit (RatchetStop tiers + Phase 1 retrace 12%)
```
## Scoring (v4.1 preserved verbatim)
| Signal | Points |
|---|---|
| SM concentration ≥20% | +4 |
| SM concentration ≥10% | +3 |
| SM concentration ≥5% | +2 |
| SM concentration ≥3% | +1 |
| Trader depth ≥100 | +2 |
| Trader depth ≥30 | +1 |
| Contribution surge 1h (>5%) | +2 |
| Contribution rising 1h (>2%) | +1 |
| Contribution sustained 4h | +1 |
| 4H price aligned (≥0.5% SM direction) | +2 |
| 4H price positive in SM direction | +1 |
| 4H price opposing | -1 |
| DEEP_EXHAUSTION (4h ≥2% in SM direction) | +2 |
| EXHAUSTION (4h ≥1% in SM direction) | +1 |
| 4H trend structure aligned | +2 |
| 4H trend opposing | -1 |
| 1H momentum aligned | +1 |
| Volume rising | +1 |
| Funding aligned | +1 |
**MIN_SCORE 8.** Max plausible ~20. The spread gate (<0.1%) remains
the only hard gate — it's an execution-quality filter, not thesis.
## Leverage (conviction-scaled, XYZ caps)
| Score | Leverage |
|---|---|
| 8-9 | 5x |
| 10+ | 7x |
XYZ caps lower than crypto (no 10x). Macro reversals need room to
develop — high leverage punishes the wait.
## DSL — XYZ-tuned wide timings (preserved from v4.1)
| Setting | Value |
|---|---|
| `hard_timeout` | 480 min (8h) |
| `weak_peak_cut` | 240 min (4h), min 3.0% |
| `dead_weight_cut` | 120 min (2h) |
| `phase1.max_loss_pct` | 25% |
| `phase1.retrace_threshold` | 12% |
| `phase1.consecutive_breaches_required` | 1 (v2 single-breach) |
### Phase 2 RatchetStop ladder
| Trigger | Lock |
|---|---|
| +5% ROE | 0% |
| +10% | 20% |
| +20% | 35% |
| +30% | 50% |
| +50% | 70% |
| +75% | 85% |
Exits use FEE_OPTIMIZED_LIMIT with `ensure_execution_as_taker: true`
(60s) — exits must fill. Entries use MAKER (contrarian fades can wait).
## Key parameters
| Parameter | Value |
|---|---|
| Universe | 6 XYZ macro assets |
| Slots | 2 |
| Margin per slot | $250 |
| Margin per trade | 40% of equity |
| MIN_SCORE | 8 |
| Leverage | 5x / 7x (conviction-scaled) |
| Spread gate | <0.1% |
| Max entries/day | 4 |
| Daily loss limit | 10% |
| Per-asset cooldown | 360 min (6h) |
| Drawdown halt | 25% |
| Tick interval | 5 min |
| Entry order type | FEE_OPTIMIZED_LIMIT (MAKER) |
| Exit order type | FEE_OPTIMIZED_LIMIT (taker, 60s) |
## v4.1 hardening preserved
- `has_resting_orders()` with 600s stale-cancel auto-purge on both
default + xyz dex (reduce-only orders skipped; those are DSL legs)
- `dex="xyz"` propagated through every market_get_asset_data call
- XYZ-prefixed asset names ("xyz:CL") in coin field
## Files
| File | Purpose |
|---|---|
| `scripts/eagle-producer.py` | v5.0 helpers-native producer (5min daemon) |
| `scripts/eagle_config.py` | SenpiClient wrapper + state helpers |
| `config/bald-eagle-config.json` | Wallet, strategyId, chatId |
| `runtime.yaml` | Plugin runtime (position tracker + eagle_signals + eagle_entry + DSL exit) |
## Critical agent rules
1. **Install path** is `/data/workspace/skills/bald-eagle-strategy/`
2. **The producer DOES NOT enter positions** — it pushes signals;
runtime owns execution
3. **The producer DOES NOT exit positions** — DSL handles every exit
4. **Thesis is FADING, not following** — Bald Eagle trades OPPOSITE
to SM consensus by design
5. **Spread gate (<0.1%) is the only producer-side hard gate**
6. **6-asset universe is fixed** — adding tokens without verifying
SM depth (≥5 traders) is a thesis change
7. **Verify runtime on every session start**
## Changelog
### v5.0.0 (2026-05-12) — helpers-native migration
- Producer replaces scanner; `producer_daemon` replaces openclaw cron
- `SenpiClient.push_signal()` replaces inline `create_position`
- Runtime owns daily cap, drawdown halt, cooldowns (`risk.guard_rails`)
- Exits flipped MARKET → FEE_OPTIMIZED_LIMIT (taker, 60s)
- v2 DSL single-breach (`consecutive_breaches_required: 1`)
- fcntl reentrancy guard dropped (producer_daemon owns lock)
- Thesis, scoring, 6-asset universe, leverage tiers, DSL timings,
spread gate, has_resting_orders: PRESERVED VERBATIM
### v4.1 (2026-05-05)
- Added `has_resting_orders()` 600s stale-cancel guard
### v4.0 (2026-04-10)
- CONTRARIAN FLIP — fade SM consensus on XYZ macro assets
- Move-exhaustion bonus tuned for XYZ (1-2% bands)
- MIN_SCORE 8, leverage capped 7x
### v3.0 (2026-04-06)
- Focused 6-asset universe, conviction-scaled leverage, wide DSL
---
## Skill Attribution
When creating a strategy, include `skill_name` and `skill_version` in
the call. See `references/skill-attribution.md` for details.