mcpField
R
roach-strategy

roach-strategy

github.com/senpi-aiその他14051 回インストール今日更新
リポジトリ

roach-strategy について

roach-strategyは、Senpi runtime向けのStriker専用トレードスキルです。Producerが条件に合う市場シグナルを検出してruntimeに渡し、ポジション執行とリスク管理はruntimeが担います。

主な機能

  1. 0190秒間隔の市場シグナルProducer
  2. 02Strikerシグナルの条件判定とクールダウン
  3. 03runtimeによる執行とリスク制限の管理
  4. 04Maker優先、Takerフォールバックの決済
  5. 05デーモンの稼働状況と活動の監視

活用シーン

  1. 01条件を満たす市場シグナルのSenpi runtimeへの送信
  2. 02runtimeのリスク制限下でのストラテジー運用
  3. 03Producerデーモンの稼働状況とシグナル活動の監視

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/roach-strategyを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
runtime.yaml
config/
roach-config.json
references/
skill-attribution.md
scripts/
roach_config.py
roach-producer.py

詳細

🪳 ROACH v3.0.0 — Striker のみ。senpi_runtime_helpers。

ゴキブリはどんなものにも耐えます。ROACH は、爆発的な動きがないときに取引しないことで生き残ります。


v2.0 での変更点

アーキテクチャ(投資仮説ではありません):

レイヤーv1.xv2.0
取引ループエージェントがスキャナーを実行し、エージェントが create_position を呼び出すProducer が SenpiClient.push_signal() でシグナルを送信し、ランタイムが実行を管理
エントリーゲートエージェントが判断LLM パススルーゲート(Producer がすでにフィルタリング済み)
決済runtime.yaml を介した DSL(良好)同じ DSL プリセットですが、FEE_OPTIMIZED_LIMIT 注文タイプを使用 — 60 秒間はメイカーを優先し、その後テイカーにフォールバック
リスクゲートエージェントがスキャナーコード内で適用runtime.risk.guard_rails による宣言的な設定
アセットごとのクールダウンProducer の状態ファイルランタイムと Producer の両方(多層防御)

v2 の理由: v1 はすべての決済で MARKET 注文を使用しており、HL のテイカー手数料として決済ごとに約 3 bp を支払っていました。直近の 25 件の取引サンプルでは、HL 手数料は $46 で、100% がテイカーでした。v2 の FEE_OPTIMIZED_LIMIT は、ensure_execution_as_taker: true と 60 秒のタイムアウトを設定し、メイカー約定を優先しつつ、ポジションを決済する必要がある場合はテイカーへのフォールバックを許容します。期待される回収率は、HL の決済手数料の 50~70% です。

v1.2 から投資仮説を維持: Stalker は無効。Striker のみ。#25 位以下からの FIRST_JUMP、順位上昇が 15 以上、または contribVelocity が 15 以上、理由が 4 つ以上でスコア 10 以上、出来高 1.5 倍、1 時間足の価格が一致、4 時間足のトレンドが一致、XYZ は禁止。


ファイル

ファイル目的
runtime.yamlsenpi-trading-runtime の仕様(スキャナー、アクション、決済 DSL、guard_rails)
scripts/roach-producer.pyCron 駆動の Producer — Striker シグナルをランタイムに送信
scripts/roach_config.pyMCP ヘルパーの共通処理とアトミックな状態 I/O
config/roach-config.jsonオペレーターが調整できるデフォルト値(参考情報。Producer の定数が優先されます)

Producer の動作

常駐デーモンとして 90 秒ごとに実行されます(producer_daemon 経由。古い PID の自動復旧機能を備えた scanner_lock はデーモンが管理します)。各ティックで次を実行します。

  1. 再入防止ガード: state/<wallet-hash>/producer.lock を取得します。前回の実行でロックが解放されていない場合(Cron の間隔が MCP のレイテンシーより短い場合)、今回の実行は問題なくスキップされます。
  2. マーケットを取得: leaderboard_get_markets(上位 50 件。解析時に XYZ を除外)。
  3. Striker シグナルを検出: スキャン履歴と比較し、順位の上昇、contribVelocity、寄与の急増を検出します。
  4. 厳格なゲートを適用: 4 時間足のトレンドが一致、cc_15m >= 0.5、1 時間足の価格が 0.1% 以上一致、出来高 >= 1.5 倍、スコア >= 10、理由が 4 つ以上、アセットが 120 分間のクールダウン中でないこと。
  5. シグナルを送信: client.push_signal() 経由で送信します(ランタイム API に直接 HTTP POST)。
  6. スキャン履歴とクールダウン状態を保存: state/<wallet-hash>/ の下に保存します。

実行コードはありません。ポジション追跡もありません。DSL 状態もありません。そのすべてをランタイムが管理します。


エントリーの流れ

Producer daemon (90s tick)
  ↓ Striker signal detected
  ↓ client.push_signal(scanner="roach_signals", ...)
Runtime
  ↓ Schema-validates fields against runtime.yaml
  ↓ LLM gate (decision_model = ${ROACH_DECISION_MODEL})
  ↓ Pass-through unless malformed (producer already filtered everything else)
  ↓ OPEN_POSITION via FEE_OPTIMIZED_LIMIT (maker-first, 60s, taker fallback)
