TT Lab
블로그 시작하기
배우기 러닝패스 코스

보험 도메인 심화

손해율 분석과 이상 청구 탐지

TT Lab 에서 이어서 보기

목표

계약과 청구 데이터에서 상품·분기별 손해율과 합산비율을 계산하고, 계약 직후 청구·특정 병원 집중·수취 계좌 공유 세 가지 이상 징후를 찾아 조사 의뢰 목록을 만듭니다.

왜 중요한가

손해보험의 성적표는 두 숫자입니다. 손해율은 받은 보험료 중 얼마가 보험금으로 나갔는가이고, 합산비율은 거기에 사업비까지 더해 100% 를 넘는지 보는 것입니다. 합산비율이 100% 를 넘으면 보험 영업 자체로는 손해라는 뜻입니다. 경영진이 매달 보는 숫자이고, 요율 인상·인수 기준 강화·판매 중단이 이 숫자에서 결정됩니다.

분모가 경과보험료라는 것이 중요합니다. 1년치 보험료를 받았어도 이번 분기에 번 것은 그중 3개월치뿐입니다. 분자는 발생손해액이고, 이미 지급한 것뿐 아니라 접수됐지만 아직 심사 중인 건의 추산액도 들어갑니다. 지급액만 세면 손해율이 실제보다 좋아 보이고, 그 착시가 다음 분기에 터집니다.

사기 탐지는 손해율 관리의 다른 얼굴입니다. 가입하자마자 청구가 들어오는 계약, 유독 한 병원에서 큰 금액이 반복되는 청구, 서로 다른 계약인데 같은 계좌로 돈이 나가는 청구 — 하나하나는 우연일 수 있지만 패턴은 조사 대상입니다. 룰은 판단이 아니라 조사 의뢰의 근거를 만드는 것이고, 최종 판단은 조사 조직(SIU)이 합니다.

이 실습의 규칙

단계

  1. 오른쪽 예시의 생성기를 /root/ins/make_claims.py 로 저장하고 python3 make_claims.py 로 실행하세요. claims.db 에 계약 65건, 청구 110건, 사업비 6행이 들어갑니다.
  2. 상품·분기별 경과보험료를 /root/ins/earned.csv 에 product,quarter,policies,earned_premium 머리글로 6줄 적으세요.
  3. 상품·분기별 손해율을 /root/ins/loss_ratio.csv 에 product,quarter,earned,incurred,loss_ratio_pct 머리글로 적으세요.
  4. 합산비율을 /root/ins/combined.csv 에 product,quarter,loss_ratio_pct,expense_ratio_pct,combined_pct 머리글로 적고, /root/ins/combined.txt 에 worst_product=, worst_quarter=, over_100_count= 세 줄을 적으세요.
  5. 계약 직후 청구를 /root/ins/early_claims.csv 에 claim_no,policy_no,days_since_start,paid_amount 머리글로 적으세요.
  6. 병원 집중을 /root/ins/hospital_flag.csv 에 hospital_id,claims,avg_amount,ratio 머리글로 적으세요. claims 는 그 병원의 PAID 청구 수, ratio 는 전체 PAID 평균 대비 배수(소수 둘째 자리)입니다.
  7. 수취 계좌 공유를 /root/ins/payee_flag.csv 에 payee_account,policies,claims,total_paid 머리글로 적고, 세 규칙 중 하나라도 걸린 청구를 /root/ins/siu_referral.csv 에 claim_no,reasons 머리글로 적으세요. reasons 는 EARLY·HOSPITAL·PAYEE 를 알파벳순으로 + 로 잇습니다.
  8. /root/ins/loss_report.md 에 ## Loss Ratio and Combined Ratio(손해율과 합산비율), ## Anomalies(이상 징후), ## SIU Referral(조사 의뢰), ## Limitations(한계) 네 절로 보고서를 쓰세요. 절 제목은 영어 제목이나 같은 뜻의 한국어·일본어·중국어 제목 어느 쪽이든 되고, 둘을 괄호로 함께 적어도 됩니다.

참고

계약·청구 데이터 만들기

오른쪽 예시의 생성기를 /root/ins/make_claims.py 로 저장하고 python3 make_claims.py 로 실행하세요. claims.db 에 계약 65건, 청구 110건, 사업비 6행이 들어갑니다.

실습 안내에 있는 생성기를 /root/ins/make_claims.py 로 저장하고 python3 로 실행하세요. 손으로 고치면 뒤 단계의 숫자가 전부 어긋납니다.

