이 스킬
Event Radar Falsifier Ledger
이벤트·반응·내부자·자본 이벤트·컨센서스 신호마다 필요한 반증 조건을 열어 결론 과잉을 막는 L1/L1.5 절차다.
이어 가기
절차
실행 순서
- 1
open falsifier가 있으면 확정 표현을 쓰지 않는다.
- 2
counterEvidenceNeeded가 빈 문자열이면 실패다.
예시
이런 질문이 들어오면 이 skill 을 쓴다
- 이벤트 레이더 반증 ledger
출력
기대 결과
- claim별 supportingEvidence
- counterEvidenceNeeded
- open/notTriggered status
공개 호출 방식
AI 도구 실행 순서는 EngineCall 우선이다. 아래 Python 블록은 확보한 L1/L1.5 근거를 buildEventRadarMemo로 묶는 RunPython fallback 절차다.
import dartlab
from dartlab.synth.eventRadar import buildEventRadarMemo
target = "005930"
c = dartlab.Company(target)
def rows(value, limit=30):
if hasattr(value, "head") and hasattr(value, "to_dicts"):
return value.head(limit).to_dicts()
if isinstance(value, list):
return value[:limit]
return []
try:
filings = rows(c.disclosure(), limit=50)
except Exception:
filings = []
try:
price_rows = rows(c.gather("price"), limit=40)
except Exception:
price_rows = []
try:
flow_rows = rows(c.gather("flow"), limit=40)
except Exception:
flow_rows = []
memo = buildEventRadarMemo(
target=target,
market=str(getattr(c, "market", "KR")),
companyName=str(getattr(c, "corpName", target)),
filings=filings,
priceRows=price_rows,
flowRows=flow_rows,
)
emit_result(
table=memo["tables"]["falsifierLedger"],
values=memo["headline"],
date=memo["asOf"],
sources=memo["sources"],
) 호출 동작
1. 결론 도출
claim 별 open/notTriggered ledger 단정. 예: “5 claim 검증: event(자사주취득) → open (반응 +1.2% 미미, counter=‘거래량 평년 대비 1.5배 미달’) / reaction(가격 +1.2%) → open (시장 동조 의심) / insider → notTriggered / capital(CB발행) → open (희석 모의 미완료) / consensus → notTriggered. open 3건 → 촉매 결론 보류.”
2. 핵심 근거 수집
- Company.disclosure() filings — capital / governance event
- Company.gather(‘price’) latest 40 row — reaction 측정
- Company.gather(‘flow’) latest 40 row — 외인/기관 매매 동조
- buildEventRadarMemo() → 5 claim (event / reaction / insider / capital / consensus) × 2 column (supporting / counterNeeded)
3. 메커니즘 분석
5 claim × 각 supportingEvidence + counterEvidenceNeeded 매트릭스
↓
status 판정:
notTriggered → 해당 claim 자체가 트리거 X (이벤트 없음)
open → 트리거 있으나 supporting 약함 OR counter 미해소
resolved → supporting 강함 + counter 해소 (확정 결론 가능)
↓
open count ≥ 1 → 확정 결론 보류 (forbidden 발동)
모두 resolved or notTriggered → 결론 가능
↓
counterEvidenceNeeded 빈 문자열 → 본 recipe 실패 (조건 누락) falsifier 의 역할은 틀릴 수 있는 이유 명시 — radarScore 만으로는 false positive 위험.
4. 반례·한계
- counter 가 verifiable 한지 — “다른 시장 데이터 부족” 같이 검증 불가능한 counter 는 의미 없음.
- 5 claim 외 미커버 영역 (회계 / 거시 / 산업) — 본 ledger 범위 외.
- open 만 보면 over-conservative — 의미 있는 신호도 보류됨.
- claim 간 dependency (event → reaction) 가 ledger 에 직접 반영 X.
5. 후속 모니터링
- open 다수 →
recipes.fundamental.disclosure.eventRadar.engineCandidateMemo로 후보 좁히기. - resolved 다수 →
recipes.fundamental.disclosure.eventRadar.deepDive로 종합 radarScore. - counterEvidence 가 price/flow →
recipes.fundamental.disclosure.eventRadar.priceFlowReaction으로 reaction 정량화.
대표 반환 형태
| column | 의미 |
|---|---|
claim | 검증 중인 주장 |
supportingEvidence | ok/watch/risk/missing |
counterEvidenceNeeded | 필요한 반증 |
status | open/notTriggered |
연계 절차
- recipes.fundamental.disclosure.eventRadar.engineCandidateMemo - 반복 가능한 신호만 후보로 넘긴다.
- recipes.fundamental.disclosure.eventRadar.deepDive - 최종 답변에 open falsifier를 포함한다.
기본 검증
- open falsifier가 있으면 확정 표현을 쓰지 않는다.
- counterEvidenceNeeded가 빈 문자열이면 실패다.
런타임
실행 환경별 호환성
| 환경 | 상태 | 비고 / 제한 |
|---|---|---|
| Local Python | supported | — |
| Server | supported | — |
| MCP | supported | — |
| Web AI | supported | — |
| Pyodide | limited | — |
실패 회피
흔한 실패 · 절대 금지
흔한 실패
- 반증 조건 없이 radarScore만 표시
절대 금지
- open falsifier가 있는데 촉매 결론을 확정하지 않는다.