1. 동기
find_ata_maturity() 는 “어느 발전 기간부터 link
factor
가 코호트 간에 재현 가능해지는가?” 에 답한다. chain ladder 예측에는
필요하지만, 포트폴리오의 예측 손해율이 수렴했다고 선언하기에는 충분하지
않다 — 장기 건강보험에서
과
은 누적 분모가 자라면서 자동으로 발생하는 관성(inertia) 효과이지, 기저
경험이 실제로 수렴했다는 신호가 아니다. 그 위에 세운 기준은
가 커지기만 하면 자동으로 통과한다.
find_lr_convergence() 는
수렴점(convergence point)
를 검출한다.
는 projected loss ratio 가 예측적으로 수렴하는 첫 평가 시점
()
이다.
는 성숙점(maturity point)
(find_ata_maturity() 가 산출) 의 자연스러운 짝이다.
- : link factor 가 재현 가능해지는 시점.
- : 모형 출력 자체가 새 데이터에도 거의 움직이지 않는 시점.
장기 건강보험 portfolio 는 를 일찍 지나도 에 한참 못 미칠 수 있다.
검출은 개 연속 평가 시점에서 다음 두 조건이 동시에 만족되는 최초의 :
- 예측 갱신 이 자체 파라미터 SE 대비 작음: , 여기서 는 새 calendar diagonal 한 개가 추가될 때 portfolio 의 projected LR 이 변하는 크기.
- 코호트 간 분산 이 작음: , 여기서 는 발전 기간 에서 코호트 간 증분 손해율의 강건 분산.
를 누적이 아닌 증분 손해율로 정의해 관성에서 자유롭다 — 기간별 값이라 누적 분모가 커져도 자동으로 감쇠되지 않는다. 두 절은 서로 다른 실패 양상을 막는다: 는 모형 출력 이 갱신을 멈췄는지, 는 기간별 경험 이 코호트 간에 일관되는지를 검사한다. 한 쪽만 봐서는 속을 수 있다 — chain ladder 의 기계적 표류는 실제 수렴과 무관하게 를 무너뜨릴 수 있고, 단일 기간의 코호트 간 일치만으로는 예측 수렴을 보장하지 않는다. 두 조건을 함께 적용해야 두 가지 관성 누출 경로를 동시에 막을 수 있다.
2. 왜 두 조건이 필요한가
분모효과 (denominator effect) 가 단일 진단을 무력화하기 때문이다.
장기 건강보험에서 누적 LR = 누적 손해 / 누적 위험보험료. dev 가 커지면 분모도 같이 커지므로, 새 calendar diagonal 한 개의 영향이 전체 비율에서 자동으로 작아진다 — 실제 경험 변화와 무관하게. 이를 관성 효과라 부른다.
각 조건이 막는 함정:
| 시나리오 | 결과 | ||
|---|---|---|---|
| 진짜 수렴 (모형·경험 모두 안정) | 작음 | 작음 | PASS ✓ |
| chain ladder 표류 (관성) | 작음 (위장) | 큼 | FAIL — 분산이 잡아냄 |
| 단일 시점 코호트 우연 일치 | 큼 | 작음 (snapshot) | FAIL — projection 변화가 잡아냄 |
- 단독은 chain ladder 의 mechanical drift () 가 누적 곱을 거의 정지시켜 false convergence 를 부를 수 있다.
- 는 증분 LR 을 사용하므로 누적 분모의 영향이 없다 → 분모효과 자체에서 면역.
- 두 조건을 동시에 강제하면 분모효과로 인한 false PASS 의 주요 경로가 모두 닫힌다. 이것이 dual criterion 의 핵심 설계 의도.
3. 기호
| 기호 | 의미 |
|---|---|
| 코호트 인덱스 (UY) | |
| 평가 시점 인덱스 — calendar diagonal. “ 번째 대각선까지 관측됨” | |
| 관측 가능한 최대 평가 시점 (triangle 의 max dev) | |
성숙점 (find_ata_maturity() 산출). 후보
의 하한 |
|
수렴점. find_lr_convergence() 가 반환하는 값 |
|
| 평가 시점 까지의 자료로 산출한 ultimate LR 예측 | |
| 갱신 (revision): | |
| 의 파라미터 불확실성 SE (Mack-style) | |
| 코호트 의 발전 기간 에서의 증분 손해율 | |
| 코호트 간 의 강건 척도불변 분산 | |
에 거는 배율, 갱신 절 임계 (default: 0.5) |
|
상한, 분산 절 임계 (default: 0.15) |
|
두 절이 동시 만족해야 하는 연속 평가 시점 개수 (default:
3L) |
안의 상수 은 표준 MAD 보정 계수다. 이 스케일링으로 는 정규 가정 하에서 코호트 간 표준편차의 일치 추정량이 되며, 따라서 는 증분 손해율의 강건한 (이상치에 둔감한) 변동계수(CV) 로 읽힌다.
4. 기본 사용
library(lossratio)
data(experience)
exp <- as_experience(experience)
tri <- build_triangle(exp[cv_nm == "SUR"], cv_nm)
res <- find_lr_convergence(tri)
print(res)모의 출력:
#> <LRConvergence>
#> k_conv : NA
#> k_star : 9
#> V (max dev) : 30
#> criterion : R_v < 0.5 * SE_param_v AND D_v < 0.15 (run M = 3)
#> fit_fn : fit_lr
#> v candidates : 19 ( 0 pass both clauses)
LRConvergence 객체의 주요 필드:
-
k_conv— 검출된 . 조건이 개 연속 만족되는 시점이 없으면NA. -
k_star— 하한으로 사용된 성숙점. 함수 내부에서 clr 기반 ATA 에find_ata_maturity()를 적용해 산출하거나, 호출 시 직접 전달할 수 있다. -
V— triangle 에서 관측 가능한 최대 발전 기간. -
v,R_v,SE_param_v,D_v,pass_v— 후보 평가 시점별 진단 시퀀스. -
c,tau,M,holdout_max,min_n_cohorts— 사용된 설정값. - attribute:
group_var,value_var,fit_fn_name,dev_var.
summary(res) 는 후보 시점별 한 행 +
R_over_SE = R_v / SE_param_v 컬럼이 있는
data.table 을 반환한다:
#> v R_v SE_param_v R_over_SE D_v pass
#> 1: 9 NA NA NA 0.90 FALSE
#> 2: 10 NA NA NA 0.76 FALSE
#> 3: 11 NA NA NA 0.56 FALSE
#> 4: 12 NA NA NA 0.58 FALSE
#> 5: 13 NA NA NA 0.81 FALSE
#> 6: 14 NA NA NA 0.43 FALSE
5. 작동 메커니즘: 다중 holdout refit
find_lr_convergence() 는 candidate 평가 시점마다 모형을
다시 적합하면서 projection 의 변화를 추적한다.
예시:
,
,
holdout_max = 6 일 때 — candidate 는
(총 7개).
| holdout 깊이 () |
R_v 가능? |
|
|---|---|---|
| 30 | 0 | ✓ |
| 28 | 2 | ✓ |
| 24 (cutoff) | 6 | ✓ |
| 22 | 8 | NA |
| 18 | 12 | NA |
각
마다 한 번 refit (총 7번) + 인접
간
계산. holdout_max 가 결정하는 cutoff 는 기본값으로
floor((V - k_star) / 2) 이며, holdout 깊이가 그 값을 넘으면
refit 자료가 너무 적어 R_v 와 SE_param_v 를
NA 로 마스킹한다.
holdout_max 를 키우면 더 이른 시점까지 진단 가능 — 다만
refit 자료가 줄어들어 신뢰도가 떨어진다.
6. 시각화
plot(res)진단은 위아래 두 패널: 위 패널은 대 와 임계값 의 가로 점선; 아래 패널은 대 와 임계값 의 가로 점선. 는 세로 점선, 이 검출되면 세로 실선. 두 점선 모두 아래에 있는 점 이 양 절을 통과한 valuation.
이 view 는 어느 절이 binding 인지 한눈에 보여준다. 위 패널이 임계값에 근접하지만 아래가 멀면 코호트 간 이질성이 문제, 아래가 멀쩡한데 위가 높으면 모형이 여전히 갱신 중이라는 뜻.
7. 임계값 튜닝
기본값은 의도적으로 보수적:
| 인자 | default | 의미 |
|---|---|---|
c |
0.5 |
갱신 크기가 파라미터 SE 의 절반 이하. |
tau |
0.15 |
코호트 간 분산이 median lr 의 15% 이하. |
M |
3L |
두 절이 최소 3 개 연속 시점에서 동시 만족. |
min_n_cohorts |
5L |
코호트 수가 이 값 미만이면
는 NA. |
임계값을 조이면 이 늦어지거나 NA 가 된다. 민감도는 sweep 으로 확인:
sapply(
c(0.25, 0.5, 0.75, 1.0),
function(cc) find_lr_convergence(tri, c = cc)$k_conv
)
가
이하로 떨어지는 경우는 단일 기간 청구 노이즈 때문에 실 portfolio 에서
보기 어렵고,
이상이면 코호트 간 진성 이질성을 의심해야 한다 — 이 경우 모형 적합 전에
detect_cohort_regime() 으로 그룹을 분리하는 것이
권장된다.
8. 성숙점 및 regime 탐지와의 관계
세 진단 도구는 서로 다른 질문을 다른 축에서 답한다:
| 도구 | 질문 | 결과 | 축 |
|---|---|---|---|
detect_cohort_regime() |
코호트들이 동질적인가? | 코호트 그룹 | 인수 시기 |
find_ata_maturity()
() |
link factor 가 재현 가능해지는 시점? | dev 값 | 발전 기간 |
find_lr_convergence()
() |
LR 추정이 갱신을 멈추는 시점? | dev 값 | 발전 기간 |
권장 워크플로:
-
detect_cohort_regime()실행. 다중 레짐이 존재하면 그룹별로 분리해서 적합. - 각 동질 그룹에서
find_ata_maturity()로 산출. -
find_lr_convergence()로 검출. 수렴 영역의 손해율 은 에서의 평균 (또는fit_lr()로 예측). 위 첨자 stable 은 영역(regime) 이 안정함을 가리키며, 자체의 속성이 아니다.
이 순서는 코호트 동질성, link 재현성, level 수렴 세 속성의 분리를 반영한다 — P&C run-off 에서는 한 점에 모이지만 장기 건강보험에서는 각각 독립적으로 검증해야 한다.
9. 한계
find_lr_convergence() 는 반복적인
backtest() 호출 위의 얇은 layer 이며 그 제약을 그대로
상속한다:
-
식별 가능성:
는
일 때만 선언 가능. 관측 기간이 짧으면
NA반환. -
모형 조건부:
는
fit_fn(default:fit_lr) 으로 산출. fitter 가 다르면 도 달라짐. robustness 를 위해 여러fit_fn하에서 결과 비교 권장. - 포트폴리오 집계: 와 는 코호트 간 독립 가정 하에 익스포저 가중 집계. 달력 연도 충격 (요율 개정, 의료비 인플레) 은 이 가정을 위배하며, 이 경우 두 절이 비코호트 사유로 동시에 움직일 수 있음.
- 다중 그룹 triangle: 현재 구현은 그룹 간 를 median 으로 collapse. 그룹이 다르게 움직이면 분리 실행 권장.
10. 함께 보기
-
?find_lr_convergence,?find_ata_maturity,?backtest,?detect_cohort_regime. -
regime-detection-ko문서 — 위 워크플로 1단계의 코호트 동질성 진단.
