이 스킬
Event Radar Source Coverage Audit
이벤트 레이더 실행 전에 filing, news, price, flow, insider, ownership, dividend, split, consensus, scan primitive의 row coverage를 확인하는 L1/L1.5 절차다.
이어 가기
절차
실행 순서
- 1
sourceCoverageAudit가 비어 있으면 실패다.
- 2
missing source를 답변 한계에 포함한다.
예시
이런 질문이 들어오면 이 skill 을 쓴다
- 이벤트 레이더 source coverage 확인
출력
기대 결과
- source별 rowCount와 latestDate
- missing source와 requiredFor
공개 호출 방식
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 []
def gather_rows(axis, limit=30):
try:
return rows(c.gather(axis), limit=limit)
except Exception:
try:
return rows(dartlab.gather(axis, target=target), limit=limit)
except Exception:
return []
try:
filings = rows(c.disclosure(), limit=50)
except Exception:
filings = []
memo = buildEventRadarMemo(
target=target,
market=str(getattr(c, "market", "KR")),
companyName=str(getattr(c, "corpName", target)),
filings=filings,
newsRows=gather_rows("news", limit=20),
priceRows=gather_rows("price", limit=40),
flowRows=gather_rows("flow", limit=40),
insiderRows=gather_rows("insiderTrading", limit=20),
ownershipRows=gather_rows("ownership", limit=20),
dividendRows=gather_rows("dividends", limit=20),
splitRows=gather_rows("splits", limit=20),
consensusRows=gather_rows("consensus", limit=12),
)
emit_result(
table=memo["tables"]["sourceCoverageAudit"],
values=memo["headline"],
date=memo["asOf"],
sources=memo["sources"],
) 호출 동작
1. 결론 도출
9 source coverage audit 단정. 예: “9 source audit — filings 50 rows latest 2026-05-26 / news 18 / price 40 / flow 40 / insiderTrading 0 (missing — KR 임원 신고 미수신) / ownership 12 / dividends 16 / splits 4 / consensus 12 → 8 of 9 ok + 1 missing (insiderOwnershipSignal 후속 제한 발생).”
2. 핵심 근거 수집
- Company.disclosure() filings (limit 50)
- Company.gather() × 8 axis (news / price / flow / insiderTrading / ownership / dividends / splits / consensus)
- 각 source rowCount + latestDate 추출
- buildEventRadarMemo() → sourceCoverageAudit table
3. 메커니즘 분석
9 source × (rowCount + latestDate + status + requiredFor)
status 판정:
rowCount ≥ 1 → ok
rowCount = 0 → missing
stale (latestDate > 30d) → watch
↓
requiredFor 매핑 (어떤 후속 recipe 가 필요로 하나):
filings → eventInbox + capitalActionMonitor + falsifierLedger
news → eventInbox
price → priceFlowReaction + falsifierLedger + visualDecisionPack (priceChart)
flow → priceFlowReaction
insider → insiderOwnershipSignal
ownership → insiderOwnershipSignal
dividends → capitalActionMonitor
splits → capitalActionMonitor
consensus → consensusDriftWatch
↓
missing source 의 영향:
priceRows 결손 → priceChart 비활성 + priceFlowReaction 결론 X
filings 결손 → eventInbox 결론 X (whole pack 차단)
insider 결손 → insiderOwnershipSignal 만 미산출 (전체 차단 X) 이벤트 레이더의 첫 중단점 — 실행 전 게이트. missing source 가 어떤 후속 recipe 를 차단하는지 명시 필수.
4. 반례·한계
- 결손 source 를 0 또는 없음으로 단정 → forbidden 위반 (불확실로 표기).
- priceRows 결손인데 priceChart 만들면 false visualization.
- filings 결손인데 eventInbox 정상 처리 시 missing 누락.
- KR vs US source 비대칭 (insider 신고 형식 다름) — market 별 조정 필요.
5. 후속 모니터링
- 8+ source ok →
recipes.fundamental.disclosure.eventRadar.index로 전체 pack 진입. - missing 다수 →
recipes.fundamental.disclosure.eventRadar.deepDive의 ledger 결손 처리 점검. - stale (≥30일) → 데이터 sync recipe 또는 manual refresh trigger.
대표 반환 형태
| column | 의미 |
|---|---|
dataset | source 이름 |
status | ok/missing |
rowCount | row 수 |
latestDate | 가장 최신 날짜 |
requiredFor | 필요한 후속 판단 |
연계 절차
- recipes.fundamental.disclosure.eventRadar.index - 전체 팩 진입.
- recipes.fundamental.disclosure.eventRadar.deepDive - 전체 ledger로 연결.
기본 검증
- sourceCoverageAudit가 비어 있으면 실패다.
- missing source를 답변 한계에 포함한다.
런타임
실행 환경별 호환성
| 환경 | 상태 | 비고 / 제한 |
|---|---|---|
| Local Python | supported | — |
| Server | supported | — |
| MCP | supported | — |
| Web AI | supported | — |
| Pyodide | limited | — |
실패 회피
흔한 실패 · 절대 금지
- priceRows 없이 priceChart를 선택
- filings 결손인데 eventInbox를 정상으로 처리
- 결손 source를 0 또는 없음으로 단정하지 않는다.