보험 업무의 구조 · 사고와 보상 · 실습
손해율 분석과 이상 청구 탐지
목표
계약과 청구 데이터에서 상품·분기별 손해율과 합산비율을 계산하고, 계약 직후 청구·특정 병원 집중·수취 계좌 공유 세 가지 이상 징후를 찾아 조사 의뢰 목록을 만듭니다.
왜 중요한가
손해보험의 성적표는 두 숫자입니다. 손해율은 받은 보험료 중 얼마가 보험금으로 나갔는가이고, 합산비율은 거기에 사업비까지 더해 100% 를 넘는지 보는 것입니다. 합산비율이 100% 를 넘으면 보험 영업 자체로는 손해라는 뜻입니다. 경영진이 매달 보는 숫자이고, 요율 인상·인수 기준 강화·판매 중단이 이 숫자에서 결정됩니다.
분모가 경과보험료라는 것이 중요합니다. 1년치 보험료를 받았어도 이번 분기에 번 것은 그중 3개월치뿐입니다. 분자는 발생손해액이고, 이미 지급한 것뿐 아니라 접수됐지만 아직 심사 중인 건의 추산액도 들어갑니다. 지급액만 세면 손해율이 실제보다 좋아 보이고, 그 착시가 다음 분기에 터집니다.
사기 탐지는 손해율 관리의 다른 얼굴입니다. 가입하자마자 청구가 들어오는 계약, 유독 한 병원에서 큰 금액이 반복되는 청구, 서로 다른 계약인데 같은 계좌로 돈이 나가는 청구 — 하나하나는 우연일 수 있지만 패턴은 조사 대상입니다. 룰은 판단이 아니라 조사 의뢰의 근거를 만드는 것이고, 최종 판단은 조사 조직(SIU)이 합니다.
이 실습의 규칙
- 분기는
2026Q1(1~3월)·2026Q2(4~6월). 경과보험료는 분기 첫날에 유효한 계약(start_date가 분기 첫날 이하)의annual_premium ÷ 4합계이고 원 미만 버림 없이 정수 나눗셈 몫을 씁니다(실습 단순화). - 발생손해액 = 사고일이 그 분기인 청구 중
DENIED를 뺀 것의paid_amount + reserve_amount합. - 손해율(%) = 발생손해액 ÷ 경과보험료 × 100, 사업비율(%) = 사업비 ÷ 경과보험료 × 100, 합산비율 = 둘의 합. 전부 소수 첫째 자리까지.
- 계약 직후 청구 = 사고일이
start_date로부터 90일 미만. 병원 집중 = 청구 4건 이상이면서 평균 지급액이 전체PAID평균의 2배 초과. 수취 계좌 공유 = 같은payee_account로 서로 다른 계약 3건 이상.
단계
1. 오른쪽 예시의 생성기를 /root/ins/make_claims.py 로 저장하고 python3 make_claims.py 로 실행하세요. claims.db 에 계약 63건, 청구 82건, 사업비 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 머리글로 적으세요. ratio 는 전체 평균 대비 배수(소수 둘째 자리)입니다.
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 에 ## 손해율과 합산비율, ## 이상 징후, ## 조사 의뢰, ## 한계 네 절로 보고서를 쓰세요.
참고
- 분기는
CASE WHEN substr(accident_date, 6, 2) <= '03' THEN '2026Q1' ELSE '2026Q2' END로 나눌 수 있습니다. - 비율은
ROUND(x * 100.0 / y, 1)처럼 실수 나눗셈으로 하세요. 정수끼리 나누면 0 이 됩니다. - 흔한 실수 1: 손해율 분자에
OPEN건의 추산액을 빼는 것. 아직 안 나간 돈도 발생손해입니다. - 흔한 실수 2: 2026-02-15 가입 계약을 1분기 경과보험료에 넣는 것. 분기 첫날에는 없던 계약입니다.
- 흔한 실수 3: 병원 평균을
PAID가 아닌 전체 청구로 내는 것. 부지급·미결 건은 지급액이 0 이라 평균을 끌어내립니다.
단계 8개
- 계약·청구 데이터 만들기
- 경과보험료 계산하기
- 발생손해액과 손해율 계산하기
- 사업비를 더해 합산비율 보기
- 가입 직후 청구 찾기
- 특정 병원에 몰린 고액 청구 찾기
- 수취 계좌 공유와 조사 의뢰 목록 만들기
- 손해율·이상 청구 보고서 쓰기