Engines observed

Analysis

Analysis 엔진은 단일 기업의 재무제표, 가치평가, 지배구조, 전망, 기업 단위 매크로 민감도를 22개 분석 축으로 읽는 실행 스킬이다.

engines.analysis GitHub 원본

이어 가기

절차

실행 순서

  1. 1

    dartlab.Company(code) 또는 c.analysis() 로 22 축 가이드 DataFrame 확인.

  2. 2

    group (financial · valuation · forecast · governance) 과 axis 선택.

  3. 3

    c.analysis(group, axis) 또는 dartlab.analysis(...) 호출.

  4. 4

    결과의 tableRef · valueRef · dateRef · executionRef 검증 후 답변에 묶음.

  5. 5

    L2 엔진 (credit · macro · scan · story) 와 직접 결합하지 않는다 — 결합은 story 가 담당.

예시

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

  • 삼성전자 수익성 분석
  • 기업 현금흐름과 이익품질 점검
  • 가치평가 축으로 적정가 범위 확인
  • 매출전망과 예측신호 확인
  • Company.analysis 호출법
  • 22 분석 축 가이드 확인
  • 기업 매크로 민감도 측정

출력

기대 결과

  • 선택한 분석 축
  • 실제 공개 호출
  • 대표 반환 형태
  • 검증한 근거와 제한

엔진 역할

analysis는 단일 기업을 재무제표의 인과 구조로 읽는 L2 엔진이다. 이 엔진은 매출과 비용, 자산과 부채, 현금흐름, 수익성, 성장성, 안정성, 효율성, 가치평가, 지배구조, 전망 신호를 축별로 계산하고 해석한다.

담당하는 질문은 “이 회사는 무엇으로 돈을 벌고, 그 돈은 진짜 현금으로 남고, 그 성장은 지속 가능하며, 지금 가격은 어느 정도인가”이다. 시장 전체 매크로 전망은 engines.macro, 신용등급/부도위험 중심 평가는 engines.credit, 여러 종목을 찾는 작업은 engines.scan, 최종 보고서 조합은 engines.story가 담당한다.

공개 호출 방식

기본 호출은 Company.analysis()이다. 축을 모르면 먼저 가이드를 보고, 축을 알면 group과 axis를 지정한다.

import dartlab

c = dartlab.Company("005930")

# 1. 전체 분석 축 가이드
guide = c.analysis()

# 2. 그룹 가이드 또는 그룹 내 계산 항목 확인
financial = c.analysis("financial")

# 3. 특정 분석 축 실행
profitability = c.analysis("financial", "수익성")
cashflow = c.analysis("financial", "현금흐름")
valuation = c.analysis("valuation", "가치평가")
forecast = c.analysis("forecast", "매출전망")

# 4. 축 이름만으로 실행 가능한 경우
profitability = c.analysis("수익성")

# 5. 모듈 함수형 호출
profitability = dartlab.analysis("financial", "수익성", c)
valuation = dartlab.analysis("valuation", "가치평가", c)

노트북이나 MCP에서 사람이 따라 할 때도 같은 순서로 쓴다. 먼저 c.analysis()로 가능한 축을 확인하고, 그 다음 실제 축을 호출한다.

호출 동작

axis가 없으면 실행 가능한 분석 축 가이드 DataFrame을 반환한다. 이 가이드는 사람이 어떤 축을 골라야 하는지 보여주는 공개 메뉴다.

group만 주면 해당 그룹의 축 또는 계산 항목 가이드를 반환한다. 회사 객체가 없는 함수형 호출에서는 계산 목록을 탐색하는 용도로 쓰이고, 회사 객체가 있는 호출에서는 해당 회사 기준으로 축 실행을 준비한다.

groupaxis가 함께 있거나 축 이름만 들어오면 해당 축을 실행한다. 엔진은 Company가 가진 재무제표, 시계열, 공시/시장 데이터 snapshot, 내부 계산 registry를 읽고 축별 계산을 수행한다.

데이터가 충분하면 축별 분석 dict를 반환한다. 데이터가 부족하면 결손을 0으로 채우지 않고, flags, assumptions, dataAsOf, 빈 history, null 값, 제한 메시지 등으로 표현한다. 호출한 group 또는 axis가 없으면 사용 가능한 group/axis를 확인할 수 있는 오류를 낸다.

