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

보험 도메인 심화

준비금·IFRS17·지급여력 파이프라인

TT Lab 에서 이어서 보기

목표

보유 계약의 책임준비금을 가입 당시 가정으로 계산하고, 같은 계약을 현행 할인율로 다시 평가해 IFRS17 의 최선추정부채·위험조정·계약서비스마진을 뽑은 뒤, 회사 숫자로 단순화한 지급여력비율까지 한 파이프라인으로 만듭니다.

왜 중요한가

보험사는 오늘 받은 보험료로 수십 년 뒤의 약속을 지킵니다. 그래서 회계의 핵심 질문은 "미래에 줄 돈을 지금 얼마로 잡아 둘 것인가" 이고, 그 답이 책임준비금입니다. 정기보험의 준비금은 앞으로 줄 급부의 현재가치에서 앞으로 받을 순보험료의 현재가치를 뺀 값입니다. 계약 초기에는 작고, 위험이 커지는 뒤로 갈수록 커집니다.

IFRS17 은 같은 질문에 다른 답을 요구합니다. 가입 당시 가정이 아니라 지금의 가정으로 부채를 평가하고(최선추정부채, BEL), 불확실성에 대한 보상(위험조정, RA)을 얹고, 그래도 남는 미실현 이익을 계약서비스마진(CSM)이라는 부채로 잡아 두었다가 계약 기간에 걸쳐 나눠 이익으로 인식합니다. 이익을 앞당겨 인식하지 못하게 하는 장치이고, 손실이 예상되는 계약은 바로 손실로 잡습니다.

지급여력제도(K-ICS)는 회사 전체를 봅니다. 보험·시장·신용 위험을 각각 자본 요구량으로 환산해 합치고, 가용자본이 그 요구량의 몇 % 인지를 봅니다. 이 세 층 — 원가 준비금, 시가 부채, 지급여력 — 이 보험사 결산 시스템의 뼈대이고, 같은 계약이 세 층에서 다른 숫자로 나타납니다.

이 실습의 규칙

단계

  1. 오른쪽 예시의 생성기를 /root/ins/make_reserve.py 로 저장하고 python3 make_reserve.py 로 실행하세요. lifetable.csv, inforce.csv(계약 5건), params.csv, capital.csv 가 만들어집니다. 뒤 단계가 쓰는 계리 함수 파일 /root/ins/act.py 도 오른쪽 예시대로 저장하세요 — term_insurance(qx, lx, x, n, i)·annuity_due(qx, lx, x, n, i) 를 담습니다.
  2. P001 의 현재 시점 준비금을 /root/ins/reserve_P001.txt 에 A=, annuity=, reserve= 세 줄로 적으세요.
  3. 계약 5건 전부를 /root/ins/reserves.csv 에 policy_no,age_now,remaining,A,annuity,reserve 머리글로 적고, /root/ins/reserves.txt 에 total_reserve= 한 줄(reserve 열의 합)을 적으세요.
  4. 재귀 검증을 /root/ins/recursion_check.csv 에 policy_no,v_next,lhs,rhs,diff 머리글로 적으세요. v_next 는 한 해 뒤 준비금 V_(t+1)(만기면 0), v_next·lhs·rhs 는 정수 반올림, diff 는 lhs − rhs 입니다.
  5. 가입 시점 기준으로 현행 할인율을 적용한 /root/ins/bel.csv 를 policy_no,pv_claims,pv_premiums,bel 머리글로 적으세요.
  6. /root/ins/csm.csv 에 policy_no,bel,ra,fcf,csm,loss_component 머리글로 적고, /root/ins/csm.txt 에 total_csm=, total_loss_component= 두 줄(각 열의 합)을 적으세요.
  7. /root/ins/kics.txt 에 required_capital=, available_capital=, ratio_pct=, meets_100= 네 줄을 적으세요. ratio_pct 는 소수 첫째 자리, meets_100 은 YES 또는 NO 입니다.
  8. /root/ins/valuation_report.md 에 ## Policy Reserves(책임준비금), ## IFRS17 Summary(IFRS17 요약), ## Solvency(지급여력), ## Data and Regulatory Notes(데이터와 규제 유의사항) 네 절로 결산 메모를 쓰세요. 절 제목은 영어 제목이나 같은 뜻의 한국어·일본어·중국어 제목 어느 쪽이든 되고, 둘을 괄호로 함께 적어도 됩니다.

참고

보유 계약과 가정 만들기

오른쪽 예시의 생성기를 /root/ins/make_reserve.py 로 저장하고 python3 make_reserve.py 로 실행하세요. lifetable.csv, inforce.csv(계약 5건), params.csv, capital.csv 가 만들어집니다. 뒤 단계가 쓰는 계리 함수 파일 /root/ins/act.py 도 오른쪽 예시대로 저장하세요 — term_insurance(qx, lx, x, n, i)·annuity_due(qx, lx, x, n, i) 를 담습니다.

