mcpField
S
signal-postmortem

signal-postmortem

github.com/tradermontyデータ・データベース3.4k3.3k 回インストール2 日前に更新
リポジトリ

signal-postmortem について

Signal Postmortemは、取引シグナルの評価と改善に使うスキルです。予測方向と実現リターンを比較して結果を分類し、重み調整やスキル改善向けのフィードバックを作成します。

主な機能

  1. 01予測方向と実現リターンの比較
  2. 02保有期間ごとの結果記録
  3. 03結果とレジーム不一致の分類
  4. 04重み調整向けフィードバック生成
  5. 05スキル・銘柄・期間別の集計

活用シーン

  1. 01決済済み取引のシグナル結果を記録
  2. 025日または20日経過したシグナルを評価
  3. 03スキル別の誤検出傾向を確認
  4. 04シグナル重みやスキル改善の検討

インストール

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

$npx skills add https://github.com/tradermonty/claude-trading-skills --skill signal-postmortem

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

同梱ファイル

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

requirements.txt
references/
feedback-integration.md
outcome-classification.md
scripts/
postmortem_analyzer.py
postmortem_recorder.py
scripts/tests/
conftest.py
test_cli_workflow.py
test_postmortem_analyzer.py
test_postmortem_recorder.py

詳細

Signal Postmortem

概要

Signal Postmortem は、エッジパイプライン、スクリーナー、その他のスキルによって生成されたトレーディングシグナルの結果を記録し、分析します。予測されたエッジの方向と、5 日および 20 日の実現リターンを比較し、結果を分類し(真陽性、偽陽性、見逃した機会、レジーム不一致)、edge-signal-aggregator の重み調整やスキル改善バックログ項目向けのフィードバックを生成します。

使用する場面

  • 取引を決済し、その結果を記録したい場合
  • 保有期間(5 日または 20 日)に達したシグナルのバッチをレビューする場合
  • 特定のスキルに起因する体系的な偽陽性パターンを特定する場合
  • edge-signal-aggregator の重み調整に向けたフィードバックを生成する場合
  • 意思決定品質の指標をもとにスキル改善バックログを作成する場合
  • 定期的(週次/月次)にシグナル品質を監査する場合

前提条件

  • Python 3.9+
  • FMP API キー(任意。手動で指定されていない場合に実現リターンを取得するため)
  • API 呼び出し用の標準ライブラリ + requests
  • 入力:JSON 形式のシグナルレコード(edge-signal-aggregator またはスクリーナーの出力)
API キーの設定(任意)

リターン計算用の価格データを自動取得する場合は、FMP API キーを設定します。

export FMP_API_KEY=your_api_key_here

代わりに、コマンドラインで --api-key YOUR_KEY を使ってキーを渡すこともできます。API キーがなくても、--exit-price と --exit-date を指定すれば、結果を手動で記録できます。

ワークフロー

ステップ 1:シグナルレコードを準備する

決済済みまたは満期に達したシグナルレコードを集めます。各レコードには、次の情報を含めます。

  • signal_id:一意の識別子
  • ticker:株式シンボル
  • signal_date:シグナルが生成された日付
  • predicted_direction:LONG または SHORT
  • source_skill:シグナルを生成したスキル
  • entry_price:シグナル生成時の価格(任意。手動で上書きする場合)
# Example: List signals ready for postmortem (5+ days old)
python3 skills/signal-postmortem/scripts/postmortem_recorder.py \
  --list-ready \
  --signals-dir state/signals/ \
  --min-days 5
ステップ 2:結果を記録する

ポストモーテム記録ツールを実行し、実現リターンを取得して結果を分類します。

python3 skills/signal-postmortem/scripts/postmortem_recorder.py \
  --signals-file state/signals/aggregated_signals_2026-03-10.json \
  --holding-periods 5,20 \
  --output-dir reports/

価格データをすでに利用できる場合は、結果を手動で記録します。

python3 skills/signal-postmortem/scripts/postmortem_recorder.py \
  --signal-id sig_aapl_20260310_abc \
  --exit-price 178.50 \
  --exit-date 2026-03-15 \
  --outcome-notes "Closed at target, +3.2% in 5 days" \
  --output-dir reports/
ステップ 3:結果を分類する

