Skip to content
Published on

保険ドメイン完全ガイド -- 生命保険から損害保険、保険料算出まで

Authors
  • Name
    Twitter
Insurance Domain Guide

はじめに

銀行、証券と並ぶ金融3大柱の一つである保険。しかし開発者にとって保険ドメインは馴染みのない領域です。アンダーライティング?保険計理?損害率?この記事では保険のAから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)

人の生死に関する保険。

種類:
├── 終身保険: 死亡時に保険金(一生涯保障)
│   └── 保険料が高い、相続・遺族保障目的
├── 定期保険: 一定期間内の死亡時に保険金
│   └── 保険料が安い、2030年設定
├── 養老保険: 死亡または満期時に保険金
│   └── 貯蓄 + 保障の組み合わせ
└── 年金保険: 一定の年齢から年金を支給
    └── 老後の備え、税制優遇
# 定期保険料の算出(簡略モデル)
def term_insurance_premium(age, coverage, term_years, mortality_table):
    """
    純保険料 = Σ (死亡確率 x 保険金 x 割引率)
    """
    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: 他人の死亡・傷害
│   ├── 対物賠償: 他人の財物損害
│   ├── 自身傷害: 自分のけが
│   ├── 車両: 自分の車の修理
│   └── 無保険車: 無保険の相手方との事故
├── 賠償責任保険: 第三者に与えた損害
├── 海上保険: 船舶、貨物
└── 保証保険: 債務不履行の保証
# 自動車保険料の算出要素
auto_insurance_factors = {
    "車両": {
        "車種": "K5(中型)",
        "年式": 2024,
        "車両価額": 30_000_000,
        "用途": "通勤",
    },
    "運転者": {
        "年齢": 30,
        "性別": "男",
        "免許種類": "1種普通",
        "事故歴": 0,  # 直近3年
        "保険加入期間": 5,  # 年
    },
    "割引・割増": {
        "無事故割引": -15,  # %
        "ドラレコ割引": -5,
        "走行距離割引": -10,
        "多子割引": 0,
        "事故割増": 0,
    }
}

# 損害率 = 支払保険金 / 経過保険料 x 100%
# 合算比率(Combined Ratio) = 損害率 + 事業費率
# 100%未満: 保険営業だけで利益
# 100%超: 投資収益で補填が必要

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):
    """損害率 = 支払保険金 / 経過保険料 x 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):
    """ソルベンシーマージン比率 = 可用資本 / 要求資本 x 100"""
    return (available_capital / required_capital) * 100

# 最低100%以上の維持が必須
# 150%以上: 健全(金融監督院の勧告)
# 100%未満: 早期是正措置の対象!

InsurTech -- 保険 + テクノロジー

伝統的保険               ->    InsurTech
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
対面の代理店営業           ->    アプリ/Web直接加入
紙の請求書                 ->    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%未満だとどうなる? ||金融監督院の早期是正措置の対象。保険金支払い能力が不足している状態で、新規営業の制限や資本充実命令などを受ける||