실습 안내에 있는 생성기를 /root/ins/make_reserve.py 로 저장하고 python3 로 실행하세요. 오른쪽 예시의 계리 함수도 /root/ins/act.py 로 저장하세요 — term_insurance(qx, lx, x, n, i)·annuity_due(qx, lx, x, n, i) 두 함수를 채점기가 불러 값을 확인합니다(이 실습은 파드가 새로 떠서 모듈 1 의 파일이 남아 있지 않습니다).

계약 하나의 준비금 계산하기

P001 의 현재 시점 준비금을 /root/ins/reserve_P001.txt 에 A=, annuity=, reserve= 세 줄로 적으세요.

나이 = 35 + 5 = 40, 남은 기간 = 20 − 5 = 15. A(40, 15, 2.5%), ä(40, 15, 2.5%) 를 구하고 reserve = int(S × A − P × ä + 0.5). P 는 inforce.csv 의 198386 입니다.

보유 계약 전체의 준비금 뽑기

계약 5건 전부를 /root/ins/reserves.csv 에 policy_no,age_now,remaining,A,annuity,reserve 머리글로 적고, /root/ins/reserves.txt 에 total_reserve= 한 줄(reserve 열의 합)을 적으세요.

2단계를 inforce.csv 의 다섯 줄에 반복하고 reserve 를 합치세요. age_now = issue_age + elapsed, remaining = term − elapsed.

재귀식으로 준비금 검증하기

재귀 검증을 /root/ins/recursion_check.csv 에 policy_no,v_next,lhs,rhs,diff 머리글로 적으세요. v_next 는 한 해 뒤 준비금 V_(t+1)(만기면 0), v_next·lhs·rhs 는 정수 반올림, diff 는 lhs − rhs 입니다.

V(t+1) 은 나이를 하나 더 옮기고 남은 기간을 하나 줄여 같은 식으로 계산합니다(만기면 0). lhs = (V_t + P) × 1.025, rhs = q(x+t) × S + (1 − q(x+t)) × V_(t+1). lhs·rhs 는 각각 참값에서 ±2원 안이어야 하고 diff 는 0 근처가 됩니다. v_next 열에는 rhs 에 넣은 V_(t+1) 을 원 미만 반올림해 적습니다.

현행 할인율로 최선추정부채 구하기

가입 시점 기준으로 현행 할인율을 적용한 /root/ins/bel.csv 를 policy_no,pv_claims,pv_premiums,bel 머리글로 적으세요.

가입 시점이므로 issue_age 와 term 을 그대로 쓰고(경과를 빼지 않음), 이율은 params.csv 의 current_rate(0.030)입니다. pv_claims = int(S × A + 0.5), pv_premiums = int(P × ä + 0.5), bel = 둘의 차. P 는 그대로 씁니다.

위험조정과 계약서비스마진 나누기

/root/ins/csm.csv 에 policy_no,bel,ra,fcf,csm,loss_component 머리글로 적고, /root/ins/csm.txt 에 total_csm=, total_loss_component= 두 줄(각 열의 합)을 적으세요.

ra = int(pv_claims × 0.005 + 0.5), fcf = bel + ra. fcf < 0 이면 csm = −fcf, loss_component = 0; 아니면 csm = 0, loss_component = fcf. 5단계 파일을 읽어 계산하면 됩니다.

지급여력비율 계산하기

/root/ins/kics.txt 에 required_capital=, available_capital=, ratio_pct=, meets_100= 네 줄을 적으세요. ratio_pct 는 소수 첫째 자리, meets_100 은 YES 또는 NO 입니다.

required = round(√(I² + M² + C² + 2 × 0.25 × (IM + IC + MC)) + O), ratio = available ÷ required × 100 을 %.1f 로. 단순 합(6600)보다 작은 값이 나와야 합니다.

결산 메모 쓰기

/root/ins/valuation_report.md 에 ## Policy Reserves(책임준비금), ## IFRS17 Summary(IFRS17 요약), ## Solvency(지급여력), ## Data and Regulatory Notes(데이터와 규제 유의사항) 네 절로 결산 메모를 쓰세요. 절 제목은 영어 제목이나 같은 뜻의 한국어·일본어·중국어 제목 어느 쪽이든 되고, 둘을 괄호로 함께 적어도 됩니다.

절 제목 네 개는 영어 제목이나 같은 뜻의 한국어·일본어·중국어 제목 그대로. 책임준비금(policy reserves) 절에는 합계를, IFRS17 절에는 CSM(계약서비스마진, contractual service margin) 합계를 「CSM」 과 같은 줄에, 현행 할인율(discount rate) 3.0% 를 「할인율(discount)」 과 같은 줄에, 지급여력(solvency) 절에는 비율을, 유의사항 절에는 민감정보(sensitive data) 이야기를 적으세요.