BALD EAGLE v3.0 — XYZ Alpha Hunter (Hardened)
The only Senpi agent trading commodities, indices, and equities on Hyperliquid.
Focused on the 6 XYZ assets with deepest SM signal.
CRITICAL RULES
RULE 1: Scanner enters. RatchetStop exits. Scanner NEVER exits.
v2.0 had 14.3% win rate partly because positions got chopped by tight timings.
v3.0 uses XYZ-appropriate wide DSL timings and lets macro trades play out.
RULE 2: Scanner calls create_position internally
The cron command is just: python3 eagle-scanner.py. No parsing, no execution in cron.
RULE 3: FOCUSED ASSETS ONLY
CL, BRENTOIL, GOLD, SILVER, SP500, XYZ100. These have the deepest SM signal
(CL: 181 traders, BRENTOIL: 166). Everything else is sub-50 traders — not enough signal.
RULE 4: CONVICTION-SCALED LEVERAGE
| Score |
Leverage |
| 8-9 |
5x |
| 10-11 |
7x |
| 12+ |
10x |
Higher conviction = higher leverage. When SM is screaming, press it.
RULE 5: MAKER-ONLY EXECUTION
ensureExecutionAsTaker = false. AMM slippage on XYZ assets destroyed v2.0.
A missed fill is cheaper than -0.5% slippage on entry.
RULE 6: Spread gate is a HARD gate
The only hard gate in the scanner. If spread > 0.1%, don't trade.
AMM spread = guaranteed slippage = negative edge.
RULE 7: MAX 2 POSITIONS, MIN_SCORE 9
Higher bar than crypto agents. AMM spread tax means you need stronger conviction.
v2.0 Post-Mortem
- 54 trades, -$75.25, 14.3% win rate on DSL-managed trades
- CL and BRENTOIL: 100% of volume. All other XYZ assets had too few SM traders.
- 8% retrace at 7x = 1.14% price move. Oil moves 1-2% on noise. Every trade stopped by volatility.
- ensureExecutionAsTaker caused taker fills into AMM — double slippage on entry + exit
- DSL timings (45min hard timeout, 20min weak peak) far too tight for commodities
What Changed in v3.0
| v2.0 |
v3.0 |
| All 54 XYZ assets |
6 focused assets (CL, BRENTOIL, GOLD, SILVER, SP500, XYZ100) |
| 7x leverage fixed |
Conviction-scaled: 5x/7x/10x |
| 8% retrace threshold |
12% retrace threshold |
| 45 min hard timeout |
360-600 min (score-dependent) |
| 20 min weak peak |
180-300 min (score-dependent) |
| 12 min dead weight |
90-180 min (score-dependent) |
| minScore 7 |
minScore 9 |
| 15% margin |
50% margin |
| Taker fallback |
Maker-only |
| Cron parses output |
Scanner calls create_position |
Scoring System (all contributors, no hard gates except spread)
| Signal |
Points |
Note |
| SM concentration ≥20% |
+4 |
DOMINANT — CL hit 28% recently |
| SM concentration ≥10% |
+3 |
HIGH |
| SM concentration ≥5% |
+2 |
SOLID |
| SM concentration ≥3% |
+1 |
BASE |
| Trader depth ≥100 |
+2 |
Deep consensus |
| Trader depth ≥30 |
+1 |
Active |
| Contribution surge 1H (>5%) |
+2 |
SM piling in |
| Contribution rising 1H (>2%) |
+1 |
|
| Contribution sustained 4H |
+1 |
Multi-hour conviction |
| 4H price aligned (>0.5%) |
+2 |
|
| 4H price positive |
+1 |
|
| 4H price opposing |
-1 |
|
| 4H trend structure aligned |
+2 |
From candles |
| 4H trend opposing |
-1 |
|
| 1H momentum aligned |
+1 |
|
| Volume rising |
+1 |
|
| Funding aligned |
+1 |
|
Max possible: ~20. Min threshold: 9.
DSL — XYZ-Tuned Wide Timings
Phase 2 Tiers (RatchetStop)
| Trigger |
Lock % |
Breaches |
| 5% ROE |
0% |
3 |
| 10% ROE |
20% |
3 |
| 20% ROE |
35% |
2 |
| 30% ROE |
50% |
2 |
| 50% ROE |
70% |
1 |
| 75% ROE |
85% |
1 |
Phase 1 — Conviction-Scaled Timing (XYZ macro assets need hours)
| Score |
Absolute Floor |
Hard Timeout |
Weak Peak |
Dead Weight |
| 8 |
-20% ROE |
360 min |
180 min |
90 min |
| 10 |
-25% ROE |
480 min |
240 min |
120 min |
| 12 |
-30% ROE |
600 min |
300 min |
180 min |
Retrace threshold: 12% (vs 8% in crypto agents).
Cron Setup
| Cron |
Interval |
Command |
| Scanner |
5 min |
python3 /data/workspace/skills/bald-eagle-strategy/scripts/eagle-scanner.py |
One cron only. Scanner handles execution. DSL exit managed by plugin runtime.
Bootstrap Gate
On EVERY session, check config/bootstrap-complete.json. If missing:
- Read senpi-trading-runtime skill
- Verify Senpi MCP
- Set wallet in runtime.yaml
- Set Telegram in runtime.yaml
- Install runtime:
openclaw senpi runtime create --path /data/workspace/skills/bald-eagle-strategy/runtime.yaml
- Verify runtime:
openclaw senpi runtime list
- Remove old DSL cron if upgrading
- Create scanner cron (5 min, main)
- Write
config/bootstrap-complete.json
- Send: "🦅 BALD EAGLE v3.0 online. XYZ Alpha Hunter — focused assets, conviction-scaled leverage, wide DSL. Silence = no alpha."
Risk
| Rule |
Value |
| Max positions |
2 |
| Max entries/day |
4 |
| Min score |
9 |
| Leverage |
5-10x (conviction-scaled) |
| Margin |
50% per trade |
| Spread gate |
> 0.1% = rejected |
| Per-asset cooldown |
120 min |
| Daily loss limit |
10% |
| Stagnation TP |
15% ROE stale 4 hours |
| Allowed assets |
CL, BRENTOIL, GOLD, SILVER, SP500, XYZ100 |
Files
| File |
Purpose |
scripts/eagle-scanner.py |
v3.0 XYZ scanner with conviction-scaled leverage |
scripts/eagle_config.py |
Config helper, MCP, state I/O |
config/bald-eagle-config.json |
Wallet, strategy ID |
runtime.yaml |
Plugin runtime (position tracker + RatchetStop) |
Changelog
v3.0 (2026-04-06)
- Focused asset list: CL, BRENTOIL, GOLD, SILVER, SP500, XYZ100
- Conviction-scaled leverage: 5x/7x/10x
- Wider DSL: retrace 12%, 360-600 min timeouts
- Maker-only execution (ensureExecutionAsTaker: false)
- Min score raised to 9
- Margin increased to 50%
- Scanner calls create_position internally
- Contribution velocity scoring added
- All hard gates → score contributors (except spread)
- Thesis exit removed
v2.0
- Spread gate, XYZ ban on SNDK, leverage capped 7x
v1.0
- 20x leverage, no spread gate, DSL state bugs → -28.6%
1---2name: bald-eagle-strategy3description: BALD EAGLE v3.0 — XYZ Alpha Hunter (Hardened). Focused on 6 high-liquidity XYZ assets: CL, BRENTOIL, GOLD, SILVER, SP500, XYZ100. Conviction-scaled leverage (5-10x based on score). Wider DSL for macro assets. Maker-only execution. Scanner calls create_position internally. v3.0: focused assets, conviction-scaled leverage, XYZ-tuned DSL, no thesis exit.4license: MIT5---67# BALD EAGLE v3.0 — XYZ Alpha Hunter (Hardened)89The only Senpi agent trading commodities, indices, and equities on Hyperliquid.10Focused on the 6 XYZ assets with deepest SM signal.1112## CRITICAL RULES1314### RULE 1: Scanner enters. RatchetStop exits. Scanner NEVER exits.15v2.0 had 14.3% win rate partly because positions got chopped by tight timings.16v3.0 uses XYZ-appropriate wide DSL timings and lets macro trades play out.1718### RULE 2: Scanner calls create_position internally19The cron command is just: `python3 eagle-scanner.py`. No parsing, no execution in cron.2021### RULE 3: FOCUSED ASSETS ONLY22CL, BRENTOIL, GOLD, SILVER, SP500, XYZ100. These have the deepest SM signal23(CL: 181 traders, BRENTOIL: 166). Everything else is sub-50 traders — not enough signal.2425### RULE 4: CONVICTION-SCALED LEVERAGE26| Score | Leverage |27|---|---|28| 8-9 | 5x |29| 10-11 | 7x |30| 12+ | 10x |3132Higher conviction = higher leverage. When SM is screaming, press it.3334### RULE 5: MAKER-ONLY EXECUTION35ensureExecutionAsTaker = false. AMM slippage on XYZ assets destroyed v2.0.36A missed fill is cheaper than -0.5% slippage on entry.3738### RULE 6: Spread gate is a HARD gate39The only hard gate in the scanner. If spread > 0.1%, don't trade.40AMM spread = guaranteed slippage = negative edge.4142### RULE 7: MAX 2 POSITIONS, MIN_SCORE 943Higher bar than crypto agents. AMM spread tax means you need stronger conviction.4445## v2.0 Post-Mortem46- 54 trades, -$75.25, 14.3% win rate on DSL-managed trades47- CL and BRENTOIL: 100% of volume. All other XYZ assets had too few SM traders.48- 8% retrace at 7x = 1.14% price move. Oil moves 1-2% on noise. Every trade stopped by volatility.49- ensureExecutionAsTaker caused taker fills into AMM — double slippage on entry + exit50- DSL timings (45min hard timeout, 20min weak peak) far too tight for commodities5152## What Changed in v3.05354| v2.0 | v3.0 |55|---|---|56| All 54 XYZ assets | 6 focused assets (CL, BRENTOIL, GOLD, SILVER, SP500, XYZ100) |57| 7x leverage fixed | Conviction-scaled: 5x/7x/10x |58| 8% retrace threshold | 12% retrace threshold |59| 45 min hard timeout | 360-600 min (score-dependent) |60| 20 min weak peak | 180-300 min (score-dependent) |61| 12 min dead weight | 90-180 min (score-dependent) |62| minScore 7 | minScore 9 |63| 15% margin | 50% margin |64| Taker fallback | Maker-only |65| Cron parses output | Scanner calls create_position |6667## Scoring System (all contributors, no hard gates except spread)6869| Signal | Points | Note |70|---|---|---|71| SM concentration ≥20% | +4 | DOMINANT — CL hit 28% recently |72| SM concentration ≥10% | +3 | HIGH |73| SM concentration ≥5% | +2 | SOLID |74| SM concentration ≥3% | +1 | BASE |75| Trader depth ≥100 | +2 | Deep consensus |76| Trader depth ≥30 | +1 | Active |77| Contribution surge 1H (>5%) | +2 | SM piling in |78| Contribution rising 1H (>2%) | +1 | |79| Contribution sustained 4H | +1 | Multi-hour conviction |80| 4H price aligned (>0.5%) | +2 | |81| 4H price positive | +1 | |82| 4H price opposing | -1 | |83| 4H trend structure aligned | +2 | From candles |84| 4H trend opposing | -1 | |85| 1H momentum aligned | +1 | |86| Volume rising | +1 | |87| Funding aligned | +1 | |8889Max possible: ~20. Min threshold: 9.9091## DSL — XYZ-Tuned Wide Timings9293### Phase 2 Tiers (RatchetStop)94| Trigger | Lock % | Breaches |95|---|---|---|96| 5% ROE | 0% | 3 |97| 10% ROE | 20% | 3 |98| 20% ROE | 35% | 2 |99| 30% ROE | 50% | 2 |100| 50% ROE | 70% | 1 |101| 75% ROE | 85% | 1 |102103### Phase 1 — Conviction-Scaled Timing (XYZ macro assets need hours)104| Score | Absolute Floor | Hard Timeout | Weak Peak | Dead Weight |105|---|---|---|---|---|106| 8 | -20% ROE | 360 min | 180 min | 90 min |107| 10 | -25% ROE | 480 min | 240 min | 120 min |108| 12 | -30% ROE | 600 min | 300 min | 180 min |109110Retrace threshold: 12% (vs 8% in crypto agents).111112## Cron Setup113114| Cron | Interval | Command |115|---|---|---|116| Scanner | 5 min | `python3 /data/workspace/skills/bald-eagle-strategy/scripts/eagle-scanner.py` |117118One cron only. Scanner handles execution. DSL exit managed by plugin runtime.119120## Bootstrap Gate121122On EVERY session, check `config/bootstrap-complete.json`. If missing:1231. Read senpi-trading-runtime skill1242. Verify Senpi MCP1253. Set wallet in runtime.yaml1264. Set Telegram in runtime.yaml1275. Install runtime: `openclaw senpi runtime create --path /data/workspace/skills/bald-eagle-strategy/runtime.yaml`1286. Verify runtime: `openclaw senpi runtime list`1297. Remove old DSL cron if upgrading1308. Create scanner cron (5 min, main)1319. Write `config/bootstrap-complete.json`13210. Send: "🦅 BALD EAGLE v3.0 online. XYZ Alpha Hunter — focused assets, conviction-scaled leverage, wide DSL. Silence = no alpha."133134## Risk135| Rule | Value |136|---|---|137| Max positions | 2 |138| Max entries/day | 4 |139| Min score | 9 |140| Leverage | 5-10x (conviction-scaled) |141| Margin | 50% per trade |142| Spread gate | > 0.1% = rejected |143| Per-asset cooldown | 120 min |144| Daily loss limit | 10% |145| Stagnation TP | 15% ROE stale 4 hours |146| Allowed assets | CL, BRENTOIL, GOLD, SILVER, SP500, XYZ100 |147148## Files149| File | Purpose |150|---|---|151| `scripts/eagle-scanner.py` | v3.0 XYZ scanner with conviction-scaled leverage |152| `scripts/eagle_config.py` | Config helper, MCP, state I/O |153| `config/bald-eagle-config.json` | Wallet, strategy ID |154| `runtime.yaml` | Plugin runtime (position tracker + RatchetStop) |155156## Changelog157158### v3.0 (2026-04-06)159- Focused asset list: CL, BRENTOIL, GOLD, SILVER, SP500, XYZ100160- Conviction-scaled leverage: 5x/7x/10x161- Wider DSL: retrace 12%, 360-600 min timeouts162- Maker-only execution (ensureExecutionAsTaker: false)163- Min score raised to 9164- Margin increased to 50%165- Scanner calls create_position internally166- Contribution velocity scoring added167- All hard gates → score contributors (except spread)168- Thesis exit removed169170### v2.0171- Spread gate, XYZ ban on SNDK, leverage capped 7x172173### v1.0174- 20x leverage, no spread gate, DSL state bugs → -28.6%