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

Event Radar Consensus Drift Watch

gather consensus 원자료의 최근 두 row를 비교해 매출, 영업이익, EPS, 목표가 변화 신호를 확인하는 L1/L1.5 절차다.

이 스킬

Event Radar Consensus Drift Watch

gather consensus 원자료의 최근 두 row를 비교해 매출, 영업이익, EPS, 목표가 변화 신호를 확인하는 L1/L1.5 절차다.

Recipes observed recipes.fundamental.disclosure.eventRadar.consensusDriftWatch

이어 가기

절차

실행 순서

  1. 1

    consensus row가 2개 미만이면 drift를 계산하지 않는다.

  2. 2

    단위·통화가 확인되지 않으면 결론을 제한한다.

예시

이런 질문이 들어오면 이 skill 을 쓴다

  • 컨센서스가 최근 하향됐는지 확인

출력

기대 결과

  • metric별 latest previous revisionPct

공개 호출 방식

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=12):
    if hasattr(value, "head") and hasattr(value, "to_dicts"):
        return value.head(limit).to_dicts()
    if isinstance(value, list):
        return value[:limit]
    return []

try:
    consensus_rows = rows(c.gather("consensus"), limit=12)
except Exception:
    consensus_rows = []

memo = buildEventRadarMemo(
    target=target,
    market=str(getattr(c, "market", "KR")),
    companyName=str(getattr(c, "corpName", target)),
    consensusRows=consensus_rows,
)

emit_result(
    table=memo["tables"]["consensusDriftWatch"],
    values=memo["headline"],
    date=memo["asOf"],
    sources=memo["sources"],
)

호출 동작

1. 결론 도출

4 metric revisionPct 단정. 예: “consensus latest vs previous: revenue +2.1% / opProfit -4.5% / EPS -3.2% / targetPrice -1.8% → 영업이익 + EPS 동시 하향 phase (revenue 견조하나 마진 하향 — 비용 압력 신호).”

2. 핵심 근거 수집

  • Company.gather(‘consensus’) latest 12 row
  • 최근 2 row (date 기준 정렬) — latest + previous
  • revenue / operatingProfit / eps / targetPrice 4 metric × revisionPct
  • buildEventRadarMemo() → drift table

3. 메커니즘 분석

12 row consensus 시계열 → date 정렬 → latest + previous 2 row

metric 별 revisionPct = (latest - previous) / previous × 100

status 판정 (metric 별):
   |revisionPct| < 1%  → ok (안정)
   1% ~ 3%             → watch (변화 시작)
   > 3%                → risk (큰 변화)
   row 1 미만          → missing (drift 측정 불가)

패턴 분류:
   revenue + opProfit + EPS 동방향 → 일관 상향/하향
   revenue 상향 + opProfit 하향 → 마진 우려 (비용 압력)
   targetPrice 만 변동 → multiple regime 변경

drift 자체는 시장 기대 변화 — 실적 결론 아님. 컨센서스 후행 (실적 발표 lag) → 선행성 약함.

4. 반례·한계

  • 단일 broker 의 stale update 가 latest 만 갱신하면 drift 의미 X — broker 수 ≥ 3 필요.
  • 단위/통화 변경 (원 → 백만원) 시 revisionPct 왜곡.
  • IFRS vs K-GAAP 전환기 row 는 비교 불가.
  • 분기/연간 mix 시점 → 단순 직전 row 비교 무의미.

5. 후속 모니터링

  • opProfit + EPS 동시 하향 → recipes.fundamental.disclosure.eventRadar.deepDive 로 7-ledger radar 확장.
  • targetPrice 만 변동 → recipes.industry.peerPriceConvergence 로 sector dispersion 점검.
  • revenue 만 상향 (마진 약화) → recipes.industry.marginCompressionScan 으로 peer 비교.

대표 반환 형태

column의미
date최신 consensus 날짜
metricrevenue/operatingProfit/eps/targetPrice
latest최신값
previous이전값
revisionPct변화율
statusok/watch/risk/missing

연계 절차

  1. recipes.fundamental.disclosure.eventRadar.eventInbox - 컨센서스 변화 전후 이벤트 확인.
  2. recipes.fundamental.disclosure.eventRadar.falsifierLedger - stale update 반증.

기본 검증

  • consensus row가 2개 미만이면 drift를 계산하지 않는다.
  • 단위·통화가 확인되지 않으면 결론을 제한한다.

런타임

실행 환경별 호환성

환경상태비고 / 제한
Local Python supported
Server supported
MCP supported
Web AI supported
Pyodide limited

실패 회피

흔한 실패 · 절대 금지

흔한 실패
  • 단위 변경을 실적 하향으로 오해
절대 금지
  • 컨센서스 변화 하나로 실적 결론을 단정하지 않는다.