turbine-strategy
TURBINE v3.3 โ Volume rotation on TWO wallets, ONE producer daemon. Both wallets receive the same volume-rotation alpha (same scoring, same asset universe, same funding-fade direction selection). The wallet boundary just selects DSL behavior: VOLUME wallet's runtime has hard_timeout 10min and no Phase 2 (pure rotation cadence); RUNNERS wallet's runtime has hard_timeout 240min and Phase 2 ratchet enabled (let winners run). Most positions exit at small loss/win on either wallet; ~5% land on a real directional move and ratchet to apex on the runners wallet โ that asymmetry is the alpha v3.0/v3.1 was leaving on the table by force-cutting at 10 min. v3.3 doubles margin/slot to scale from v3.2's verified $2M/day to a $3-4M/day target while preserving the <$150/$1M cost efficiency on the same 7-asset tight-spread universe.
What this skill does
# ๐ช๏ธ TURBINE v3.3 โ Volume Rotation + Runners
**Run the volume play. Let winners run.**
## What changed in v3.3 vs v3.2.2 (2026-05-14)
**Budget upgrade for $3-4M/day target.** v3.2 was empirically verified at $2M/day over 3 consecutive days at <$150/$1M cost. To double volume without expanding the asset universe (which would force lower-tier coins with wider spreads and break the cost efficiency), v3.3 doubles margin/slot on the same 7 high-liquidity assets.
| Setting | v3.2 | v3.3 |
|---|---|---|
| Volume wallet budget | $4,000 | **$5,400** ($4,900 active + $500 buffer) |
| Runners wallet budget | $1,900 | **$2,600** (full active, $0 buffer) |
| Volume margin/slot | $500 | **$700** ($3,500 notional at 5x) |
| Runners margin/slot | $950 | **$1,300** ($6,500 notional at 5x) |
| Slots (volume / runners) | 7 / 2 | 7 / 2 (unchanged) |
| Asset universe | BTC/ETH/SOL/HYPE + xyz:BRENTOIL/GOLD/SPX | Same (unchanged โ would break cost target if expanded) |
| Daily volume target | $2M (verified) | $3-4M (modeled) |
| Cost target | <$150/$1M | <$150/$1M (preserved) |
NO change to scoring, asset universe, DSL preset, risk gates, or producer code. Pure margin/budget scaling โ every other knob preserved verbatim.
**New documented learnings from v3.2 prod operation:**
1. **DSL exit engine going offline causes slot starvation.** When runtimes die, the 10-min volume hard-cut stops firing, positions stay open past timeout, available margin drains โ `slots_effective` collapses from 7 โ 1-2. Symptom: rapid slot decay in hours, not days. Fix: re-register the dead runtime BEFORE topping up the wallet. Documented in README troubleshooting.
2. **Orphaned ALO orders persist across daemon restarts.** Any runtime swap or daemon restart can leave non-reduce-only ALO orders resting on the books โ the v3.2.1 sweep clears them on the next tick, but a clean restart procedure (cancel-stale โ relaunch) is now standard. Documented in README "Restart procedure".
## What changed in v3.2.2 vs v3.2.1 (patch โ 2026-05-09)
**Dex-aware slot keys.** `normalize_coin_key()` previously stripped the `xyz:` prefix from coin names, collapsing main and xyz versions of the same symbol into one held_keys entry. When a main position and an xyz resting order on the same symbol both existed (or vice versa), the producer undercounted slots โ over-emitted signals โ runtime rejected the surplus on margin. v3.2.2 preserves the prefix: `main:HYPE` and `xyz:HYPE` are now distinct keys.
Symptom in v3.2.1 (verified from operator's tick logs): `slots_held = 4` while `positions + resting = 5` on ticks where main and xyz versions of the same coin coexisted. Producer over-emitted by 1 on those ticks.
NO change to maker/taker placement. NO change to fee economics. NO change to YAMLs. One-time minor regression: 90s post-close cooldown skipped for the first 1-2 cycles after upgrade as `last_closed` repopulates with new-format keys. Trivial impact.
## What changed in v3.2.1 vs v3.2.0 (patch โ 2026-05-09)
**Stale-order hygiene.** The producer now sweeps non-reduce-only ALO orders older than 300s before computing `held_keys`. Each runtime swap (helpers migration, runtime redeploy, daemon restart) leaves resting maker orders behind that the new runtime instance does not own; the producer's ghost-trade fix (v2.0.4) correctly counts those orphans as slot occupiers, which means orphans can starve real fills until cleared. The runtime's own `execution_timeout_seconds: 180` cancels orders it placed โ anything still resting well past that is by definition abandoned.
NO change to maker/taker placement. NO change to fee economics. NO change to YAMLs. Cancellation is free; HL only charges on fills. Symptom in v3.2.0: volume wallet showed `slots_held = 6/7` while `clearinghouse` only reported 4 actual positions, throttling emissions to 1 signal/tick instead of 3-4.
Tick output now includes `volume.stale_swept[]` and `runners.stale_swept[]` arrays for telemetry โ empty list = no orphans on this tick.
## What changed in v3.2 vs v3.1
v3.1 modeled the second wallet as a **HYPE-only momentum specialist**. Wrong abstraction:
- Hunt mode (HYPE 4H breakouts) fired ~1-3 times per day at most
- Hunt wallet's $2,400 sat idle ~90% of the time
- No volume contribution from the second wallet
- A single wallet can't hold the same HYPE position twice, so 2 hunt slots was effectively 1
v3.2 fixes the design intent. Both wallets run the **same volume rotation** (same scoring, same assets, same funding-fade direction). The DSL preset on each wallet picks the exit profile:
| | Volume wallet | Runners wallet |
|---|---|---|
| Entry signals | Volume rotation | **Volume rotation (same)** |
| Asset universe | BTC/ETH/SOL/HYPE + xyz:BRENTOIL/GOLD/SPX | **Same** |
| Direction | Funding fade | **Same** |
| Leverage | 5x | 5x |
| `hard_timeout` | **10 min** | 240 min (4h cap) |
| Phase 2 ratchet | DISABLED | **ENABLED** (5/0, 10/35, 20/55, 35/75, 50/85) |
| `weak_peak_cut` | DISABLED | 90 min @ peak < 3% |
| `dead_weight_cut` | DISABLED | 120 min |
| Phase 1 max_loss | 50% (catastrophic only) | 30% |
The same rotation alpha goes to both wallets. The runners wallet's DSL gives positions room to ratchet through tier-1/2/3/4 instead of being force-cut at 10 min. Most positions on the runners wallet still exit early (Phase 1 max_loss or weak_peak_cut). The ~5% that land on a real move are what justify the patient DSL.
## Why two wallets at all
The senpi-trading-runtime plugin enforces **one runtime per wallet**. v3.0 attempted to attach two runtimes to a single wallet and got blocked at deploy. v3.1 split into two wallets but rebuilt them with the wrong thesis (HYPE specialist). v3.2 keeps the two-wallet split and rewires both to the right thesis (same volume rotation, different DSL).
## Mission
Hit **$5M/day in notional volume on Hyperliquid at <$100 net cost per $1M** while letting occasional winners ride for bigger ROE.
| Metric | v2.0.x baseline | v3.2 target |
|---|---|---|
| Daily volume | ~$2-3M | $5M+ |
| Net cost per $1M volume | $200 | <$100 |
| Total slots | 3 | 9 (7 vol + 2 runners) |
| Volume cycle | 15 min | 10 min (auto-fallback to 12 min) |
| Total funding | $1,500 | **$5,900** ($4,000 vol + $1,900 runners) |
## Architecture
```
turbine-producer.py (long-lived daemon)
โ
โโโโโโโโโโดโโโโโโโโโ
โ โ
reads volume reads runners
wallet wallet
โ โ
โผ โผ
emits to: emits to:
turbine_volume turbine_runners
_signals _signals
โ โ
turbine-volume- turbine-runners-
tracker tracker
โ โ
โผ โผ
VOLUME WALLET RUNNERS WALLET
($4,000) ($1,900)
```
ONE producer reads both wallets, emits the same kind of volume-rotation signals to each. Each runtime attaches to its OWN wallet (constraint satisfied) and applies its own DSL preset to positions it opened.
## Volume rotation (shared alpha on both wallets)
### Universe
| Pool | Assets | Weight |
|---|---|---|
| XYZ (deeper books, lower fee floor) | xyz:BRENTOIL, xyz:GOLD, xyz:SPX | **80%** |
| Main | BTC, ETH, SOL, HYPE | 20% |
### Direction โ funding fade
```
LONG_CROWDED โ SHORT (collect funding)
SHORT_CROWDED โ LONG (collect funding)
NEUTRAL/FLAT โ coin-flip per cycle
```
### Spread gates
| DEX | Setting |
|---|---|
| main | 3 bps |
| xyz | 10 bps |
### Cycle length โ 10 min default with auto-fallback
```
10 min default
โ
If realized maker fill rate (last 20 entries) < 85%:
โ
Fall back to 12 min until rate recovers
```
State tracked in `state/<volume-wallet-hash>/cycle-stats.json`. Operator overrides via `cycle.*` keys in `turbine-config.json`.
### Volume cost math
```
Theoretical (perfect maker on both legs):
+3.5 bps builder fee recycling (RT)
โ1.4 bRelated in Web3
xaut-trade
IncludedBuy or sell XAUT (Tether Gold) on Ethereum. Supports market orders (Uniswap V3) and limit orders (UniswapX). Wallet modes: Foundry keystore or WDK. Delegates non-XAUT intents to registered skills (e.g. Polymarket prediction markets, Hyperliquid trading). Triggers: buy XAUT, XAUT trade, swap USDT for XAUT, sell XAUT, swap XAUT for USDT, limit order, limit buy XAUT, limit sell XAUT, check limit order, cancel limit order, XAUT when, create wallet, setup wallet, polymarket, prediction market, bet on, odds on, hyperliquid, perp, perpetual, long, short, open long, open short, close position, leverage.
qfc-openclaw-skill
IncludedQFC blockchain interaction โ wallet, faucet, chain queries, staking, epoch & finality, AI inference
gate-dex-trade
IncludedExecutes on-chain token swaps via Gate DEX. Use when user wants to swap, buy, sell, exchange, or convert tokens, or bridge cross-chain. Covers full swap flow: price quotes, transaction build, signing, and submission. Do NOT use for read-only data lookups or wallet account management.
hunch
IncludedDiscover, bet on, track, and settle Hunch prediction markets in natural language. Trigger when a user wants to bet, take a position, or get odds on a crypto outcome โ token market-cap milestones and flips, launchpad races (Bankr vs pump.fun volume / #1-days / launches over a cap), token head-to-head outperformance, mcap strike-ladders, and up/down price rounds. Also trigger on "what can I bet on about $TOKEN", "odds on โฆ", "take YES/NO on โฆ", "show my Hunch bets", "did my market resolve". Settles in USDC on Base via x402 (โค $10 / bet); every bet returns an on-chain proof.
opensea
IncludedQuery NFT data, trade on the Seaport marketplace, and swap ERC20 tokens across Ethereum, Base, Arbitrum, Optimism, Polygon, and more.
polymarket
IncludedTrade on Polymarket prediction markets (CLOB V2) from a Privy EOA wallet. Search markets, place/cancel orders, manage positions. No private key handling. Use when the user wants to bet on event outcomes (e.g. "buy YES at 0.65 on the ceasefire market", "what are my open positions", "close my Trump bet").