5.1 변액보험 최저보증 (GMDB / GMAB)#
이 챕터에서 배우는 것
변액보험이 보장형 (GMM) 과 다른 측정 모델 (VFA) 로 평가되는 이유 — 계좌가치가 굴러가고 보험사는 수수료를 번다
account_value+ 최저보증 (minimum_death_benefit/minimum_accumulation_benefit) 을 모델 포인트에 거는 자리vfa.measure의 결정론 측정 — 보증의 intrinsic value 가 BEL에 들어가는 모습return_scenarios를 넣으면 드러나는 보증의 시간가치 (TVOG = Time Value of Options and Guarantees) — 단일 결정론 run 에는 보이지 않는 비용
지금까지의 보장형 (GMM) 상품은 위험률 × 보험금으로 청구를 계산했습니다.
변액보험은 다릅니다 — 계약자의 계좌가치가 펀드 수익률로 굴러가고, 사망 /
해지 / 만기에 그 계좌가치를 (또는 최저보증을) 지급합니다. 보험사의 이익은
계좌에서 떼는 수수료입니다. IFRS 17 은 이런 직접참가 계약을 VFA
(Variable Fee Approach, 변동수수료접근법) 로 측정합니다 — vfa.measure.
상품 소개 — 변액보험과 최저보증#
변액보험 (variable insurance) 은 보험료가 펀드에 투자되어 계좌가치 (account value) 가 시장 수익률로 변동합니다. 계약자가 투자위험을 지는 대신, 보험사는 최저보증 을 얹어 팝니다:
GMDB (Guaranteed Minimum Death Benefit, 최저사망보증) — 사망 시
max(계좌가치, 보증액)지급. 계좌가 보증액 아래로 떨어져도 사망보험금은 보증액 이상.GMAB (Guaranteed Minimum Accumulation Benefit, 최저적립보증) — 만기 생존 시
max(계좌가치, 보증액)지급.
보증액을 넘는 초과분 (보증액 - 계좌가치, 양수일 때) 이 보험사가 부담하는
보증 비용입니다. 계좌가 보증을 웃돌면 초과분은 0 — 보증은 계좌가치에 대한
풋옵션 처럼 하락에만 비용이 발생합니다.
모델링 매핑 — VFA#
자리 |
무엇 |
|---|---|
|
VFA 측정 (보장형의 |
|
가입 시 계좌가치 |
|
GMDB 보증액. 기본 0 = 보증 없음 ( |
|
GMAB 보증액. 기본 0 = 보증 없음 |
|
최저 적립이율 — 계좌 크레딧 floor ( |
|
기초자산(펀드) 수익률 — VFA의 할인·적립 basis |
|
보험사가 떼는 변동수수료 (= 이익원) |
|
위험조정 (변액의 비금융위험 = 사업비위험) 의 변동계수 |
핵심: 사망·만기 exit 은 max(계좌가치, 보증), 해지 exit 은 계좌가치 그대로.
보험사의 이익 = 수수료 현재가치 = 가입 시 CSM. 보증 비용이 그 마진을 갉아먹습니다.
한 계약 — 결정론 측정과 시나리오#
계약 하나로 보증 비용이 두 단계로 드러나는 것을 봅니다 — 먼저 결정론 (intrinsic), 그 다음 시나리오 (시간가치).
예제 설정
가입연령 40세, 보험기간 10년 (120개월), 일시납 변액계약
계좌가치 1억, GMDB 1.02억 (102%), GMAB 1.05억 (105%)
펀드 연 수익률 6%, 변동수수료 연 2.5%, 사망 0.5% / 해지 4%
import numpy as np
import fastcashflow as fcf
# 산출기초
death_fn = lambda s, a, d: np.full(np.shape(d), 0.005) # 연 0.5% 사망률
lapse_fn = lambda s, a, d: np.full(np.shape(d), 0.04) # 연 4% 해지율
basis = fcf.Basis(
mortality_annual = death_fn, # 보유계약 감쇠용 사망률
lapse_annual = lapse_fn, # 해지율
discount_annual = 0.03, # 연 할인율 (비보증 현금흐름)
ra_confidence = 0.95, # 위험조정 신뢰수준 95%
mortality_cv = 0.10, # 사망률 변동계수
expense_cv = 0.10, # 사업비 변동계수 (VFA의 RA = 사업비위험)
investment_return = 0.06, # 기초자산(펀드) 연 수익률
fund_fee = 0.025, # 변동수수료 연 2.5% (= 보험사 이익원)
)
# 모델 포인트 (변액계약 하나: 계좌 1억, GMDB 1.02억, GMAB 1.05억)
mp = fcf.ModelPoints.single(
issue_age = 40, # 가입연령
premium = 0.0, # 일시납 (계좌가치로 납입)
term_months = 120, # 보험기간 10년
account_value = 1.0e8, # 가입 시 계좌가치
minimum_death_benefit = 1.02e8, # GMDB 최저사망보증 (102%)
minimum_accumulation_benefit = 1.05e8, # GMAB 최저적립보증 (105%)
)
det = fcf.vfa.measure(mp, basis) # 결정론 측정 (intrinsic 만)
print(f"BEL = {det.bel[0]:>14,.0f}") # 계좌가치 차감 순부채
print(f"fee = {det.variable_fee[0]:>14,.0f}") # 수수료 현재가치 (이익원)
print(f"CSM = {det.csm[0]:>14,.0f}") # 미실현 수수료 - 보증 intrinsic
print(f"TVOG = {det.time_value[0]:>14,.0f}") # 시간가치 (시나리오 없으면 0)
# 펀드 수익률 시나리오 (외부 ESG 산출: 1,000 경로 x 120 개월)
rng = np.random.default_rng(7)
r_m = (1 + 0.06) ** (1 / 12) - 1 # 중앙 월수익률
scen = r_m + 0.005 * rng.standard_normal((1000, 120)) # (n_scenarios, n_time)
sto = fcf.vfa.measure(mp, basis, return_scenarios=scen) # intrinsic + 시간가치
print(f"\nTVOG = {sto.time_value[0]:>14,.0f}") # 보증의 시간가치 (변동성 비용)
print(f"CSM = {sto.csm[0]:>14,.0f}") # TVOG 흡수 후 마진
출력:
BEL = -17,610,124
fee = 17,826,387
CSM = 17,610,124
TVOG = 0
TVOG = 3,433,960
CSM = 14,176,164
결정론 run 은 보증의 intrinsic value (중앙 시나리오에서의 비용) 만 봅니다. 6% 성장 가정이면 계좌가 빠르게 보증액 (102% / 105%) 을 넘어 floor 가 거의 안 물립니다 — 그래서 intrinsic 은 작습니다 (수수료 17.83M 와 CSM 17.61M 의 차이 ≈ 0.22M 뿐). 단일 결정론 run 만 보면 “보증이 거의 공짜” 라는 틀린 결론에 이릅니다.
시나리오를 넣으면 보증의 진짜 비용 — 시간가치 (TVOG) 가 드러납니다. 변동성 때문에 일부 경로에서 계좌가 보증액 아래로 떨어지고, 그 풋옵션 비용의 기대값이 시간가치입니다. 여기서 3.43M — intrinsic 의 15배가 넘습니다. 이 비용이 CSM을 17.61M → 14.18M 로 낮춥니다 (계약은 여전히 이익: CSM > 0).
시나리오는 외부에서 — fastcashflow 는 엔진
return_scenarios 는 당신의 ESG (Economic Scenario Generator, 경제 시나리오
생성기) 산출물입니다. fastcashflow 는 시나리오를 생성 하지 않고, 받아 보증
비용을 평가합니다. 한 변수 (여기선 펀드 월수익률) 의 (n_scenarios, n_time)
배열로 건네면 됩니다 — 열 수는 투영 개월수와 같아야 합니다.
TVOG의 부호는 보장되지 않음
VFA는 위험중립 measure 가 아니라 기초자산 수익률 로 할인합니다. 그래서 floor 의 시간가치는 부호가 고정이 아닙니다 — 깊은 in-the-money (보증액이 계좌가치보다 한참 높은) 보증은 변동성이 오히려 일부 시나리오를 floor 위로 끌어올려 비용을 낮춰 시간가치가 음수일 수도 있습니다. 위험중립 풋옵션의 “시간가치 >= 0” 직관이 여기선 그대로 통하지 않습니다.
결과 읽기 — 수수료 vs 보증 비용#
VFA 측정의 한 줄 요약: 보험사는 수수료를 벌고, 보증 비용이 그 마진을 깎는다.
BEL 은 계좌가치를 차감한 순액입니다. 보험사가 들고 있는 계좌는 계약자 몫 (부채) 이자 운용 자산이라, 그 둘이 상쇄되고 남는 게 BEL.
CSM = 미실현 수수료 − 보증 비용. 위 예제에서 수수료 17.83M 가 보증 intrinsic (~0.2M) 과 시간가치 (3.43M) 를 흡수하고도 14.18M 남습니다.
시간가치가 수수료를 넘으면 CSM이 0 으로 깎이고 손실요소 (loss component) 가 잡힙니다 — onerous 변액계약.
변형#
per-MP 보증률 + 시나리오는 v1 미지원#
return_scenarios 의 시간가치 패스는 v1 에서 minimum_crediting_rate (적립
보증이율) 가 portfolio 전체에서 동일해야 합니다 — per-MP로 다른 적립보증률에
stochastic 을 거는 건 미래 확장입니다. GMDB / GMAB 보증액 자체는 계약마다
달라도 됩니다 (max(AV, 보증) 의 floor 는 per-MP).
onerous 변액 만들어 보기#
위 예제에서 시나리오 변동성 (0.005) 을 키우거나 보증액을 올리면 시간가치가
수수료를 넘어 CSM = 0, 손실요소 양수가 됩니다. 후한 보증 + 높은 변동성 +
얇은 수수료의 조합이 변액 보증의 손실부담 신호입니다.
적립이율 보증 (크레딧 floor)#
minimum_crediting_rate 를 0 보다 크게 주면 계좌가 매월 max(수익률, 보증 이율) 로 크레딧됩니다 — 계좌가치 자체를 떠받치는 또 다른 보증이고, 그
시간가치도 같은 return_scenarios 패스가 함께 흡수합니다.
함정#
함정 1 — measure 가 아니라 vfa.measure#
변액은 보장형의 measure (GMM) 가 아니라 vfa.measure (VFA) 로
측정합니다. GMM으로 돌리면 계좌가치 mechanic 이 없어 결과가 틀립니다.
함정 2 — 결정론만 보고 “보증이 싸다” 판단#
중앙 성장 가정에선 floor 가 거의 안 물려 intrinsic 이 작게 나옵니다. 보증의
진짜 비용 (시간가치) 은 return_scenarios 를 넣어야 드러납니다 — 단일
결정론 run 에는 원리상 보이지 않습니다.
함정 3 — 보증액 기본 0#
minimum_death_benefit / minimum_accumulation_benefit 를 안 주면 0
입니다 (max(AV, 0) = AV = 보증 없음). 보증을 평가하려면 보증액을 명시적으로
줘야 합니다.