🐻 KODIAK v2.0 — SOL Alpha Hunter
One asset. Every signal. Scanner enters. DSL exits.
⛔ CRITICAL AGENT RULES
RULE 1: Install path is /data/workspace/skills/kodiak-strategy/
RULE 2: THE SCANNER DOES NOT EXIT POSITIONS
When the scanner sees an active SOL position, it outputs NO_REPLY. DSL is the ONLY exit mechanism. v1.1.1 had a thesis exit that chopped positions before DSL could trail them. v2.0 removes it entirely.
RULE 3: MAX 1 POSITION — SOL only
RULE 4: Scanner output is AUTHORITATIVE
RULE 5: Verify runtime is installed on every session start
Run openclaw senpi runtime list. Runtime must be listed. The position tracker and DSL exit are handled by the plugin runtime.
RULE 6: Never modify parameters. Never increase leverage above 7x.
RULE 7: 120-minute cooldown after consecutive losses
What Changed From v1.1.1
| v1.1.1 | v2.0 |
|---|---|
| Thesis exit active in RIDING mode | Removed — DSL manages all exits |
| DSL state missing wallet + size | All fields included |
| Leverage 10-12x | Capped at 7x |
| Retrace 0.03 (3% ROE = 0.3% price at 10x) | 0.08 (8% ROE = 1.14% price at 7x) |
strategy_id discarded in run() | Captured and passed to DSL builder |
| SOL SHORT ran 13h unprotected | Every position protected from second 1 |
v1.1.1 Proof of Concept
Kodiak's best trade: SOL SHORT, entry $90.36, DSL trailed to Tier 4 (+44% ROE), exit at $85.86, realized +$134 profit. The scanner found the setup. DSL managed the exit perfectly — locked 85% of peak, gave back only $3 from top.
The problem: DSL was manually patched onto this trade 13 hours after entry because the state file was missing wallet fields. v2.0 fixes this permanently.
The Three-Mode Lifecycle
MODE 1 — HUNTING (default)
Scan SOL every 3 minutes. All signals must align (4h trend, 1h momentum, SM, funding, OI, volume). Score 10+ to enter. When a position opens, switch to MODE 2.
MODE 2 — RIDING
Active position. DSL manages the exit via the plugin runtime. Scanner outputs NO_REPLY. The scanner does NOT re-evaluate the thesis. It does NOT close positions. The plugin DSL trails the position through Phase 1 protection and Phase 2 trailing tiers. When DSL closes the position → switch to MODE 3.
MODE 3 — STALKING
DSL locked profits. Watch for a reload opportunity. ALL reload conditions must pass: fresh momentum impulse, OI stable, volume present, funding not crowded, SM still aligned, 4h trend intact.
If reload fires → re-enter same direction, switch to MODE 2. If kill conditions trigger → reset to MODE 1.
Cron Setup
Scanner (3 min, main):
python3 /data/workspace/skills/kodiak-strategy/scripts/kodiak-scanner.pyHow KODIAK Trades
Entry (score >= 10 required)
Every 3 minutes, the scanner evaluates SOL across all signal sources:
| Signal | Points | Required? |
|---|---|---|
| 4h trend structure (higher lows / lower highs) | 3 | Yes |
| 1h trend agrees with 4h | 2 | Yes |
| 15m momentum confirms direction | 0-1 | Yes |
| 5m alignment (all 4 timeframes agree) | 1 | No |
| SM aligned with direction | 2-3 | Hard block if opposing |
| Funding pays to hold the direction | 2 | No |
| Volume above average | 1-2 | No |
| OI growing | 1 | No |
| BTC confirms move | 1 | No |
| RSI has room | 1 | No (blocks overbought/oversold) |
| 4h momentum strength | 1 | No |
Maximum score: ~18. Minimum to enter: 10.
Conviction-Scaled Leverage
| Score | Leverage |
|---|---|
| 10-11 | 7x |
| 12+ | 7x |
Conviction-Scaled Margin
| Score | Margin |
|---|---|
| 10-11 | 20% of account |
| 12-13 | 25% |
| 14+ | 30% |
Exit Management
DSL exit is handled by the plugin runtime via runtime.yaml. The position_tracker scanner auto-detects position opens/closes on-chain. See runtime.yaml for configuration details.
Monitor positions:
openclaw senpi dsl positions— list all DSL-tracked positionsopenclaw senpi dsl inspect <ASSET>— full position details
Why SOL-Only at 7x Leverage
Risk
| Rule | Value |
|---|---|
| Max positions | 1 (SOL only) |
| Max leverage | 7x |
| Phase 1 retrace | 0.08 |
| Daily loss limit | 10% |
| Cooldown | 120 min after 3 consecutive losses |
Runtime Setup
Step 1: Set your strategy wallet address in runtime.yaml:
sed -i 's/${WALLET_ADDRESS}/<STRATEGY_WALLET_ADDRESS>/' /data/workspace/skills/kodiak-strategy/runtime.yamlReplace <STRATEGY_WALLET_ADDRESS> with the actual wallet address.
Step 2: Set telegram chat ID for notifications:
sed -i 's/${TELEGRAM_CHAT_ID}/<CHAT_ID>/' /data/workspace/skills/kodiak-strategy/runtime.yamlReplace <CHAT_ID> with the actual Telegram chat ID.
Step 3: Install the runtime:
openclaw senpi runtime create --path /data/workspace/skills/kodiak-strategy/runtime.yamlStep 4: Verify:
openclaw senpi runtime listBootstrap Gate
On EVERY session start, check config/bootstrap-complete.json. If missing:
- Read the senpi-trading-runtime skill:
cat /data/workspace/skills/senpi-trading-runtime/SKILL.md— this provides all CLI commands for runtime management and DSL position inspection. - Verify Senpi MCP
- Set wallet in runtime.yaml:
sed -i 's/${WALLET_ADDRESS}/ACTUAL_ADDRESS/' /data/workspace/skills/kodiak-strategy/runtime.yaml - Set Telegram in runtime.yaml:
sed -i 's/${TELEGRAM_CHAT_ID}/CHAT_ID/' /data/workspace/skills/kodiak-strategy/runtime.yaml - Install runtime:
openclaw senpi runtime create --path /data/workspace/skills/kodiak-strategy/runtime.yaml - Verify runtime installed:
openclaw senpi runtime list - Remove old DSL cron (if upgrading): run
openclaw crons list, delete any cron containingdsl-v5.pyviaopenclaw crons delete <id> - Create scanner cron (3 min, isolated)
- Write
config/bootstrap-complete.json - Send: "KODIAK is online. Watching SOL. DSL managed by plugin runtime. Silence = no conviction."
If bootstrap exists, still verify runtime and scanner cron on every session start.
Notification Policy
ONLY alert: Position OPENED (direction, leverage, score, reasons), position CLOSED (DSL exit with P&L), risk guardian triggered, critical error. NEVER alert: Scanner found no thesis, thesis re-eval passed, any reasoning.
Expected Behavior
| Metric | Expected |
|---|---|
| Trades/day | 1-3 |
| Avg hold time | 1-12 hours |
| Win rate | ~45-55% |
| Avg winner | 20-50%+ ROE |
| Avg loser | -20 to -40% ROE |
Files
| File | Purpose |
|---|---|
scripts/kodiak-scanner.py | SOL thesis builder + stalk/reload |
scripts/kodiak_config.py | Config helper (MCP, state, cooldowns) |
config/kodiak-config.json | Wallet, strategy ID, configurable variables |
runtime.yaml | Runtime config for plugin (DSL exit + position tracker) |
License
MIT — Built by Senpi (https://senpi.ai). Source: https://github.com/Senpi-ai/senpi-skills
Skill Attribution
When creating a strategy, include skill_name and skill_version in the call. See references/skill-attribution.md for details.