BDAI FinDA 금융 데이터 분석 심화 과정

금융 데이터에는 정답이 없다

cheshire5 2026. 1. 24. 00:28

 

금융 데이터에는 정답이 없다

— Kaggle이 가르쳐주지 않는 시간, 누수, 그리고 의사결정의 문제

많은 사람들이 데이터 분석을 이렇게 배운다.

잘 정제된 데이터
명확한 라벨
높은 성능
→ 좋은 모델

Kaggle은 이 구조의 정점에 있다.
대부분의 Kaggle 데이터는 “이기면 되는 문제”로 설계되어 있다.

하지만 금융 데이터는 다르다.
애초에 정답을 맞히기 위해 만들어진 데이터가 아니기 때문이다.


1️⃣ 금융 데이터에는 ‘정답’이 정의되지 않는다

금융에서는 라벨부터가 사후적이다.

  • 부도는 언제부터 부도인가?
  • 위기는 언제 시작되었는가?
  • 연체는 30일인가, 90일인가?

같은 데이터라도 목적에 따라 정답이 달라진다.

  • 리스크 관리 관점
  • 수익 극대화 관점
  • 규제 대응 관점

📌 그래서 금융 데이터에서는
“accuracy를 높이자”는 Kaggle식 사고방식이 바로 무력화된다.


2️⃣ 데이터 생성 과정(DGP) 자체가 비정상적이다

금융 데이터는 같은 분포에서 나오지 않는다.

  • 규제 변화
  • 정책 변화
  • 금리 체계 변경
  • 회계 기준 변경
  • 시장 참여자 행동 변화

👉 데이터 생성 구조 자체가 시간에 따라 바뀐다 (regime shift)

Kaggle에서는 거의 등장하지 않는 이 체제 전환이
금융에서는 기본 전제다.


3️⃣ 대부분의 피처는 ‘대리 변수(proxy)’다

금융에서 우리가 관측하는 숫자는
우리가 알고 싶은 ‘진짜 원인’이 아니다.

  • 매출 → 기업 경쟁력의 대리
  • 신용점수 → 상환 의지의 대리
  • 거래량 → 정보 유입의 대리
  • 주가 → 기대의 기대의 기대

📌 관측되는 데이터 ≠ 우리가 알고 싶은 실체

그래서 금융에서는
상관은 높아도 인과는 자주 뒤집힌다.

Kaggle에서는 “왜 그런지”를 몰라도 되지만,
금융에서는 그걸 모르면 바로 사고로 이어진다.


4️⃣ 타깃 누수는 교묘하고 구조적이다

금융 데이터의 누수는 노골적이지 않다.

  • 미래 정보가 암묵적으로 반영된 변수
  • 사후 확정된 재무 데이터
  • 이미 시장에 반영된 가격 변수

Kaggle에서는 누수가 있으면 점수가 떨어져 바로 드러난다.
하지만 금융에서는 누수가 성과를 더 좋아 보이게 만든다.

📌 그래서 더 위험하다.

모델에서는 잘 되는데
현실에서는 망하는
가장 전형적인 원인


5️⃣ 평가 함수는 모호하고 정치적이다

  • Kaggle: AUC, RMSE, Logloss → 끝
  • 금융:
    • False Negative가 더 위험한가?
    • 자본비율에 어떤 영향을 미치는가?
    • 규제기관이 납득하는가?
    • 현업이 설명할 수 있는가?

👉 성능보다 설명 가능성 + 안정성이 더 중요해진다.


6️⃣ 숫자의 문제 같지만, 본질은 인간이다

금융 데이터에는 전부 섞여 있다.

  • 공포
  • 탐욕
  • 도덕적 해이
  • 집단 행동
  • 정치적 판단

모델이 깨질 때
문제는 데이터가 아니라 사람의 행동이 바뀐 것인 경우가 많다.

이건 코드로 잘 보이지 않는다.
경험으로만 감지된다.


7️⃣ 금융 데이터 분석은 분석이 아니라 ‘의사결정 설계’다

금융 데이터 분석에서 진짜 중요한 질문은 이것이다.

“틀릴 때, 이 모델은 어떻게 망가지는가?”

  • 위기 때 얼마나 보수적으로 바뀌는가?
  • 신뢰 구간이 무너질 때 어떤 신호를 주는가?
  • 언제 사용을 중단할 것인가?

