Technical Notes#
Status: Draft, 2026-08-20 (all cited sources accessed 2026-08-20).
Scope note. These notes specify a reference liability cash-flow projection model for the
standardized composite defined in product-spec.md (same directory) — a fixed individual
annuity insurance (teigaku kojin nenkin hoken, 定額個人年金保険) with the tax-qualification rider
(zeisei tekikaku tokuyaku, 税制適格特約) attached, implemented as Annuity_JP_S on a monthly
grid. This is no single insurer’s contract. [S#] and [R#] tags resolve against sources.md
(ids carried verbatim from _research/individual-annuity.md; frozen); [REG-R#] tags resolve
against the cross-product reference library
references/regulatory-and-actuarial-references.md, whose own R-numbering is distinct.
std marks a standardization introduced for the reference implementation; unverified
marks a claim not confirmed against a retrieved document. Every parameter appearing in
both documents carries the same value here as in product-spec.md. Several parameters are
introduced here that the specification does not carry — each because the specification
explicitly defers it, or because it is a modeling construct with no contractual counterpart
— and each is flagged new here at the point of introduction.
Model scope and conventions#
Purpose. Project gross best-estimate liability cash flows — premiums, deferral-phase death benefits, surrender payments, annuity instalments, expenses and commission — for a single-policy model point, in the sense the ESR current estimate (genzai suikei, 現在推計) requires: probability-weighted future cash flows re-measured on assumptions re-set at a stated 基準日 rather than locked in at issue REG-R15. Discounting, MOCE, required capital and every reserve are out of scope and are cited, not reproduced (see Valuation and reserve pointers).
Projection frequency. Monthly std, on policy months. The contract’s own money moves annually — premiums are taken annually in the composite, the annuity payment dates (nenkin shiharai-bi, 年金支払日) are the 年単位の契約応当日 and its anniversaries [S2] [S4] [S9], and the annuity-certain (kakutei nenkin, 確定年金) pays once a year — so the monthly grid is finer than the payments rather than finer than the product, and that is exactly what makes the statement legible: one large inflow a year for the 保険料払込期間, then one large outflow a year through the payout phase, with surrender, death and expense running in every month between. The annual grid could not draw that sawtooth, and it is the shape of a 定額個人年金保険. Two things the annual grid gave up come back with it. The death benefit is contractually 月払保険料 × 経過月数 [S2] [S4], which the annual grid had to approximate as
ρ P min(s, m)at anniversaries; on this grid the clause is stated as written. And every exit between anniversaries — a death, a surrender — is now valued at the month it happens rather than rounded to a policy year. The sub-annual grace period (haraikomi yūyo kikan, 払込猶予期間) state is still not modelled, for the reason given below: it is a calendar-day rule and the model point table carries no dates.Timing conventions std. Premiums and annuity instalments at the start of the anniversary month —
t = 0, 12, …, 12(m − 1)for the premium andt = n, n + 12, …for the instalment — in advance, and zero in the eleven months between each pair; maintenance expense at the start of every month, a twelfth of the annual amount; renewal commission with the premium it is a percentage of; death benefits and surrender payments at the end of the month; deaths before lapses. Acquisition expense and first-year commission att = 0.Rate conversion std. Mortality and 解約・失効 are quoted per annum and applied per month on the effective convention
r_m = 1 − (1 − r)^(1/12), so twelve months compound back to the annual rate exactly and the in-force ladder at the anniversaries is the one the annual grid produced. Nothing else is converted: the 予定利率 credits the fund once a policy year because the 保険料積立金 is a net-level-premium recursion defined at the 年単位の契約応当日, and the 年金の一括払 commutation election is a decision on a date rather than a hazard per unit time.Time index — three of them. The projection index
tcounts policy months and is 0-based:t = 0is the first policy month, periodtruns from timetto timet + 1, andproj_lenis the number of projected months — the exclusive end of the frame — soresult_cf()runst = 0 … proj_len − 1and hasproj_lenrows. The contractual policy year is the 1-based labely(t) = 1 + ⌊t/12⌋, withduration(t) = ⌊t/12⌋beside it; both are derived where the prose needs them and never indexed by. Premiums fall att = 0, 12, …, 12(m − 1); the 年金支払開始日 is the monthn = 12 n_ywithn_y = m + d; the annuity is paid att = n, n + 12, …, n + 12(k − 1).pols_if(t)is the in-force count at the start of montht— sopols_if(0) = 1— and weights that sameresult_cf()row. Beside it runs the anniversary indexs, in years,s = 0at issue: the contractual value familyV(s),DB(s),SC(s),CV(s), the loan and APL balances and the accumulated dividend are all defined there and none of their numbers moved when the projection index became a month. A value read between anniversaries uses a third index, the elapsed monthu, withu = t + 1for the flows of montht:V(u)by linear interpolation std,DB(u)by the contract’s own monthly clause,SC(u)andCV(u)from those. Atu = 12seach agrees with its anniversary exactly.Age basis. Insurance age — age nearest birthday (hoken-nenrei, 保険年齢). Attained age in month
tisx + ⌊t/12⌋, wherexis the 契約年齢, stepping once a 契約応当日. This is the basis 標準生命表2018 is built for REG-R20; a model that ages its points on age last birthday (man-nenrei, 満年齢) must say so and say what it does about the half-year difference.Currency. JPY throughout. Premiums and benefits are yen amounts on a yen contract [S2] [S4] [S5] [S6] [S8] [S9]; there is no currency layer. 外貨建年金 is out of scope, and is a different standard-reserve regime besides REG-R12.
Model points. Single-policy, projected on an expected (probability-weighted) basis; survivorship and persistency factors multiply per-policy amounts. No aggregation logic.
Termination. The last 年金支払日 falls in the month
t = n + 12(k − 1), and the frame runs to the end of the policy year that instalment opens:proj_len = 12(n_y + k)months,t = 0 … 12(n_y + k) − 1. There are no tail states: the 確定年金 pays exactlykinstalments and the contract ends [S2] [S4], sopols_if(12(n_y + k)) = 0is the terminal state the roll-forward closes on and not a row. With the life annuity with a guarantee period (hoshō-kikan-tsuki shūshin nenkin, 保証期間付終身年金) module on,proj_lenruns instead to the terminal age of the payout table — 122 for a male, 126 for a female R3 REG-R19 — that is,proj_len = 12(ω − x) + 1, whose last row is the first month of the year the annuitant attains the terminal age, where the table’sqis 1 and so is its monthly equivalent.Contract boundary. Premiums are level and guaranteed for the whole 保険料払込期間 with no review right [S2] [S4] [S5] [S6], so the insurer has no unilateral repricing lever and all
mpremiums are projected. The FSA’s 第1の柱告示 was not opened in this research pass REG-R16, so the ESR contract-boundary rule itself is unverified here; the composite’s guarantee makes the question moot for this product, but not for a rate-resetting design [S12].Rounding. Intermediate values at full precision. Displayed cash flows to the yen with two decimals std. The basic annuity amount (kihon nenkin-gaku, 基本年金額) is rounded down to the nearest ¥100 [std, new here] — Japanese specimens are published at that granularity [S3] [S5] [S6] [S10], and it is a contractual amount rather than a display convention, so the rounding must happen inside the model.
Model point attributes#
Attribute |
Type |
Anchor cell ( |
|---|---|---|
|
str |
JP-ANN-0001 |
|
enum {M, F} |
M |
|
int, 保険年齢, 20–55 |
30 |
|
int, years, ≥ 10 under the rider |
30 |
|
int, years, 据置期間 |
5 |
|
int, |
65 |
|
JPY p.a., level |
180,000 |
|
enum {certain, life_guar} |
certain |
|
int, years, 10 or 15 under the rider |
10 |
|
int, years, life form only |
10 |
|
float, death benefit ÷ cumulative premiums |
1.00 |
|
bool, 税制適格特約 attached |
true |
|
bool, 自動振替貸付 module |
false |
|
bool, 契約者貸付 module |
false |
db_ratio is the tontine parameterization — 0.70 on both retrieved tontine designs [S3]
[S10], 1.00 on the composite. It sits on the model point rather than in a code branch
because a tontine is the same chassis with a different death-benefit ratio under the same
surrender ceiling (product-spec.md, variation 7). n = m + d and proj_len are derived,
not supplied. The anchor premium is not a modeling invention: it is the annualization of a
published specimen at the identical model point [S6], which is what makes the calibration
below checkable.
State variables#
On the monthly index t:
Variable |
Description |
Updated |
|---|---|---|
|
Contracts with an obligation open at the start of month |
monthly recursion |
|
Probability the annuitant is alive at the start of month |
monthly recursion |
|
Annuity instalment per contract payable at the start of month |
fixed from |
|
Best-estimate annual mortality rate applying in month |
assumption lookup |
|
The same rate per month, |
conversion std |
|
Best-estimate annual 解約・失効 rate applying in month |
assumption lookup |
|
The same rate per month |
conversion std |
On the anniversary index s, in years — every one of these is unchanged from the
annual model:
Variable |
Description |
Updated |
|---|---|---|
|
Premium reserve fund (hokenryō tsumitatekin, 保険料積立金) per policy at anniversary |
annual recursion |
|
Surrender value (kaiyaku-henreikin, 解約返戻金) per policy at anniversary |
derived from |
|
Death benefit (shibō kyūfukin, 死亡給付金) at anniversary |
schedule |
|
解約控除 at anniversary |
schedule |
Read at an elapsed month u, by the flows of month t at u = t + 1:
Variable |
Description |
Updated |
|---|---|---|
|
The fund between anniversaries |
interpolation std |
|
|
the clause itself |
|
解約控除 and 解約返戻金 at elapsed month |
derived from the two above |
Two in-force measures are carried, following SPIA_US_S. pols_if counts contracts with
an obligation open; lives_if counts annuitants alive. In the deferral phase the two
separate because lapse removes a contract without removing a life. In the payout phase they
separate for the opposite reason: on a 確定年金 the instalments are unconditional, so pols_if
stays flat through the certain period while lives_if runs down on the post-annuitisation
table. Collapsing the two is the single most likely way to build this product wrongly, and
it is the first pitfall below.
av_pp occupies the library’s account-value slot: a per-policy fund credited with the
premium net of loading, with interest at the assumed interest rate (yotei riritsu, 予定利率)
and with a survivorship release. prem_to_av_pp(s) is the credited premium, and cv_pp —
not av_pp — is the surrender quantity, as the library’s naming ruling requires.
The fund stayed annual and that is the design decision of the monthly grid. The
保険料積立金 is a net-level-premium recursion at the 予定利率 defined at the 年単位の契約応当日, and
the whole payout phase is bought out of its value at one such date, so restating it as a
monthly recursion would invent a within-year rule the 算出方法書 does not publish REG-R2 and
would move the 年金原資, the 基本年金額 and the published calibration with it. What the monthly
grid adds is av_at_m, a declared interpolation that reproduces every anniversary exactly.
db_at_m is the opposite case and the reason the split is worth making: there the contract
does publish the within-year rule, so the model states it rather than interpolating.
Assumption inputs#
(a) Contractual / guaranteed elements (cited; the insurer cannot change them)#
Input |
Value |
Basis |
|---|---|---|
Office premium |
Level, guaranteed for the whole 保険料払込期間; no reviews |
[S2] [S4] [S5] [S6] |
Premium frequency |
Annual (年払), in advance, in the months |
|
死亡給付金 during deferral |
|
[S2] [S4]; 既払込保険料相当額 [S6] |
Why that shape |
所令211①ロ requires the amount to increase progressively with duration or cumulative premiums |
|
Deductions from the benefit |
Unpaid premiums, 契約者貸付 principal and interest, 自動振替貸付 balances |
[S2] [S4] |
解約返戻金 ceiling |
Never exceeds the 死亡給付金; equal to it after a period |
[S2] [S4] |
Surrender after the 年金支払開始日 |
Not available |
[S2] [S4] R16 |
年金支払開始日 |
The 年単位の契約応当日 at 保険年齢 |
[S2] [S4] [S9] |
確定年金 instalments |
Paid regardless of survival; on death the PV of unpaid instalments is paid, or the recipient elects continuation |
[S2] R16 |
保証期間付終身年金 instalments |
Unconditional inside the guarantee period, life-contingent after it |
[S4] R16 |
年金の一括払 factors |
1.010, 2.016, 3.018, 4.016, 5.010, 6.000, 6.986, 7.968, 8.946, 9.921, 10.891, 11.858, 12.821, 13.780 for 1–14 remaining instalments |
[S2] |
Partial commutation |
Refused — a request on one tranche is a request on all |
[S1] [S4]; 所令211①ハ R10 |
契約者貸付 rate |
2.40% p.a. compound on the current issue cohort; capped at the 解約返戻金 |
[S11] [S8]; limit [S4] REG-R14 |
自動振替貸付 rate cap |
8% p.a. compound |
[S4] |
復活 window |
Three years from lapse, and only before the 年金支払開始日 |
[S2] [S4] |
自殺免責 |
Three years, counted inclusively, from the 責任開始日 or the last 復活日 |
[S2] [S4] |
Underwriting |
None — no medical examination, no 告知 |
[S2] [S3] [S4] |
(b) Insurer-discretionary current elements#
Input |
Base-run value |
Basis |
|---|---|---|
予定利率, deferral ( |
1.00% p.a., fixed at issue |
[S8]; the lower arm of the banded pair at [S5]; adoption std |
予定利率, payout ( |
0.65% p.a., set separately from the deferral rate |
[S5]; adoption std |
予定事業費率 |
6.5% of each office premium, level over the premium term |
REG-R2; std (1), deferred to here by |
年金支払開始時費用 |
1.0% of the 年金原資, charged once at annuitisation |
[std, new here] (1) |
解約控除 base |
One annual premium, run off linearly over ten policy years |
schedule std; base amount [std, new here] (2) |
契約者配当 |
Zero declared. Machinery retained: accumulate at a declared rate, no withdrawal before annuitisation, apply as a single premium increasing the 基本年金額 |
[S4] [S11]; zero base run std |
配当積立利率 |
0.60% p.a. where a non-zero dividend is run |
[S11] |
税制適格型払戻金の積立利率 |
0.60% p.a. on refunds the rider will not release |
[S11] |
保証期間付終身年金 basis at annuitisation |
Assumed unchanged — 0.65% and the same payout table |
std (3) |
自動振替貸付 |
Module off |
|
契約者貸付 |
Module off |
[S4] [S11]; std |
No retrieved document discloses a 予定事業費率 or a mortality / interest / expense surplus (shisa / risa / hisa, 死差 / 利差 / 費差) split for this line: the 保険料及び責任準備金の算出方法書 — the method document for premiums and the policy reserve (sekinin-junbikin, 責任準備金) — is a 基礎書類 filed with the FSA and not published REG-R2, and 三利源 is practice vocabulary in any event — 施行規則第30条の2 permits distribution 「剰余金の生じた原因に応じて」 without naming three sources REG-R9. Rather than invent a three-way split (新契約費 / 維持費 / 集金費) that no source can confirm, the composite carries one deferral loading and one payout loading and calibrates them against a published specimen. At the anchor cell
β= 6.5% andθ= 1.0% reproduce that carrier’s published 年金原資 of approximately ¥6,260,000 as ¥6,261,482, its 一括受取率 of approximately 115.9% as 115.9534%, its 基本年金額 of ¥638,300 as ¥638,100 (−0.03%) and its 年金受取率 of approximately 118.2% as 118.1667% [S6]. Two round std numbers calibrated against a published outcome are worth more than five invented ones.Both 約款 state the shape and not the parameters — 「ご契約後短期間で解約されたときには、解約返還金がない場合が あります」 [S2] and 「まったくないか、あってもごくわずか」 [S4] — and the formula sits in the unpublished 算出方法書 REG-R2.
product-spec.mdfootnote 10 fixes the linear ten-year run-off; the base amount of one annual premium is introduced here, and it is what makes the sourced invariant hold: at the anchor cellcv_pp(1)= ¥7,976.18 against ¥180,000 of premium paid — nil-or-negligible, as both 約款 require — whilecv_pp(0)= 0.The life-annuity election is priced on the 基礎率 in force at the 年金支払開始日, thirty-five years out [S2] [S9]. No source can give that basis. Holding it at the issue basis is a std modeling choice, and the reason base-run take-up is zero rather than a guess.
(c) Behavioral / experience assumptions (modeler’s view)#
Mortality — two tables, and they are not interchangeable. For contracts concluded from 2018-04-01 the standard valuation basis is 生保標準生命表2018(死亡保険用)for death cover and 生保標準生命表2007(年金開始後用)— expressly not updated in 2018 — for annuities in payment REG-R10 REG-R11, confirmed by 日本アクチュアリー会 for FY2026 R4. The 2018 PDF contains four tables and no 年金開始後用 table at all R2 REG-R18; the only public machine-readable source for it is the combined Excel workbook R3 REG-R19. The publisher’s terms prohibit reproduction and transmission to third parties without written consent REG-R21, so this library ships no copy of either table. What it ships are two std constructions, one per table, stated here in full so that any implementation reproduces them exactly. They are built differently because their anchor sets are different.
死亡保険用 — the canonical jplib table. mort_table.csv’s death_cover_2018 rows are the
library-wide canonical file, shared by every jplib product that reads 生保標準生命表2018(死亡保険用),
so that a given cell carries the same value and the same provenance in every product that
ships it. Its anchor rows are rates read from the IAJ table and quoted under attribution
REG-R18; every other age is graduated log-linearly in age between the two neighbouring
anchors — linear in ln q:
q(a) = exp( ln q(a0) + (a - a0)/(a1 - a0) * ( ln q(a1) - ln q(a0) ) )
evaluated in full double precision and rounded to five decimal places on output. Nothing is extrapolated: both sexes run from an age-0 anchor to a terminal anchor, so every graduated age lies strictly between two sourced ones. Both sexes carry their own sourced anchors; there is no age setback on this table. Over the ages this product reaches, the anchors are:
Sex |
Anchor ages |
Terminal age |
|---|---|---|
男 REG-R18 |
18, 20, 22, 25, 30, 31, 32, 33, 34, 35, then every fifth year to 105 |
109 |
女 REG-R18 |
18, 20, 22, 25, 30, then every fifth year to 105, and 110 |
113 |
with q30 = 0.00068, q60 = 0.00653 and q90 = 0.15760 male and q30 = 0.00037, q60 =
0.00363 and q90 = 0.09357 female among them REG-R18. The ten male anchors at ages 30–35
are why the anchor cell’s fund is anchored rather than graduated over its first six years.
年金開始後用 — a Makeham construction. Three published male spot rates twenty years apart are all that was retrieved, so this table is a fitted law rather than a graduation of a full anchor set:
mu(x) = A + B * c**x (Makeham)
q(x) = 1 - exp(-mu(x)), truncated to 1 at the table's terminal age
Table (male) |
Anchors |
|
|
|
Terminal age |
|---|---|---|---|---|---|
生保標準生命表2007(年金開始後用)std |
0.000542569 |
3.189261e−05 |
1.090896969 |
122 R3 |
The three anchors are reproduced exactly by construction. Off-anchor residuals against published rates, stated rather than hidden: q65 = 0.009609 against a published 0.00966 (−0.5%), q70 = 0.014515 against 0.01411 (+2.9%), q90 = 0.077578 against 0.08318 (−6.7%) and q110 = 0.367153 against 0.31667 (+15.9%) R3. The fit is good over the ages the base run uses (65–74) and degrades in the far tail, which matters only with the life-annuity module on. Only male spot rates were retrieved for this table, so its female rows are the male construction with a four-year age setback [std, new here] — the setback the published terminal ages themselves imply, 126 against 122 R3 REG-R19.
The Makeham coefficients above are displayed rounded and the payout factors are not
reproducible from them; the reference implementation therefore ships the anchors rather
than the coefficients. mort_anchor_table.csv carries, per table and sex, the anchor ages
and rates and the terminal age; mort_table.csv carries the rate the stated graduation
produces at every age; and both files carry a provenance column pointing at REG-R18 and
REG-R19, marking on each row whether it is a sourced anchor or a graduated value. Neither
is a copy of an IAJ file. check_mort_graduation() asserts that the two files still agree —
死亡保険用 log-linear between its anchors, 年金開始後用 on the Makeham law.
Best-estimate adjustment, and why its sign flips. Both are valuation tables. The
2018 death-cover table carries an explicit roughly-2σ risk-theory margin capped at 130% of
the unadjusted rate, plus a forward improvement allowance of 2.5% p.a. for five years and
1.0% p.a. for three, and it includes 高度障害 inside the death rate REG-R20. A best-estimate
basis is therefore an adjustment downward: mort_rate(t) = 0.85 × mort_rate_base(t) in
the deferral phase [std, new here] — 0.85 sits inside the range the margin implies,
which runs from 1/1.30 ≈ 0.77 where the cap binds to 1.00 where no margin does. The payout
table is a valuation basis for a longevity liability, so its margin runs the other way:
prudence there means assuming annuitants live longer, that is, a table set below best
estimate. The composite therefore uses mort_rate(t) = 1.10 × mort_rate_base(t) from t = n [std, new here]. The 作成概要 for the 2007 年金開始後用 table was not retrieved, so the size
of that margin is unverified and 1.10 is a standardization; the direction is structural.
A model that applies one factor to both tables has one of the two signs wrong.
Lapse. The only public figure is a market-wide 解約・失効率 of 3.4% for FY2024, whose
denominator is pre-annuitisation in-force 契約高 at the start of the year only R15 REG-R31
— the right decrement in principle, since it excludes contracts already in payment. No
duration curve is public for this line. The reference table is [std, new here],
calibrated so that its count-weighted mean over the deferral phase of the anchor cell —
sum of l(12s) w(12s) over sum of l(12s), for s = 0 … n_y − 1 — is 3.4160%,
against the published 3.4%:
Policy year ( |
1 |
2 |
3 |
4–10 |
11 … m |
m+1 … n_y−1 |
n_y and later |
|---|---|---|---|---|---|---|---|
Months |
0–11 |
12–23 |
24–35 |
36–119 |
120 … 12m−1 |
12m … 12(n_y−1)−1 |
12(n_y−1) … |
|
6.0% |
5.0% |
4.5% |
4.0% |
3.0% |
1.0% |
0% |
The table is annual and is not restated per month: the rate is the observation, and the
model derives the monthly decrement from it as w_m = 1 − (1 − w)^(1/12) std, so
twelve months compound back to the published rate exactly.
Three features are load-bearing. The 据置期間 rate drops to 1.0% because no premium is due in
those years, so the commonest lapse trigger is absent. The rate is zero from the month
12(n_y − 1) — the whole of the last deferral policy year — because that year ends on the
年金支払開始日, where surrender is no longer available [S2] [S4] and a lapse would remove a
contract against a zero payment; and zero thereafter for the same reason. And the published
rate and this table are not weighted alike: on the anchor cell the same curve averages
2.4754% over the same anniversaries when weighted by av_pp instead of by l, because
lapse is front-loaded and the fund is back-loaded. The two weightings are not
interchangeable, and a calibration must say which one it used; lapse_rate_mean(weighting)
publishes both, reading the annual rate at the anniversaries because that is what they
summarize.
Expenses and commission (all levels [std, new here]; structure conventional).
Input |
Value |
|---|---|
Acquisition expense |
¥30,000 per policy at |
Initial commission |
40% of the annual premium at |
Renewal commission |
2% of premium, in the premium months |
Maintenance expense |
¥4,000 p.a. in deferral and ¥2,000 p.a. in payment, charged a twelfth a month, both inflating 1.0% a policy year |
Claim expense |
¥5,000 per death claim; none on surrender |
Expense inflation |
1.0% p.a. flat |
These are best-estimate cash expenses and are entirely separate from the 予定事業費率 in class
(b), which is a pricing loading living inside av_pp. Mixing the two — charging β against
the cash flow, or projecting e(t) into the fund — double-counts expense in one direction
and destroys the calibration in the other.
Option take-up. Life-annuity election at annuitisation: 0% std (footnote 3 above). 年金の一括払 commutation: 0% std. Both modules run in the non-anchor model points. 減額, 払済 and 復活 are not exercised in the base run [std scope] [S1] [S2] [S4].
Cash flow components and recursions#
Notation#
Symbol |
Meaning |
|---|---|
|
projection index, 0-based, in policy months: |
|
anniversary index, in years, |
|
elapsed month at which a value is read; |
|
契約年齢; 保険料払込期間 in years; 据置期間 in years |
|
|
|
the payment period in years |
|
guarantee period in years, life form only |
|
level office annual premium ( |
|
予定事業費率 on premium; 年金支払開始時費用 on the 年金原資 |
|
予定利率, deferral (0.0100) and payout (0.0065) |
|
net premium credited to the fund, |
|
予定死亡率 — the std 死亡保険用 table rate, used only inside the fund recursion |
|
best-estimate annual mortality applying in month |
|
best-estimate annual 解約・失効 rate applying in month |
|
death-benefit ratio, 1.00 on the composite and 0.70 on a tontine ( |
|
保険料積立金 per policy at anniversary |
|
死亡給付金 at anniversary |
|
surrender charge (kaiyaku kōjo, 解約控除) at anniversary |
|
解約返戻金 at anniversary |
|
annuity fund (nenkin genshi, 年金原資) |
|
annuity-due factor |
|
基本年金額, the annual instalment ( |
|
|
|
expected deaths and expected lapses in month |
|
acquisition expense; maintenance expense, a twelfth of the annual amount each month (together, |
|
claim expense per death claim ( |
|
initial commission rate; renewal commission rate |
|
net cash flow of month |
Dimensional check: q, q', w, β, θ, ρ are dimensionless; P, V, DB, CV,
F, B, E0, e, ec are JPY; ä is dimensionless (years of income per unit of annual
income); l and L are probabilities. B = F(1 − θ) / ä is JPY per year, and it stays
per year on the monthly grid: it is paid once a policy year, in the anniversary month, and is
never divided by twelve. The one place a month count legitimately enters an amount is
DB(u) = ρ (P/12) min(u, 12m), where P/12 is the contract’s own 月払保険料 and u its
経過月数 [S2] [S4]. Every CF component is JPY per policy per month.
The 保険料積立金 recursion#
The fund is a net-level-premium accumulation carrying a survivorship release, which is what lets a survival-benefit-weighted (seizon hoshō jūshi-gata, 生存保障重視型) design pay a larger annuity than a pure savings contract of the same premium:
V(0) = 0
V(s+1) = [ (V(s) + NP(s)) * (1 + i_d) - q'(x+s) * DB(s+1) ] / (1 - q'(x+s))
for s = 0 .. n_y-1, with NP(s) = P * (1 - beta) for s < m and 0 after
This recursion is annual and stays annual on the monthly grid. It is a net-level-premium
accumulation at a 予定利率 credited at the 年単位の契約応当日, the 年金原資 is struck from it at one
such date, and the 算出方法書 that would give a within-year rule is a 基礎書類 filed with the
金融庁 and is not published REG-R2. So V keeps the anniversary index s, every one of its
numbers is what the annual grid produced, and the months between read it through
av_at_m(u), a declared linear interpolation std that reproduces V(s) exactly at
u = 12s.
The division by (1 − q') is the survivorship credit: the premiums of those who die are
released to the survivors net of the death benefit paid, and because DB is capped at
cumulative premiums while V is not, that release turns positive from the duration at
which V first exceeds DB. The annual grid could name that duration only as an
anniversary, s = 13; read month by month the fund overtakes the benefit at the elapsed
month 149, five months into policy year 13, because DB(u) steps up by one 月払保険料 every
month while V(u) runs between two anniversaries. Three consequences. The
recursion uses the pricing mortality q' at 100% of the std table, not the
best-estimate q, because V is a contractual quantity and not an experience projection.
Lapse does not appear: the surrender release is the 解約控除, which accrues to the insurer
and not to the surviving fund. And where actual mortality runs lighter than q', the
insurer credits more survivorship than it earns and takes a 死差損 — the mortality sensitivity
is signed the opposite way round from a death-cover product.
Deferral-phase benefit amounts#
On the anniversary clock, unchanged from the annual model:
DB(s) = rho * P * min(s, m)
SC(s) = P * max(0, (10 - s) / 10)
CV(s) = min( max(0, V(s) - SC(s)), DB(s) ) for s < n_y, and 0 for s >= n_y
and read at an elapsed month u, which is what a benefit falling between anniversaries
actually gets:
DB(u) = rho * (P / 12) * min(u, 12 m) (the contract's own clause)
SC(u) = P max(0, (120 - u) / 120) (the same linear run-off, read finely)
CV(u) = min( max(0, V(u) - SC(u)), DB(u) ) for u < n, and 0 for u >= n
DB(u) is the contract read literally, not an interpolation. 死亡給付金 is
月払保険料 × 経過月数 [S2] [S4]: it grows by one month’s premium every month and stops at 払込満了.
The annual grid could only carry ρ P min(s, m) — the same schedule sampled at
anniversaries — and had to round a death in, say, the seventh month of a policy year to a
whole year of premiums. The two agree at every anniversary, so the 保険料積立金 recursion, the
年金原資 and the published calibration are untouched; what moves is the benefit actually paid
for a death between them. DB stops growing at 払込満了 because no further premium is paid:
DB(u) = ρPm for every u ≥ 12m.
The min(·, DB) in CV is the sourced ceiling 「解約返還金は…死亡給付金の額を限度とします」 [S2], and it
is what the other carrier means by 「一定期間経過後は死亡給付金と同額になります」 [S4] — beyond the crossover
the two are literally the same number. Surrender is unavailable from the 年金支払開始日 [S2]
[S4], hence the second limb. One consequence the annual grid hid: on the anchor cell the
surrender value is nil for the whole of the first policy year and first becomes payable
at the first anniversary, because SC(u) runs off linearly while V(u) starts from zero.
The annuitisation transition#
At the month t = n — the 年金支払開始日, which is the anniversary n_y — three things happen
in one step, in this order. On the annual grid they happened over a year; here they happen
at a month, and the row before and the row after are one month apart:
The 年金原資 is struck:
F = V(n_y). It is the accumulated fund out of which the annuity is bought, and one carrier pins the definition down by publishing both 一括受取率 (= F ÷ Pm) and 年金受取率 (= kB ÷ Pm) at one model point [S6].The 基本年金額 is derived from it, once, and never recomputed:
B_certain = floor( F * (1 - theta) / adue(k, i_p) / 100 ) * 100 B_life = floor( F * (1 - theta) / adue_life(g, i_p, table) / 100 ) * 100
where
adue_lifeis the guaranteed-plus-life annuity-due factor atannuity_start_ageon the 年金開始後用 table at 100% — a pricing basis, not the best-estimate factor:adue_life = sum over j >= 0 of max( 1{j < g}, jp_(x+n) ) / (1 + i_p)**jThe mortality table switches from 死亡保険用 to 年金開始後用, and the best-estimate factor switches with it, from 0.85 to 1.10. On the monthly grid the switch is a step between two adjacent months,
t = n − 1andt = n, and it is visible as one: the annual rate steps from 0.78965% to 1.056936% and the monthly decrement with it, from 0.06604% to 0.08851%.
The rate in step 2 is i_p = 0.65%, not the deferral rate: the payout phase is priced
on its own 予定利率, published separately and left unchanged when that carrier’s deferral rates
moved [S5]. Since i_p < i_d, each yen of 年金原資 buys less annuity than a single-rate
model would say: at k = 10 the factor is ä(10, 0.65%) = 9.71433757 against
ä(10, 1.00%) = 9.56601758, so buying the annuity at i_d would overstate B by 1.5505%.
The payout forms#
確定年金 (base form). k instalments of B, one a policy year, at the months
t = n, n + 12, …, n + 12(k − 1) and nothing in the eleven months between each pair.
The obligation does not depend on survival, so
pols_if(t+1) = pols_if(t) for n <= t < 12(n_y + k) - 1, and pols_if(12(n_y+k)) = 0
while lives_if continues to run down on the payout table, month by month. The last
instalment falls at t = n + 12(k − 1) and the frame runs to the end of the policy year it
opens, t = 12(n_y + k) − 1; pols_if(12(n_y + k)) is the terminal state one
step past the frame and not a row of result_cf(). Those trailing eleven months carry
maintenance expense and nothing else, which is the right answer and one the annual grid
could not give: a contract in payment costs the insurer administration every month and pays
the annuitant once a year. On death inside the period the
PV of the unpaid instalments is paid, or the recipient elects continuation to the end of the
term [S2] R16; the base run assumes continuation at 100% std, under which the two
elections produce the same instalment stream and the payout cash flow is deterministic.
保証期間付終身年金 (module). Instalments are unconditional for g years and life-contingent
after:
pols_if(t) = pols_if(n) * max( 1{t - n < 12g}, (t-n)/12 p_(x+n_y) )
on the best-estimate payout basis, run month by month, with proj_len running to the
table’s terminal age.
Death inside the guarantee pays the PV of the unpaid guaranteed instalments [S4] R16. At
the anchor cell’s fund, the life form with g = 10 gives B = ¥281,300 against
¥638,100 on the certain form — 44.08% of it — because the annuity-due factor is 22.032668
against 9.714338. That ratio is the product fact the module exists to show.
年金の一括払 (module). From the 年金支払開始日 to the last 年金支払日 the annuitant may take the PV of the
remaining certain or guaranteed instalments as a lump sum, terminating the contract [S2]
[S4]. The composite uses the published factor table verbatim over 1–14 remaining instalments
and an implied 0.40% p.a. outside it std [S2]. Base-run take-up is 0%, and one reason
is arithmetic: at the month t = n with ten instalments remaining the factor is 9.921, so
the lump
sum is 638,100 × 9.921 = ¥6,330,590.10 against a gross 年金原資 of ¥6,261,482.08 — 1.1037%
more. The factors come from one carrier [S2] and the payout 予定利率 from another [S5], and
the composite does not reconcile them. Switching commutation on therefore switches on a
composite artefact rather than a product feature; a production model must re-derive the
factors on its own payout basis.
In-force recursion and processing order#
For each month t = 0 … proj_len − 1:
Start of the month — income and outgo per policy in force. Premium
P × l(t)in the anniversary monthst = 0, 12, …, 12(m − 1)and zero in the eleven between. Annuity instalmentB × l(t)att = n, n + 12, …, n + 12(k − 1), likewise. Maintenance expensee(t) × l(t)every month, a twelfth of the annual amount. Renewal commissionc_r × P × l(t)in the premium months fromt = 12, because it follows the premium it is a percentage of. Att = 0additionallyE0andc0 × P.Fund roll-forward.
V(s+1)per the annual recursion above, at the anniversaries only, withV(t+1)read from it by interpolation std (deferral phase only).Benefit schedules.
DB(t+1)from the contract’s own monthly clause andCV(t+1)fromV(t+1)andSC(t+1), all at the elapsed monthu = t + 1.End of the month — deaths.
D(t) = l(t) × q_m(t); death outgoDB(t+1) × D(t); claim expenseec × D(t). In the payout phaseD(t) = 0on both forms inside the certain or guaranteed period.End of the month — lapses, applied to the survivors of mortality [std order: death before lapse].
W(t) = l(t) × (1 − q_m(t)) × w_m(t); surrender outgoCV(t+1) × W(t).Update.
pols_if(t+1) = pols_if(t) * (1 - q_m(t)) * (1 - w_m(t)) (deferral phase) lives_if(t+1) = lives_if(t) * (1 - q_m(t)) (throughout)
with the payout-phase
pols_ifrules of the previous section replacing the first line fromt = n. Twelve months of each line compound back to the annual recursion the previous grid ran, so the in-force ladder at the anniversaries is unchanged.
Net cash flow#
CF(t) = P * l(t) * 1{t mod 12 = 0, t < 12m} (premiums)
- B * l(t) * 1{t >= n, (t - n) mod 12 = 0} (annuity instalments)
- DB(t+1) * D(t) (death benefits)
- CV(t+1) * W(t) (surrender payments)
- ec * D(t) (claim expense)
- e(t) * l(t) (maintenance, a twelfth a month)
- c_r * P * l(t) * 1{t mod 12 = 0, 12 <= t < 12m} (renewal commission)
- (E0 + c0 * P) * 1{t = 0} (acquisition)
Sign convention. These notes print the stream income-positive, so the model
publishes it as net_cf and carries no liability_cf cells — that absence is a fact
about which orientation the notes chose, not an omission. A reader comparing the payout
months with SPIA_US_S, whose notes print outgo-positive, must flip the sign:
Annuity_JP_S’s payout rows are eleven small negatives and one large one, twelve times over.
Roll-forward checks, and which clock each runs on. check_pols_roll_fwd() asserts the
in-force recursion over every month; check_lives_roll_fwd() asserts
L(t) − L(t+1) = L(t) q_m(t), likewise monthly; check_net_cf() rebuilds the ledger month
by month. check_fund() asserts
(V(s) + NP(s))(1 + i_d) = q' DB(s+1) + (1 − q') V(s+1) over the deferral anniversaries,
because that is the clock the fund is defined on and rolling it monthly would be checking the
interpolation rather than the construction. check_cv_cap() asserts CV(u) ≤ DB(u) at every
deferral month, which is a stronger statement than the annual grid could make: the
ceiling has to hold between anniversaries too, and on this grid the two sides move on
different clocks there — DB by one 月払保険料 a month, CV by interpolation.
check_annuity_total() asserts that the undiscounted instalments sum to kB on the certain
form. Each takes no argument and returns a bool; the signed residuals live at
check_*_resid.
Policyholder behavior modeling#
All dynamic formulas are std reference constructions; calibration evidence is cited where any exists.
Base lapse std. The duration table in class (c), anchored to the 3.4% market rate R15 REG-R31 on a count weighting.
払込猶予期間 and 復活, and why neither is modelled even now std. Grace is published only in monthly-anniversary terms [S4], and 復活 is available for three years [S2] [S4] — Japanese policies really do come back, unlike the UK composite in
uklib, which terminates finally. The monthly grid removes the arithmetic obstacle the annual grid had — a grace window of one or two months is now a representable length — but not the data obstacle: grace runs from a calendar 払込期月 that the model point table carries no date for, and no retrieved document gives a reinstatement rate. So a premium unpaid in a premium month still terminates the contract in that month, with no grace state and no reinstatement re-entry. The net effect of omitting both is a lapse rate biased upward, since real reinstatements would return some ofW(t)to the in-force, and a calibration against this model’slapse_rateis a net-of-復活 rate by construction.自動振替貸付 (module, off) std. With
apl_on = truethe lapse decrement is suppressed whileCV(s) ≥ Pat the premium anniversary: the insurer lends the premium against the surrender value at a rate capped at 8% p.a. and the policy stays in force [S4] REG-R14. The test is made once a year, at the premium date, because that is when a premium can go unpaid; the balance compounds annually for the same reason. The loan balance compounds and is deducted from the death benefit or from the 年金原資. This is not a no-lapse rule: it is a policyholder election REG-R14, one carrier’s product does not offer it at all [S2], and where principal and interest come to exceed the surrender value the contract lapses from the moment the excess arose [S4].Dynamic lapse std. Premiums and the 予定利率 are both fixed at issue, so there is no premium-shock lapse and no rate-driven surrender on this chassis. The economic driver runs the other way: when new-business 予定利率 rise above the rate at issue — as they did in 2025, for the first time in about forty years [S8] — an in-force contract becomes relatively unattractive and lapse should rise. A reference multiplier on
lapse_rate, base run 1.0:M(t) = min( 2.0, max( 1.0, 1 + phi * max(0, i_new(t) - i_d) ) )
with
phi= 20 std andi_new(t)an external input. The composite’s own answer to that pressure is the 金利キャッチアップ配当 one carrier pays instead [S12].The surrender ceiling suppresses lapse by construction, and the model must not double-count it. Beyond the crossover the surrender value is the death benefit and is capped at cumulative premiums, so surrendering returns exactly what was paid in and no interest [S4] R16 — an economic disincentive already fully expressed inside
CV(t). Loadinglapse_ratedown for it as well would count the same effect twice.Annuitisation-election take-up std. 0% in the base run. The election is between a guaranteed stream fixed at issue and an option on the insurer’s future 基礎率 [S2] [S9], and the tax treatment differs: the annuity is 雑所得 where payer and annuitant coincide, while a lump sum taken instead of it is 一時所得 R13 REG-R46. That is a tax decision, not a coin flip, and no take-up evidence exists in the retrieved set.
減額, 払済 and the rider [std scope]. Not exercised. Both are heavily constrained by the rider — no paid-up conversion inside ten policy years, and any refund arising on a 減額 is not paid out but accumulated at a declared rate and applied as a single premium increasing the 基本年金額 [S1] [S2] [S4]. A model that releases that refund as cash breaches 所令211①ニ R10 and is projecting a non-qualifying contract.
Worked example#
Anchor cell (point_id = 1). Male, 保険年齢 30 at issue; level annual premium P =
¥180,000 payable in the thirty anniversary months t = 0, 12, …, 348 (m = 30,
¥5,400,000 cumulative); 据置期間 d = 5; 年金支払開始日 at the month t = n = 420, the
anniversary n_y = 35, age 65; 10年確定年金 (k = 10), its instalments at t = 420, 432, …,
528; ρ = 1.00; 税制適格特約 attached; 自動振替貸付, 契約者貸付, the life-annuity election and
commutation all off; declared dividend zero. The frame is t = 0 … 539, forty-five
policy years of twelve months each.
Assumption values used, all listed above: i_d = 1.00%, i_p = 0.65%, β = 6.5%, θ =
1.0%, so NP(t) = ¥168,300 for t < 30; SC(t) = ¥180,000 × (10 − t)/10; E0 =
¥30,000, c0 = 40%, c_r = 2%, e(t) = (¥4,000 / 12) × 1.01^⌊t/12⌋ a month in deferral
and (¥2,000 / 12) × 1.01^⌊t/12⌋ in payment, ec = ¥5,000; lapse 6.0 / 5.0 / 4.5 / 4.0 /
3.0 / 1.0 / 0% per annum, applied per month as 1 − (1 − w)^(1/12); mortality
0.85 × the canonical std 死亡保険用 table to t = 419 and 1.10 × the std 年金開始後用 Makeham
construction from t = 420.
The 死亡保険用 rates below are the canonical jplib table’s own values. The ones at ages 30
to 35, 60, 65 and 90 are sourced anchors — rates read from the IAJ table and quoted under
attribution REG-R18 — and the ages between anchors carry the log-linear graduation of
assumption class (c), rounded to five decimal places. The 年金開始後用 rates are std
illustrative values from the Makeham construction, whose three anchors are quoted from R3
REG-R19; no other number here is a published table value.
Annuitisation quantities — every one of them unchanged by the grid. V(35) at the
anniversary is F = ¥6,261,482.075674; 一括受取率 = F ÷
¥5,400,000 = 115.9534%; F(1 − θ) = ¥6,198,867.2549; ä(10, 0.65%) = 9.71433757; B
raw = ¥638,115.281, rounded down to the nearest ¥100 → B = ¥638,100; 年金受取総額 =
¥6,381,000; 年金受取率 = 118.1667%. Against the same carrier’s published specimen at the
identical model point — 年金原資 approximately ¥6,260,000, 一括受取率 approximately 115.9%, 基本年金額
¥638,300, 年金受取総額 ¥6,383,000, 年金受取率 approximately 118.2% [S6] — the model reproduces the
基本年金額 to within 0.04% (¥638,100 against ¥638,300, −0.031%) and the 年金原資 to within 0.03%.
They do not move on the monthly grid, and that is the point of leaving the fund on the
anniversary clock: the calibration this model is checkable against is a calibration of
annual quantities.
Deferral phase, the first thirteen months. Every row label below is the 0-based policy
month t of result_cf(), with the contractual policy year y(t) beside it. expenses
is acquisition plus a twelfth of the annual maintenance charge; claim_expenses is its own
column, as in result_cf(). The premium and the renewal commission are non-zero in one
month out of twelve.
|
|
|
|
premiums |
claims_death |
claims_lapse |
expenses |
claim_exp |
commissions |
|
|---|---|---|---|---|---|---|---|---|---|---|
0 |
1 |
1.00000000 |
1.00000000 |
180,000.00 |
0.72 |
0.00 |
30,333.33 |
0.24 |
72,000.00 |
+77,665.70 |
1 |
1 |
0.99480906 |
0.99995182 |
0.00 |
1.44 |
0.00 |
331.60 |
0.24 |
0.00 |
−333.28 |
2 |
1 |
0.98964506 |
0.99990364 |
0.00 |
2.15 |
0.00 |
329.88 |
0.24 |
0.00 |
−332.27 |
11 |
1 |
0.94435879 |
0.99947015 |
0.00 |
8.19 |
38.74 |
314.79 |
0.23 |
0.00 |
−361.94 |
12 |
2 |
0.93945668 |
0.99942200 |
169,102.20 |
8.96 |
95.29 |
316.28 |
0.23 |
3,382.04 |
+165,299.40 |
The surrender value is nil for the whole of the first policy year, and that is the
product rather than a rounding: SC(u) runs off linearly from one annual premium while
V(u) starts at zero, so the two do not cross until the first anniversary. The annual grid
could only report CV(1) = ¥7,976.18 and say nothing about the eleven months before it.
claims_lapse at t = 11 is the first surrender benefit in the projection, and it is paid
on CV(12) — the anniversary value — because month 11 closes on the anniversary.
Fund, benefit and surrender value: the anniversaries, and the months that changed the
answer. The left table is the contractual construction on the anniversary index s and
every number in it is what the annual grid produced; the right table is the same three
quantities read at an elapsed month u.
|
|
|
|
|
|---|---|---|---|---|
0 |
0.000000 |
180,000 |
0 |
0.000000 |
1 |
169,976.183805 |
162,000 |
180,000 |
7,976.183805 |
2 |
341,646.281577 |
144,000 |
360,000 |
197,646.281577 |
3 |
515,028.264178 |
126,000 |
540,000 |
389,028.264178 |
12 |
2,155,556.812834 |
0 |
2,160,000 |
2,155,556.812834 |
13 |
2,347,105.257270 |
0 |
2,340,000 |
2,340,000.000000 |
34 |
6,191,563.274447 |
0 |
5,400,000 |
5,400,000.000000 |
35 |
6,261,482.075674 |
0 |
5,400,000 |
0.000000 |
|
|
|
|
|
|---|---|---|---|---|
1 |
14,164.681984 |
178,500 |
15,000 |
0.000000 |
6 |
84,988.091902 |
171,000 |
90,000 |
0.000000 |
11 |
155,811.501821 |
163,500 |
165,000 |
0.000000 |
12 |
169,976.183805 |
162,000 |
180,000 |
7,976.183805 |
148 |
2,219,406.294313 |
0 |
2,220,000 |
2,219,406.294313 |
149 |
2,235,368.664682 |
0 |
2,235,000 |
2,235,000.000000 |
156 |
2,347,105.257270 |
0 |
2,340,000 |
2,340,000.000000 |
408 |
6,191,563.274447 |
0 |
5,400,000 |
5,400,000.000000 |
db_at_m(u) is ¥15,000 × u — one 月払保険料 of ¥15,000 for each 経過月, which is the clause
[S2] [S4] — and it reproduces db_pp(s) at every anniversary. av_at_m(12s) reproduces
av_pp(s) exactly, by construction.
The annuitisation transition and the payout phase.
|
|
|
|
premiums |
claims_annuity |
claims_death |
claims_lapse |
expenses |
claim_exp |
|
|---|---|---|---|---|---|---|---|---|---|---|
347 |
29 |
0.34178987 |
0.94894365 |
0.00 |
0.00 |
694.03 |
4,521.13 |
150.53 |
0.66 |
−5,366.36 |
348 |
30 |
0.34079080 |
0.94857451 |
61,342.34 |
0.00 |
757.46 |
4,520.71 |
151.60 |
0.72 |
+54,685.01 |
359 |
30 |
0.32986272 |
0.94415377 |
0.00 |
0.00 |
756.28 |
4,513.66 |
146.73 |
0.70 |
−5,417.37 |
419 |
35 |
0.30572833 |
0.91328591 |
0.00 |
0.00 |
1,090.33 |
0.00 |
142.94 |
1.01 |
−1,234.28 |
420 |
36 |
0.30552641 |
0.91268274 |
0.00 |
194,956.41 |
0.00 |
0.00 |
72.13 |
0.00 |
−195,028.54 |
421 |
36 |
0.30552641 |
0.91187495 |
0.00 |
0.00 |
0.00 |
0.00 |
72.13 |
0.00 |
−72.13 |
431 |
36 |
0.30552641 |
0.90383623 |
0.00 |
0.00 |
0.00 |
0.00 |
72.13 |
0.00 |
−72.13 |
432 |
37 |
0.30552641 |
0.90303627 |
0.00 |
194,956.41 |
0.00 |
0.00 |
72.86 |
0.00 |
−195,029.26 |
539 |
45 |
0.30552641 |
0.77995430 |
0.00 |
0.00 |
0.00 |
0.00 |
78.89 |
0.00 |
−78.89 |
Commission is zero from t = 360 and is omitted from the second table. net_cf(348)
includes renewal commission of 1,226.85. The last instalment falls at t = 528, not at the
last row: the frame runs to t = 539 so that the tenth payout year is twelve months long
like every other, and those eleven trailing months carry maintenance expense and nothing
else — a contract in payment costs the insurer administration every month and pays the
annuitant once a year.
Trace#
Month t = 0. q'(30) = 0.00068, a sourced anchor REG-R18, so the annual
best-estimate rate is q(0) = 0.85 × 0.00068 = 0.000578 and the decrement actually
applied is q_m(0) = 1 − (1 − 0.000578)^(1/12) = 0.0000481794; w(0) = 0.06 a year and
w_m(0) = 1 − (1 − 0.06)^(1/12) = 0.0051430128. Premium = 180,000 × 1 = 180,000.00, the
whole 年払 premium in this one month. D(0) = 0.0000481794, and DB(1) = 1.00 ×
(180,000 / 12) × min(1, 360) = 15,000 — one 月払保険料 for one 経過月 — so death outgo =
15,000 × 0.0000481794 = 0.72 and claim expense = 5,000 × 0.0000481794 = 0.24. W(0) =
1 × (1 − 0.0000481794) × 0.0051430128 = 0.0051427650, and the surrender benefit is nil:
V(1) = 169,976.183805 / 12 = 14,164.681984 against SC(1) = 180,000 × (1 − 1/120) =
178,500, so CV(1) = 0. Expenses = E0 + e(0) = 30,000 + 4,000/12 = 30,333.33, with
the claim expense of 0.24 in its own column; commission = 0.40 × 180,000 = 72,000.00.
CF(0) = 180,000.00 − 0.72 − 0.24 − 30,333.33 − 72,000.00 = +77,665.70. Update:
pols_if(1) = 1 × (1 − 0.0000481794) × (1 − 0.0051430128) = 0.99480906; lives_if(1) =
1 × (1 − 0.0000481794) = 0.99995182.
Month t = 1. No premium and no commission — that is the whole of what the second month
of a 年払 contract does — and the same rates, because the attained age and the policy year
have not changed: q_m(1) = 0.0000481794, w_m(1) = 0.0051430128. D(1) = 0.99480906 ×
0.0000481794 = 0.0000479293 and DB(2) = 30,000, two months’ premium, so death outgo =
1.44 — twice the first month’s, which is the death benefit’s monthly clause showing
through. The surrender benefit is still nil. Maintenance = (4,000 / 12) × 0.99480906 =
331.60. CF(1) = −1.44 − 0.24 − 331.60 = −333.28.
Month t = 11, the first surrender benefit. CV(12) = 7,976.183805 — the first
anniversary value, and the first month at which the fund has outrun the 解約控除 — against
W(11) = 0.0048566154, so surrender outgo = 38.74. Everything before this month paid
nothing on surrender, which is a statement about the product that the annual grid’s single
row for policy year 1 could not make.
Month t = 12, the second premium. Premium = 180,000 × 0.93945668 = 169,102.20 and
renewal commission = 0.02 × 169,102.20 = 3,382.04; the attained age steps to 31 so
q(12) = 0.85 × 0.00069 = 0.0005865, and the lapse rate steps to 5%. Maintenance =
(4,000 / 12) × 1.01 × 0.93945668 = 316.28. DB(13) = 195,000 and CV(13) = 23,782.03.
CF(12) = 169,102.20 − 8.96 − 0.23 − 95.29 − 316.28 − 3,382.04 = +165,299.40. Compare
CF(11) = −361.94: the sawtooth is the contract, not an artefact of the grid.
The crossover, and the month the annual grid could not name. av_at_m(148) =
2,219,406.294313 against db_at_m(148) = 2,220,000 — the fund is still under the ceiling.
One month later av_at_m(149) = 2,235,368.664682 against db_at_m(149) = 2,235,000, and
the cap binds: cv_at_m(149) = 2,235,000.000000 exactly. The annual grid saw the same
event at the anniversary s = 13 and could locate it no more precisely than “during policy
year 13”; here it is the fifth month of that year, and the reason is visible in the two
columns — DB steps by ¥15,000 every month while V runs smoothly between two
anniversaries. From here to the 年金支払開始日 the surrender value and the death benefit are the
same number, which is what 「一定期間経過後は死亡給付金と同額になります」 asserts [S4]; and the excess of the
fund over the benefit — ¥791,563.274447 at the anniversary 34 — is precisely the survival
benefit the design buys.
Month t = 419, the last deferral month. No premium (the last one fell at t = 348) and
no lapse (w = 0 from the anniversary 34, because the policy year ends on the 年金支払開始日).
q'(64) = 0.00929, log-linear between the sourced anchors at 60 and 65 REG-R18, so
q(419) = 0.85 × 0.00929 = 0.0078965 and q_m(419) = 0.0006604354; D(419) = 0.30572833 ×
0.0006604354 = 0.0002019138; death outgo = 5,400,000 × 0.0002019138 = 1,090.33; claim
expense = 1.01; maintenance = (4,000 / 12) × 1.01^34 × 0.30572833 = 142.94. CF(419) =
−1,090.33 − 1.01 − 142.94 = −1,234.28. pols_if(420) = 0.30572833 × (1 − 0.0006604354)
= 0.30552641. The fund reaches V(35) = 6,261,482.075674 = F at the anniversary,
by the annual recursion, unchanged.
Month t = 420, the 年金支払開始日. B = 638,100, paid in advance to every contract with an
obligation open: claims_annuity = 638,100 × 0.30552641 = 194,956.41. No premium, no
death benefit and no surrender: the 確定年金 obligation is unconditional, so pols_if(421) =
pols_if(420) = 0.30552641 even though lives_if falls month by month on the payout table,
from 0.91268274 to 0.91187495 in this month alone at q_m(420) = 0.0008850760 — the payout
table at the payout factor, q(420) = 1.10 × 0.00960851 = 0.0105693625. Maintenance halves
to (2,000 / 12) × 1.01^35 × 0.30552641 = 72.13, because the contract is in payment.
CF(420) = −194,956.41 − 72.13 = −195,028.54, against −1,234.28 one month earlier.
Months t = 421 to 431. Eleven months of maintenance expense and nothing else:
CF = −72.13 in each, while lives_if runs down from 0.91187495 to 0.90383623. Then at
t = 432 the second instalment falls and the pattern repeats, nine times over, the last
instalment at t = 528. At t = 539 — the last row of the frame, proj_len − 1 = 540 − 1 —
pols_if(540) = 0 and lives_if(540) = 0.77848987: of the annuitants alive at age 65,
14.70% died over the ten payout years, and not one of those deaths changed a single yen of
projected cash flow.
The shape is the mirror image of uklib’s term assurance. A large positive first month —
Japanese annuity acquisition cost is small against a ¥180,000 premium, where UK term carries
150% of an annualized premium in upfront commission — then thirty policy years of one large
positive month against eleven small negative ones, the twelve-month block turning negative in
policy year 29, and then a decade of one very large negative month a year against eleven
small ones. Summed undiscounted the projection is −¥461,523.46; discounted at a flat 1%
per annum on the monthly frame, Σ CF(t) / 1.01^(t/12), it is +¥96,786.79, which is the
sense in which the composite is a profitable but thin contract.
Both of those totals moved when the grid did, and in the direction the finer grid predicts: premium income and the annuity instalments are identical, because both are annual and fall at the same anniversaries on the same survivorship, but surrender and death benefits are now valued at the month of exit rather than rounded to the end of a policy year, and the discount factor now recognises that a premium collected in month 12 is not the same as one collected in month 24.
Valuation and reserve pointers#
This library projects gross cash flows and builds no reserve. Each layer below consumes them and is cited, not reproduced.
Standard policy reserve (hyōjun sekinin-junbikin, 標準責任準備金). 保険業法第116条第1項 requires a 責任準備金 at each period end and 第2項 delegates the method REG-R4; 施行規則第68条 fixes which contracts are inside the regime, excluding those whose reserve varies with 特別勘定 assets and those whose 約款 lets the insurer change the coefficients, with a carve-out where the 約款 floors the 予定利率 at or above the standard valuation interest rate (hyōjun riritsu, 標準利率) at issue R5 REG-R7 — which is exactly why the rate-resetting design at [S12] carries a minimum guarantee. 第69条 gives the taxonomy: 保険料積立金, 未経過保険料, 払戻積立金, 危険準備金 REG-R8. 平成8年大蔵省告示第48号 sets the method — net level premium (heijun jun-hokenryō-shiki, 平準純保険料式), with no Zillmer adjustment — the 標準利率 reset from JGB yields on a 1 October 基準日 with banded safety coefficients, and the mortality table by contract vintage REG-R10. The current numeric 標準利率 could not be established from a retrieved official document: the mechanism is verified and the level is not, so any figure used downstream is std or unverified REG-R10.
The two tables, again, and why the reserve needs both. 生保標準生命表2018(死亡保険用)for the deferral phase and 生保標準生命表2007(年金開始後用)for the annuity in payment REG-R10 REG-R11 R4. An annuity reserve computed off the death-cover table is wrong by construction and wrong in the expensive direction: the payout table is materially lighter at every adult age — male q80 = 0.03357 against 0.05006, q90 = 0.08318 against 0.15760 — and runs to terminal ages of 122 and 126 against 109 and 113 R3 REG-R18 REG-R19.
危険準備金. A contingency reserve inside the 第69条 taxonomy REG-R8. Not modeled.
ESR. From 2026-03-31 the liability is 現在推計 + MOCE, assets are at fair value, and required capital is calibrated to 99.5% over one year, with early corrective action at an ESR below 100% where the old ソルベンシー・マージン比率 triggered below 200% REG-R15 REG-R17. The cash flows above are the input to the 現在推計;
jplibcomputes neither ratio. What a 35-year deferral followed by a ten-year payout owes the regime is that the projection be re-runnable on a basis re-set at a stated 基準日 — which is why every assumption in class (c) is an input and not a constant.保険計理人の実務基準. 保険業法第121条 requires an 意見書 confirming the reserve is properly accumulated REG-R6, and the 実務基準 sets out how: the 1号収支分析 is a forward income-and-outgo analysis run annually by 区分経理 segment over at least ten future years, with sufficiency tested over the first five REG-R22. That is the shape of
result_cf()once its monthly rows are grouped into policy years.J-GAAP and IFRS 17. Statutory accounts are J-GAAP with 責任準備金 on the 平準純保険料式 REG-R10; ESR is a regulatory measurement and not an accounting standard REG-R15; and Japan has no mandatory IFRS 17 — IFRS applies as 指定国際会計基準 and adoption is voluntary REG-R47. Three bases over one set of projected cash flows.
Policyholder protection. 生命保険契約者保護機構 cover is 90% of the 責任準備金等 at the failure date, set in ordinance under the delegation at 保険業法第270条の3, with the 高予定利率契約 reduction unverified in detail [S4] REG-R40 REG-R41. Not a cash flow in this model.
Key sensitivities and model risks#
In rough order of leverage on this block:
The two 予定利率, and the gap between them.
i_ddrives thirty-five years of accumulation andi_pconverts the result into an annuity; both are fixed at issue and neither is a market rate. Movingi_dby 25bp movesFby +5.76% / −5.42%; movingi_pby 25bp movesBby about 1.1% in the opposite direction from what a single-rate model would show. One carrier bandsi_dby years remaining to annuitisation — 1.20% at 30 years or more, 1.00% below [S5] — so a model that hard-codes one deferral rate cannot price its own issue-age range consistently.The 予定事業費率 calibration.
βis the one free parameter standing between an unpublished 算出方法書 REG-R2 and a published specimen [S6]. It is calibrated at a single model point, male 30; the specimen table gives five more points [S6], and a production user should re-fit across all six rather than inherit a one-point calibration.Longevity on the payout table, and the sign of its margin. With the life-annuity module on,
Bis bought with an annuity-due factor of 22.032668 instead of 9.714338, so it is the payout table and not the payout rate that carries the risk there: scaling that table by 1.10 moves the factor to 21.316734 andBup by 3.34%, and by 1.01 movesBup by 0.36%. The 2007 年金開始後用 table’s construction was not retrieved, so the 1.10 best-estimate factor is a standardization sitting on an unverified margin.Late-duration surrender, whose sign is the reverse of a savings product. From the crossover the surrender value is the death benefit and so is capped at the premiums paid to date. A surrender at the anniversary 29 therefore pays
cv_pp(29)= ¥5,220,000 — the twenty-nine premiums paid by then, the benefit not reaching its ¥5,400,000 ceiling until 払込満了 — against anav_pp(29)of ¥5,699,454.498584: the insurer keeps ¥479,454.50 of fund per surrender. Late-duration lapse is therefore profitable here, and a prudent reserving basis loads lapse down, not up. The monthly grid sharpens this rather than changing it: the ceiling now steps by one 月払保険料 a month, so a surrender in the seventh month of policy year 29 is valued on ¥5,310,000 rather than on a year-rounded figure.Early-duration surrender and the 解約控除. The base amount of one annual premium is std and unsourced beyond the two 約款’s 「ごくわずか」 [S2] [S4]. It moves
cv_ppover the first ten years and therefore the whole early-duration lapse cost.Reinstatement, which this model still does not carry. 復活 within three years [S2] [S4] returns real policies to the in-force, so this model’s
lapse_rateis a net-of-復活 rate. A user substituting a gross experience lapse rate will over-decrement. The monthly grid removed the arithmetic obstacle — a grace window and a reinstatement re-entry are now representable lengths — and left the data obstacle: the model point table carries no calendar date for the 払込期月 and no retrieved document gives a reinstatement rate.The 据置期間 as a lever. One carrier markets it explicitly — a deferral gap between 払込満了 and the 年金支払開始日 increases the annuity [S6]. On the anchor cell
d= 5 raisesFfrom ¥5,929,599.05 to ¥6,261,482.08, +5.60%: 5.10% of it the interest factor 1.01^5 and the rest five more years of survivorship release. A model that never separatesmfromnsilently setsd= 0.Dividend re-activation. The base run’s zero declared dividend is a choice, not a product fact. Turning it on adds a second interest lever, is subject to 消費者契約法第4条 on presenting non-guaranteed elements as certain REG-R38, and under the rider must be applied as a single premium increasing the 基本年金額, never paid in cash [S1] R10.
Known modeling pitfalls:
Two mortality tables in one model, with the margin running opposite ways. The deferral phase reads 生保標準生命表2018(死亡保険用)and the payout phase 生保標準生命表2007(年金開始後用)REG-R10 REG-R11. Using the death-cover table after annuitisation overstates payout-phase deaths by 49% at age 80 and by 89% at age 90 on the published rates R3 REG-R18. Those two death-cover rates are sourced anchors and come back exactly from
mort_table.csv; the payout rates do not, because that table is anchored only at 60/80/100 and its Makeham construction reads 0.077578 at age 90 against the published 0.08318, so a reader checking the 89% against the model’s own tables will find 103% instead. And the best-estimate adjustment reverses sign att=n: 0.85 on the death-cover table, 1.10 on the annuity table. A model applying one factor to both has one of the two wrong.確定年金 instalments are certain, not life-contingent. Do not decrement
pols_ifby mortality during the payment period [S2] R16. Deaths inside the period pay the PV of the unpaid instalments, or the recipient elects continuation; the base run assumes continuation, so the stream is unchanged.lives_iffalls from 0.91268274 to 0.77848987 over the ten payout years — a hundred and twenty monthly steps — without moving a single cash flow.The surrender value never exceeds the death benefit, but the fund does — and that is the product.
CV(u) ≤ DB(u)at every deferral month [S2] [S4], with equality from the elapsed month 149 at the anchor cell. On the monthly grid this is a stronger statement than the annual one it replaces, because the two sides move on different clocks between anniversaries —DBby one 月払保険料 a month,CVby interpolation — and it is asserted month by month rather than at thirty-five points. Clippingav_ppinstead ofcv_ppdestroys the 年金原資: it is the un-clipped excess ofav_ppoverdb_pp— ¥791,563.274447 at the anniversary 34 — that buys the annuity.The lapse decrement must stop before the 年金支払開始日. A lapse applied in the last twelve months would remove contracts at
t=n, whereCV= 0 and surrender is unavailable [S2] [S4]: in-force disappears with no payment and the annuity outgo is understated.lapse_rate(t)is zero from the month 408 — the anniversaryn_y− 1 — and there is no lapse and no surrender at all after annuitisation.払込満了 and 年金支払開始日 are different dates.
m= 30 andn_y= 35 at the anchor cell — the months 348 and 420, seventy-two months apart. Collapsing the 据置期間 movesFby 5.60% and is not a rounding difference [S6]; a model with one “term” parameter cannot express the composite at all.Two 予定利率, not one. 1.00% accumulating and 0.65% converting [S5] [S8]. Using the deferral rate to buy the annuity overstates
Bby 1.55% atk= 10 — the payout rate is the lower one, so each yen of 年金原資 buys less annuity, not more.The death benefit is 月払保険料 × 経過月数, and it stops growing at 払込満了.
DB(u)=ρ (P/12) min(u, 12m)— the clause as written [S2] [S4] — so it isρPmfor everyu ≥ 12m. A model that keeps accruing it to the 年金支払開始日 overstates deferral-phase claims by five years’ worth of premium; a model that rounds it to whole policy years, as the annual grid had to, misstates every individual death claim by up to eleven months of premium.The commutation factors are not the model’s payout basis. The published table [S2] implies about 0.40% p.a. while the payout 予定利率 is 0.65% [S5]; at
t=nthe factor 9.921 returns ¥6,330,590.10 against a 年金原資 of ¥6,261,482.08, 1.1037% more. Base-run take-up is 0% for exactly that reason, and switching commutation on without re-deriving the factors builds a composite artefact into the answer.The published lapse rate’s denominator is 契約高, not policy count. The 3.4% for FY2024 is measured on pre-annuitisation in-force 契約高 R15 REG-R31. The std curve averages 3.4160% count-weighted and 2.4754% fund-weighted on the anchor cell, both read at the anniversaries of the deferral phase — the annual rate curve is what those numbers summarize, and the one public figure it is calibrated against is itself an annual rate. Calibrating a count model directly against the published number without saying which weighting is meant mis-states the deferral decrement by about a quarter.
Dividends are zero in the base run, not absent, and may never be paid in cash. The machinery is contractual [S4]; under the rider the accumulated dividend cannot be withdrawn before annuitisation and must be applied as a single premium increasing the 基本年金額 [S1] [S2], as 所令211①ニ requires R10. A model that pays a declared dividend as a cash outflow before
t=nis projecting a non-qualifying contract.自動振替貸付 is an election, not a no-lapse rule. With the module on, the lapse decrement is suppressed only while the surrender value can carry the premium, the loan compounds at a rate capped at 8% p.a., and the contract lapses from the moment principal and interest exceed the surrender value [S4] REG-R14. One carrier’s product has no such facility at all [S2]. Wiring it on by default removes lapse from the model for the wrong reason.
The 基本年金額 is fixed at issue on the base form and priced at annuitisation on the elected one. For the 確定年金 chosen at issue,
Bis struck once, at the anniversaryn_y, from the issue basis [S2] [S3]. The 保証期間付終身年金 election is priced on the 基礎率 in force at the 年金支払開始日 [S2] [S9], which no model can know; holding it at the issue basis is a std assumption and the reason base-run take-up is zero. Sharing one code path between the two hides that distinction, and the two answers are far apart: ¥638,100 against ¥281,300 out of the same ¥6,261,482.08.