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 "kodiak-strategy"
Install specific skill from multi-skill repository
# Description
>-
# SKILL.md
name: kodiak-strategy
description: >-
KODIAK v1.0 β SOL alpha hunter with position lifecycle. Single asset, every signal
(SM, funding, OI, 4TF trend, volume, BTC correlation). Three-mode lifecycle:
HUNTING (scan for entry) / RIDING (DSL trails) / STALKING (watch for reload on dip).
After DSL takes profit, watches for fresh momentum impulse while confirming macro thesis
is intact. If thesis dies, resets. If dip reloads, re-enters. DSL High Water Mode (mandatory).
license: MIT
metadata:
author: jason-goldberg
version: "1.0"
platform: senpi
exchange: aftermath
base_skill: grizzly-v2.0
KODIAK v1.0 β SOL Alpha Hunter with Position Lifecycle
One asset. Every signal. Maximum conviction. Reload-on-dip.
KODIAK stares at SOL and nothing else. Every signal source available β smart money positioning, funding rate, open interest, 4-timeframe trend structure, volume, BTC correlation β feeds into a single thesis: is there a high-conviction SOL trade right now?
Based on GRIZZLY v2.0's three-mode lifecycle, adapted for SOL's volatility profile.
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 High Water trails it. Thesis re-evaluation every scan. If thesis breaks (4h trend flips, SM flips, funding extreme, volume dies, BTC diverges) -> thesis exit and reset to MODE 1. If DSL closes the position -> switch to MODE 3.
MODE 3 β STALKING
DSL locked profits. The trend may not be over. Watch for a reload opportunity. Every scan checks:
Reload conditions (ALL must pass):
1. At least one completed 1h candle since exit (~30 min minimum)
2. Fresh 5m momentum impulse in the exit direction
3. OI stable or growing
4. Volume at least 50% of original entry
5. Funding not spiked into crowded territory
6. SM still aligned in the exit direction
7. 4h trend structure still intact
If ALL pass -> RELOAD. Re-enter same direction with dynamic leverage clamp (lev = min(targetLev, market.maxLeverage())). Switch to MODE 2.
Kill conditions (ANY triggers reset to MODE 1):
- 4h trend reversed
- SM flipped against exit direction
- OI collapsed 20%+
- Stalking for more than 6 hours with no reload
- Funding spiked above 100% annualized
maxPositions: 1. KODIAK holds one SOL position at a time.
MANDATORY: DSL High Water Mode
KODIAK MUST use DSL High Water Mode. This is not optional.
On Aftermath, initial SL is set inline with the entry order via the slTp field. DSL cron handles trailing updates only.
Spec: https://github.com/Senpi-ai/senpi-skills/blob/main/dsl-dynamic-stop-loss/dsl-high-water-spec%201.0.md
DSL tiers in kodiak-config.json. Arm DSL immediately after every entry fill. Zero naked positions.
Why SOL-Only with Runtime-Verified Leverage
- High volatility β SOL moves 5-10% in hours, amplifying conviction trades
- Growing on-chain liquidity on Aftermath β increasingly tradeable at size
- Ecosystem momentum β SOL trends driven by DeFi/NFT/memecoin cycles
- BTC as regime filter β SOL trends rarely sustain against a BTC reversal
- Lower leverage compensates for volatility β use target leverage, then clamp to market max at runtime
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 | 10x |
| 12-13 | 11x |
| 14+ | 12x |
Runtime rule (required):
maxLev = market.maxLeverage()
lev = min(targetLev, maxLev)
Use isolated collateral allocation per position (collateralChange) and verify capacity with POST /api/perpetuals/account/max-order-size before entry.
Conviction-Scaled Margin
| Score | Margin |
|---|---|
| 10-11 | 20% of account |
| 12-13 | 25% |
| 14+ | 30% |
Risk Management
| Rule | Value |
|---|---|
| Max positions | 1 |
| Phase 1 floor | 2.5% notional (~25% ROE at 10x) |
| Drawdown halt | 25% from peak |
| Daily loss limit | 10% |
| Cooldown | 120 min after 3 consecutive losses |
| Stagnation TP | 10% ROE stale 75 min |
Cron Architecture
| Cron | Interval | Session | Purpose |
|---|---|---|---|
| Scanner | 3 min | isolated | Thesis builder + re-evaluator + stalk/reload |
| 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 (direction, leverage, score, reasons), position CLOSED (DSL or thesis exit), risk guardian triggered, critical error.
NEVER alert: Scanner found no thesis, thesis re-eval passed, DSL routine, any reasoning.
Bootstrap Gate
On EVERY session, check config/bootstrap-complete.json. If missing:
1. Verify Senpi MCP
2. Create scanner cron (3 min, isolated) and DSL cron (3 min, isolated)
3. Write config/bootstrap-complete.json
4. Send: "π» KODIAK is online. Watching SOL. DSL High Water Mode active. Silence = no conviction."
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 + re-evaluator + stalk/reload |
scripts/kodiak_config.py |
Shared config, MCP helpers, state I/O |
config/kodiak-config.json |
All configurable variables with DSL High Water tiers |
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.