mcpField
C
contrarian-setup-gate

contrarian-setup-gate

github.com/tradermontyその他3.4k2.5k 回インストール2 日前に更新
リポジトリ

contrarian-setup-gate について

逆張り分析のポジション偏り、ニュース反応、週足の値動きという3段階のレポートを統合するオフラインスキルです。明示的な優先順位と検証規則でセットアップ状態を判定しますが、データ取得や注文、売買推奨は行いません。

主な機能

  1. 01上流の3つのJSONレポートを統合
  2. 02鮮度とレポート間の整合性を検証
  3. 03フェイルクローズの優先規則で状態を判定
  4. 04阻害要因、理由、警告を表示
  5. 05APIキー不要のオフライン実行

活用シーン

  1. 01逆張り分析の各段階の進捗を確認
  2. 02続行前に不足・無効なレポートを特定
  3. 03確認済みの方向とストップ基準をポジション管理に渡す

インストール

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

$npx skills add https://github.com/tradermonty/claude-trading-skills --skill contrarian-setup-gate

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

同梱ファイル

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

requirements.txt
references/
gate-decision-table.md
scripts/
gate_logic.py
run_contrarian_setup_gate.py
scripts/tests/
conftest.py
test_gate_logic.py
test_run_contrarian_setup_gate.py

詳細

コントラリアン・セットアップゲート

概要

Jason Shapiro の 3 ステップのコントラリアンプロセスの出力を、実行可能な 1 つの状態に統合します。cot-contrarian-detector(ステップ 1)はポジションの偏りを検出し、news-reaction-failure-analyzer(ステップ 2)は、偏りを持つ市場参加者に有利なニュースに市場が反応しなかったかを検証します。technical-analyst の contrarian-confirmation モード(ステップ 3)は、週足の値動きが示す反転の証拠を確認します。このゲートは、これら 3 つのレポート JSON を読み込み、明示的かつ徹底的にテストされた優先順位ルールを適用して、1 つの setup_status を生成します。確認できなかった入力には、必ず fail-closed の理由が付記されます。

このゲートはデータの取得や API 呼び出しを行わず、渡された 3 つの入力の検証と統合以外の計算も行いません。パイプラインのデータソースではなく、統合の中心です。

使用するタイミング

  • cot-contrarian-detector の実行後(パイプラインの開始点として常に必須です)
  • 検出器のレポートだけがあるパイプラインの途中で、CROWDED 状態と残りのステップを確認するとき
  • news-reaction-failure-analyzer の実行後に、セットアップが WATCHING_PRICE に進むか、REJECTED になるかを確認するとき
  • technical-analyst の contrarian-confirmation モードの実行後に、セットアップが READY_FOR_PLAN に達したかを確認するとき
  • シンボルの方向とストップ水準をポジションサイズ調整スキルに渡す前

前提条件

  • Python 3.9+
  • API キーは不要です。このスキルは完全にオフラインで動作します
  • 評価対象シンボルの cot-contrarian-detector JSON レポート(必須)
  • 同じシンボルの news-reaction-failure-analyzer JSON レポート(任意、ステップ 2)
  • 同じシンボルの technical-analyst contrarian-confirmation JSON レポート(任意、ステップ 3)

ワークフロー

Step 1: ゲートを実行する
python3 skills/contrarian-setup-gate/scripts/run_contrarian_setup_gate.py \
  --symbol B6 \
  --detector-json reports/cot_crowding_2026-07-12.json \
  --news-json reports/nrf_B6_2026-07-12.json \
  --price-action-json reports/ta_confirmation_B6_2026-07-12.json \
  --as-of 2026-07-15 \
  --output-dir reports/

--symbol と --detector-json は必須です。--news-json と --price-action-json は任意で、パイプラインのその段階での状態を確認する場合は、どちらかを省略できます。--as-of は必須です(暗黙の「今日」はありません)。再実行時に結果が確定的になるよう、鮮度は常に明示的な基準日で評価されます。