경과보험료 계산하기

상품·분기별 경과보험료를 /root/ins/earned.csv 에 product,quarter,policies,earned_premium 머리글로 6줄 적으세요.

분기마다 start_date <= 분기 첫날인 계약을 상품별로 세고 annual_premium / 4 (정수 나눗셈) 를 더하세요. 두 질의를 UNION ALL 로 합치면 6줄입니다. 분기 첫날에 가입한 계약은 그 분기에 들어가고, 2026-02-15 가입 계약은 2분기에만 들어갑니다. 몫은 계약마다 낸 뒤 더합니다.

발생손해액과 손해율 계산하기

상품·분기별 손해율을 /root/ins/loss_ratio.csv 에 product,quarter,earned,incurred,loss_ratio_pct 머리글로 적으세요.

claim 을 policy 와 조인해 상품을 얻고, 사고일의 월로 분기를 나눠 paid_amount + reserve_amount 를 더하세요(DENIED 제외). 2단계 결과를 .import 로 올려 LEFT JOIN 하면 분모가 붙습니다. ROUND(x * 100.0 / y, 1).

사업비를 더해 합산비율 보기

합산비율을 /root/ins/combined.csv 에 product,quarter,loss_ratio_pct,expense_ratio_pct,combined_pct 머리글로 적고, /root/ins/combined.txt 에 worst_product=, worst_quarter=, over_100_count= 세 줄을 적으세요.

expense 표를 상품·분기로 조인해 사업비 ÷ 경과보험료 × 100 을 소수 첫째 자리로 반올림하고, 반올림한 손해율에 더하세요(둘 다 반올림한 뒤 더한다). worst 는 combined_pct 가 가장 큰 줄, over_100_count 는 100 을 넘는 줄 수입니다.

가입 직후 청구 찾기

계약 직후 청구를 /root/ins/early_claims.csv 에 claim_no,policy_no,days_since_start,paid_amount 머리글로 적으세요.

claim 과 policy 를 조인해 julianday(accident_date) − julianday(start_date) < 90 인 건을 뽑으세요. 정확히 90일인 청구는 들지 않습니다.

특정 병원에 몰린 고액 청구 찾기

병원 집중을 /root/ins/hospital_flag.csv 에 hospital_id,claims,avg_amount,ratio 머리글로 적으세요. claims 는 그 병원의 PAID 청구 수, ratio 는 전체 PAID 평균 대비 배수(소수 둘째 자리)입니다.

status='PAID' 인 청구만으로 전체 평균을 먼저 구하고(CTE), 병원별 COUNT(*) >= 4 이면서 AVG(paid_amount) > 2 × 전체 평균인 병원만 남기세요. avg_amount 는 정수, ratio 는 ROUND(…, 2).

수취 계좌 공유와 조사 의뢰 목록 만들기

수취 계좌 공유를 /root/ins/payee_flag.csv 에 payee_account,policies,claims,total_paid 머리글로 적고, 세 규칙 중 하나라도 걸린 청구를 /root/ins/siu_referral.csv 에 claim_no,reasons 머리글로 적으세요. reasons 는 EARLY·HOSPITAL·PAYEE 를 알파벳순으로 + 로 잇습니다.

payee_flag 는 payee_account 로 GROUP BY 해 COUNT(DISTINCT policy_no) >= 3. siu_referral 은 5단계 청구 + 6단계 병원의 PAID 청구 + 7단계 계좌의 청구를 모아 청구별 사유를 알파벳순 + 로 잇고 claim_no 순으로 정렬합니다.

손해율·이상 청구 보고서 쓰기

/root/ins/loss_report.md 에 ## Loss Ratio and Combined Ratio(손해율과 합산비율), ## Anomalies(이상 징후), ## SIU Referral(조사 의뢰), ## Limitations(한계) 네 절로 보고서를 쓰세요. 절 제목은 영어 제목이나 같은 뜻의 한국어·일본어·중국어 제목 어느 쪽이든 되고, 둘을 괄호로 함께 적어도 됩니다.

절 제목 네 개는 영어 제목이나 같은 뜻의 한국어·일본어·중국어 제목 그대로. 손해율(loss ratio) 절에는 가장 나쁜 상품과 그 합산비율(combined ratio)을 한 줄에, 이상 징후(Anomalies) 절에는 6단계의 병원 번호와 7단계의 공유 계좌(payee account)를 전부, 조사 의뢰(SIU Referral) 절에는 siu_referral.csv 의 건수를 숫자로 적으세요.