준비금·IFRS17·지급여력 파이프라인
목표
보유 계약의 책임준비금을 가입 당시 가정으로 계산하고, 같은 계약을 현행 할인율로 다시 평가해 IFRS17 의 최선추정부채·위험조정·계약서비스마진을 뽑은 뒤, 회사 숫자로 단순화한 지급여력비율까지 한 파이프라인으로 만듭니다.
왜 중요한가
보험사는 오늘 받은 보험료로 수십 년 뒤의 약속을 지킵니다. 그래서 회계의 핵심 질문은 "미래에 줄 돈을 지금 얼마로 잡아 둘 것인가" 이고, 그 답이 책임준비금입니다. 정기보험의 준비금은 앞으로 줄 급부의 현재가치에서 앞으로 받을 순보험료의 현재가치를 뺀 값입니다. 계약 초기에는 작고, 위험이 커지는 뒤로 갈수록 커집니다.
IFRS17 은 같은 질문에 다른 답을 요구합니다. 가입 당시 가정이 아니라 지금의 가정으로 부채를 평가하고(최선추정부채, BEL), 불확실성에 대한 보상(위험조정, RA)을 얹고, 그래도 남는 미실현 이익을 계약서비스마진(CSM)이라는 부채로 잡아 두었다가 계약 기간에 걸쳐 나눠 이익으로 인식합니다. 이익을 앞당겨 인식하지 못하게 하는 장치이고, 손실이 예상되는 계약은 바로 손실로 잡습니다.
지급여력제도(K-ICS)는 회사 전체를 봅니다. 보험·시장·신용 위험을 각각 자본 요구량으로 환산해 합치고, 가용자본이 그 요구량의 몇 % 인지를 봅니다. 이 세 층 — 원가 준비금, 시가 부채, 지급여력 — 이 보험사 결산 시스템의 뼈대이고, 같은 계약이 세 층에서 다른 숫자로 나타납니다.
이 실습의 규칙
- 계리 함수는 모듈 1 과 같습니다.
A(x, n, i)는 n년 정기보험 일시납 순보험료율,ä(x, n, i)는 n년 기시급 연금현가. 경과 t년 시점의 나이는issue_age + elapsed, 남은 기간은term − elapsed. - 책임준비금(원가)
V = S × A(x+t, n−t, 2.5%) − P × ä(x+t, n−t, 2.5%), 원 미만 반올림.P는inforce.csv의 연납 순보험료입니다.A·ä는 파일에 적는 여섯 자리 값이 아니라 반올림하지 않은 값으로 곱합니다(채점은 1원까지 봅니다). - 재귀 검증:
(V_t + P) × (1 + i) = q(x+t) × S + (1 − q(x+t)) × V_(t+1).V_(t+1)은 나이를 하나 올리고 남은 기간을 하나 줄여 같은 식으로 계산한 한 해 뒤 준비금이고, 만기 시점의V_n은 0 입니다. - IFRS17 은 최초 인식 시점(가입 시점) 으로 계산합니다. 최선추정부채
BEL = S × A(x, n, 3.0%) − P × ä(x, n, 3.0%)(경과를 빼지 않은 가입 나이와 전체 기간). 위험조정RA = PV(benefits) × 0.5%(급부 현가의 0.5%, 5단계의pv_claims). 이행현금흐름FCF = BEL + RA.FCF < 0이면CSM = −FCF, 손실요소 0.FCF ≥ 0이면CSM = 0, 손실요소 =FCF. (이후 기간의 롤포워드는 생략하는 실습 단순화입니다.) - 지급여력 요구자본
= √(I² + M² + C² + 2ρ(IM + IC + MC)) + O,I·M·C·O는capital.csv의 보험·시장·신용·운영 위험,ρ는correlation. 억원 단위 정수 반올림. 비율 = 가용자본 ÷ 요구자본 × 100, 소수 첫째 자리. A·annuity같은 계리 비율은 소수 여섯째 자리, 금액은 정수로 적습니다. 지급여력비율ratio_pct만 소수 첫째 자리입니다.- 합계 줄(
total_reserve·total_csm·total_loss_component)은 계약별로 반올림해 적은 열의 합입니다.
단계
- 오른쪽 예시의 생성기를
/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)를 담습니다. P001의 현재 시점 준비금을/root/ins/reserve_P001.txt에A=,annuity=,reserve=세 줄로 적으세요.- 계약 5건 전부를
/root/ins/reserves.csv에policy_no,age_now,remaining,A,annuity,reserve머리글로 적고,/root/ins/reserves.txt에total_reserve=한 줄(reserve열의 합)을 적으세요. - 재귀 검증을
/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입니다. - 가입 시점 기준으로 현행 할인율을 적용한
/root/ins/bel.csv를policy_no,pv_claims,pv_premiums,bel머리글로 적으세요. /root/ins/csm.csv에policy_no,bel,ra,fcf,csm,loss_component머리글로 적고,/root/ins/csm.txt에total_csm=,total_loss_component=두 줄(각 열의 합)을 적으세요./root/ins/kics.txt에required_capital=,available_capital=,ratio_pct=,meets_100=네 줄을 적으세요.ratio_pct는 소수 첫째 자리,meets_100은YES또는NO입니다./root/ins/valuation_report.md에## Policy Reserves(책임준비금),## IFRS17 Summary(IFRS17 요약),## Solvency(지급여력),## Data and Regulatory Notes(데이터와 규제 유의사항) 네 절로 결산 메모를 쓰세요. 절 제목은 영어 제목이나 같은 뜻의 한국어·일본어·중국어 제목 어느 쪽이든 되고, 둘을 괄호로 함께 적어도 됩니다.
참고
- 계리 함수는 1단계에서 오른쪽 예시대로
/root/ins/act.py에 저장합니다(모듈 1 과 같은 파일). 이 실습은 파드가 새로 뜨므로 모듈 1 의 파일은 남아 있지 않습니다. - 재귀 검증은
V_(t+1)을A·ä로 따로 계산했을 때만 검증이 됩니다(재귀식으로 거꾸로 풀면diff는 늘 0 입니다). 그렇게 계산해diff가 0 에 가까우면(±2원) 준비금 계산이 맞다는 뜻이고, 크게 벗어나면A의 할인 지수(t+1)나 나이 이동을 의심하세요. - 흔한 실수 1: BEL 을 계산할 때 순보험료
P도 현행 이율로 다시 계산하거나, 경과를 뺀 나이로 계산하는 것.P는 계약에 고정된 값이고 최초 인식은 가입 시점입니다. - 흔한 실수 2: 요구자본에서 운영 위험을 제곱합 안에 넣는 것. 이 실습에서는 밖에서 더합니다.
- 흔한 실수 3:
P005(경과 0년)의 준비금이 정확히 0 이 아니라고 고치는 것.P를 원 단위로 반올림했으니 몇 원은 남습니다.
보유 계약과 가정 만들기
오른쪽 예시의 생성기를 /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) 이야기를 적으세요.