recipes.fundamental.valuation.damodaran.oneOffAdjustment Recipes Recipe unverified

Damodaran 일회성 항목 조정 감사

손상, 구조조정, 중단영업, 소송, 비경상 손익 등 one-off line item을 찾아 normalized EBIT/FCFF 조정 필요성을 표시하는 절차. 트리거 — 'one-off adjustment', '비경상 손익 조정', '정규화 이익'.

이 스킬

Damodaran 일회성 항목 조정 감사

손상, 구조조정, 중단영업, 소송, 비경상 손익 등 one-off line item을 찾아 normalized EBIT/FCFF 조정 필요성을 표시하는 절차. 트리거 — 'one-off adjustment', '비경상 손익 조정', '정규화 이익'.

Recipes unverified recipes.fundamental.valuation.damodaran.oneOffAdjustment

이어 가기

예시

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

  • INTC one-off adjustment

출력

기대 결과

  • impairment/restructuring/discontinued ? ??? ?? ??
  • normalized EBIT ?? ??? ??
  • ?? ??? ? ??? fallback ??

공개 호출 방식

import dartlab
import importlib.resources as resources
import json

import polars as pl
from dartlab.synth.damodaranL15 import buildDamodaranMemo

target = "005930"
c = dartlab.Company(target)
market = getattr(c, "market", "US" if not target.isdigit() else "KR")
currency = getattr(c, "currency", "USD" if market == "US" else "KRW")
company_name = getattr(c, "corpName", getattr(c, "companyName", target))


def _loadReference(name):
    return json.loads(resources.files("dartlab.reference.data").joinpath(name).read_text(encoding="utf-8"))


def _safeShow(topic):
    try:
        table = c.show(topic, freq="Y")
    except TypeError:
        table = c.show(topic)
    except Exception:
        return pl.DataFrame()
    return table if isinstance(table, pl.DataFrame) else pl.DataFrame()


try:
    dartlab.gather("price", target, market="US") if market == "US" else dartlab.gather("price", target)
except Exception:
    pass

memo = buildDamodaranMemo(
    target=target,
    market=market,
    currency=currency,
    companyName=company_name,
    statements={topic: _safeShow(topic) for topic in ("IS", "BS", "CF")},
    countryDefaults=_loadReference("damodaranDefaults.json"),
    industryDefaults=_loadReference("damodaranIndustryDefaults.json"),
    marketData={},
)

emit_result(
    table=memo["tables"]["oneOffAdjustment"],
    values=memo["headline"],
    date=memo.get("asOf"),
    units=memo["units"],
    sources=memo["sources"],
)

호출 동작

1. 결론 도출

one-off 후보 line item을 찾고 정규화 후보로 표시한다.

2. 핵심 근거 수집

Company.show("IS"|"CF") line item의 snakeId와 항목명을 검색한다.

3. 메커니즘 분석

반복 영업력과 일회성 항목을 분리해야 성장·마진 가정이 과대/과소 추정되지 않는다.

4. 반례·한계

반복 구조조정 여부는 텍스트 근거가 필요하므로 line item 감사 단계에서 confidence를 낮춘다.

5. 후속 모니터링

후속 스킬은 normalizedFinancials, scenarioFalsifier다.

대표 반환 형태

oneOffAdjustment : list[dict]adjustment, status, lineItem, latestValue, action.

연계 절차

  1. recipes.fundamental.valuation.damodaran.accountTraceAudit - 계정 trace 확인.
  2. recipes.fundamental.valuation.damodaran.normalizedFinancials - 정규화 후보 반영.

런타임

실행 환경별 호환성

환경상태비고 / 제한
Local Python supported
Server supported
MCPunknown
Web AIunknown
Pyodideunknown

실패 회피

흔한 실패 · 절대 금지

흔한 실패
  • 손상차손을 반복 영업마진으로 반영
절대 금지
  • L2 엔진 호출 금지.
  • 일회성 라인 결손을 정상 반복손익으로 단정하지 않는다.