Split View: 보험 도메인 완전 가이드 — 생명보험부터 손해보험, 보험료 산출까지
보험 도메인 완전 가이드 — 생명보험부터 손해보험, 보험료 산출까지

들어가며
은행, 증권과 함께 금융 3대 축 중 하나인 보험. 하지만 개발자에게 보험 도메인은 낯설기만 합니다. 언더라이팅? 보험계리? 손해율? 이 글에서 보험의 A to Z를 정리합니다.
보험의 기본 원리
대수의 법칙 (Law of Large Numbers)
import numpy as np
# 개인의 사고는 예측 불가, 하지만 집단의 사고율은 예측 가능!
n_people = [10, 100, 1000, 10000, 100000]
accident_rate = 0.05 # 실제 사고율 5%
for n in n_people:
accidents = np.random.binomial(n, accident_rate)
observed_rate = accidents / n
print(f" {n:>7}명: 관측 사고율 = {observed_rate:.4f} (오차: {abs(observed_rate - accident_rate):.4f})")
# 10명: 0.1000 (오차: 0.0500) ← 부정확
# 100000명: 0.0498 (오차: 0.0002) ← 거의 정확!
# → 가입자가 많을수록 보험사의 예측이 정확해짐
수지상등의 원칙
총 수입 보험료 = 총 지급 보험금 + 운영비
보험료 = 순보험료(위험보험료) + 부가보험료(사업비)
├── 보험금 지급 재원 ├── 설계사 수수료
└── 보험 리스크 대비 ├── 회사 운영비
└── 이윤
보험의 3대 분류
1. 생명보험 (Life Insurance)
사람의 생사에 관한 보험.
종류:
├── 종신보험: 사망 시 보험금 (평생 보장)
│ └── 보험료 비쌈, 상속/유족 보장 목적
├── 정기보험: 일정 기간 내 사망 시 보험금
│ └── 보험료 저렴, 20~30년 설정
├── 양로보험: 사망 또는 만기 시 보험금
│ └── 저축 + 보장 결합
└── 연금보험: 일정 나이부터 연금 지급
└── 노후 대비, 세제 혜택
# 정기보험료 산출 (간략 모델)
def term_insurance_premium(age, coverage, term_years, mortality_table):
"""
순보험료 = Σ (사망확률 × 보험금 × 할인율)
"""
premium = 0
discount_rate = 0.035 # 예정이율 3.5%
for year in range(term_years):
current_age = age + year
mortality = mortality_table[current_age] # 연령별 사망률
# 해당 연도 사망 시 보험금의 현재 가치
pv = coverage * mortality / (1 + discount_rate) ** (year + 1)
premium += pv
# 연납 순보험료 = 총 PV / 연금현가
annuity_factor = sum(1 / (1 + discount_rate) ** y for y in range(1, term_years + 1))
annual_premium = premium / annuity_factor
# 부가보험료 추가 (사업비율 ~30%)
gross_premium = annual_premium / 0.7
return gross_premium
# 30세, 1억 보장, 20년
# premium = term_insurance_premium(30, 100_000_000, 20, mortality_table)
2. 손해보험 (Property & Casualty Insurance)
재물, 배상책임, 비용에 관한 보험.
종류:
├── 화재보험: 건물, 동산 화재 피해
├── 자동차보험
│ ├── 대인배상 I/II: 타인 사망/상해
│ ├── 대물배상: 타인 재물 손해
│ ├── 자기신체: 내 상해
│ ├── 자차: 내 차 수리
│ └── 무보험차: 무보험 상대방 사고
├── 배상책임보험: 제3자에게 끼친 손해
├── 해상보험: 선박, 화물
└── 보증보험: 채무 불이행 보증
# 자동차 보험료 산출 요소
auto_insurance_factors = {
"차량": {
"차종": "K5 (중형)",
"연식": 2024,
"차량가액": 30_000_000,
"용도": "출퇴근",
},
"운전자": {
"나이": 30,
"성별": "남",
"면허_종류": "1종보통",
"사고_이력": 0, # 최근 3년
"보험_가입_기간": 5, # 년
},
"할인/할증": {
"무사고_할인": -15, # %
"블랙박스_할인": -5,
"마일리지_할인": -10,
"다자녀_할인": 0,
"사고_할증": 0,
}
}
# 손해율 = 지급보험금 / 경과보험료 × 100%
# 합산비율(Combined Ratio) = 손해율 + 사업비율
# < 100%: 보험 영업으로 이익
# > 100%: 투자 수익으로 메워야 함
3. 제3보험 (생손보 경계)
생명보험도 아니고 손해보험도 아닌 "사람의 신체"에 관한 보험:
├── 실손의료보험: 실제 치료비 보상 (가장 중요!)
├── 상해보험: 외부 사고로 인한 상해
├── 질병보험: 암, 뇌졸중, 심근경색 등
├── 간병보험: 장기 요양 상태
└── 치아보험: 치과 치료
보험 핵심 용어
| 용어 | 의미 | 개발자 비유 |
|---|---|---|
| 보험료 | 가입자가 내는 돈 | 구독료 |
| 보험금 | 사고 시 받는 돈 | SLA 보상금 |
| 보험가액 | 보험 대상의 실제 가치 | 서버 교체 비용 |
| 보험가입금액 | 보험 계약 금액 | 보상 한도 |
| 면책기간 | 보장 시작 전 대기 기간 | 쿨다운 |
| 면책금(공제) | 보험금에서 빼는 자기 부담금 | 최소 과금 단위 |
| 언더라이팅 | 가입 심사 | 입력 검증 |
| 보험계리사 | 보험료/준비금 계산 전문가 | 데이터 사이언티스트 |
보험료 산출 구조
총 보험료 (Gross Premium)
├── 순보험료 (Net Premium) — 보험금 지급 재원
│ ├── 위험보험료: 사망/사고 확률 기반
│ └── 저축보험료: 만기 환급금 재원 (저축성 보험)
│
└── 부가보험료 (Loading) — 회사 운영비
├── 신계약비: 설계사 수수료 (첫 해 집중)
├── 유지비: 매년 관리 비용
└── 수금비: 보험료 수납 비용
# 보험료 산출의 3대 기초율
class InsuranceBasicRates:
# 1. 예정위험률 (Mortality/Morbidity Rate)
# → 나이/성별/직업별 사망·사고 확률
# → 생명표, 경험통계 기반
mortality_30_male = 0.00098 # 30세 남성 연간 사망확률 0.098%
# 2. 예정이율 (Assumed Interest Rate)
# → 보험사가 운용 수익으로 벌 것으로 예상하는 이율
# → 높을수록 보험료 ↓ (미래 수익으로 상쇄)
assumed_rate = 0.025 # 2.5% (현재 저금리 시대)
# 3. 예정사업비율 (Expense Ratio)
# → 보험료 중 사업비 비율
expense_ratio = 0.25 # 25%
보험사 경영 지표
손해율 (Loss Ratio)
def loss_ratio(claims_paid, earned_premium):
"""손해율 = 지급보험금 / 경과보험료 × 100"""
return (claims_paid / earned_premium) * 100
# 자동차보험: 손해율 80% (높음)
# 생명보험: 손해율 50% (낮음)
# 실손보험: 손해율 120% (적자!)
합산비율 (Combined Ratio) — 보험사의 성적표
def combined_ratio(loss_ratio, expense_ratio):
"""합산비율 = 손해율 + 사업비율"""
return loss_ratio + expense_ratio
# < 100%: 보험 영업만으로 이익 (언더라이팅 이익)
# = 100%: 손익분기
# > 100%: 적자 → 투자 수익으로 메워야 함
# 한국 손해보험 평균: ~105% (영업은 적자, 투자로 보전)
지급여력비율 (RBC, Risk-Based Capital)
# 보험사의 건전성 지표 (금감원 감독)
def rbc_ratio(available_capital, required_capital):
"""지급여력비율 = 가용자본 / 요구자본 × 100"""
return (available_capital / required_capital) * 100
# 최소 100% 이상 유지 필수
# 150% 이상: 건전 (금감원 권고)
# 100% 미만: 적기시정조치 대상!
InsurTech — 보험 + 기술
전통 보험 → InsurTech
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
대면 설계사 영업 → 앱/웹 다이렉트 가입
종이 청구서 → OCR + AI 자동 심사
일률적 보험료 → IoT + AI 맞춤 보험료
수동 사기 탐지 → ML 이상 탐지
수개월 보험금 지급 → 실시간 자동 지급
# AI 보험 사기 탐지 모델 (개념)
features = {
"claim_amount": 50_000_000, # 청구 금액
"days_since_policy": 30, # 가입 후 경과일 (너무 빠른 청구?)
"previous_claims": 5, # 과거 청구 횟수
"medical_consistency": 0.3, # 진단서-청구 일관성 (낮으면 의심)
"provider_fraud_score": 0.8, # 해당 병원의 사기 이력 점수
"claimant_network_risk": 0.6, # 청구자 네트워크 위험도
}
# XGBoost / LightGBM으로 사기 확률 예측
# fraud_probability = model.predict(features)
# > 0.7이면 SIU(특별조사팀) 자동 이관
개발자가 알면 좋은 보험 시스템
보험 시스템 아키텍처:
├── 계약 관리 (Policy Admin)
│ └── 가입, 변경, 해지, 갱신
├── 언더라이팅 (Underwriting)
│ └── 가입 심사, 위험 평가
├── 보험료 산출 (Rating Engine)
│ └── 보험계리 기반 보험료 계산
├── 보험금 청구 (Claims)
│ └── 접수, 심사, 지급, 사기 탐지
├── 수금 (Billing)
│ └── 보험료 수납, 미납 관리
├── 재보험 (Reinsurance)
│ └── 위험 분산 (보험사의 보험)
└── 계리 (Actuarial)
└── 준비금 산출, 상품 설계
📝 퀴즈 — 보험 도메인 (클릭해서 확인!)
Q1. 보험의 기본 원리인 "대수의 법칙"이란? ||개별 사건은 예측 불가하지만, 충분히 큰 집단에서는 사고 발생률이 통계적으로 안정적으로 수렴한다는 법칙. 가입자가 많을수록 보험사의 리스크 예측이 정확해짐||
Q2. 순보험료와 부가보험료의 차이는? ||순보험료: 보험금 지급 재원 (위험보험료 + 저축보험료). 부가보험료: 회사 운영비 (신계약비 + 유지비 + 수금비). 총 보험료 = 순보험료 + 부가보험료||
Q3. 합산비율(Combined Ratio)이 105%인 보험사의 상태는? ||보험 영업만으로는 5% 적자. 지급보험금 + 사업비가 수입보험료보다 5% 많음. 투자 수익으로 메워야 흑자 달성 가능||
Q4. 실손의료보험의 손해율이 120%를 넘는 이유는? ||의료비 상승 + 과잉 진료 + 도덕적 해이. 보험금 지급액이 수입보험료를 크게 초과. 보험사들이 보험료를 지속 인상하는 이유||
Q5. 예정이율이 높아지면 보험료는? ||낮아진다. 보험사가 운용 수익을 더 많이 벌 것으로 예상하므로, 가입자에게 미리 할인해주는 효과||
Q6. RBC 비율이 100% 미만이면? ||금감원의 적기시정조치 대상. 보험금 지급 능력이 부족한 상태로, 신규 영업 제한/자본 확충 명령 등을 받음||
Insurance Domain Complete Guide -- From Life Insurance to Property Insurance and Premium Calculation
- Introduction
- Fundamental Principles of Insurance
- Three Major Categories of Insurance
- Key Insurance Terminology
- Premium Calculation Structure
- Insurance Company Performance Metrics
- InsurTech -- Insurance + Technology
- Insurance Systems Developers Should Know
- Quiz