analysis는 같은 L2 엔진인 credit, macro, scan, story를 내부에서 import해 조합하지 않는다. 필요한 원천 데이터는 Company/core 계층에서 직접 읽고, 최종 조합은 story가 한다.

분석 축 전체

groupaxis담당 질문대표 호출items
financial수익구조이 회사는 무엇으로 돈을 버는가c.analysis("financial", "수익구조")8
financial자금조달돈을 어디서 조달하는가c.analysis("financial", "자금조달")9
financial자산구조조달한 돈으로 뭘 준비했는가c.analysis("financial", "자산구조")4
financial현금흐름실제로 현금은 어떻게 흘렀는가c.analysis("financial", "현금흐름")4
financial수익성이 회사는 얼마나 잘 벌고 있는가c.analysis("financial", "수익성")6
financial성장성이 회사는 얼마나 빨리 성장하는가c.analysis("financial", "성장성")5
financial안정성이 회사는 망하지 않는가c.analysis("financial", "안정성")6
financial효율성이 회사는 자산을 잘 굴리는가c.analysis("financial", "효율성")2
financial종합평가재무 상태를 한마디로 본다c.analysis("financial", "종합평가")3
financial이익품질이익이 진짜인가c.analysis("financial", "이익품질")7
financial비용구조비용이 어떻게 움직이는가c.analysis("financial", "비용구조")5
financial자본배분번 돈을 어디에 쓰는가c.analysis("financial", "자본배분")7
financial투자효율투자가 가치를 만드는가c.analysis("financial", "투자효율")5
financial재무정합성재무제표가 서로 맞는가c.analysis("financial", "재무정합성")6
valuation가치평가이 회사의 적정 가치는 얼마인가c.analysis("valuation", "가치평가")14
governance지배구조이 회사의 주인은 누구이며 감시는 작동하는가c.analysis("governance", "지배구조")8
governance공시변화이 회사의 공시가 뭐가 달라졌는가c.analysis("governance", "공시변화")4
governance비교분석이 회사는 시장에서 어디에 서 있는가c.analysis("governance", "비교분석")3
forecast매출전망이 회사의 매출은 어디로 가며 재무는 어떻게 변하는가c.analysis("forecast", "매출전망")8
forecast예측신호이 회사의 실적은 어디로 향하는가c.analysis("forecast", "예측신호")15
macro매크로민감도이 회사의 매출은 어떤 매크로 변수에 민감한가c.analysis("macro", "매크로민감도")1
macro밸류에이션밴드PER/PBR이 과거 대비 어디에 있는가c.analysis("macro", "밸류에이션밴드")1

대표 반환 형태

전체 가이드 호출은 DataFrame을 반환한다.

c.analysis()
-> DataFrame
   axis, description, example, group, items, apiKey

특정 축 실행은 dict를 반환한다. 공통적으로 다음 계열을 확인한다.

c.analysis("financial", "수익성")
-> dict
   items: 축별 계산 항목과 결과
   history: 기간별 핵심 값
   displayHints: 표/차트 표시 힌트
   turningPoints: 변곡점 또는 변화 감지 결과
   dataAsOf: 데이터 기준일과 snapshot 정보
   assumptions: 계산 가정과 제한
   flags: 결손, 이상치, 비교 불가, 제한 상태
   _summary: 사람이 읽을 요약
   tableRef/valueRef/dateRef/executionRef: 근거 연결용 참조

축별 dict에는 공통 키 외에 전용 블록이 붙을 수 있다. 예를 들어 수익성은 매출총이익률, 영업이익률, 순이익률, ROE/ROA 흐름을 포함하고, 현금흐름은 영업/투자/재무 현금흐름과 잉여현금흐름을 포함한다. 안정성은 부채비율, 유동성, 이자보상 성격의 지표를 포함한다.

가치평가 축은 valuationSummary, targetPrice, relativeValue, dcf, ddm, rim, sensitivity, valuationFlags 같은 블록을 반환할 수 있다. 매출전망/예측신호 축은 forecastRevenue, scenario, signal, forecastFlags 같은 전망 관련 블록을 반환할 수 있다.

