신호 사후 분석 (Signal Postmortem)
개요
Signal Postmortem은 엣지 파이프라인, 스크리너 및 기타 스킬에서 생성된 트레이딩 신호의 결과를 기록하고 분석합니다. 예측된 방향을 5일 및 20일 실현 수익률과 비교하고, 결과를 진짜 양성(true positive), 허위 양성(false positive), 놓친 기회(missed opportunity), 체제 불일치(regime mismatch)로 분류합니다. 또한 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 또는 SHORTsource_skill: 신호를 생성한 스킬entry_price: 신호 생성 시 가격 (선택 사항, 수동 재정의용)
# 예: 사후 분석 준비가 완료된 신호 목록 (5일 이상 경과)
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 "목표가에서 청산, 5일 동안 +3.2%" \
--output-dir reports/
3단계: 결과 분류
기록기는 자동으로 각 신호를 네 가지 범주 중 하나로 분류합니다.
| 범주 | 정의 |
|---|---|
| TRUE_POSITIVE | 예측 방향이 실현 수익률 부호와 일치함 |
| FALSE_POSITIVE | 예측 방향이 실현 수익률과 반대임 |
| MISSED_OPPORTUNITY | 신호가 실행되지 않았으나 수익성이 있었을 경우 |
| REGIME_MISMATCH | 시장 체제 변화로 인해 신호가 실패함 |
분류 규칙은 references/outcome-classification.md에 문서화되어 있습니다.
4단계: 피드백 파일 생성
다운스트림 소비자를 위한 피드백을 생성합니다.
# edge-signal-aggregator를 위한 가중치 조정 제안 생성
python3 skills/signal-postmortem/scripts/postmortem_analyzer.py \
--postmortems-dir reports/postmortems/ \
--generate-weight-feedback \
--output-dir reports/
# 스킬 개선 백로그 항목 생성
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": "깔끔한 돌파, 약간의 조정을 견딤",
"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": "RISK_OFF 체제에서 15% 허위 양성률",
"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: "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-- 다운스트림 스킬과 피드백 통합 방법
주요 원칙
- 정직한 귀속 -- 모든 결과는 책임 추적을 위해 해당 소스 스킬에 귀속됩니다.
- 체제 인식 -- 체제 컨텍스트를 기록하여 스킬 실패와 시장 체제 변화를 구분합니다.
- 최소 표본 크기 -- 가중치 조정에는 통계적 유의성을 위해 20개 이상의 신호가 필요합니다.
- 피드백 루프 종료 -- 결과는 신호 수집 및 스킬 품질을 모두 개선하기 위해 피드백됩니다.