recipes.fundamental.disclosure.eventRadar.falsifierLedger Recipes Recipe observed

Event Radar Falsifier Ledger

이벤트·반응·내부자·자본 이벤트·컨센서스 신호마다 필요한 반증 조건을 열어 결론 과잉을 막는 L1/L1.5 절차다.

이 스킬

Event Radar Falsifier Ledger

이벤트·반응·내부자·자본 이벤트·컨센서스 신호마다 필요한 반증 조건을 열어 결론 과잉을 막는 L1/L1.5 절차다.

Recipes observed recipes.fundamental.disclosure.eventRadar.falsifierLedger

이어 가기

절차

실행 순서

  1. 1

    open falsifier가 있으면 확정 표현을 쓰지 않는다.

  2. 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검증 중인 주장
supportingEvidenceok/watch/risk/missing
counterEvidenceNeeded필요한 반증
statusopen/notTriggered

연계 절차

  1. recipes.fundamental.disclosure.eventRadar.engineCandidateMemo - 반복 가능한 신호만 후보로 넘긴다.
  2. 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가 있는데 촉매 결론을 확정하지 않는다.