終了動作は意図的に非対称です。--as-of がない、または不正な場合(その他の CLI 使用エラーも同様)、オペレーターの設定ミスとして、CLI は使用方法を表示して 2 で終了し、レポートを書き出しません。信頼できない 3 つのレポートファイルに問題(読み取り不可、不正な形式、古い、一貫性がない)がある場合は、常に代わりに fail-closed として処理されます。CLI は 0 で終了し、パイプライン内の他のすべてのスキルと同様に、理由を記載したレポートを書き出します。

Step 2: セットアップのステータスを確認する
ステータス意味次のステップ
READY_FOR_PLAN3 つのステップすべてで確認済みです。direction、entry_trigger、invalidation_level が設定されていますdirection と invalidation_level をポジションサイズ調整スキルに渡します
WATCHING_PRICEポジションの偏りとニュースは確認済みです。値動きの確認は保留中ですtechnical-analyst の contrarian-confirmation モードを実行します
CROWDEDポジションの偏りは確認済みです。ニュースや値動きの確認は保留中ですnews-reaction-failure-analyzer を実行します
REJECTEDポジションの偏りが NOT_CONFIRMED(分類は NEUTRAL)であるか、ニュースまたは値動きの確認結果が NOT_CONFIRMED でした停止してください。このシンボル/方向について、以降のステップは実行しないでください
INSUFFICIENT_EVIDENCE必須の入力がない、読み取れない、古い、一貫性がない、または入力自体で判定に至らなかった状態です停止してください。名前が示された入力を修正または再生成してから、再実行してください

missing_confirmations には、まだ完了していない各ステップと、その state および reason が一覧表示されます。warnings によってステータスが変わることはありません。確信度 MEDIUM の確認シグナルや、鮮度の期限が近い入力など、監査が必要な条件を示します。

ステップ 3:READY_FOR_PLAN の場合のみ行動する

READY_FOR_PLAN では、direction(SHORT/LONG、群衆に逆行する側)、entry_trigger(確認済みの週次シグナルを事実に基づいて反映したもの)、invalidation_level(プライスアクションレポートに記載されたストップの基準値)が設定されています。gate_confidence はニュースとプライスアクションの信頼度のうち低い方です(HIGH/MEDIUM/LOW。LOW は、上流の両スキルで予約済みとされているものの、実際には出力されないトークンです。このゲートでは受け付け、未知の値として拒否するのではなく、最も低い信頼度として扱います)。次のパイプライン段階はポジションサイジングです(このスキルのリリース時点ではまだ実装されていません。リポジトリのワークフロードキュメントにあるロードマップを参照してください)。このゲートが注文を出したり推奨したりすることはありません。

優先順位(概要)

各ステップは、群衆、ニュース、プライスアクションの順に、厳密なパイプライン順で評価されます。各ステップは次のステップのファイルを参照する前に、完全に確定します。先行するステップで確定した判定が、後続ステップの問題によって覆ることはありません。

  1. 群衆の評価を最初に、かつ単独で行います。群衆の判定が INVALID/INSUFFICIENT の場合は常に INSUFFICIENT_EVIDENCE です。分類が NOT_CONFIRMED(NEUTRAL)の場合は、下流のファイルの状態や破損にかかわらず、常に REJECTED です。
  2. 群衆が CONFIRMED の場合、次にニュースを単独で評価します。ニュースが INVALID(読み取り不能、不正な形式、古い、銘柄不一致、方向不一致、未対応のスキーマ)の場合は INSUFFICIENT_EVIDENCE となります。NOT_CONFIRMED の場合は REJECTED、INSUFFICIENT の場合は INSUFFICIENT_EVIDENCE です。いずれの場合も、判定のためにプライスアクションを確認することはありません。
  3. ニュースが CONFIRMED(または順序が前後した使用で PENDING)の場合、最後にプライスアクションを評価し、同じ 4 通りの判定を行います。ニュースより先にプライスアクションを実行した場合(パイプラインの順序が前後した使用)、ステータスは警告付きの CROWDED が上限となります。ただし、その順序が前後した分岐でもプライスアクションの判定は完全に評価されるため、NOT_CONFIRMED の場合は REJECTED となります。
  4. 群衆が確認済みで、下流の両ステップが保留中の場合 -> CROWDED。
  5. 群衆とニュースが確認済みで、プライスアクションが保留中の場合 -> WATCHING_PRICE。
  6. 3 つすべてが確認済みの場合 -> READY_FOR_PLAN。

