recipes.fundamental.dividend.payoutFcfCoverage Recipes Recipe curated

배당성향 vs FCF 커버리지 z-score

회사의 배당성향 (Dividends / Net Income) 과 FCF 커버리지 (Dividends / FCF) 두 축의 trailing 5y baseline 대비 z-score 를 동시에 본다. EPS 기준 payout 은 정상인데 FCF 기준이 무너진 row 가 *회계이익↔현금* 괴리 신호. analysis 단일축. 트리거 — '배당 FCF 커버리지', 'payout sustainable', '배당 갭'.

이 스킬

배당성향 vs FCF 커버리지 z-score

회사의 배당성향 (Dividends / Net Income) 과 FCF 커버리지 (Dividends / FCF) 두 축의 trailing 5y baseline 대비 z-score 를 동시에 본다. EPS 기준 payout 은 정상인데 FCF 기준이 무너진 row 가 *회계이익↔현금* 괴리 신호. analysis 단일축. 트리거 — '배당 FCF 커버리지', 'payout sustainable', '배당 갭'.

Recipes curated recipes.fundamental.dividend.payoutFcfCoverage

연계 절차

이 절차의 단계

  1. 1
    recipes.fundamental.dividend.capitalReturn recipes.fundamental.dividend.capitalReturn

    환원 thesis 진입.

  2. 2
    recipes.fundamental.dividend.stressTest recipes.fundamental.dividend.stressTest

    매크로 침체 시 커버리지 무너지는 임계.

  3. 3
    Revenue To Cash Bridge recipes.fundamental.quality.forensics.revenueToCashBridge

    회계이익↔현금 괴리 깊이.

절차

실행 순서

  1. 1

    Company.analysis('capitalAllocation') 연도별 (dividends_paid + net_income + free_cash_flow)

  2. 2

    payoutNi = dividends / netIncome

  3. 3

    payoutFcf = dividends / FCF (= OCF - capex)

  4. 4

    trailing baseline (직전 4 년) 평균 + std → 최신 z-score 2 종

  5. 5

    baseline 표본 < 3 년이면 z-score 계산 무의미 — coverage 한계 명시.

  6. 6

    payoutFcf > 1 단독으로 "cut 위험" 단정 X — 차입 + 자본구조 조정 동반 가능.

  7. 7

    일회성 손익 (감액손실 / 처분이익) 으로 NI 튄 연도는 baseline 분리.

  8. 8

    capex lump-sum 산업 (유통 부동산) 에서 단년 FCF noise 를 z 신호로 오인.

  9. 9

    gap > +1.0 → `recipes.fundamental.quality.forensics.revenueToCashBridge` 로 회계↔현금 괴리 깊이.

  10. 10

    payoutFcf > 1 + zFcf > +2 → `recipes.fundamental.dividend.stressTest` 로 매크로 침체 시 cut 임계.

  11. 11

    일관 zNi + zFcf ≥ 0 → `recipes.fundamental.dividend.capitalReturn` 으로 환원 thesis 진입.

  12. 12

    baseline 표본 < 3 년이면 z-score 계산 안 함, 한계로 명시.

예시

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

  • 005930 5년 payoutNI vs payoutFcf z-score
  • 회계이익은 견조하나 FCF 커버리지 깨진 종목

출력

기대 결과

  • 연도별 payoutNI / payoutFcf 표
  • trailing 5y baseline z-score 2 종
  • 두 z-score 갭 신호

공개 호출 방식

import dartlab
import polars as pl

target = "005930"
c = dartlab.Company(target)

try:
    rows = c.analysis("capitalAllocation").to_dicts()
except Exception:
    rows = []

audit = []
for r in rows:
    div = abs(float(r.get("dividends_paid") or r.get("dividendsPaid") or 0))
    ni = float(r.get("net_income") or r.get("netIncome") or 0)
    fcf = float(r.get("free_cash_flow") or r.get("freeCashFlow") or 0)
    audit.append({
        "year": r.get("year") or r.get("period"),
        "dividends": div,
        "netIncome": ni,
        "fcf": fcf,
        "payoutNi": (div / ni) if ni else None,
        "payoutFcf": (div / fcf) if fcf else None,
    })

table = pl.DataFrame(audit) if audit else pl.DataFrame(
    schema={"year": pl.Utf8, "dividends": pl.Float64, "netIncome": pl.Float64,
            "fcf": pl.Float64, "payoutNi": pl.Float64, "payoutFcf": pl.Float64}
)

def z_last(col):
    series = table[col].drop_nulls()
    if series.len() < 3:
        return None
    mean = float(series.head(series.len()-1).mean()) if series.len() > 1 else None
    std = float(series.head(series.len()-1).std()) if series.len() > 2 else None
    cur = float(series.tail(1)[0])
    if std is None or std == 0 or mean is None:
        return None
    return (cur - mean) / std

