| name | dartlab |
| description | `macro`는 회사가 아니라 시장/경제 환경을 읽는 L2 엔진이다. 경제 사이클, 재고, 기업집계, 교역, 전파 edge, 금리, 유동성, 위기, 자산, 심리, 예측, 시나리오, 전망 시뮬레이션, 종합을 6막 인과 구조로 해석한다. Use when this capability is needed. |
엔진 역할
macro는 회사가 아니라 시장/경제 환경을 읽는 L2 엔진이다. 경제 사이클, 재고, 기업집계, 교역, 전파 edge, 금리, 유동성, 위기, 자산, 심리, 예측, 시나리오, 전망 시뮬레이션, 종합을 6막 인과 구조로 해석한다.
단일 기업 수익성/현금흐름/가치평가는 analysis가 담당한다. macro는 그 기업이 놓인 외부 환경을 제공하고, 보고서 조합은 story가 담당한다.
공개 호출 방식
import dartlab
guide = dartlab.macro()
cycle = dartlab.macro("cycle", market="KR")
rates = dartlab.macro("금리", market="US")
scenario = dartlab.macro("시나리오", "2008 금융위기")
simulation = dartlab.macro("시뮬레이션", market="US")
summary = dartlab.macro("종합", market="KR")
transmission = dartlab.macro("전파", market="KR", sectorKey="semiconductor")
c = dartlab.Company("005930")
company_macro = c.macro("사이클")
sensitivity = c.analysis("macro", "매크로민감도")
강행 호출 룰 (agent 답변 품질 회귀 차단)
15 axis 매크로 질문 (cycle·rates·transmission·corporate·trade 등) 에서 다음 4 룰 강행.
- 1 차 도구는 EngineCall 강제.
EngineCall(apiRef="macro", args={"axis": "rates", "market": "KR"}) 양식. RunPython 직접 ECOS/FRED 호출 금지 — 본 엔진이 HF SSOT 캐시 + tableRef 발급 담당.
- 본문 숫자에
[valueRef:...] 또는 [dateRef:...] inline 표기 필수. macro 데이터는 시점 (asOf) 변동 큼 — dateRef 누락 시 stale 데이터 환각.
- cycle / inventory 4 phase 판정은
[conf:30] 기본 — 회고적 신호임을 명시. NBER vs ECRI vs Cleveland Fed 정의 차이 인지.
- 단일 지표로 사이클 단정 금지 — CLI·LEI·yield curve 중 최소 2 종 ref 동행. 단일 지표 답변은 한계 명시 필수.
- macro EngineCall 결과는 본문에 최소 1 개 수치 + dateRef inline 인용 의무. macro 호출 했는데 답변에 결과 인용 0 회 = evidence flow 누락 회귀 (2026-05-20 OAuth probe 시나리오 F: rates/KR 3 회 호출 후 답변에 금리 수치 0 회 인용, NIM 단정 불가로 회피). 호출 결과의 핵심 지표 (예: KR base rate 3.25% [dateRef:date:macro:rates:KR:2026-Q1]) 1~2 개는 답변 본문 첫 단락에 inline. 결과 부족하면 그 이유 + 어떤 ref 필요 한계 명시.
산업별 macro 연결 — rates / liquidity / trade
기업 질문 + macro axis 결합 시 주로 등장하는 산업 매핑. 본 매핑은 직접 결합 규칙 아닌 대표 패턴 — 실제 결합은 c.analysis("macro","매크로민감도") + 시나리오 호출로.
| macro axis | 영향 큰 산업 | 결합 시 인용할 macro 지표 | 기업 측 인용할 재무 지표 |
|---|
| rates | 은행·보험·증권·리츠·고PER 성장주 | base rate / 10Y-3M / spread | 은행 NIM·예대마진, 증권 운용수익, 리츠 D/E |
| liquidity | 자산운용·증권·중소형 성장주 | M2 증가율 / NFCI / 신용스프레드 | 거래대금, 차입 규모, 변동성 |
| trade | 반도체·자동차·조선·정유 | 수출증가율 / 교역조건 / USD-KRW | 수출 비중·해외 매출, FX 손익 |
| crisis | 금융·부동산·고레버리지 | Credit-to-GDP gap / Minsky / GHS | D/E, 이자보상배율, 단기차입 |
| assets | 자산운용·증권·고배당 | 5 자산 배분 / Cu/Au / 위험선호 | ROE, 배당수익률, beta |
본 표 = system prompt 로 노출. macro axis 호출 후 산업 매핑 12 개 인용 + 회사 재무 12 개 인용으로 시장-기업 연결 답변. 표에 없는 산업도 가능 — 표는 "최소한 이 정도는 묶어라" 가이드.
호출 동작
무인자 dartlab.macro()는 15개 axis 가이드 DataFrame을 반환한다. axis를 지정하면 기본 HF SSOT 또는 직접 API 선택 경로의 ECOS/FRED 데이터를 읽고 축별 dict/table을 만든다.
Company-bound c.macro()는 회사의 market을 참조해 기업 단위 민감도나 밴드 확인에 연결한다. 시장 레벨 macro 해석과 기업 내부 재무 해석은 분리한다.
전체 축/메서드 목록
| axis | label | group | 대표 호출 | 축-specific 회피 |
|---|
| cycle | 사이클 | 제1막 | dartlab.macro("cycle") | 4 국면 자동식별 결과를 예측 으로 단정 X (회고적 신호); 단일 지표 (CLI) 만으로 사이클 단정 X; NBER vs ECRI vs Cleveland Fed 정의 차이 인지 |
| inventory | 재고 | 제1막 | dartlab.macro("inventory") | ISM 재고순환 4 phase 명시 없이 단정 X; KR 제조업에 US ISM 직접 적용 X; I/S 산업별 정상수준 차이 무시 X |
| corporate | 기업집계 | 제2막 | dartlab.macro("corporate") | 전종목 평균으로 개별 기업 진단 X (analysis 로 분리); Ponzi 비율 한 지표만으로 시장위험 단정 X; 대형주 5 종이 평균 좌우하는 KR 특성 반영 |
| trade | 교역 | 제2막 | dartlab.macro("trade", market="KR") | 교역조건 단일 지표로 무역·경상수지 단정 X; KR 수출과 US/CN LEI 시차 (3~6 개월) 명시; 반도체/자동차 수출 비중 변화 반영 |
| transmission | 전파 | 제2막 | dartlab.macro("transmission", market="KR", sectorKey="semiconductor") | 회사 객체·analysis 내부 import 금지; edge는 driver -> sector -> financialLine -> valuationLever까지만; 회사별 beta/민감도 숫자는 analysis 품질 라벨 전까지 표시 X |
| rates | 금리 | 제3막: 정책 | dartlab.macro("rates") | 정책금리 vs 시장금리 (10Y/3M) 혼동 X; 명목 vs 실질 (CPI 보정) 혼용 X; 10Y-2Y 역전을 즉시 경기침체 단정 X; KR-US decoupling 가능성 |
| liquidity | 유동성 | 제4막 | dartlab.macro("liquidity") | M2 vs M3/L 혼용 X; 연준 B/S 변동의 QE/QT 단순 인과 단정 X; NFCI 중립값 (0) vs 유동성 부족 단순 인과 X; 정책→시장 lag |
| crisis | 위기 | 제4막 | dartlab.macro("crisis") | Credit-to-GDP gap 한 지표로 위기임박 단정 X (Minsky + GHS 동반); 역사적 위기 (1997/2008) 와 현 환경 제도/정책 차이 무시 X; 위기신호와 실제 발생 12~24m lag |
| assets | 자산 | 제5막 | dartlab.macro("assets") | 5 대 자산 (주식·채권·원자재·통화·부동산) 분류 명시; Cu/Au 비율 단일값으로 cycle 단정 X; BEI 4 분면 단순 인과 X |
| sentiment | 심리 | 제5막 | dartlab.macro("sentiment") | VIX 단일값으로 공포 단정 X (15-/15-25/25+ 구간); 시장 vs 회사별 sentiment 혼동 X; VIX 와 JLN 동치 처리 X |
| narrative | 내러티브 |
공통 forbidden (모든 축): 기준일/source 없는 macro 숫자 인용 X · 기업 재무 분석을 macro 로 대체 X · macro 결과를 analysis 내부 계산처럼 섞지 X.
대표 반환 형태
dartlab.macro()
-> DataFrame
axis, label, description, example, group, apiKey
축 실행은 dict 또는 DataFrame 성격의 결과를 반환한다.
market, latestAsOf/date, indicator, value, unit,
signal/regime, score, basis/source, assumptions, flags
transmission은 Macro Lens용 시장·섹터 전파 계약을 반환한다.
market, sectorKey, asOf,
drivers[{id, sourceSeriesId, sourceLineage{date,value,unit,artifactPath,status}}],
edges[{driverId, channel, financialLine, valuationLever, evidenceLabel, requiredCompanyEvidence, falsifiers}],
regimeEvidence[], sourceRefs[], missing[]
scenario는 충격 이름, 역사적 비교 기간, 스트레스 변수, 예상 반응을 포함할 수 있다. summary는 6막 전체 점수, 주요 신호, 자산배분/전략 힌트를 포함할 수 있다.
evidence 기준
매크로 판단에는 시장, 지표명, 값, 단위, 기준일, 출처, 실행 ref가 필요하다. 최신 데이터가 아니면 stale 가능성을 같이 말한다.
EngineCall (agent 경로) args 매핑
dartlab.macro(...) | EngineCall(apiRef="macro", args=...) |
|---|
dartlab.macro() 가이드 | {} (빈 dict) |
dartlab.macro("cycle", market="KR") | {"axis": "cycle", "market": "KR"} |
dartlab.macro("rates", market="US") | {"axis": "rates", "market": "US"} |
dartlab.macro("transmission", market="KR", sectorKey="semiconductor") | {"axis": "transmission", "market": "KR", "sectorKey": "semiconductor"} |
dartlab.macro("scenario", "2008 금융위기") | {"axis": "scenario", "target": "2008 금융위기"} |
dartlab.macro("simulate", market="US") | {"axis": "simulate", "market": "US"} |
dartlab.macro("summary", market="KR") | {"axis": "summary", "market": "KR"} |
Company("005930").macro("사이클") | {"stockCode": "005930", "axis": "사이클"} (apiRef="Company.macro") |
guard — axis 와 market 을 점 표기로 합쳐 apiRef="macro.rates.US" 호출 금지. args 안에 분리.
기업 답변에 macro 변수 결합 시 — 정량 시나리오 권장
P4 류 질문 ("다음 분기 영업이익률 떨어질까? 어떤 조건에서 깨지나") 에서 환율·금리·메모리 가격 같은 macro 변수를 반증조건 으로 인용할 때는:
- 시나리오 호출 —
dartlab.macro("scenario", "USD-KRW 5% 강세") 또는 사전 정의된 preset ("2008 금융위기", "COVID 충격" 등). 임의 가정은 답변 한계로 표기.
- 민감도 결합 —
c.analysis("macro", "매크로민감도") 가 기업 단위 매출/영업이익 탄력성 (예: 매출 elasticity vs WonDollar = 0.3) 반환. 시장 시나리오 × 기업 elasticity = 정량 임팩트.
- 최소 시나리오 명시 X 답변 금지 — "환율이 우호적이면 마진 방어" 같은 일반론은 evidence 0 으로 GATE 차단 대상. 시나리오 호출 0 회 가능하지만 반증조건은 변수명 + 임계값 + 방향 셋 다 명시.
기본 실행 순서
- 시장을 정한다:
KR, US, 또는 auto.
- 축을 모르면
dartlab.macro()로 guide를 확인한다.
- axis를 실행하고 기준일과 source를 확인한다.
- 기업 보고서에 넣을 때는
story에서 macro 블록으로 조합한다.
기본 검증
스킬은 공개 실행 문서다. dartlab.macro() guide 축, 공개 호출, 대표 반환 키가 바뀌면 이 파일과 관련 응용 스킬을 같은 변경에서 갱신한다.
Source: eddmpython/dartlab — distributed by TomeVault.