VIXEN v1.0 — Dual-mode emerging movers scanner. Built from FOX v1.6 live trading data (+34.5% ROI). Two entry modes: STALKER (steady accumulation, score 6+, catches the SM buildup BEFORE the explosion) and STRIKER (violent FIRST_JUMP, score 9+, with raw volume confirmation to filter blow-off tops). 2-hour per-asset cooldown after Phase 1 exits. DSL High Water Mode mandatory.
Two ways to catch smart money. Enter before the crowd, or ride the explosion — but never buy a blow-off top.
FOX v1.6 returned +34.5% in 4 days. The post-mortem revealed a critical insight: the two biggest winners (ZEC +$129, SILVER +$128) were caught at score 5-7 by the early v0.1 scanner, and would have been rejected by the later v7.2 "Feral Gauntlet" (score >= 9, FIRST_JUMP required, velocity >15 required).
The Feral Gauntlet accidentally optimized for violent spikes only — which are sometimes real breakouts (FARTCOIN +$111, ENA +$72) and sometimes blow-off tops (PUMP $0, XPL $0). It filtered out the most profitable signal type: steady SM accumulation before the explosion.
VIXEN solves this with two entry modes that each capture a distinct alpha pattern.
Steady, sustained SM rank climbing over 3+ consecutive scans (9+ minutes). SM is quietly building positions. Price hasn't exploded yet. You enter BEFORE the crowd.
Gates:
Scoring:
| Signal | Points |
|---|---|
| STALKER_CLIMB (sustained climbing) | 3 |
| CONTRIB_ACCEL (contribution velocity > 0.1%/scan) | 2 |
| CONTRIB_POSITIVE (velocity > 0) | 1 |
| SM_ACTIVE (10+ traders) | 1 |
| DEEP_START (started from #30+) | 1 |
| Time-of-day (04-14 UTC bonus) | +1 |
| Time-of-day (18-02 UTC penalty) | -2 |
What it detects: Violent FIRST_JUMP — 15+ rank spike in a single scan from outside Top 25. The explosion is happening NOW. Requires raw volume confirmation.
Gates (Fox v7.2 Feral Gauntlet, plus volume):
Scoring:
| Signal | Points |
|---|---|
| FIRST_JUMP | 3 |
| IMMEDIATE_MOVER | 2 |
| CONTRIB_EXPLOSION (3x+) | 2 |
| HIGH_VELOCITY (>10) | 2 |
| DEEP_CLIMBER | 1 |
| Multi-scan climb bonus | 1 |
| Time-of-day modifier | -2 to +1 |
When both modes fire on the same asset, STRIKER takes priority (stronger immediate signal). Signals are combined and sorted by score. The execution agent picks the best available signal with an open slot.
The PAXG lesson: FOX entered PAXG, got chopped out by Phase 1, then immediately re-entered on a high score flash — and lost again. The conditions that killed the first entry were still present.
VIXEN enforces a 120-minute cooldown per asset after any Phase 1 exit (dead weight, timeout, or absolute floor). Other assets are unaffected. After 120 minutes, if the asset passes the full gauntlet again, it's a valid fresh entry.
VIXEN MUST use DSL High Water Mode. This is not optional.
| Score | Absolute Floor | Hard Timeout | Weak Peak | Dead Weight |
|---|---|---|---|---|
| 6-7 (Stalker) | -20% ROE | 30 min | 15 min | 10 min |
| 8-9 | -25% ROE | 45 min | 20 min | 15 min |
| 10+ (Striker) | -30% ROE | 60 min | 30 min | 20 min |
| Tier | Trigger ROE | Lock % of HW | Breaches |
|---|---|---|---|
| 1 | 5% | 20% | 2 |
| 2 | 10% | 40% | 2 |
| 3 | 20% | 55% | 2 |
| 4 | 30% | 70% | 1 |
| 5 | 50% | 80% | 1 |
| 6 | 75% | 85% | 1 |
| 7 | 100%+ | 90% | 1 |
| Rule | Value |
|---|---|
| Max positions | 3 |
| Max entries/day | 3 base, up to 6 on profitable days |
| Absolute floor | 2% notional (~20% ROE at 10x) |
| Drawdown halt | 25% from peak |
| Daily loss limit | 10% |
| Cooldown | 30 min after 3 consecutive losses |
| Per-asset cooldown | 120 min after Phase 1 exit |
| Stagnation TP | 10% ROE stale for 45 min |
| Cron | Interval | Session | Purpose |
|---|---|---|---|
| Scanner | 90s | main | Dual-mode emerging movers detection |
| DSL v5 | 3 min | isolated | High Water Mode trailing stops |
ONLY alert: Position OPENED (mode, asset, direction, score, reasons), position CLOSED (DSL or Phase 1 with reason), risk guardian triggered, critical error.
NEVER alert: Scanner ran with no signals, signals filtered out, DSL routine check, any reasoning.
On EVERY session, check config/bootstrap-complete.json. If missing:
config/bootstrap-complete.json| Metric | Expected |
|---|---|
| Trades/day | 3-8 (Stalker catches more setups than Striker alone) |
| Stalker trades | 2-5/day (steady climbers are more common than explosions) |
| Striker trades | 1-3/day (violent breakouts are rare by design) |
| Win rate | ~50-60% (Stalker entries have better R:R from earlier positioning) |
| Avg Stalker winner | 40-130%+ ROE (entered early, DSL trails the entire move) |
| Avg Striker winner | 20-60%+ ROE (entered at breakout, less room to trail) |
| Avg loser | -15 to -25% ROE (Phase 1 cuts fast) |
| File | Purpose |
|---|---|
scripts/vixen-scanner.py | Dual-mode scanner (Stalker + Striker) |
scripts/vixen_config.py | Shared config, MCP helpers, state I/O, cooldown tracking |
config/vixen-config.json | All configurable variables with DSL tiers |
MIT — Built by Senpi (https://senpi.ai). Source: https://github.com/Senpi-ai/senpi-skills
When creating a strategy, include skill_name and skill_version in the call. See references/skill-attribution.md for details.