mcpField
O
owl-strategy

owl-strategy

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

owl-strategy について

owl-strategyは、混雑した取引とその失速兆候を暗号資産の無期限先物から探し、逆張りエントリーのシグナルを出すSenpiスキルです。プロデューサーデーモンがシグナルを送り、実行とポジション管理はランタイムが担います。

主な機能

  1. 01混雑度と失速のスコアリング
  2. 02継続性とマクロトレンドのゲート
  3. 03OIで絞り込む無期限先物ユニバース
  4. 04逆張りシグナルの送信
  5. 05ランタイムによるリスク制限

活用シーン

  1. 01失速の兆候がある混雑取引の検出
  2. 02BTCの大きな値動き時に逆張り候補を除外
  3. 03逆張り候補シグナルのランタイムへの送信

MCP 対応

プロデューサーはSenpiClient.mcp_call()で市場データとポジショニングを取得し、SenpiClient.push_signal()で逆張りシグナルを送信します。ランタイムがシグナルを検証して処理します。

インストール

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

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

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

同梱ファイル

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

README.md
runtime.yaml
config/
owl-config.json
references/
skill-attribution.md
scripts/
owl_config.py
owl-producer.py

詳細

🦉 OWL v8.0 — 純粋な逆張り。Helpers ネイティブ。メイカー決済。

群衆が過剰にポジションを傾けるまで待ちます。勢いが尽きるまで待ちます。そして、その清算を刈り取ります。

一つのテーゼ:群衆は間違っています。 フリート内の他のすべてのスキルは、勢いに乗り、トレンドに沿い、スマートマネーとともにポジションに入ります。OWL だけが、群衆に逆らってポジションに入ります。優位性の源は、混み合ったトレードが激しく、予測可能な形で巻き戻ることです。


v8.0.0 での変更点

配管のみの移行です。テーゼの変更はありません。 v7.1 の混雑度/枯渇度スコアリング、永続性ゲート、MACRO_TREND_GATE、確信度に応じたレバレッジ、DSL プリセットはすべてそのまま維持されています。

@senpi-ai/runtime 1.1.0 での6層の配管変更です(Wolverine/Lemon/Cheetah の v3.0 以降への移行と同じパターンです)。

層v7.1v8.0
MCP 呼び出しmcporter サブプロセスSenpiClient.mcp_call() による直接 HTTPS
シグナル送信openclaw senpi external-scanner ingest サブプロセスSenpiClient.push_signal() による直接 HTTP POST
再入可能性producer.lock に対する手動実装の fcntl flockproducer_daemon.scanner_lock(古い PID を自動復旧)
ティックのスケジューリングopenclaw cron と agentTurn長時間稼働する producer_daemon プロセス
/state alive_checkなしwallet=/scanner= kwargs → runtime/scanner が削除されると daemon が自動終了
シグナルタイプのタグ付けペイロードから推定signal_type="OWL_CONTRARIAN_FADE" を明示的に渡す

v8.0 の理由: Owl をフリートの他の構成要素と同じ配管に統一します。ティックごとのサブプロセスのオーバーヘッドを解消します(約30~60秒 → 約1~3秒のティック)。テーゼの変更はありません。v7.1 がテーゼに関する最新の作業です。


テーゼ(v7.1/v6.2 から維持)

  • 混雑度スコア: 資金調達率の極端さ(0~4)+ SM 傾斜(0~3、資金調達率を裏付ける場合は +1)+ OI 集中度(0~2)。下限は6です。
  • 持続性: 下限を1時間以上超過し、ノイズに対して2ティックまで許容します(v5.3)。
  • 枯渇度スコア: 出来高の減少+価格の停滞+出来高急増後の追随なし+ RSI ダイバージェンス。異なるシグナルが2つ以上、スコアが5以上です。
  • 合計スコアが12以上で発動します。
  • マクロトレンドゲート: |BTC 4h move| が3%を超える場合、暗号資産の逆張りをブロックします(v7.1)。
  • 損失後は資産ごとに6時間のクールダウンを設けます。
  • 対象ユニバース: OI が300万ドルを超えるすべての暗号資産パーペチュアル(v6.1 で拡大、上位30件への切り捨てなし)。
  • XYZ は禁止です(巻き戻りの動きが異なるため、個別の調整が必要です)。