Introduction
Insurance is one of the three pillars of finance alongside banking and securities. Yet for developers, the insurance domain is unfamiliar territory. Underwriting? Actuarial science? Loss ratio? This article covers insurance from A to Z.
Fundamental Principles of Insurance
Law of Large Numbers
import numpy as np
# Individual accidents are unpredictable, but group accident rates are predictable!
n_people = [10, 100, 1000, 10000, 100000]
accident_rate = 0.05 # Actual accident rate 5%
for n in n_people:
accidents = np.random.binomial(n, accident_rate)
observed_rate = accidents / n
print(f" {n:>7} people: Observed rate = {observed_rate:.4f} (error: {abs(observed_rate - accident_rate):.4f})")
# 10: 0.1000 (error: 0.0500) <- Inaccurate
# 100000: 0.0498 (error: 0.0002) <- Nearly exact!
# -> The more policyholders, the more accurate the insurer's predictions
Principle of Equivalence
Total Premium Income = Total Claims Paid + Operating Expenses
Premium = Net Premium (Risk Premium) + Loading (Expenses)
├── Claims payment fund ├── Agent commissions
└── Insurance risk reserve ├── Company operating costs
└── Profit
Three Major Categories of Insurance
1. Life Insurance
Insurance related to human life and death.
Types:
├── Whole Life: Death benefit (lifetime coverage)
│ └── High premiums, for inheritance/dependents
├── Term Life: Death benefit within a set period
│ └── Low premiums, set for 20-30 years
├── Endowment: Benefit on death or maturity
│ └── Savings + coverage combined
└── Annuity: Pension payments from a certain age
└── Retirement planning, tax benefits
# Term insurance premium calculation (simplified model)
def term_insurance_premium(age, coverage, term_years, mortality_table):
"""
Net premium = Sum of (mortality rate x coverage x discount factor)
"""
premium = 0
discount_rate = 0.035 # Assumed interest rate 3.5%
for year in range(term_years):
current_age = age + year
mortality = mortality_table[current_age] # Mortality rate by age
# Present value of death benefit for that year
pv = coverage * mortality / (1 + discount_rate) ** (year + 1)
premium += pv
# Annual net premium = Total PV / Annuity factor
annuity_factor = sum(1 / (1 + discount_rate) ** y for y in range(1, term_years + 1))
annual_premium = premium / annuity_factor
# Add loading (expense ratio ~30%)
gross_premium = annual_premium / 0.7
return gross_premium
# Age 30, 100M KRW coverage, 20 years
# premium = term_insurance_premium(30, 100_000_000, 20, mortality_table)
2. Property and Casualty Insurance
Insurance related to property, liability, and expenses.
Types:
├── Fire Insurance: Building and movable property fire damage
├── Auto Insurance
│ ├── Bodily Injury I/II: Death/injury to others
│ ├── Property Damage: Damage to others' property
│ ├── Personal Injury: Own injuries
│ ├── Own Vehicle: Own car repair
│ └── Uninsured Motorist: Accidents with uninsured drivers
├── Liability Insurance: Damages caused to third parties
├── Marine Insurance: Ships, cargo
└── Surety Insurance: Debt default guarantee
# Auto insurance premium factors
auto_insurance_factors = {
"vehicle": {
"model": "K5 (midsize)",
"year": 2024,
"vehicle_value": 30_000_000,
"usage": "commuting",
},
"driver": {
"age": 30,
"gender": "male",
"license_type": "Class 1 Standard",
"accident_history": 0, # Last 3 years
"insurance_tenure": 5, # Years
},
"discounts_surcharges": {
"no_claims_discount": -15, # %
"dashcam_discount": -5,
"mileage_discount": -10,
"multi_child_discount": 0,
"accident_surcharge": 0,
}
}
# Loss Ratio = Claims Paid / Earned Premium x 100%
# Combined Ratio = Loss Ratio + Expense Ratio
# Less than 100%: Profitable from insurance operations alone
# Greater than 100%: Must be covered by investment income
3. Third-Sector Insurance (Between Life and P&C)
Insurance related to "the human body" that is neither life nor P&C:
├── Indemnity Health Insurance: Reimburses actual medical costs (most important!)
├── Accident Insurance: Injuries from external accidents
├── Disease Insurance: Cancer, stroke, heart attack, etc.
├── Long-term Care Insurance: Long-term nursing state
└── Dental Insurance: Dental treatment
Key Insurance Terminology
| Term | Meaning | Developer Analogy |
|---|---|---|
| Premium | Money the policyholder pays | Subscription fee |
| Claim / Benefit | Money received upon an incident | SLA compensation |
| Insurable Value | Actual value of the insured item | Server replacement cost |
| Sum Insured | Contract amount | Coverage limit |
| Waiting Period | Period before coverage begins | Cooldown |
| Deductible | Self-pay amount subtracted from claims | Minimum billing unit |
| Underwriting | Enrollment screening | Input validation |
| Actuary | Expert in premium/reserve calculation | Data scientist |
Premium Calculation Structure
Gross Premium
├── Net Premium -- Source for claims payment
│ ├── Risk Premium: Based on death/accident probability
│ └── Savings Premium: Source for maturity refund (savings-type insurance)
│
└── Loading -- Company operating expenses
├── Acquisition Cost: Agent commissions (concentrated in first year)
├── Maintenance Cost: Annual management expenses
└── Collection Cost: Premium collection expenses
# Three fundamental rates for premium calculation
class InsuranceBasicRates:
# 1. Assumed Mortality/Morbidity Rate
# -> Death/accident probability by age/gender/occupation
# -> Based on life tables and experience statistics
mortality_30_male = 0.00098 # 30-year-old male annual mortality 0.098%
# 2. Assumed Interest Rate
# -> Rate of return insurers expect from investment operations
# -> Higher rate means lower premiums (offset by future investment returns)
assumed_rate = 0.025 # 2.5% (current low-interest era)
# 3. Assumed Expense Ratio
# -> Proportion of premium allocated to expenses
expense_ratio = 0.25 # 25%
Insurance Company Performance Metrics
Loss Ratio
def loss_ratio(claims_paid, earned_premium):
"""Loss Ratio = Claims Paid / Earned Premium x 100"""
return (claims_paid / earned_premium) * 100
# Auto insurance: Loss ratio 80% (high)
# Life insurance: Loss ratio 50% (low)
# Indemnity health: Loss ratio 120% (operating at a loss!)
Combined Ratio -- The Insurer's Report Card
def combined_ratio(loss_ratio, expense_ratio):
"""Combined Ratio = Loss Ratio + Expense Ratio"""
return loss_ratio + expense_ratio
# Less than 100%: Profit from insurance operations alone (underwriting profit)
# Equal to 100%: Break-even
# Greater than 100%: Operating loss -> must be covered by investment income
# Korean P&C insurance average: ~105% (operating loss, covered by investment returns)
RBC Ratio (Risk-Based Capital)
# Insurance company soundness indicator (FSS supervision)
def rbc_ratio(available_capital, required_capital):
"""RBC Ratio = Available Capital / Required Capital x 100"""
return (available_capital / required_capital) * 100
# Must maintain at least 100%
# 150% or above: Sound (FSS recommendation)
# Below 100%: Subject to prompt corrective action!
InsurTech -- Insurance + Technology
Traditional Insurance -> InsurTech
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
In-person agent sales -> App/web direct enrollment
Paper claim forms -> OCR + AI automated review
Uniform premiums -> IoT + AI personalized premiums
Manual fraud detection -> ML anomaly detection
Months for claim payment -> Real-time automatic payment
# AI insurance fraud detection model (concept)
features = {
"claim_amount": 50_000_000, # Claim amount
"days_since_policy": 30, # Days since enrollment (too quick a claim?)
"previous_claims": 5, # Past claim count
"medical_consistency": 0.3, # Diagnosis-claim consistency (low = suspicious)
"provider_fraud_score": 0.8, # Hospital's fraud history score
"claimant_network_risk": 0.6, # Claimant network risk
}
# Predict fraud probability with XGBoost / LightGBM
# fraud_probability = model.predict(features)
# If greater than 0.7, automatically escalate to SIU (Special Investigation Unit)
Insurance Systems Developers Should Know
Insurance System Architecture:
├── Policy Administration
│ └── Enrollment, changes, cancellation, renewal
├── Underwriting
│ └── Enrollment screening, risk assessment
├── Rating Engine
│ └── Actuarial-based premium calculation
├── Claims
│ └── Filing, review, payment, fraud detection
├── Billing
│ └── Premium collection, delinquency management
├── Reinsurance
│ └── Risk distribution (insurance for insurers)
└── Actuarial
└── Reserve calculation, product design
Quiz -- Insurance Domain (Click to check!)
Q1. What is the "Law of Large Numbers," a fundamental principle of insurance? ||Individual events are unpredictable, but in sufficiently large groups, accident rates converge statistically to stable values. The more policyholders, the more accurate the insurer's risk predictions.||
Q2. What is the difference between net premium and loading? ||Net premium: Source for claims payment (risk premium + savings premium). Loading: Company operating expenses (acquisition cost + maintenance cost + collection cost). Total premium = Net premium + Loading.||
Q3. What is the situation of an insurer with a combined ratio of 105%? ||Operating at a 5% loss from insurance operations alone. Claims paid + expenses exceed premium income by 5%. Investment income is needed to achieve profitability.||
Q4. Why does indemnity health insurance have a loss ratio exceeding 120%? ||Rising medical costs + excessive treatment + moral hazard. Claims payments significantly exceed premium income. This is why insurers continuously raise premiums.||
Q5. What happens to premiums when the assumed interest rate increases? ||They decrease. Since the insurer expects to earn more from investment operations, it effectively provides a discount to policyholders upfront.||
Q6. What happens when the RBC ratio falls below 100%? ||The company becomes subject to prompt corrective action by the Financial Supervisory Service. It indicates insufficient capacity to pay claims, leading to restrictions on new business and capital adequacy orders.||
Quiz
Q1: What is the main topic covered in "Insurance Domain Complete Guide -- From Life Insurance to
Property Insurance and Premium Calculation"?
Core principles of insurance, differences between life/property/third-sector insurance, premium calculation structure (net premium + loading), loss ratio, combined ratio, and InsurTech. A complete anatomy of insurance for financial domain developers.
Q2: What is Fundamental Principles of Insurance?
Law of Large Numbers Principle of Equivalence
Q3: Explain the core concept of Three Major Categories of Insurance.
- Life Insurance Insurance related to human life and death. 2. Property and Casualty Insurance Insurance related to property, liability, and expenses. 3. Third-Sector Insurance (Between Life and P&C)
Q4: How can Insurance Company Performance Metrics be achieved effectively?
Loss Ratio Combined Ratio -- The Insurer's Report Card RBC Ratio (Risk-Based Capital)
Q5: How does Insurance Systems Developers Should Know work?
Q1. What is the "Law of Large Numbers," a fundamental principle of insurance? Q2. What is the
difference between net premium and loading? Q3. What is the situation of an insurer with a
combined ratio of 105%? Q4.