All skills
tradermonty avatar

/signal-postmortem

@0b7ef95

Record and analyze post-trade outcomes for signals generated by edge pipeline and other skills. Track false positives, missed opportunities, and regime mismatches. Feed results back to edge-signal-aggregator weights and skill improvement backlog.

Use this Skill: https://skilld.dev/gh/tradermonty/claude-trading-skills/signal-postmortem

This session only. Nothing lands on disk.

referencesoutcome-classification.md

≈1.3k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Outcome Classification Guide

Overview

This document defines how signal outcomes are classified in the postmortem process. Accurate classification is essential for meaningful feedback to edge-signal-aggregator and skill improvement.

Classification Categories

1. TRUE_POSITIVE

Definition: The predicted direction matched the realized return sign.

Criteria:

  • LONG signal with positive realized return at holding period
  • SHORT signal with negative realized return at holding period
  • Minimum threshold: |return| >= 0.5% to avoid noise classification

Examples:

  • Signal: LONG AAPL at $170, predicted 5-day upside
  • Outcome: AAPL at $175 after 5 days (+2.9%)
  • Classification: TRUE_POSITIVE

2. FALSE_POSITIVE

Definition: The predicted direction was opposite to the realized return.

Criteria:

  • LONG signal with negative realized return at holding period
  • SHORT signal with positive realized return at holding period
  • Minimum threshold: |return| >= 0.5% to avoid noise classification

Sub-categories:

  • FALSE_POSITIVE_MILD: -0.5% to -2% for LONG (or +0.5% to +2% for SHORT)
  • FALSE_POSITIVE_SEVERE: worse than -2% for LONG (or +2% for SHORT)

Examples:

  • Signal: LONG NVDA at $900, predicted breakout
  • Outcome: NVDA at $870 after 5 days (-3.3%)
  • Classification: FALSE_POSITIVE_SEVERE

3. MISSED_OPPORTUNITY

Definition: A signal that was generated but not acted upon, and would have been profitable.

Use Cases:

  • Signals filtered out by aggregator confidence threshold
  • Signals skipped due to position sizing constraints
  • Signals in watchlist but not traded

Criteria:

  • Signal was generated but trade_taken = false
  • Realized return in predicted direction >= 2%

Note: This category helps identify overly conservative filtering.

4. REGIME_MISMATCH

Definition: Signal failed primarily due to a market regime change rather than skill error.

Criteria:

  • regime_at_signal differs from regime_at_exit
  • AND return in opposite direction of prediction
  • Regime change must be documented (e.g., VIX spike, Fed announcement)

Examples:

  • Signal: LONG growth stock on 2026-03-05 (RISK_ON regime)
  • Outcome: Tariff announcement on 2026-03-07 triggered RISK_OFF
  • Result: Stock down 8% due to sector rotation
  • Classification: REGIME_MISMATCH (not FALSE_POSITIVE)

Regime Detection:

  • RISK_ON: VIX < 20, breadth > 60%, leading stocks advancing
  • RISK_OFF: VIX > 25, breadth < 40%, defensive rotation
  • TRANSITION: Mixed signals, high uncertainty

Edge Cases

Flat Outcome (|return| < 0.5%)

  • Classification: NEUTRAL
  • Does not count as TRUE_POSITIVE or FALSE_POSITIVE
  • May indicate weak signal strength

Early Exit

When a trade is closed before the target holding period:

holding_period_actual < holding_period_target
  • Use actual holding period for return calculation
  • Note early_exit = true in postmortem record
  • Include early_exit_reason: stop_loss, target_reached, discretionary

Gap Events

If the stock gapped significantly at open due to overnight news:

  • Record gap_event = true
  • Include gap_pct in postmortem
  • Consider separate analysis for gap-driven outcomes

Multiple Holding Periods

The skill tracks both 5-day and 20-day returns:

Metric 5-Day 20-Day
Purpose Short-term edge validation Medium-term edge validation
Threshold 0.5% 1.0%
Weight for feedback 60% 40%

A signal can be TRUE_POSITIVE at 5 days but FALSE_POSITIVE at 20 days (or vice versa). Both are recorded.

Classification Decision Tree

1. Was the trade taken?
   NO  -> If would have been profitable: MISSED_OPPORTUNITY
         Otherwise: SKIPPED (no postmortem needed)
   YES -> Continue

2. Did regime change during holding period?
   YES -> Is return in wrong direction AND > 2% loss?
          YES -> REGIME_MISMATCH
          NO  -> Continue
   NO  -> Continue

3. Is |return| < 0.5%?
   YES -> NEUTRAL
   NO  -> Continue

4. Does return sign match predicted direction?
   YES -> TRUE_POSITIVE
   NO  -> FALSE_POSITIVE (check severity)

Attribution Rules

Single-Source Signals

When a signal comes from one skill (e.g., vcp-screener alone):

  • Full attribution to that skill

Aggregated Signals

When a signal comes from edge-signal-aggregator combining multiple skills:

  • Attribution proportional to each skill's contribution weight
  • Example: VCP (0.4) + CANSLIM (0.3) + Breadth (0.3)
  • If FALSE_POSITIVE: each skill receives proportional negative feedback

Override Signals

When a human overrides a skill recommendation:

  • Record human_override = true
  • Separate analysis track for human decision quality

Confidence Adjustment Factors

Classification confidence is adjusted based on:

Factor Adjustment
High volume day +10% confidence
Low volume day -10% confidence
Earnings during holding period -20% confidence
VIX spike > 5 points -15% confidence
Large gap (> 3%) -15% confidence

Final confidence is capped at [0.5, 1.0] range.

Source: SKILL.md on GitHub

1 warning16d4 checks · Risk SAFE
  • Gen Agent Trust Hub16d

    The skill provides utility for tracking and evaluating trading signals, but contains a low-severity finding regarding an automated capability surface for processing untrusted data via JSON input files.

  • Socket16d

    No alerts

  • Snyk16d

    Risk: MEDIUM · 2 issues

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 0b7ef95. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 18 hours ago.

Activeupdated 6 months ago

README badge

README badge for tradermonty/claude-trading-skills/signal-postmortem