단위는 원천 데이터와 계산 항목의 성격을 따른다. 금액은 원천 table의 통화/단위를 보존하고, 비율은 percent 또는 ratio 여부를 명확히 표시해야 한다. 스킬에 적힌 대표 키와 실제 공개 API가 충돌하면 스킬이 오래된 것이므로 같은 변경에서 갱신한다.

축 선택 규칙

수익구조, 비용구조, 이익품질, 현금흐름처럼 재무제표 안에서 인과를 읽는 질문은 financial 그룹을 쓴다.

적정가, 멀티플, DCF/DDM/RIM, 목표가 범위는 valuation 그룹을 쓴다. 단, 가치평가 결과를 말할 때는 수익성, 성장성, 현금흐름, 자본배분의 근거를 같이 확인한다.

주주, 이사회, 공시 변화, 동종 비교는 governance 그룹을 쓴다. 업종 전체 구조 분석은 engines.industry, 보고서 문장 조합은 engines.story로 넘긴다.

매출 전망과 실적 방향은 forecast 그룹을 쓴다. 시장 전체 금리/환율/물가 전망은 engines.macro가 담당하고, analysis의 macro 그룹은 기업 단위 민감도와 밴드 확인에 한정한다.

여러 종목을 조건으로 찾는 일은 analysis가 아니라 engines.scan이 담당한다. scan으로 후보를 찾고, 각 후보를 analysis로 깊게 읽는다.

기본 실행 순서

  1. 대상 기업을 확정한다: c = dartlab.Company("005930").
  2. 축이 불명확하면 c.analysis()로 전체 가이드를 확인한다.
  3. 질문 성격에 맞는 group/axis를 고른다.
  4. 실제 축을 호출한다: c.analysis("financial", "수익성").
  5. history, items, flags, assumptions, dataAsOf를 먼저 확인한다.
  6. 숫자를 말할 때 tableRef, valueRef, dateRef, executionRef를 연결한다.
  7. 여러 축을 보고서로 엮을 때는 story가 조합한다.

기본 검증

분석 결과는 최소한 대상, 기간, 지표명, 값, 단위, 기준일을 함께 확인한다. 기간 비교가 필요한 축은 전년동기, 전기, 최근 3년/5년 흐름 중 어떤 기준을 썼는지 밝혀야 한다.

결손값, 음수 전환, 회계 기준 변경, 사업 분할/합병, 상장 기간 부족, 데이터 snapshot 제한은 정상 값처럼 포장하지 않는다. 계산이 제한되면 flagsassumptions를 결과의 일부로 취급한다.

스킬은 공개 실행 문서다. Company.analysis() 또는 dartlab.analysis()의 호출 방식, 대표 반환 키, 오류/제한 동작이 바뀌면 이 파일과 관련 응용 스킬을 같은 변경에서 갱신해야 한다.

런타임

실행 환경별 호환성

환경상태비고 / 제한
Local Python supported
Server supported
MCP supported
Web AI supported
Pyodide limited
  • 실제 실행 가능 여부는 연결된 Company 데이터 snapshot과 capability 지원 범위를 따른다.

실패 회피

흔한 실패 · 절대 금지

흔한 실패
  • axis 가이드를 확인하지 않고 과거 스킬명이나 삭제된 문서 경로로 이동함
  • 결손값을 0으로 대체해 수익성/현금흐름/안정성 판단을 왜곡함
  • analysis 안에서 credit/macro 같은 L2 엔진 결과를 직접 import해 결합함
  • 스킬의 공개 호출 방식과 실제 공개 API가 어긋난 상태로 방치함
절대 금지
  • 근거 없는 숫자를 만들지 않는다.
  • 결손값을 0으로 대체하지 않는다.
  • analysis 엔진에서 credit, macro, scan, story 같은 L2 엔진을 직접 import하지 않는다.
  • 시장 레벨 매크로 해석을 analysis가 담당한다고 설명하지 않는다.
  • 공개 API 호출법, 반환 형태, 오류/제한 동작이 바뀌었는데 이 skill을 갱신하지 않은 상태로 완료 처리하지 않는다.