name: kodiak-strategy description: >- KODIAK v7.0.0 — SOL alpha hunter, senpi_runtime_helpers migration. Plumbing-only flip from openclaw-CLI subprocess + mcporter subprocess to in-process SenpiClient (direct HTTPS for MCP, direct HTTP POST to runtime /signals, long-lived producer_daemon). Thesis preserved verbatim from v6.0.1: SOL alpha hunter, single-asset focus, v5.1 base-tech-score floor with multi-factor scoring (SM consensus, trend structure, momentum, funding, OI, BTC correlation, RSI), conviction-tiered leverage (5x default, 6x conviction at score 11+, 7x apex at score 13+), 240-min asset cooldown. license: MIT metadata: author: jason-goldberg version: "7.0.0" platform: senpi exchange: hyperliquid base_skill: grizzly-v2.0 requires: - senpi-trading-runtime>=1.1.0 - senpi_runtime_helpers
🐻 KODIAK v7.0.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.py
How 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.yaml
Replace <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.yaml
Replace <CHAT_ID> with the actual Telegram chat ID.
Step 3: Install the runtime:
openclaw senpi runtime create --path /data/workspace/skills/kodiak-strategy/runtime.yaml
Step 4: Verify:
openclaw senpi runtime list
Bootstrap Gate
On EVERY session start, check config/bootstrap-complete.json. If missing:
- Read the
senpi-trading-runtimeskill — it 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.