すべての到達可能な状態の組み合わせ({crowding} × {news} × {price-action})、理由トークンの用語集、具体例を含む完全な判定表については、references/gate-decision-table.md を参照してください。

出力仕様

スクリプトは --output-dir に contrarian_setup_gate_<SYMBOL>_<as-of>.json と .md を書き込みます。

symbol: B6
setup_status: READY_FOR_PLAN | WATCHING_PRICE | CROWDED | REJECTED | INSUFFICIENT_EVIDENCE
direction: SHORT | LONG | null
gate_confidence: HIGH | MEDIUM | LOW | null
entry_trigger: string | null
invalidation_level: number | null
missing_confirmations: [{step, state, reason}, ...]
warnings: [string, ...]
inputs:
  crowding: {state, classification, data_date, age_days, report_path}
  news_failure: {state, verdict, confidence, verdict_reason, as_of, age_days, report_path}
  price_action: {state, verdict, confidence, verdict_reason, stop_reference, as_of, age_days, report_path}
run_context: {symbol, as_of, max_detector_age_days, max_report_age_days, schema_version, skill}

各入力の state は、CONFIRMED、NOT_CONFIRMED、INSUFFICIENT、PENDING(レポートが提供されていない)、または INVALID(レポートは提供されたものの使用できない状態。読み取り不能、不正な形式、古い、または他の入力と矛盾している状態であり、必ず理由が明記されます)のいずれかです。

ガードレール

  1. 注文の発注や推奨は一切行いません。 このスキルが到達する最終状態は READY_FOR_PLAN です。注文の入力とポジションサイズの決定は、別途行う後続の判断です。
  2. INSUFFICIENT_EVIDENCE と REJECTED は先へ進みません。 警告、確信度、入力の一部がそろっていることによって、ステータスが優先順位ルールで許容される範囲を超えることはありません。
  3. すべての入力に対して、常にフェイルクローズとします。 読み取れない、形式が不正、古い、シンボルが一致しない、または不明な列挙値を含むレポートを、合格として扱うことはありません。その内容を明示し、ステータスをブロックまたは引き下げます。これには、価格アクションレポートの verdict_reason(型チェックだけでなく、technical-analyst が実際に使用する確認シグナルの語彙に基づく許可リストで検証)と、その stop_reference(有限の正の数でなければならず、非有限値、ゼロ、負数、ブール値は不可)が含まれます。3 つのレポートファイルのいずれかがこの検証に進む前に、CLI はファイル内の ANYWHERE に非有限数(Infinity/-Infinity/NaN。解析時にオーバーフローする 1e309 のような一見通常の数値も含む)があれば、そのファイル全体を拒否します(理由は <input>_non_finite)。ゲートが読み取るフィールドだけを対象にするのではありません。これにより、悪意のある入力に対しても、すべてのレポートが有効かつ完全な JSON ファイルとして保たれます。
  4. READY_FOR_PLAN には、必ず使用可能なプランが含まれます。 ステータスが READY_FOR_PLAN の場合、entry_trigger は必ず空ではなく、invalidation_level は必ず有限の正の数になります。これは入力検証と防御的な不変条件チェックの両方で保証されます。
  5. 投資助言ではありません。 entry_trigger と invalidation_level は、上流の価格アクションレポートの事実をそのまま反映したものであり、推奨ではありません。

リソース

  • scripts/run_contrarian_setup_gate.py -- CLI:強化された JSON 読み込み(読み取り不可/解析エラー。RecursionError を含む/非有限値。ファイル全体を反復スキャンして検出)、レポート生成
  • scripts/gate_logic.py -- 純粋な統合コア:正規化(形式不正の検出を含む)、整合性チェック、優先順位に基づく状態遷移マシン
  • references/gate-decision-table.md -- 完全な意思決定表、理由トークンの用語集、実例(実際の B6 REJECTED ケースを含む)

コメント