記録ツールは各シグナルを次の 4 つのカテゴリのいずれかに自動で分類します。

カテゴリ定義
TRUE_POSITIVE予測した方向が実現リターンの符号と一致
FALSE_POSITIVE予測した方向が実現リターンと反対
MISSED_OPPORTUNITYシグナルに従わなかったものの、従っていれば利益が出ていた
REGIME_MISMATCH市場レジームの変化が原因でシグナルが失敗

分類ルールは references/outcome-classification.md に記載されています。

ステップ 4:フィードバックファイルを生成する

後続のコンシューマー向けにフィードバックを生成します。

# Generate weight adjustment suggestions for edge-signal-aggregator
python3 skills/signal-postmortem/scripts/postmortem_analyzer.py \
  --postmortems-dir reports/postmortems/ \
  --generate-weight-feedback \
  --output-dir reports/

# Generate skill improvement backlog entries
python3 skills/signal-postmortem/scripts/postmortem_analyzer.py \
  --postmortems-dir reports/postmortems/ \
  --generate-improvement-backlog \
  --output-dir reports/
ステップ 5:要約統計を確認する

スキル別、ティッカー別、期間別に集計統計を生成します。

python3 skills/signal-postmortem/scripts/postmortem_analyzer.py \
  --postmortems-dir reports/postmortems/ \
  --summary \
  --group-by skill,month \
  --output-dir reports/

出力形式

ポストモーテムレコード(JSON)
{
  "schema_version": "1.0",
  "postmortem_id": "pm_sig_aapl_20260310_abc",
  "signal_id": "sig_aapl_20260310_abc",
  "ticker": "AAPL",
  "signal_date": "2026-03-10",
  "source_skill": "edge-signal-aggregator",
  "predicted_direction": "LONG",
  "entry_price": 172.50,
  "realized_returns": {
    "5d": 0.032,
    "20d": 0.058
  },
  "exit_price": 178.50,
  "exit_date": "2026-03-15",
  "holding_days": 5,
  "outcome_category": "TRUE_POSITIVE",
  "regime_at_signal": "RISK_ON",
  "regime_at_exit": "RISK_ON",
  "outcome_notes": "Clean breakout, held through minor pullback",
  "recorded_at": "2026-03-17T10:30:00Z"
}
重みフィードバック(JSON)
{
  "schema_version": "1.0",
  "generated_at": "2026-03-17T10:35:00Z",
  "analysis_period": {
    "from": "2026-02-01",
    "to": "2026-03-15"
  },
  "skill_adjustments": [
    {
      "skill": "vcp-screener",
      "current_weight": 1.0,
      "suggested_weight": 0.85,
      "reason": "15% false positive rate in RISK_OFF regime",
      "sample_size": 42
    }
  ],
  "confidence": "MEDIUM",
  "min_sample_threshold": 20
}
スキル改善バックログ項目(YAML)
- skill: vcp-screener
  issue_type: false_positive_cluster
  severity: medium
  evidence:
    false_positive_rate: 0.15
    sample_size: 42
    regime_correlation: RISK_OFF
  suggested_action: "Add regime filter or reduce signal confidence in RISK_OFF"
  generated_by: signal-postmortem
  generated_at: "2026-03-17T10:35:00Z"
要約レポート(Markdown)

レポートは reports/ に、postmortem_summary_YYYY-MM-DD.md というファイル名で保存されます。

リソース

  • scripts/postmortem_recorder.py -- 個々のシグナルの結果を記録します
  • scripts/postmortem_analyzer.py -- フィードバックと要約統計を生成します
  • references/outcome-classification.md -- 分類ルールと例外的なケース
  • references/feedback-integration.md -- 後続のスキルにフィードバックを統合する方法

主な原則

  1. 正直な帰属 -- 説明責任を果たすため、すべての結果を発生元のスキルに帰属させます
  2. レジームの認識 -- スキルの失敗と市場レジームの変化を区別できるよう、レジームのコンテキストを記録します
  3. 最小サンプルサイズ -- 重み調整には、統計的な妥当性を確保するため 20 件以上のシグナルが必要です
  4. フィードバックループの完結 -- 結果をフィードバックし、シグナル集約とスキル品質の両方を改善します

コメント