100개 한국 기업, 20년 재무 패널 데이터(2005–2024)에서 찾은 영업이익률(year n)의 Top 5 결정요인.
Gradient Boosting + Partial Dependence 분석.
Tier 2 모델(OCF·전년 이익률을 제외한 순수 구조 요인)을 기반으로, 섹터·연도 더미를 그룹 합산한 Permutation Importance 결과입니다. 섹터가 전체 설명력의 약 70%를 차지합니다.
게임·IT·반도체·금융은 베이스라인 15%+, 조선·건설은 4% 내외. 업종 mix가 곧 운명.
8년 → 70년으로 이동 시 영업이익률 −4%p. 30년 이후 급격히 하락하는 계단형.
log(자산) p10 → p90 이동 시 −3%p. 일정 규모를 넘으면 마진 압박이 점프.
성장이 마진을 만들어주진 않음 (+0.6%p). 볼륨 게임 vs 마진 게임의 구분.
2008 금융위기 · 2020 코로나 · 2022 반도체 다운사이클 구간에서 체계적 하락.
PDP는 "다른 변수를 고정하고 이 변수만 바꿨을 때 예측 마진이 얼마나 변하는가"를 보여줍니다. 파란 얇은 선은 개별 기업(ICE), 빨간 굵은 선은 평균(PDP)입니다.
| 변수 | p10 → p90 | Δ margin | 해석 |
|---|---|---|---|
| 기업 연령 | 8년 → 70년 | −4.03 %p | 가장 극적인 음의 효과 |
| log(자산) | 400억 → 160조 | −3.09 %p | 규모의 불경제 · 계단형 |
| Capex / 자산 | 2.3% → 7.1% | −0.73 %p | 약한 음의 효과 |
| 매출성장률 | −16% → +33% | +0.63 %p | 거의 flat, 소폭 양(+) |
| Capex / 매출 | 3.7% → 9.4% | −0.11 %p | 사실상 중립 |
| 부채비율 | 38.5% → 66.5% | −0.11 %p | 사실상 중립 |
-rev × U(0.03, 0.10))로 뽑혔기 때문.
실제 DART 기반 패널에 같은 파이프라인을 적용하면 Capex · lag 구조가 의미 있게 나올 가능성이 높습니다.
전 기간(2005–2024) 섹터별 평균 영업이익률. 막대는 평균, 오차막대는 표준편차, 옆의 n은 관측연도 수입니다.
재현 가능한 분석을 위해 실제로 밟은 과정과 부딪친 함정을 그대로 공유합니다.
100개 KOSPI/KOSDAQ 실재 기업명 + 20년(2005–2024) 합성 재무제표 SQLite DB (1,768 rows after cleaning). 15개 섹터, 섹터별 성장률·마진·변동성 프로파일 + 매크로 충격(2008·2020·2021·2022) 반영.
12개 수치 피처 (capex 집약도·부채비율·자산회전율·log 자산·기업 연령·매출성장률 등) + 섹터 14개 더미 + 연도 18개 더미 = 총 44개.
세 층위로 분리했습니다 —
operating_cash_flow 포함 → R² 0.96으로 압도적 but 합성 코드상 op_cf = op_income × U(0.8, 1.3) 인 tautology였음.Pearson r / Standardized OLS / GBR feature_importance / Permutation importance(on test set, n=10 repeats). Top 5는 Permutation 기준. 이게 과적합 영향을 가장 덜 받음.
workspace/projects/pwc/
├── data/
│ ├── fin_sample.db # 원본 SQLite
│ ├── op_margin_feature_importance.csv # Tier 1
│ ├── op_margin_structural_drivers.csv # Tier 2
│ └── plots/
│ ├── pdp_numeric.png
│ ├── sector_baseline.png
│ └── drivers-top5.svg
└── scripts/
├── build_fin_sample.py
├── analyze_op_margin_drivers.py
└── plot_op_margin_pdp.py
같은 파이프라인을 KRX 상장사 실제 재무제표에 적용. Capex의 진짜 영향력 확인.
"반도체 안에서, 금융 안에서 뭐가 마진을 가르나" — CEO에게 바로 꽂히는 질문.
log_assets × firm_age 히트맵 — "큰 + 오래된" 조합의 저마진 트랩 시각화.