z_ni = z_last("payoutNi")
z_fcf = z_last("payoutFcf")

emit_result(
    table=table,
    values={"zNi": z_ni, "zFcf": z_fcf, "gap": (z_fcf - z_ni) if (z_ni is not None and z_fcf is not None) else None},
    date=str(table["year"].max()) if table.height else None,
    sources=["dartlab://analysis/capitalAllocation"],
)

호출 동작

1. 결론 도출

zNi + zFcf gap 단정. 예: “최근 5y baseline payoutNi 평균 0.28 / std 0.05 → 최신 0.32 → zNi = +0.8. payoutFcf 평균 0.45 / std 0.08 → 최신 0.68 → zFcf = +2.9. gap = +2.1 → 회계이익 기준 정상이나 현금 기준 부담 가중 (z 갭 ≥ 1.0 — 회계이익↔현금 괴리 의심).”

2. 핵심 근거 수집

  • Company.analysis(‘capitalAllocation’) 연도별 (dividends_paid + net_income + free_cash_flow)
  • payoutNi = dividends / netIncome
  • payoutFcf = dividends / FCF (= OCF - capex)
  • trailing baseline (직전 4 년) 평균 + std → 최신 z-score 2 종

3. 메커니즘 분석

연도별 → 2 ratio
   payoutNi  = dividends / netIncome  (EPS 기준)
   payoutFcf = dividends / FCF        (현금 기준)

최근 연도 z-score:
   zNi  = (payoutNi[-1]  - mean(payoutNi[:-1]))  / std
   zFcf = (payoutFcf[-1] - mean(payoutFcf[:-1])) / std

gap = zFcf - zNi
   gap > +1.0 → EPS 정상 / 현금 압박 (FCF 약화 또는 capex 가속)
   |gap| < 1.0 → 동조 (EPS+FCF 같은 방향)
   gap < -1.0 → EPS 약화 / 현금 정상 (NI 일회성 하향)

배당 sustainability:
   payoutFcf > 1.0 + zFcf > +2 → cut 위험 후보 (단, 자본구조 조정 분리 필요)
   gap 큼 + |zFcf| > 2 → forensics 후속 (회계↔현금 괴리)

EPS 기준만 보면 못 보는 현금 기준 배당 부담 을 z-score 로 본다. NI 가 일회성 손익으로 튀면 zNi 만 깨지고 zFcf 는 정상 — 분리 필요.

4. 반례·한계

  • baseline 표본 < 3 년이면 z-score 계산 무의미 — coverage 한계 명시.
  • payoutFcf > 1 단독으로 “cut 위험” 단정 X — 차입 + 자본구조 조정 동반 가능.
  • 일회성 손익 (감액손실 / 처분이익) 으로 NI 튄 연도는 baseline 분리.
  • capex lump-sum 산업 (유통 부동산) 에서 단년 FCF noise 를 z 신호로 오인.

5. 후속 모니터링

  • gap > +1.0 → recipes.fundamental.quality.forensics.revenueToCashBridge 로 회계↔현금 괴리 깊이.
  • payoutFcf > 1 + zFcf > +2 → recipes.fundamental.dividend.stressTest 로 매크로 침체 시 cut 임계.
  • 일관 zNi + zFcf ≥ 0 → recipes.fundamental.dividend.capitalReturn 으로 환원 thesis 진입.

대표 반환 형태

column의미
year결산 연도
dividends배당총액
netIncome순이익
fcfFCF (OCF - capex)
payoutNi배당 / NI
payoutFcf배당 / FCF

연계 절차

  1. recipes.fundamental.dividend.capitalReturn - 환원 thesis 진입.
  2. recipes.fundamental.dividend.stressTest - 매크로 침체 시 커버리지 무너지는 임계.
  3. recipes.fundamental.quality.forensics.revenueToCashBridge - 회계이익↔현금 괴리 깊이.

기본 검증

  • baseline 표본 < 3 년이면 z-score 계산 안 함, 한계로 명시.
  • payoutFcf > 1 단독으로 “cut 위험” 단정 금지 — 자본구조 조정 동반 가능.
  • 일회성 손익 (oneOffAdjustment 메모 동행) 으로 NI 튄 연도는 baseline 분리.

런타임

실행 환경별 호환성

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

실패 회피

흔한 실패 · 절대 금지

흔한 실패
  • 일회성 손익으로 NI 가 튄 연도를 baseline 에 그대로 포함
  • FCF 계산식 (OCF - capex) 변형으로 비교 시점간 일관성 깨짐
  • 유통 부동산) 에서 단년 노이즈를 신호로 오인
절대 금지
  • 단일 연도 z-score 로 배당 cut 결론
  • payoutFcf > 1 자체를 컷 위험 단정 (M&A·자본구조 조정 동반 가능)