ファイル

ファイル用途
runtime.yamlランタイム仕様(スキャナー、アクション、出口 DSL、guard_rails)— スキーマバージョン 1.8.0
scripts/owl-producer.py長時間稼働する Helpers ネイティブのプロデューサーデーモン(15分間隔)
scripts/owl_config.py共有 MCP ヘルパー+_wrapper_client プロキシ+アトミックな状態 I/O
config/owl-config.jsonオペレーターが調整できるデフォルト値(参考情報。プロデューサーの定数が優先されます)

プロデューサーの動作

15 分ごとに実行されます(長時間稼働するデーモンであり、openclaw cron ではありません)。各ティックで次を行います。

  1. ウォレットを解決します(環境変数 OWL_WALLET を使用し、未設定の場合は config.wallet にフォールバックします)。両方とも空の場合は、エラーを明確に出して停止します。
  2. アカウント価値を読み取ります。サイズ計算と動的上限設定のため、strategy_get_clearinghouse_state を使用します。
  3. 動的な日次上限を適用します(ランタイムの guard_rails と併せて多層防御を行います)。
  4. 対象銘柄を取得します。market_list_instruments を使用し、OI が 300 万ドルを超える約 80〜100 の暗号資産無期限先物を取得します。
  5. SM ポジショニングマップを取得します(すべての資産で共有する MCP 呼び出しを 1 回行います)。
  6. MACRO_TREND_GATE: |BTC 4h move| が 3% を超える場合は、ティックをスキップします。
  7. 銘柄ごとに群集度をスコアリングし、継続性の履歴を更新します。
  8. 継続性のある候補に絞り込みます(群集度が下限以上の状態が 1 時間以上)。
  9. 継続性のある候補のみ枯渇を検出します(MCP 呼び出しを節約します)。
  10. 合計スコアが 12 以上で、銘柄ごとのクールダウンが終了しているものに絞り込みます。
  11. 確信度に応じたレバレッジ(スコアに応じて 7/8/10)で、最上位の逆張り候補を cfg._wrapper_client.push_signal(..., signal_type="OWL_CONTRARIAN_FADE", ...) を介して通知します。
  12. 群集度の履歴とクールダウン状態を state/<wallet-hash>/ に保存します。

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

方向は群集の方向と反対です。 これがエッジのすべてです。群集度に逆らうのは Owl だけです。


エントリーフロー

Producer daemon tick (every 900s)
  ↓ Crowding score >= 6, persisted >= 1h
  ↓ Exhaustion score >= 5 with >= 2 signals
  ↓ Combined score >= 12
  ↓ SenpiClient.push_signal(scanner="owl_signals", signal_type="OWL_CONTRARIAN_FADE", ...)
Runtime (127.0.0.1:8787)
  ↓ Schema-validates fields against runtime.yaml
  ↓ LLM gate (decision_model = ${OWL_DECISION_MODEL})
  ↓ Pass-through unless malformed; rejects if direction == crowdDirection
  ↓ OPEN_POSITION via FEE_OPTIMIZED_LIMIT (maker-only, 60s, NO taker fallback)
DSL (runtime-managed)
  ↓ Phase 1 max_loss 35% / single-breach (wide for contrarian retrace)
  ↓ Phase 2 6-tier ladder starting at 5% trigger (Lemon-pattern first leg)
  ↓ hard_timeout 480m, weak_peak 120m@2%, dead_weight 30m
  ↓ Exit via FEE_OPTIMIZED_LIMIT (maker-first, 60s, taker fallback)

必須の環境変数

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

