Use when you have a written implementation plan to execute in a separate session with review checkpoints
npx skills add clawd-aftermath/senpi-skills-af --skill "viper-strategy"
Install specific skill from multi-skill repository
# Description
>-
# SKILL.md
name: viper-strategy
description: >-
VIPER v2.1 β Range-bound liquidity sniper. Enters at support/resistance when Bollinger Bands
are tight, ATR is low, RSI is at extremes within the range, and volume is declining.
Works when nothing is trending β the chop predator. USD-weighted OI filtering (min $5M).
DSL High Water Mode (mandatory). 5-minute scan interval.
Second-best performer in the Senpi zoo at +6.2% ROI.
license: MIT
metadata:
author: jason-goldberg
version: "2.1"
platform: senpi
exchange: aftermath
VIPER v2.1 β Range-Bound Liquidity Sniper
The chop predator. When every momentum strategy is sitting idle because nothing is trending, VIPER is working.
+6.2% ROI and climbing. Second-best performer on the Senpi Predators tracker.
What VIPER Does
VIPER scans the top 25 assets by USD-weighted open interest every 5 minutes. It looks for assets stuck in a range β price bouncing between support and resistance β and enters at the boundaries:
- Long at support when price is at the bottom of a tight Bollinger Band range, RSI is oversold, and volume is declining (sellers exhausting)
- Short at resistance when price is at the top of a tight range, RSI is overbought, and volume is declining (buyers exhausting)
The edge: range-bound markets are predictable. Support holds, resistance holds, and the bounce is mechanical. VIPER catches that bounce.
MANDATORY: DSL High Water Mode
VIPER MUST use DSL High Water Mode. This is not optional.
Spec: https://github.com/Senpi-ai/senpi-skills/blob/main/dsl-dynamic-stop-loss/dsl-high-water-spec%201.0.md
When creating DSL state files for any VIPER position, you MUST include:
{
"lockMode": "pct_of_high_water",
"phase2TriggerRoe": 5,
"tiers": [
{"triggerPct": 5, "lockHwPct": 30, "consecutiveBreachesRequired": 3},
{"triggerPct": 10, "lockHwPct": 50, "consecutiveBreachesRequired": 2},
{"triggerPct": 15, "lockHwPct": 70, "consecutiveBreachesRequired": 2},
{"triggerPct": 20, "lockHwPct": 85, "consecutiveBreachesRequired": 1}
]
}
If tiers or lockMode is missing from the state file, the DSL engine falls back to flat 1.5% retrace and High Water Mode is silently disabled. Always verify the state file contains these fields after creation.
FALLBACK (until DSL engine supports pct_of_high_water): Use tiersLegacyFallback from config.
Entry Requirements
| Signal | Requirement |
|---|---|
| Bollinger Band width | < 4% (tight range) |
| ATR | < 1.5% (low volatility) |
| RSI | Oversold (< 35) for longs, overbought (> 65) for shorts |
| Volume | Declining (sellers/buyers exhausting) |
| OI (USD-weighted) | β₯ $5M (liquid enough to trade) |
| Min score | 5 |
All filters must pass. If any fails, skip. VIPER is selective β most scans produce zero signals.
DSL Configuration
Phase 1 β Structural Invalidation Only
| Setting | Value |
|---|---|
| Hard timeout | Disabled (0) |
| Weak peak cut | Disabled (0) |
| Dead weight | Disabled (0) |
| Floor base | 1.5% notional |
No time exits. If the range breaks, the floor catches it. If the range holds, patience wins.
Phase 2 β High Water Mode
| Tier | Trigger ROE | Lock (% of HW) | Breaches |
|---|---|---|---|
| 1 | 5% | 30% | 3 |
| 2 | 10% | 50% | 2 |
| 3 | 15% | 70% | 2 |
| 4 | 20%+ | 85% | 1 (infinite trail) |
Phase 2 triggers at +5% ROE (lower than momentum skills β range profits are smaller, start protecting earlier).
Stagnation TP
5% ROE stale for 30 minutes β close. Range bounces play out quickly. If the profit stalls, take it.
Margin & Position Sizing
| Setting | Value |
|---|---|
| Margin per trade | 28% of account |
| Max positions | 3 |
| Leverage | Default 10x |
3 slots Γ 28% = 84% utilization. VIPER deploys capital aggressively because range entries have higher win rates.
Risk Management
| Rule | Value |
|---|---|
| Max entries/day | 8 |
| Daily loss limit | 8% |
| Max drawdown | 18% |
| Max single loss | 5% of account |
| Max consecutive losses | 4 β 20 min cooldown |
Cron Architecture
| Cron | Interval | Session | Purpose |
|---|---|---|---|
| Scanner | 5 min | isolated | Range detection + entry signals |
| DSL v5 | 3 min | isolated | High Water Mode trailing stops |
Both MUST be isolated sessions with agentTurn. Use NO_REPLY for idle cycles.
Notification Policy
ONLY alert: Position OPENED (asset, direction, support/resistance level, score), position CLOSED (DSL or structural exit), risk triggered, critical error.
NEVER alert: Scanner found nothing, DSL routine, any reasoning.
All crons isolated. NO_REPLY for idle cycles.
Bootstrap Gate
On EVERY session, check config/bootstrap-complete.json. If missing:
1. Verify Senpi MCP
2. Create scanner cron (5 min, isolated) and DSL cron (3 min, isolated)
3. Write config/bootstrap-complete.json
4. Send: "π VIPER is online. Scanning for range-bound setups. Silence = nothing is ranging."
Optional: Trading Strategy Variant
VIPER is proven at +6.2% ROI as-is. One variant is available:
| Strategy | What Changes | When To Consider |
|---|---|---|
| MAMBA | VIPER entries + High Water Mode with wider tiers | When you want to capture range breakouts that escape into trends |
Start with vanilla VIPER. MAMBA is the upgrade path for capturing more from breakout trades.
Expected Behavior
| Metric | Expected |
|---|---|
| Trades/day | 3-8 |
| Win rate | ~60-65% (range entries are predictable) |
| Avg winner | 5-15% ROE |
| Avg loser | -8 to -12% ROE |
| Fee drag/day | $8-20 |
| Profit factor | Target 1.2-1.5 |
Files
| File | Purpose |
|---|---|
scripts/viper-scanner.py |
Range detection + entry signals |
scripts/viper_config.py |
Shared config, MCP helpers, state I/O |
config/viper-config.json |
All configurable variables with DSL High Water tiers + legacy fallback |
| DSL v5 (shared) | Trailing stop engine β MUST be configured with High Water Mode |
License
MIT β Built by Senpi (https://senpi.ai).
Source: https://github.com/Senpi-ai/senpi-skills
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.