이 스킬
Event Radar Deep Dive
source coverage, event inbox, price/flow reaction, insider/ownership, capital action, consensus drift, falsifier, engine candidate, visual gate를 한 번에 실행하는 이벤트 레이더 최종 절차다.
이어 가기
- Event Radar Source Coverage Audit
recipes.fundamental.disclosure.eventRadar.sourceCoverageAudit - Event Radar Event Inbox
recipes.fundamental.disclosure.eventRadar.eventInbox - Event Radar Price Flow Reaction
recipes.fundamental.disclosure.eventRadar.priceFlowReaction - Event Radar Insider Ownership Signal
recipes.fundamental.disclosure.eventRadar.insiderOwnershipSignal - Event Radar Capital Action Monitor
recipes.fundamental.disclosure.eventRadar.capitalActionMonitor - Event Radar Consensus Drift Watch
recipes.fundamental.disclosure.eventRadar.consensusDriftWatch - Event Radar Falsifier Ledger
recipes.fundamental.disclosure.eventRadar.falsifierLedger - Event Radar Engine Candidate Memo
recipes.fundamental.disclosure.eventRadar.engineCandidateMemo - Event Radar Visual Decision Pack
recipes.fundamental.disclosure.eventRadar.visualDecisionPack
절차
실행 순서
- 1
공개 호출 블록은 AST parse가 되어야 한다.
- 2
공개 호출 블록은 L2/L3 호출 문자열을 포함하면 실패다.
- 3
`deepDive`, `falsifierLedger`, `engineCandidateMemo`, `visualDecisionPack`이 모두 있어야 한다.
- 4
ready가 아닌 visualRef는 차트로 emit하지 않는다.
예시
이런 질문이 들어오면 이 skill 을 쓴다
- 삼성전자 이벤트 레이더 deep dive
- analysis 없이 촉매 후보 전체 실행
출력
기대 결과
- 11단계 deepDive ledger
- radarScore와 eventCount
- open falsifier 수
- ready visualRef 수
공개 호출 방식
AI 도구 실행 순서는 EngineCall 우선이다. Company.disclosure, Company.liveFilings, Company.gather, scan.market, scan.insider, scan.capital은 엔진 호출로 근거를 먼저 확보한다. 아래 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.liveFilings(days=7), limit=20)
except Exception:
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"]["deepDive"],
values={
"target": target,
"radarScore": memo["headline"]["radarScore"],
"eventCount": memo["headline"]["eventCount"],
"openFalsifiers": memo["headline"]["openFalsifierCount"],
"decisionStatus": memo["headline"]["decisionStatus"],
},
date=memo["asOf"],
sources=memo["sources"],
) 호출 동작
1. 결론 도출
eventRadar finalDecision row 의 radarScore + decisionStatus 단정. 예: “radarScore=72/100, decision=actionable — 촉매 후보 N 건 확정, 시장 반응 검증 후 매수 후보 K 건.”
2. 핵심 근거 수집
- IS/BS/CF 시계열 (Company.show)
- 공시 row 50 건 (Company.disclosure)
- 가격·수급·컨센서스 row (Company.gather price/flow/consensus)
- L1.5 ledger 7 단계 (sourceCoverageAudit → eventInbox → priceFlowReaction → consensusReactionAudit → catalystThesisBridge → premortemCheck → visualDecisionPack)
3. 메커니즘 분석
공시 + 뉴스 + 가격 + 수급 + 컨센서스 5 layer 입력
↓
sourceCoverageAudit (각 layer 데이터 신뢰도 점검)
↓
eventInbox (잠재 촉매 row 분류)
↓
priceFlowReaction (촉매 시점 ±5일 가격·수급 반응)
↓
consensusReactionAudit (컨센서스 revision 동행 여부)
↓
catalystThesisBridge (반응 + 컨센서스 동행 → 촉매 후보 확정)
↓
premortemCheck (반증 검증)
↓
visualDecisionPack + finalDecision: radarScore + decisionStatus 각 ledger 의 missing/ok/watch/risk status 가 누적돼 radarScore 산출. 5 layer 모두 ok 면 decisionStatus=actionable.
4. 반례·한계
- 가격·수급·컨센서스 5 layer 중 2+ layer missing 시 catalystThesisBridge 신뢰도 ↓.
- 단일 이벤트만 보고 시장 반응 단정 금지 — peer 동행 여부 별도 확인.
- thesis 가 너무 일반적이면 catalystThesisBridge 가 weak narrative 만 생성 — premortemCheck risk row 발생.
- decisionStatus=operatorReview 시 보강 EngineCall 목록 답안 우선.
5. 후속 모니터링
- radarScore ≥ 70 & actionable:
recipes.fundamental.disclosure.eventRadar.eventInbox의 confirmed 후보 매주 추적. - watchStatus row 1+ 건: 다음 turn
recipes.fundamental.disclosure.eventRadar.priceFlowReaction재측정. - premortemCheck risk row:
recipes.meta.thesisKillChain.deepDive로 thesis 전반 재검토.
대표 반환 형태
deepDive : list[dict]
| column | 의미 |
|---|---|
order | 실행 순서 |
step | 세부 ledger 이름 |
status | missing/ok/watch/risk |
rowCount | 해당 ledger row 수 |
evidence | 대표 근거 |
nextAction | 다음 조치 |
연계 절차
- recipes.fundamental.disclosure.eventRadar.sourceCoverageAudit - source coverage.
- recipes.fundamental.disclosure.eventRadar.eventInbox - event inbox.
- recipes.fundamental.disclosure.eventRadar.priceFlowReaction - price/flow reaction.
- recipes.fundamental.disclosure.eventRadar.insiderOwnershipSignal - insider/ownership.
- recipes.fundamental.disclosure.eventRadar.capitalActionMonitor - capital action.
- recipes.fundamental.disclosure.eventRadar.consensusDriftWatch - consensus drift.
- recipes.fundamental.disclosure.eventRadar.falsifierLedger - falsifier.
- recipes.fundamental.disclosure.eventRadar.engineCandidateMemo - engine candidate.
- recipes.fundamental.disclosure.eventRadar.visualDecisionPack - visual gate.
기본 검증
- 공개 호출 블록은 AST parse가 되어야 한다.
- 공개 호출 블록은 L2/L3 호출 문자열을 포함하면 실패다.
deepDive,falsifierLedger,engineCandidateMemo,visualDecisionPack이 모두 있어야 한다.- ready가 아닌 visualRef는 차트로 emit하지 않는다.
런타임
실행 환경별 호환성
| 환경 | 상태 | 비고 / 제한 |
|---|---|---|
| Local Python | supported | — |
| Server | supported | — |
| MCP | supported | — |
| Web AI | supported | — |
| Pyodide | limited | — |
실패 회피
흔한 실패 · 절대 금지
- ask가 기존 분석 엔진으로 우회
- RunPython 결과는 있는데 답변이 근거 표 없이 요약만 제시
- visualDecisionPack 없이 차트 생성
- c.analysis, c.credit, c.quant, c.macro, c.industry, c.story를 호출하지 않는다.
- radarScore를 투자 결론으로 해석하지 않는다.
- blocked visualRef를 emit하지 않는다.