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. 02复盘达到 5 日或 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

详细介绍

信号复盘

概述

信号复盘会记录并分析由边缘管线、筛选器和其他技能生成的交易信号的结果。它会将预测的边缘方向与 5 日和 20 日的实际收益进行比较,将结果归类为(真阳性、假阳性、错失机会、市场状态不匹配),并为 edge-signal-aggregator 的权重调整和技能改进待办事项生成反馈。

适用场景

  • 交易平仓后,想要记录交易结果时
  • 检查一批已达到持有期限(5 天或 20 天)的信号时
  • 识别特定技能产生的系统性假阳性模式时
  • 为 edge-signal-aggregator 权重校准生成反馈时
  • 根据决策质量指标构建技能改进待办事项时
  • 定期(每周/每月)审查信号质量时

前提条件

  • Python 3.9+
  • FMP API 密钥(可选;若未手动提供实际收益数据,可用于获取数据)
  • 标准库 + requests(用于 API 调用)
  • 输入: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:对结果分类

记录器会自动将每个信号归入以下四类之一:

类别定义
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. 闭合反馈回路 -- 将结果反馈回去,改进信号聚合和技能质量

评论

支持 Markdown