DSL (runtime-managed)
  ↓ Phase 1 max_loss 18% / 3-breach
  ↓ Phase 2 tiers (7/40, 12/55, 15/75, 20/85)
  ↓ hard_timeout 120min, weak_peak 45min, dead_weight 25min
  ↓ Exit via FEE_OPTIMIZED_LIMIT (maker-first, 60s, taker fallback)

必須の環境変数

ランタイム YAML では、次の置換変数を使用します。

変数目的
${WALLET_ADDRESS}戦略ウォレットのアドレス
${TELEGRAM_CHAT_ID}通知用の Telegram チャット ID
${ROACH_DECISION_MODEL}LLM ゲート用のモデル名のみ。プロバイダーのプレフィックスは付けません(例:google/...、anthropic/...、openai/...)。OpenClaw はプレフィックスを二重に付けるため、500 Unknown model エラーで拒否されます。OpenClaw ホストのランタイムレジストリがサポートする任意のモデルを選んでください。

Producer が読み込む環境変数は次のとおりです。

変数目的デフォルト
ROACH_WALLETウォレット(ランタイム YAML のウォレットと一致する必要があります)。設計上、エージェント固有です。汎用の STRATEGY_ADDRESS は使用しないでください。 Turbine v2.0.9 の混入修正によると、複数のエージェントが同じインストール環境を共有する場合、共有環境変数はフリート全体に影響する要因になります。—(必須。設定されていない場合、Producer は明示的に失敗します)
OPENCLAW_BINCLI バイナリ名openclaw
EXTERNAL_SCANNER_NAMEスキャナー IDroach_signals
ROACH_LEVERAGEシグナルペイロードで指定するレバレッジ7
ROACH_MARGIN_USDシグナルペイロードで指定するスロットごとの証拠金250

プロデューサーのインストール(OpenClaw ホスト上)

senpi-skills リポジトリ内のソースパス:roach/。OpenClaw ホスト上のインストール先:/data/workspace/skills/roach-strategy/。2つの名前は異なります。リポジトリでは roach、インストールディレクトリでは SKILL.md の name フィールド(roach-strategy)を使用します。

オペレーター向けのインストール手順全体は README.md にあります。5段階の手順です(openclaw.json へのプラグイン登録 → senpi-trading-runtime スキルのインストール → Roach ファイルの取得 → 環境変数の設定 → ランタイムの再作成とデーモンの起動 → スモークテスト)。

インストール後は、senpi-helpers CLI でデーモンを管理します。

senpi-helpers list                                  # daemons visible with recent LAST_TICK
senpi-helpers health roach-<wallet-suffix>          # exit 0 = healthy
senpi-helpers stats roach-<wallet-suffix> --hours 1 # signals posted + error histogram
senpi-helpers restart roach-<wallet-suffix>         # stop + re-exec from boot.json

プロデューサーの状態を確認します(ウォレットごとのスキャン履歴)。

ls -la /data/workspace/skills/roach-strategy/state/<wallet-hash>/
# Expect: scan-history.json with mtime in last few minutes.
# A fresh scan-history.json (mtime < 5 min) confirms the daemon is ticking.

リスク範囲(宣言型、ランタイムによる強制)

設定値
スロット(同時保有ポジションの上限)2
スロットあたりの証拠金$250
デフォルトのレバレッジ7x
日次損失による停止10%
ドローダウンによる停止25%
1日あたりのエントリー上限6
最大連敗数3
損失後のクールダウン30 min
資産ごとのクールダウン120 min
XYZ 株式プロデューサーのスキャン段階で禁止

想定される動作

指標予想
1日あたりの取引数(横ばい相場)0-1
1日あたりの取引数(トレンド相場)1-3
取引がゼロの日よくあることで、正常です
勝率目標 50-70%(Striker 品質)
決済あたりの平均手数料v1 より大幅に低い(メイカー約定)
手数料合計 / 出来高v1 のベースライン比で約 50-70% 削減

静かな状態が正常です。 Roach が24~48時間取引を行わない場合、それは取引に値する FIRST_JUMP の急騰がなかったことを意味します。これは実験が機能しているということであり、バグではありません。


v2 で削除されたもの

削除済み(責務はランタイムに移行):

  • roach-scanner.py(roach-producer.py に置き換え)
  • 取引カウンター / 日次損失の追跡(ランタイムの guard_rails)
  • ブートストラップゲート / config/bootstrap-complete.json(ランタイムのインストール処理が状態を管理)
  • スキャナーでの資産クールダウン管理(多層防御としてプロデューサーには引き続きありますが、権限を持つのはランタイムです)
  • PnL に基づく動的スロット数(スロットはランタイムが管理)
  • すべての create_position 呼び出し(実行はランタイムが管理)

恒久的に無効化(v1.0 で決定):

  • Stalker モードと、すべての蓄積検出
  • XYZ 株式(スキャン段階で禁止)

ライセンス

MIT — Senpi が開発(https://senpi.ai)。 ソース:https://github.com/Senpi-ai/senpi-skills


スキルの帰属情報

戦略を作成するときは、呼び出しに skill_name と skill_version を含めてください。詳細は references/skill-attribution.md を参照してください。

コメント