# Apex Strategy

> Autonomous multi-slot trading orchestrator

- Skill: `nunchi-trade/apex-strategy` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add nunchi-trade/apex-strategy`
- Raw SKILL.md: https://api.skillmd.com/api/skills/nunchi-trade/apex-strategy/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: nunchi-trade (https://skillmd.com/u/nunchi-trade)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/nunchi-trade/apex-strategy

---


# APEX Strategy

Autonomous multi-slot trading strategy that composes Radar + Pulse + DSL into a unified orchestrator.

## Architecture

APEX runs a single tick loop (60s base) that:

1. **Every tick**: Fetch prices, update ROEs, check DSL guards, run pulse, evaluate entry/exit
2. **Every 5 ticks** (5 min): Watchdog health check (verify positions match exchange)
3. **Every 15 ticks** (15 min): Run opportunity radar, queue high-score setups

## Slot Management

- 2-3 concurrent positions (configurable)
- Each slot: EMPTY -> ACTIVE -> CLOSED (reset to EMPTY)
- No duplicate instruments across slots
- Max 2 same-direction positions

## Entry Priority

1. Pulse IMMEDIATE_MOVER -> auto-enter
2. Radar score > 170 -> queue entry
3. Pulse other signals (confidence > 70) -> enter

## Exit Priority

1. DSL trailing stop CLOSE
2. Hard stop: ROE < -5%
3. Conviction collapse: signal gone + negative PnL for 30+ min
4. Stagnation: ROE stuck above 3% for 60+ min

## Risk Management

- Per-slot margin: total_budget / max_slots
- Daily loss limit: $500 (default)
- Daily loss trigger: close all positions immediately

## Prerequisites

Before running APEX live (not mock), ensure:
1. **Testnet**: Claim USDyP first — `hl setup claim-usdyp` (without funds, all orders fail silently)
2. **Mainnet**: Deposit USDC via the Hyperliquid web UI
3. **Builder fee**: Approve once per network — `hl builder approve` (testnet) or `hl builder approve --mainnet`

## Usage

```bash
# Mock mode (no funds needed)
hl apex run --mock --max-ticks 10

# Live (testnet) — requires USDyP balance + builder approval
hl apex run

# Live (mainnet) — requires USDC balance + mainnet builder approval
hl apex run --mainnet

# Check status
hl apex status

# List presets
hl apex presets
```

## Presets

- **default**: 3 slots, 10x leverage, $10K budget
- **conservative**: 2 slots, 5x leverage, higher thresholds
- **aggressive**: 3 slots, 15x leverage, lower thresholds

## Agent Mandate

You are the APEX orchestrator. Your job is to hunt for high-probability setups and manage 2-3 concurrent positions with strict risk controls.

RULES:
- NEVER exceed `max_slots` concurrent positions
- ALWAYS check `daily_loss_limit` before entering new positions
- NEVER enter a position without Radar score > 170 OR Pulse IMMEDIATE signal
- ALWAYS run DSL trailing stop on every active position
- Exit ALL positions immediately if daily loss exceeds limit
- ALWAYS run `--mock --max-ticks 5` before first live deployment
- Log every entry/exit decision with reasoning

## Decision Rules

| Condition | Action |
|-----------|--------|
| Radar score > 200 + Pulse IMMEDIATE | Enter with 1.5x size — strongest conviction |
| Radar score > 170, no Pulse signal | Enter with 1.0x size — radar-only conviction |
| Radar score 140-170 | Queue entry, wait for Pulse confirmation within 15 min |
| Radar score < 140 | Skip — insufficient edge |
| ROE > 5% and DSL Phase 2 active | Let DSL manage exit — do not manually close |
| ROE < -3% for > 15 min | Exit — conviction lost, don't wait for hard stop |
| 2 consecutive losses same session | Reduce position size by 50% for next 2 trades |
| Daily loss > 50% of limit | Switch to conservative preset for remainder |
| All slots filled | Wait for exit before scanning new entries |
| Pulse IMMEDIATE but all slots full | Evaluate weakest slot for replacement |

## Anti-Patterns

- **Over-leveraging on volatile days**: Using aggressive preset during high-VIX or post-CPI → blown account. Use conservative preset on macro days.
- **"One more trade to recover"**: After hitting daily loss limit, entering another trade always makes it worse. Hard stop means hard stop.
- **Chasing Pulse signals alone**: Entering on VOLUME_SURGE without Radar confirmation → 60% historical loss rate. IMMEDIATE_MOVER is the only standalone entry signal.
- **Tight stops on entry**: DSL Phase 1 exists to give the trade room. Overriding with tight custom stops → premature exits on noise.
- **Running without budget cap**: Always set `--budget`. Unbounded budget = unbounded loss.

## Error Recovery

| Error | Cause | Fix |
|-------|-------|-----|
| `No positions but slots show ACTIVE` | Stale state after restart | `hl apex status`, manually reset via state file |
| `Radar returned 0 candidates` | Low-vol period or API issue | Normal during weekends/low-vol — APEX will idle safely |
| `Daily loss limit reached` | Bad session | APEX auto-closes all. Review with `hl reflect run` tomorrow |
| `Builder fee not approved` | Skipped onboarding step | `hl builder approve` then restart APEX |
| `Connection timeout` | HL API rate limit | APEX auto-retries with backoff — no action needed |

## Composition

APEX is the top-level orchestrator. It composes Radar (opportunity finding), Pulse (real-time signal detection), and DSL (risk management) into one tick loop. Use APEX for autonomous trading. Use individual skills when you need manual control.

## Cron Template

```bash
# Start APEX at market open, stop at EOD
0 8 * * 1-5  cd ~/agent-cli && source .venv/bin/activate && hl apex run --budget 5000 >> logs/apex.log 2>&1
0 20 * * 1-5 pkill -f "hl apex run"
# Nightly REFLECT review
55 23 * * * cd ~/agent-cli && source .venv/bin/activate && hl reflect run >> logs/reflect.log 2>&1
```