📌 이걸 설계하지 않으면
성능이 좋아도 실무에서는 바로 퇴출이다.


🔑 핵심 전환점: Anchor Time이 없으면 모든 분석은 흔들린다

금융 데이터 분석이 어려운 진짜 이유는
시간이 섞여 있기 때문이다.


8️⃣ Anchor Time이 없을 때: 질문이 섞인다

예시: 신용대출 연체 분석

Anchor 없이 데이터를 구성하면
하나의 테이블이 동시에 이런 질문에 답하려 한다.

  • 누가 연체할까?
  • 누가 이미 연체했나?
  • 연체 이후 상태는 어떤가?
  • 연체 후 행동은 어떻게 바뀌었나?

👉 질문이 섞이면 모델은
가장 쉬운 질문을 학습한다.

보통은 이거다.

“이미 연체한 사람을 잘 구분하자”

그래서:

  • 연체 이후 급락한 신용점수
  • 연체 이후 카드 사용액 감소

같은 변수가 상위 중요도로 뜬다.

📌 성능은 높다.
하지만 이 모델은 예측이 아니라 사후 설명을 하고 있다.


9️⃣ Anchor Time을 잡았을 때: 질문이 고정된다

이제 Anchor Time을 명확히 잡아보자.

Anchor Time = 대출 실행 시점

이 순간부터 모든 변수에
같은 질문을 던지게 된다.

“이 정보는 그 시점에 알 수 있었는가?”


Anchor 이전 (사용 가능)

  • 실행 시점 신용점수
  • 과거 연체 이력
  • 과거 6개월 거래 패턴
  • 소득 대비 부채 비율

Anchor 이후 (입력 불가)

  • 연체 후 변경된 신용점수
  • 연체 이후 카드 사용 감소
  • 사후 정정된 소득 정보

📌 이후 정보가 사라지는 게 아니다.
역할이 바뀐다.

  • 원인 ❌
  • 입력 ❌
  • 결과 ⭕
  • 반응 ⭕
  • 경로 ⭕

10️⃣ 시간 정보는 ‘시점’이 아니라 ‘거리’로 바뀐다

Anchor를 잡으면
시간 변수의 형태가 바뀐다.

  • 언제 발생했는가 ❌
  • 지금으로부터 얼마나 떨어져 있는가 ⭕

예:

  • 마지막 연체 이후 경과 기간
  • 최초 거래 이후 경과 기간
  • 특정 상태가 유지된 시간

👉 이렇게 해야
모든 데이터가 같은 시간 좌표계 위에 올라간다.


11️⃣ Anchor는 누수를 없애는 장치가 아니다

이게 가장 중요한 포인트다.

Anchor를 잡아도
이후 정보는 계속 생긴다.

하지만 Anchor가 생기면:

  • 누수가 사라지는 게 아니라
  • 누수를 정의할 수 있게 된다

📌 Anchor는
미래 정보를 막는 장치가 아니라
책임과 해석의 기준선이다.


금융 데이터의 시간 구조는 왜 이렇게 복잡한가

금융 데이터는 분석을 위해 만들어진 게 아니다

금융 데이터는:

통제, 보고, 책임을 위해 만들어진 데이터다.

그래서 시간 단위가 갈라진다.

  • 일 → 트레이더, 리스크 관리
  • 월 → 여신, 연체, 수익
  • 분기 → CRO, CFO
  • 반기/연 → 감독당국, 감사

이걸 하나로 합치면
Time leakage 위험이 폭발한다.


금융 데이터 분석의 해법

Answer: 하나의 시간축을 강제로 만들어라

  1. 기준 시점(Anchor Time)을 고정한다
    • 대출 실행 시점
    • 스코어 산출 시점
  2. 모든 변수를 그 시점 기준으로 재정의한다
  3. 이후 정보는 파생 변수로만 사용한다

👉 모든 것을 한 시점에서 다시 본다


결론

  • 금융 데이터에는 하나의 정답이 없다
  • 성능 좋은 모델이 항상 좋은 모델은 아니다
  • 시간은 그냥 인덱스가 아니라 책임의 경계

금융 데이터 분석은
문제를 푸는 일이 아니라
현실을 해석할 기준점을 세우는 일이다.