mcpField
R
rhino-strategy

rhino-strategy

github.com/senpi-aiOther14040 installsUpdated today
Repository

About rhino-strategy

rhino-strategy is a trading strategy skill for operating a two-book tail-risk hedge: an always-on defensive book and a stress-gated leveraged book. It defines cross-asset stress signals, entry rules, and risk-managed exits for each.

Key features

  1. 01Always-on long defensive book
  2. 02Stress-gated crisis positions
  3. 03Cross-asset stress detector
  4. 04Separate runtime and configuration per book
  5. 05Book-specific sizing and exit rules

Use cases

  1. 01Maintain defensive exposure during calm markets
  2. 02Add crisis trades when stress signals confirm
  3. 03Configure separate hedge and escalation daemons

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/senpi-ai/senpi-skills --skill rhino-strategy

After installing, type/rhino-strategyin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

README.md
runtime-escalation.yaml
runtime-hedge.yaml
config/
rhino-escalation-config.json
rhino-hedge-config.json
references/
skill-attribution.md
scripts/
rhino_config.py
rhino-producer.py

Details

From the project README

🦏 RHINO v1.0 — Tail-Risk / Crisis-Alpha Hedge Fund

Rhino carries cheap convexity: it bleeds a little in calm and pays big in shocks — geopolitics, macro stress, liquidation cascades. The mirror lesson of the 2026 oil war: while everything else bled, the winners were long oil and gold. Rhino productizes that as an always-on insurance book plus a dormant convex add. One producer script (rhino-producer.py) serves both books; the RHINO_LEG env var selects which.

BookStyleGated byWallet envRuntimeScanner
hedgeSmall always-on long defensivesnothing (always on)RHINO_HEDGE_WALLETruntime-hedge.yamlrhino_hedge_signals
escalationLong crisis + short risk, leveragedthe STRESS detectorRHINO_ESCALATION_WALLETruntime-escalation.yamlrhino_escalation_signals

Together: the hedge book means you already own the crisis trade when the shock hits; the escalation book adds leveraged convexity the moment stress confirms, then banks it before the violent reversal.

What makes Rhino different

  • vs. Elephant (global macro): Elephant trades the macro trend in both directions for its own sake. Rhino is asymmetric by design — it is built to lose small in calm and win big in stress, not to track macro.
  • vs. a Thesis Fund ("war escalation"): a Thesis Fund is a fixed manual bet you turn on. Rhino is always-on insurance that self-activates its convex leg on a measured stress signal, with no view required.
  • It is the portfolio hedge of the fund lineup — the thing that's green on the days everything else is red.

The shared stress detector (the brain)

Each tick, Rhino tallies cross-asset stress probes — each fires on a 4h trend confirmation OR a 1h range break + ATR surge in the stress direction:

ProbeFires (stress) when
Oil (xyz:BRENTOIL)spiking up (4h BULLISH or breakout-up + surge)
Equities (xyz:XYZ100 → SP500)breaking down (4h BEARISH or breakdown)
Gold (xyz:GOLD)bid (4h BULLISH or breakout-up)
BTCrolling over (4h BEARISH or breakdown)
Vol (BTC ATR)recent ATR / baseline ATR ≥ volSurge (1.5)

STRESS is declared when the count clears stressThreshold (default 2). The escalation book trades only under STRESS; the hedge book ignores the gate (but reports the read for telemetry).

HEDGE book — the standing insurance (LONG only, always on)

Universe = the defensive whitelist (defensives: gold/oil/dollar/yen). Scores each for a clean uptrend (4h BULLISH backbone + 1h confirm + 24h momentum + RSI room; minScore 5) and carries it LONG — no falling-knife hedges (a defensive must be trending up to be added). Sized small (margin_pct 10%): the position size is the cost control, so calm-time bleed is bounded while a crisis winner is free to run on a wide DSL.

ESCALATION book — the convex add (both directions, stress-gated)

Dormant in calm (cash = dry powder). When STRESS confirms, it goes LONG the spiking crisis complex (crisisLongs: gold/silver/oil/CL/natgas/dollar/yen) and SHORT the cratering risk complex (riskAssets: BTC/ETH/SOL/HYPE/SUI + growth indices), each scored in its mandated direction (minScore 5). Sized larger (margin_pct 22%) — this is the payoff leg.

Execution & exit

  • both books: slots 3, strict 5x clamp, tick 300s
  • HEDGE margin_pct 10% — DSL wide let-it-run (hold the insurance): phase1 max_loss 16%, all time-cuts OFF, hard_timeout 10d; phase2 12%→0 / 25%→45 / 50%→65 / 90%→80 / 140%→90
  • ESCALATION margin_pct 22% — DSL moderate-tight (crises reverse violently, bank the spike): phase1 max_loss 12%, weak_peak_cut ON (3h @ 2.0), dead_weight_cut ON (6h), hard_timeout 2d; phase2 8%→35 / 18%→60 / 35%→75 / 60%→88

XYZ handling

Every defensive + most stress probes are XYZ — candle fetches route with dex="xyz" (the producer keys off the xyz: prefix). XYZ trades 24/7 (no market-hours gating), so the hedge carries and the stress detector watches through weekends. The main/xyz clearinghouse sections are two VIEWS of ONE cross-margined wallet, so get_positions() takes accountValue ONCE via max() — never sums.

Risk gates (risk.guard_rails)

Gatehedgeescalation
daily_loss_limit_pct814
max_entries_per_day38
max_consecutive_losses45
cooldown_minutes12045
drawdown_halt_pct2022
per_asset_cooldown_minutes360120
data_retention_hours16896
drawdown_reset_on_day_rollovertruetrue

Entries and exits both use FEE_OPTIMIZED_LIMIT (ensure_execution_as_taker true).

Files

FilePurpose
runtime-hedge.yamlHedge-book runtime spec (small, wide let-it-run DSL)
runtime-escalation.yamlEscalation-book runtime spec (larger, moderate-tight DSL)
scripts/rhino-producer.pyBook-aware producer daemon (shared stress detector + both books)
scripts/rhino_config.pyLeg resolution + SenpiClient wrapper + helpers
config/rhino-hedge-config.jsonHedge-book tunables (defensive whitelist)
config/rhino-escalation-config.jsonEscalation-book tunables (crisis longs / risk shorts, stress params)

Operator install

See README.md — the two books are two daemons (RHINO_LEG=hedge and RHINO_LEG=escalation) on two wallets (default 50/50 funding — the hedge runs small, the escalation holds dry powder), each with its own runtime YAML.

Hard rule for user-conversation Claude sessions

User-conversation Claude sessions MUST NOT call any of: create_position, close_position, edit_position, ratchet_stop_add, ratchet_stop_edit, ratchet_stop_delete, cancel_order, strategy_close, strategy_close_positions.

These tools are reserved for the producer daemon (entry path) and the DSL ratchet engine (exit path). User-conversation sessions are read-only. Each producer daemon handles real signals on its next tick.

License

Apache-2.0 — Copyright 2026 Senpi (https://senpi.ai)

Comments

Markdown supported