変数用途
${WALLET_ADDRESS}ストラテジーのウォレットアドレス
${TELEGRAM_CHAT_ID}通知用の Telegram チャット ID
${OWL_DECISION_MODEL}LLM ゲート用のモデル名のみ。プロバイダーのプレフィックスは付けません。

プロデューサーが読み取る環境変数は次のとおりです。

変数用途デフォルト
SENPI_AUTH_TOKENMCP 呼び出しとシグナルの POST に必須です—(必須。未設定の場合、プロデューサーはエラーを明確に出して停止します)
OWL_WALLETウォレット(ランタイム YAML のウォレットと一致させる必要があります)。エージェントごとに設定する仕様です。Turbine v2.0.9 の混入防止修正によるものです。config.wallet にフォールバックします
OWL_MARGIN_PCTスロットごとのアカウント価値の割合0.25
OWL_MIN_OI_USDOI の下限を上書きします3000000

リスク範囲(宣言的に定義し、ランタイムが適用)

設定値
スロット数2
スロットあたりの証拠金アカウント価値の 25%(1,000 ドルの場合、デフォルトで約 250 ドル)
デフォルトのレバレッジ8x(確信度別の段階:12〜13 で 7x、14〜15 で 8x、16 以上で 10x)
日次損失による停止10%
ドローダウンによる停止25%(プロデューサー側のサーキットブレーカーとしても適用)
1 日あたりの最大エントリー数4(ランタイムの上限)。プロデューサー側では損益に応じて動的に制限します
連続損失の最大数4
銘柄ごとのクールダウン360 分(損失後 6 時間)
資産の対象範囲OI が 300 万ドルを超えるすべての暗号資産無期限先物(XYZ は禁止)

動的な日次上限(プロデューサー側、v6 から引き継ぎ):

アカウントの状態1 日あたりの最大エントリー数
PnL < -25%0(ハードストップ。ランタイムも停止します)
PnL < -15%1
PnL < -5%2
当日の実現 PnL < +$1502(基本)
当日の実現 PnL ≥ +$1503
当日の実現 PnL ≥ +$4004

予想される動作

指標予想
スキャンごとの群集銘柄数下限を超える銘柄が 5〜15
1 時間以上継続する銘柄通常は 1〜3
枯渇の合流条件スキャンごとに 0〜1
1 日あたりの取引数0〜2
平均保有時間1〜8 時間
目標勝率60〜70%(タイミングが適切な場合、逆張りによるポジション解消は安定した成果が期待できます)

何もしないのが正解です。 Owl は群集状態と枯渇トリガーの両方が揃うまで待ちます。ほとんどの日は、どちらか、または両方が揃いません。独自の判断で動かないでください。


v8.0.0 変更履歴

  • 配線のみの変更です。 Wolverine v5.0/Lemon v2.0 のテンプレートに従って、6 層を切り替えました。主旨は v7.1 から一字一句変更していません。
  • owl_config.py:mcporter_call() が SenpiClient.mcp_call()(HTTPS 直接接続)経由で呼び出されるようになりました。push_signal() 用に _wrapper_client プロキシを公開します。
  • owl-producer.py:fcntl ロックファイルと subprocess.run([...ingest]) を削除しました。producer_daemon(fn=main, interval_seconds=900, ...) と cfg._wrapper_client.push_signal(signal_type="OWL_CONTRARIAN_FADE", ...) を使用します。
  • runtime.yaml:スキーマのバージョンを 1.7.1 から 1.8.0 に引き上げました。説明文を改訂しました。DSL プリセット、スキャナー owl_signals、アクション owl_entry、consecutive_breaches_required: 1 に変更はありません。
  • 状態ファイルに変更はありません。crowding-history.json/asset-cooldowns.json/trade-counter.json は引き続き state/<wallet-hash>/ に保存されます。

ライセンス

Apache-2.0 — Senpi(https://senpi.ai)が開発しました。派生物には帰属表示が必要です。 ソース:https://github.com/Senpi-ai/senpi-skills


スキルの帰属表示

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

コメント