Technical Notes#
Status: Draft, 2026-08-20 (all cited sources accessed 2026-08-20).
Scope note. These notes turn the standardized composite foreign-currency-denominated
whole life assurance (gaika-date shūshin hoken, 外貨建終身保険) of product-spec.md (same
directory) into a reference liability cash-flow projection on paper. This is not any single
insurer’s product. [S#] and [R#] tags resolve against sources.md, whose numbering is
carried verbatim from _research/fx-whole-life.md and is 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 that could not be confirmed against a retrieved document. Every parameter
value here is identical to product-spec.md’s. Eight quantities appear here that the
specification names without valuing, because it defers them to this document: the two
premium-charge rates φ1 and φ2, the account-value maintenance rate μ, the three
constants of the market value adjustment, MVA (shijō kakaku chōsei, 市場価格調整) reconstruction
A, r0 and d, and the two experience top-up (tokubetsu tsumitatekin, 特別積立金) shares
σ10 and σ20. Each is std, and each is derived below — fitted to a published
table and reported with its fit — not asserted.
Everything in this file is denominated in the policy currency, the US dollar, and every yen figure is a translation of a dollar figure at a stated exchange rate. The model projects in US dollars; the yen ledger is a published translation, computed from the dollar ledger by the rules in “The currency layer” below. Mixing the two — reading a yen figure as a model quantity, or translating a net figure at a single rate — is the error this product punishes hardest, and it is the first pitfall in the list at the foot of the file.
This product inherits the savings chassis. Policy reserve (sekinin-junbikin, 責任準備金), policy loan (keiyakusha kashitsuke, 契約者貸付), automatic premium loan, APL (jidō furikae kashitsuke, 自動振替貸付), grace, lapse (失効), reinstatement (復活), reduced paid-up (払済保険), sum-assured reduction (減額) and the suppressed-surrender-value (tei-kaiyaku-henreikin-gata, 低解約返戻金型) cliff are specified once, in the whole life technical notes (終身保険), and are not restated here. This file states the deltas: a monthly grid instead of an annual one, an account value instead of a closed-form policy value, an MVA, a currency layer, and a path-dependent conversion rider.
Model scope and conventions#
Purpose. Project gross best-estimate liability cash flows per policy — premiums, death and severe disability (kōdo shōgai, 高度障害) claims, surrender benefits, expenses and commission — for a single-policy model point, in the sense the ESR current estimate (genzai suikei, 現在推計) requires: probability-weighted future cash flows on assumptions re-set at each 基準日, gross of reinsurance REG-R15. It is also the shape the appointed actuary (保険計理人)’s 1号収支分析 consumes, and that practice standard addresses MVA and foreign-currency business by name REG-R6 REG-R22. Discounting, MOCE, required capital and every statutory reserve are out of scope and are cited, not reproduced (see Valuation and reserve pointers).
Projection frequency. Monthly (
FXWholeLife_JP_S), stepping on the monthly policy anniversary (getsu-tan’i no keiyaku ōtōbi, 月単位の契約応当日). This is not a refinement of the chassis’s annual grid but a requirement: the crediting rate (tsumitate riritsu, 積立利率) is redeclared monthly and credited from the monthly policy anniversary [S2], the death-benefit uplift (zōka shibō hokenkin-gaku, 増加死亡保険金額) is recomputed at the same date [S2], and the target-value test is made every business day [S9].tcounts completed policy months from 契約日;t = 0is the month beginning at issue.The declaration/application offset is real and is carried, not resolved. The 重要事項説明書 of the anchor booklet says the rate is set 毎月1日; 約款第3条第2項 of the same booklet says it is applied 月単位の契約応当日ごとに [S2]. The 約款 governs, so the model credits on policy months and never on calendar month ends. A model that credits on calendar month ends is wrong by the anniversary offset for the whole life of the contract, and the error does not average out.
Timing conventions std. Premium at the start of month
t; charges deducted from the account value at the start of montht, in the order below; interest credited at the end of montht; death claims and claim expenses at the end of montht; surrenders at the end of montht, after deaths, valued on the account value after that month’s interest. Acquisition expense and initial commission at issue (t = 0).Age basis. 契約年齢 is attained age (man-nenrei, 満年齢) with the fractional year discarded at 契約日, incrementing on the 年単位の契約応当日; attained age in month
tisx + floor(t/12)exactly. 生保標準生命表2018(死亡保険用)is built for an insurance age, nearest birthday (hoken-nenrei, 保険年齢) basis REG-R20; the reference implementation reads it at the 満年齢 attained age with no adjustment std, as the chassis does, and the resulting understatement ofqis named there, not re-argued here.Currency. US dollars throughout. Every state variable, every assumption and every cash-flow column is in US dollars. Yen figures are produced by a separate translation layer and carry a
_jpysuffix. The exchange rate is a model point columnfx_ttm, never a constant inside a formula: an exchange rate buried in a recursion is an economic assumption disguised as a product feature, and cannot be varied by the point that owns it. A second model point column,fx_path, replaces the flat rate with a path read by policy year — not by month — fromfx_path_table.csv, its last row carried forward; the file is reached through thefx_path_fileReference onData.Model points. Single-policy model points on an expected (probability-weighted) basis: survivorship multiplies per-policy cash flows.
point_idparameterizesProjection;point_id = 1is the worked-example anchor cell.Termination. No maturity date and no 満期保険金 [S1] [S2] [S3] [S7]. The projection runs to the terminal age of the mortality table:
T = 12 × (ω − x + 1)months, ω = 109 male / 113 female on 生保標準生命表2018(死亡保険用), the first age at whichq(ω) = 1.00000REG-R18. On the anchor cellT = 840months. There are no tail states.Contract boundary. The premium is level and guaranteed in US dollars for the whole of 保険料払込期間 and the insurer has no unilateral repricing right [S1] [S2], so the whole contract is projected. Japan’s ESR 柱1 告示 were not opened and their boundary text is unverified REG-R16; the model implements no boundary test and says so.
Rounding. Intermediate values at full precision; displayed dollar cash flows to four decimal places and account and surrender values to two std, which is the precision the tests assert. The published surrender-value run is reproduced to the dollar, so the monthly interest convention must be stated: the monthly factor is the geometric twelfth root
(1 + i)^(1/12), noti/12std (product-spec.mdfootnote 11).
Model point attributes#
Attribute |
Type |
Anchor cell ( |
|---|---|---|
|
str |
|
|
enum {LEVEL, SINGLE} |
LEVEL |
|
enum {M, F} |
M |
|
int, 満年齢 |
40 |
|
enum {USD} |
USD |
|
US$ |
100,000.00 |
|
US$/month (LEVEL) |
239.60 |
|
US$ (SINGLE; 0 on LEVEL) |
0.00 |
|
int months, 0 for 終身払 |
240 (60歳払込満了) |
|
annual effective, declared |
0.0300 |
|
annual effective, fixed at issue |
0.0300 |
|
積立利率適用期間, years (SINGLE only) |
0 (n/a on LEVEL) |
|
bool — 低解約返戻金特則 elected |
false |
|
bool — the 増加死亡保険金額 ratchet |
true |
|
bool — target-value rider elected |
false |
|
目標値, multiple of the yen premium paid |
1.10 |
|
bool — riders (tokuyaku, 円入金特約 / 円支払特約) attached |
true, true |
|
¥ per US$1, the reference TTM |
159.43 |
|
¥ per US$1, each way |
0.50 |
Seven further columns are switches rather than contract attributes and are specified where
the mechanic they govern is: idb_basis and target_action under the two mechanics below,
mva_delta under the surrender layer, apl_on, dyn_lapse and fx_path under
policyholder behaviour, and mort_adj in assumption class (c), whose cells is
mort_be_factor. There is no issue-date
column: t counts policy months from 契約日 and no calendar date enters the projection.
prem_months = 0 denotes 終身払, for which no 払込満了 exists. On the SINGLE shape
premium_monthly = 0, single_premium > 0, prem_months = 1, low_cv = false and
rate_period_y = 15; the APL is structurally absent, because there is no premium to
advance, so that shape’s decrement set is smaller, not merely differently rated.
The anchor premium is sourced, not constructed: US$239.60 per month is the published premium for exactly this cell — male, 契約年齢40歳, the sum assured on the main contract (shu-keiyaku, 主契約) (主契約保険金額) 100,000米ドル, 月払, 口座振替, 60歳払込満了, 保険期間終身 — and the same booklet publishes 225.00 for the 低解約返戻金特則 form, a 6.1% reduction [S2].
State variables#
Variable |
Description |
Updated |
|---|---|---|
|
In-force probability at the start of month |
monthly recursion |
|
|
monthly recursion |
|
|
monthly recursion |
|
|
monthly recursion |
|
|
closed form on |
|
|
step function of |
|
|
closed form |
|
|
step function of |
|
annual and monthly mortality rate (incl. 高度障害) |
table lookup at |
|
annual and monthly voluntary surrender rate |
assumption table |
|
bool — the yen-converted |
derived, path-dependent |
|
|
model point or path table |
av0_pp and idb_pp exist only on the LEVEL shape; on the SINGLE shape the death benefit
is max(AV(t), CV(t)) and there is no fund-independent sum assured at all [S3]. cv_pp is
the chassis name and is used here for the same object; av_pp is the new one, and the two
are not interchangeable — every charge sits between them.
The base run carries no loan, no APL cohort, no target rider and no 低解約返戻金特則, so the
chassis’s pols_if_apl / loan_pp triangle is absent from the anchor and is exercised in a
dedicated model point.
Assumption inputs#
Three classes, kept apart on purpose. The separation is a legal requirement here as much as a modelling one: presenting a non-guaranteed element as certain is 断定的判断の提供 under 消費者契約法 第4条 REG-R38, which is why the published illustration prints the guaranteed 3.00% column and the 3.50% and 4.00% columns as three columns and never as an average [S2] R8.
(a) Contractual / guaranteed elements (cited; the insurer cannot change them)#
Input |
Value |
Basis |
|---|---|---|
Death benefit, LEVEL |
|
[S1] [S2] |
Death benefit, SINGLE |
|
[S3] |
Premium |
US$239.60/month, level and guaranteed for months 0 … 239 |
[S2] |
保険期間 |
終身 — no expiry, no 満期保険金 |
[S1] [S2] [S3] [S7] |
最低保証積立利率 |
3.00% on LEVEL, equal to the contract’s own 予定利率, fixed at issue |
[S1] [S2] |
最低保証積立利率, SINGLE |
0.01% |
[S3] |
解約返戻金 formula |
|
[S3]; suppression [S2] |
解約控除率 |
7.0% in policy year 1, −0.7pp per completed policy year, zero from year 10; constant within the year; base = the 積立金 |
[S3] |
MVA scope |
SINGLE only; not on an 積立利率計算基準日 nor inside a 1-year 積立利率適用期間 |
[S3] |
MVA direction |
Symmetric: positive when rates have risen, negative when they have fallen |
[S3] R8 |
低解約返戻金割合 |
70% / 77.5% / 85% / 92.5% by 残余保険料払込年数 (≥4 / 3 / 2 / 1), 1.00 from 払込満了 |
[S2] |
入金用 / 支払用為替レート |
TTM +50銭 / TTM −50銭, capped at TTS / floored at TTB; first quote of the day |
[S1] [S3] [S5] [S7] |
Conversion base date |
The day before the completed documents reach the insurer, rolled back over bank holidays |
[S7] |
特別積立金 |
Added to the 積立金 after 10 and after 20 years in force; never paid to a contract terminating earlier |
[S1] [S2] |
目標値 test |
On the yen-converted 解約返戻金, every business day, from month 12 |
[S9] [S8] |
Post-conversion |
Death benefit and surrender value fixed in yen; no FX, no MVA, no 解約控除 thereafter |
[S8] [S9] |
免責 — suicide |
3 years from the 責任開始期, reset on 復活 |
[S2] [S7]; statutory frame REG-R34 |
Refused claim |
The 積立金 or 解約返戻金 is still paid |
[S2] |
Policyholder protection |
90% of the 責任準備金等, no carve-out for 外貨建 contracts |
(b) Insurer-discretionary current elements#
This class is where the product’s economics live, and on this product it is larger than on the yen chassis, because the crediting rate itself is in it.
Input |
Snapshot value |
Basis |
|---|---|---|
積立利率 |
3.00%, held at the guaranteed floor for the whole projection |
[S2]; scenario std (1) |
積立利率 |
4.72%, the rate declared for the 2026-08-16 window, fixed for 15 years |
[S4] |
Crediting scenario range |
LEVEL 3.00 / 3.50 / 4.00% (the published illustration set); SINGLE 4.45–5.29% over twenty fortnightly windows |
[S2] [S14] |
契約初期費用 |
38% of each premium over policy months 0 … 23 |
derived std, below |
契約初期費用 |
13% of each premium over policy months 24 … 239 |
derived std, below |
維持費率 |
0.50% p.a. of the account value, deducted monthly |
derived std, below |
契約初期費用, SINGLE |
4.50% of the single premium at issue ages 40–69 |
[S10] |
Cost-of-insurance basis |
生保標準生命表2018(死亡保険用), no further loading, on the net amount at risk |
[S1] [S2] structure; basis std (2) |
MVA constants |
0.10%, 3.00%, 0.70 |
derived std, below |
特別積立金 shares |
0.24 and 0.16 of the fund’s excess over its 予定利率 benchmark |
derived std, below |
契約者配当 |
None — 無配当 on both modelled shapes |
[S1] [S2] [S3] [S7] |
APL / 契約者貸付 interest |
2.75% p.a., compound — the chassis’s value, inherited unchanged; unused in the base run because the module is off there |
level std at the whole life technical notes (終身保険); the 年8% contractual ceiling is cited there |
The floor is a contract term and therefore the honest base run: it is the guaranteed column of the published table and it is what the 約款 promises [S2]. The declared-rate history for this shape does not exist in retrievable form — the carrier’s rate page is a JavaScript shell with no rate content in the served HTML [S16] — so the floor and the three illustration rates are the only crediting figures available for it. Holding the rate at the floor also makes two mechanics vanish identically (below), which is what makes the base run checkable against a public document.
The table is a valuation table with a margin sized to about 2σ and an improvement allowance already inside it REG-R20, and its publisher restricts redistribution REG-R21, so
jplibshipsmort_table.csvas a std construction whoseprovenancecolumn points at the IAJ entry REG-R18 and quotes only the rates the worked example needs.
Why the charge rates are fitted rather than asserted. Every carrier in the set refuses
to quantify the mortality-and-expense charge, in identical words [S2] [S7], and the rates
live in the 保険料及び責任準備金の算出方法書, a filed but unpublished 基礎書類 REG-R2. What is public is a
complete surrender-value run for the anchor cell at nine durations on three crediting
scenarios [S2]. Because the crediting rate on the guaranteed column is a contract term and
the surrender-charge scale is fixed by product-spec.md footnote 20, the charge stack is
the residual, and the reference implementation back-solves it — φ1, φ2 and μ from
nine published dollar figures spanning forty-seven years. The fit is reported in the worked
example. Four independent bounds keep the answer honest: a published front-end scale of 4.50
/ 3.00 / 2.00% of a single premium by age band [S10]; a distributor’s 契約時手数料 of 4.00% or
2.60% with a 継続手数料 of up to 0.75% p.a. for at most seven years [S13]; the FSA’s L-shaped
5.5% / 0.1% reading of the sector R5; and a 2.35% p.a. 保険契約関係費 on a variable sleeve [S13],
which is an upper bound because a variable sleeve carries fund cost a fixed account does
not.
(c) Behavioral / experience assumptions (modeler’s view)#
Mortality. 生保標準生命表2018(死亡保険用)男 REG-R18, read at the 満年齢 attained age, with
mort_be_factor = 1.00 in the base run std — the base run is a valuation-table run,
not a best estimate, taken so that every number below can be checked against a document
anyone can download. The rates used are the library’s one canonical proxy for that
table: a single file built once for all nine products by log-linear interpolation in
ln q between the
individual rates the library quotes from the published table — among them the sourced
anchors q30 = 0.00068, q35 = 0.00077, q40 = 0.00118, q45 = 0.00177, q50 = 0.00285, q55 = 0.00422, q60 = 0.00653, q65 = 0.01015, q90 = 0.15760 and the
terminal q109 = 1.00000 REG-R18 — rounded to five decimals, with every row’s
provenance column saying which of the two it is. The interpolation is std, the anchors
are not. The same attained age therefore carries the same rate and the same provenance
in the whole life technical notes (終身保険), the savings chassis this
product is built on, and in
every other product that ships it; the nine files must not diverge.
mort_be_factor moves the decrement and must never move the cost-of-insurance charge.
The decrement is an experience assumption; the charge basis is a pricing element the
insurer sets REG-R2. Wiring one lever to both is the single easiest way to make this
model self-consistent and wrong: raising mort_be_factor would then raise claims and
raise the charge that funds them, and the account value would absorb the sensitivity
instead of the cash flow showing it.
Surrender. Two curves, because the two shapes have two behavioural regimes and the difference is an order of magnitude.
Policy year |
1 |
2 |
3 |
4 |
5 … 10 |
11 … 20 |
21 + |
|---|---|---|---|---|---|---|---|
LEVEL |
8% |
7% |
6% |
5% |
5% |
4% |
3% |
SINGLE |
28% |
23% |
18% |
14% |
8% |
8% |
8% |
The SINGLE curve is calibrated, not invented: the FSA reports that about 60% of 外貨建一時払保険 are surrendered within four years of purchase R5, and the four rates above give a cumulative four-year exit of 60.90%. The companion statistic — an average holding period of 2.5 years R6 — is not reproducible by any single hazard curve that also reproduces the 60%, because it is measured over terminated policies inside a monitoring window rather than over the whole book; it is quoted as context and is not fitted. Read against the industry-wide 解約・失効率 of 5.6% of sum assured REG-R31, the SINGLE curve is a different behavioural regime, and importing a yen whole life’s persistency onto this shape is wrong by an order of magnitude. The LEVEL curve is a std judgement with no public anchor at all: the FSA statistics are about 一時払 business, and no retrieved document reports persistency on a level-premium FX contract.
Expenses and commission (levels all std; no carrier publishes an expense basis).
Input |
Value |
|---|---|
Acquisition expense |
US$300 per policy at issue |
Initial commission |
90% of the annualized premium at issue |
Renewal commission |
3% of premium, months 12 … 239 |
Initial commission, SINGLE |
5.5% of the 一時払保険料 at issue |
Trail commission, SINGLE |
0.75% p.a. of the account value, accrued monthly, for seven years |
Maintenance expense |
US$60 p.a., for life, inflating 1.0% p.a., accrued monthly |
Claim expense |
US$150 per death claim |
The SINGLE pair is the one commission line in this table whose pattern is evidenced even though its levels are not: a distributor’s published schedule is a 契約時手数料 of 4.00% or 2.60% of the single premium with a 継続手数料 of up to 0.75% p.a. of the account value for at most seven years [S13], and the FSA reads the sector as L-shaped at about 5.5% in year one against 0.1% thereafter R5. The composite takes the FSA’s front-end figure and the published trail, which is a std splice of two sources rather than either one of them.
Expenses are the insurer’s own costs and are incurred in yen; they are held in dollars at the model’s own convenience and translated at the plain TTM, never at a spread rate — they do not cross the policyholder boundary. This is the one place a dollar figure in this file is a modelling convenience rather than a contractual amount, and it is stated rather than hidden.
Cash flow components and recursions#
Notation (defined once, used throughout)#
Symbol |
Meaning |
|---|---|
|
policy month, |
|
契約年齢; projection length in months, |
|
保険料払込期間 in months (240 on the anchor cell) |
|
基本保険金額; monthly premium, payable at the start of months 0 … n−1 |
|
予定利率 / guaranteed floor; declared 積立利率 — both annual effective |
|
monthly interest factor exponent: |
|
annual mortality (incl. 高度障害) and surrender rates at month |
|
the unadjusted table rate at the same age: the cost-of-insurance basis, which |
|
|
|
in-force probability at the start of month |
|
the part of |
|
expected deaths; expected surrenders; expected target conversions, in month |
|
積立金 at the start of month |
|
増加死亡保険金額; the death benefit |
|
premium charge rate ( |
|
the three account-value charges in month |
|
解約控除率; 市場価格調整率; 低解約返戻金割合 |
|
payable 解約返戻金 ( |
|
years remaining in the current 積立利率適用期間 (SINGLE) |
|
rate move since the contract’s rate was set; MVA spread, base rate, damping |
|
reference TTM at month |
|
目標値, a multiple of the yen premium paid |
|
acquisition expense; monthly maintenance; initial and renewal commission; claim expense |
|
net cash flow of month |
Dimensional check. q, w, q_m, w_m, l, φ, sc, mva, kl, c0, c_r, g
and d are dimensionless; i0, ic, μ, Δ, A, r0 are per annum and every one of
them is divided by 12 or raised to the power 1/12 before it touches a monthly quantity;
SA, P, AV, AV0, IDB, CV, E0, e_m, ec and every term of CF(t) are US
dollars per policy issued; e(t) and s are ¥ per US$1, so every yen figure in this
file is a product of exactly one dollar quantity and exactly one rate — never a sum of a
dollar and a yen quantity, and never a dollar quantity multiplied by two rates. rem(t) is
in years and appears only as the exponent d × rem(t).
The currency layer#
Every crossing of the currency boundary is a spread, not a rate [S1] [S3] [S5] [S7]:
premium_jpy(t) = P × (e(t) + s) [円入金特約, capped at TTS]
benefit_jpy(t) = benefit_usd(t) × (e(t) − s) [円支払特約, floored at TTB]
expense_jpy(t) = expense_usd(t) × e(t) [never crosses the boundary]
so the yen ledger is three translations, not one, and
net_cf_jpy(t) ≠ net_cf(t) × e(t)
identically. The difference is the insurer’s spread income, s × (premiums + benefits), and
the model publishes it as its own column rather than letting it hide inside a translated net
figure. At the reference TTM the round trip costs (e + s)/(e − s) − 1 = 0.6292%, and one
leg costs s/e = 0.3136% — which is why every carrier warns that a loss can arise with no
exchange-rate movement at all. The base run holds e(t) = 159.43 flat std: this
library models contractual cash flows, not an FX view [S11].
The account value recursion#
One line, identical on both shapes, with the order fixed because it changes the answer at the third decimal and the published run is reproduced to the dollar:
AVg(t) = AV(t) + P(t) − C_init(t)
C_init(t) = φ(t) × P(t)
C_maint(t) = (μ / 12) × AVg(t)
C_coi(t) = min( qc_m(t) × max(0, DB(t) − (AVg(t) − C_maint(t))),
max(0, AVg(t) − C_maint(t)) )
AV(t+1) = (AVg(t) − C_maint(t) − C_coi(t)) × (1 + j)
The charge reads qc, not q: the rate that funds the benefit is a pricing element the
insurer filed REG-R2, and wiring mort_be_factor to it as well would make the account
value absorb the model’s own mortality sensitivity instead of the cash flow showing it. On
every cell below mort_be_factor = 1, so the two rates coincide and the distinction costs
nothing — which is exactly why it has to be stated rather than discovered at the first
sensitivity.
C_coi carries two bounds, and only the outer one is a standardization. The inner
max(0, ·) is structural: once AV overtakes DB the net amount at risk is zero and the
charge stops, and the death benefit must not be floored at the fund in exchange. The
outer min(·) caps the charge at what the fund actually holds, so the 積立金 can never run
negative — it is an account, not a debt. No retrieved document states that cap; it is a
modelling construction and therefore std. It binds on the 低解約返戻金特則 cell, whose
lower premium the back-solved charge stack does not make self-funding to the terminal age:
the 積立金 is exhausted in the sixth decade, the guaranteed 終身 cover is thereafter carried by
the insurer rather than by the fund, and the surrender value is nil. Without the cap the
shortfall compounds into the net amount at risk and the projection diverges.
None of the three charges is a cash flow. They are internal transfers from the account
value to the insurer; the insurer’s cash outgo is the expense and commission stream in class
(c). Booking C_init as revenue and the premium as revenue double-counts the premium,
which is the second pitfall in the list.
The death benefit and the two mechanics that vanish at the floor#
On the LEVEL shape DB(t) = SA + IDB(t), and 約款第46条 defines the uplift as the excess of the
fund actually held over the fund needed to carry the sum assured with no future premiums at
the 予定利率 [S2]:
IDB(t) = max( IDB(t−1) , AV(t) − AV0(t) ) , floored at 0, computed monthly
with the max against the previous month being the ratchet — sourced to the ご契約のしおり and
not to the extracted 約款 text, therefore unverified, and carried as the switch
idb_ratchet [S2].
AV0(t) is the quantity the 約款 does not define numerically, because it rests on the
insurer’s unpublished 予定死亡率 and 予定事業費率 REG-R2. std definition: AV0(t) is the
account value the same recursion produces with ic ≡ i0. Under it IDB(t) ≡ 0 on the
guaranteed run for every t, exactly and by construction, which is what the published
guaranteed column requires: it shows 特別積立金 of (0) at both 10 and 20 years and no uplift line
at all [S2]. The alternative reading — AV0(t) as the prospective fund at i0 on the same
charge basis with no future premiums — is implemented as the switch idb_basis = "prospective", and it does not give an identically zero uplift: it gives AV − AV0 of
−US$21,818.29 at 10 years, +US$8.73 at 20 years, +US$67.86 at 50 years and
+US$22,617.69 at the terminal month. The near-zero crossing at 払込満了 is a strong independent
check on the fitted charge stack — the contract is almost exactly self-funding at the floor,
which is what actuarial equivalence predicts — but a definition that manufactures a positive
uplift on the guaranteed run contradicts the only document that shows the guaranteed run, so
it is the switch and not the base.
The 特別積立金 is a top-up computed from ten-year investment performance and added at 10 and 20 years in force [S1] [S2]. On the base run it is identically zero, and the published table confirms it: (0) in the 3.00% column at both durations against 147 / 527 at 3.50% and 302 / 1,120 at 4.00% [S2]. A model that produces a non-zero uplift or a non-zero top-up on the guaranteed run has a bug, and both are tests.
The 約款 does not publish how the top-up is computed, so the amount is a std reconstruction, and it is fitted rather than assumed. Taking it as a share of the same excess the uplift is measured against,
特別積立金(120) = σ10 × max(0, AV(120) − AV0(120))
特別積立金(240) = σ20 × max(0, AV(240) − AV0(240))
and solving on the four published amounts gives σ10 = 0.24 and σ20 = 0.16. At
3.50% the reconstruction returns 146.89 against a published 147 (−0.1%) and 521.68 against
527 (−1.0%); at 4.00%, 297.79 against 302 (−1.4%) and 1,078.39 against 1,120 (−3.7%) — a
worst deviation of 3.7% on two parameters against four figures. The 20-year amounts are
computed on a fund that already carries the compounded 10-year top-up, which is what the
recursion does; measuring the 20-year excess without it would understate σ20 by about a
tenth. Both shares are zero on the SINGLE shape, which has no 特別積立金 [S3].
On the SINGLE shape there is no sum assured above the fund: DB(t) = max(AV(t), CV(t)), and
the max binds — where the MVA is strongly negative the surrender value exceeds the account
value and the death benefit follows the higher [S3].
The surrender layer#
CV(t) = AV(t) × (1 − mva(t) − sc(t)) × kl(t)
sc(t) = 0.07 − 0.007 × floor(t/12) for t < 120, zero thereafter, constant within each
policy year, applied to the 積立金 [S3]. It is a charge: one-sided, never adding value,
disclosed under the 説明義務’s restriction-on-cancellation limb REG-R39.
mva(t) is not a charge. It is symmetric and can be negative [S3] R8. No carrier
publishes a closed form — the 監督指針 asks for an illustration of the deducted proportion,
which is exactly what a rate table is R3 — so the reference implementation adopts the
published table as the artefact and specifies this std reconstruction of it:
mva(t) = 1 − ( 1 + (Δ(t) + A) / (1 + r0) ) ^ ( −d × rem(t) )
with A = 0.10%, r0 = 3.00% and d = 0.70, all std. Δ(t) is the move in
the applicable 基準利率 since the contract’s own 積立利率 was set, and rem(t) is the years
remaining in the 積立利率適用期間. The reconstruction reproduces all 140 cells of the published
15-year table exactly at the printed four decimal places, with a maximum absolute
deviation of 0.000050 before rounding. Two structural facts drop out of the fit rather than
being imposed: the zero column sits at Δ = −0.1%, which is what A is, so a contract
surrendered with no rate move at all still carries a small positive adjustment
(+0.0095 at 14 years remaining); and the effective duration is d × rem, i.e. 0.70 of
the remaining term, not the remaining term itself. mva(t) = 0 where t falls on an
積立利率計算基準日 or inside a one-year 積立利率適用期間, and identically on the LEVEL shape [S3] [S2].
kl(t) is 0.70 while four or more premium-paying years remain, stepping to 0.775, 0.85 and
0.925 at three, two and one remaining years and to 1.00 at 払込満了, with the remaining count
measured from the monthly policy anniversary of the last premium paid and rounded up to
whole years [S2]. The step is a cliff; the chassis specifies it and the clawback that keeps
a non-paying cohort suppressed past 払込満了.
Processing order (policy month t = 0 … T − 1)#
Start of month — premium. Collect
P × l_p(t)ift < n— onl_p, the cohort still paying its own premium, not on the whole ofl: a policy the 自動振替貸付 is carrying credits the 積立金 but pays the insurer nothing, and booking its premium as cash income is the pitfall the chassis lists.l_p ≡ lon every model point without the APL. On the SINGLE shape this is a single collection att = 0.Start of month — account-value charges, in the order
C_init,C_maint,C_coi. These changeAVand produce nonet_cfentry.Start of month — insurer expenses.
e_m(t) × l(t), on the whole ofl; renewal commissionc_r × P × l_p(t)for12 ≤ t < n, onl_p, because commission is paid on premium actually collected. Att = 0additionallyE0andc0 × 12P.End of month — interest. Credit
(1 + j)to giveAV(t+1).End of month — uplift. Recompute
AV0(t+1)andIDB(t+1); att + 1 = 120andt + 1 = 240add the 特別積立金 (zero in the base run).End of month — surrender value. Compute
sc(t+1),mva(t+1),kl(t+1),CV(t+1).End of month — deaths.
D(t) = l(t) × q_m(t); outgoDB(t) × D(t); claim expenseec × D(t).End of month — surrenders, applied to survivors of mortality [std order: death before surrender]:
S(t) = l(t) × (1 − q_m(t)) × w_m(t); outgoCV(t+1) × S(t).End of month — target test (rider on, SINGLE): if
t + 1 ≥ 12andCV(t+1) × (e(t+1) − s) ≥ g × P_single × (e(0) + s), apply the elected treatment.Update in force.
l(t+1) = l(t) × (1 − q_m(t)) × (1 − w_m(t)).At
t = T − 1the table’s terminal rate is 1, sol(T) = 0and the projection ends.
Net cash flow#
Income-positive, per policy issued, in US dollars:
CF(t) = P × l_p(t) × 1{t < n} (premiums)
− DB(t) × D(t) (death and 高度障害 claims)
− ec × D(t) (claim expense)
− CV(t+1) × S(t) (surrender benefits)
− CV(t+1) × conv(t) (target conversions)
− e_m(t) × l(t) (maintenance expense)
− c_r × P × l_p(t) × 1{12 <= t < n} (renewal commission)
− (E0 + c0 × 12P) × 1{t = 0} (acquisition)
l_p(t) is the cohort still paying its own premium, which is l(t) on every model point
without the 自動振替貸付: a policy the APL is carrying credits the 積立金 but pays the insurer
nothing, so the premium and the renewal commission ride on l_p while the maintenance
expense rides on the whole of l. conv(t) is zero unless the target election is
convert; under surrender the same policies leave through S(t) instead, which is why
the two elections move the money between columns and not in total. On the SINGLE shape the
two commission terms are replaced by the pair in class (c).
Result columns: pols_if first, then premiums, claims_death, claims_lapse,
conversions, claim_expenses, expenses, commissions, net_cf, then the translation
block
net_cf_jpy and fx_spread_jpy, then the state columns av_pp, cv_pp.
claim_expenses is its own column and expenses is acquisition and maintenance only: the
two are driven by different levers — the death decrement and the in-force count — and
folding one into the other hides which moved.
conversions is the 解約返戻金 leaving the dollar ledger where a target hit is taken as
a conversion rather than as a surrender: it is not a claim — the liability continues in
yen, out of this model’s scope — so it is booked apart from claims_lapse rather than
inside it, and it is a column of zeros on every model point without the rider.
Roll-forward identity: the
table terminates, so every policy leaves by one of the two decrements and Σ D(t) + Σ S(t) = 1 with l(T) = 0 — with the target conversion, where the rider is elected, as the third
and only other exit, so the identity is Σ D(t) + Σ S(t) + Σ conv(t) = 1 in general and
collapses to the first form wherever the rider is off. check_pols_roll_fwd() takes no
argument and returns a bool, with the per-t residual at
check_pols_roll_fwd_resid(t).
Policyholder behavior modeling#
All dynamic forms are std reference constructions.
Base surrender. The two duration tables in class (c). The LEVEL table has no public anchor; the SINGLE table has one good one and is fitted to it.
Dynamic surrender on the FX rate std (optional module, off in base). The economically natural driver on this product is not the crediting rate but the currency: a policyholder in yen profit surrenders, one in yen loss holds on. A reference multiplier on the SINGLE shape:
w_dyn(t) = w(t) × min(2.5, max(0.5, 1 + β × (CV(t) × (e(t) − s) / P_jpy0 − 1)))
with
β= 2.0 std andP_jpy0= the yen the policyholder actually paid,single_premium × (e(0) + s). Under the base run’s flat FX path this multiplier moves only with the account value, which is precisely the limitation named below.The target-value rider is a path-dependent option and a deterministic run values it at intrinsic only. On a single deterministic path the rider either converts at one determinate month or never converts; its time value — the value of the right to convert on whichever future path happens to reach the target first — is zero by construction. This is the same degeneracy
uklib’s RPI ratchet suffers under a monotone index path, and it must be stated, not smoothed: a deterministic projection can price the conversion event correctly and cannot price the option at all. A scenario set is the only instrument that can, and this library does not ship one.What happens at a target hit is an election, not a mechanic. The contract converts to a yen whole life [S8] [S9]. The observed population does something else: at every focus-monitored distributor most ターゲット型 policies are surrendered on reaching the target and the same product is immediately re-sold to the same customer, charging the front-loaded commission twice R5 R6. The model carries
target_action ∈ {convert, surrender}with no default, because the contract and the evidence disagree and neither is the modeller’s to assume silently.The test is on the surrender value, not the account value [S9]. The worked example measures what that costs: thirteen months.
The one-year dead zone is contractual [S9] and interacts with the surrender charge, which is 7.0% and 6.3% over exactly that window [S3].
自動振替貸付. Inherited unchanged on the LEVEL shape, absent on the SINGLE shape. A policy does not lapse while the account value can carry the premium, so applying a lapse rate to unpaid premiums without first running the APL test models a decrement the contract does not have (the whole life technical notes (終身保険)).
復活 is not modelled std, as on the chassis; every exit is terminal, which understates later-duration in force.
免責 incidence is zero in the base run std. Where a death claim is refused the 積立金 is still paid [S2] — a real cash flow on an account-value product, with no analogue on a pure protection product.
Worked example#
Anchor cell (point_id = 1). Male, 契約年齢 40 (満年齢), LEVEL shape, 米ドル建, 基本保険金額
US$100,000, 保険期間 終身, 保険料払込期間 60歳払込満了 (n = 240 monthly premiums), 月払保険料 US$239.60
[S2], 低解約返戻金特則 off, 積立利率 held at the guaranteed floor 3.00% [S2], e = ¥159.43
per US$1 held flat [S11], s = ¥0.50. T = 12 × (109 − 40 + 1) = 840 months, attained
ages 40 to 109.
Every assumption value the cell uses. q from the canonical proxy for
生保標準生命表2018(死亡保険用)男 with mort_be_factor = 1.00, log-linear in ln q between the sourced
anchors and rounded to five decimals — q40 = 0.00118, q41 = 0.00128, q42 = 0.00139, q43 =
0.00151, q44 = 0.00163, q45 = 0.00177 (q40 and q45 are anchors, the four between them are
interpolated), and q50 = 0.00285, q60 = 0.00653, q90 = 0.15760 at the anchors themselves
REG-R18; the interpolation is std and the anchors are not. lapse_rate = 8% / 7% /
6% / 5% in policy years 1 to 4, then 5% to year 10, 4% to year 20 and 3% thereafter
std, by the class (c) table. Charges φ1 = 0.38, φ2 = 0.13, μ = 0.005
std, derived immediately below. Expenses E0 = US$300, c0 = 0.90, c_r = 0.03,
e_m(t) = US$60/12 × 1.01^floor(t/12), ec = US$150, all std. Monthly conversions:
q_m(40) = 1 − (1 − 0.00118)^(1/12) = 0.0000983866; w_m(year 1) = 1 − (1 − 0.08)^(1/12) = 0.0069243826; 1 + j = 1.03^(1/12) = 1.0024662698.
Calibration of the charge stack#
Three parameters against nine published dollar figures on the guaranteed column [S2],
surrender values taken net of the 解約控除 scale of product-spec.md footnote 20:
duration |
|
model |
model |
published 解約返戻金 |
difference |
|---|---|---|---|---|---|
3 |
4.9% |
5,895.43 |
5,606.56 |
5,557 |
+49.56 (+0.89%) |
5 |
3.5% |
11,030.45 |
10,644.39 |
10,822 |
−177.61 (−1.64%) |
7 |
2.1% |
16,389.60 |
16,045.42 |
16,332 |
−286.58 (−1.75%) |
10 |
0.0% |
24,854.87 |
24,854.87 |
25,082 |
−227.13 (−0.91%) |
15 |
0.0% |
40,224.87 |
40,224.87 |
40,128 |
+96.87 (+0.24%) |
20 |
0.0% |
57,431.26 |
57,431.26 |
57,329 |
+102.26 (+0.18%) |
30 |
0.0% |
69,377.65 |
69,377.65 |
69,516 |
−138.35 (−0.20%) |
40 |
0.0% |
81,529.59 |
81,529.59 |
81,350 |
+179.59 (+0.22%) |
50 |
0.0% |
90,686.78 |
90,686.78 |
90,715 |
−28.22 (−0.03%) |
Three parameters reproduce a carrier’s whole published run to within 1.75% at every one
of nine durations spanning forty-seven years, and to 0.03% at duration 50. The stack is a
back-solve, so it is re-solved whenever its inputs move: adopting the library’s canonical
mortality proxy changed qc at every attained age above 40 and φ2 re-solved from 12% to
13% with φ1 and μ unmoved. Cumulative
premium checks independently: 240 × 239.60 = US$57,504.00, the published 払込保険料累計額 at 20
years [S2]; 36 × 239.60 = 8,625.60, published as 8,626 because the booklet rounds the
cumulative premium up to the whole dollar while rounding surrender values down [S2].
Cross-check against the other published table — the 低解約返戻金特則 form, premium US$225.00, kl
= 0.70 through the suppressed period — with the same charge parameters: model CV of
3,669.20 / 6,966.38 / 10,498.61 / 16,252.70 / 26,266.61 at durations 3 / 5 / 7 / 10 / 15
against published 3,560 / 7,081 / 10,824 / 16,892 / 27,706, and 53,475.52 against 53,029 at
duration 20 where kl releases to 1.00 [S2]. The worst deviation is −5.20% at duration
15. That is a genuine cross-validation and it is looser than the primary fit, as it should
be: the 特則 form is a different contract with a different premium, and its charge rates were
not fitted. One feature of the published 特則 table is not reproducible and is flagged
rather than fitted: it prints surrender values at durations 30, 40 and 50 that are
identical to the ordinary form’s, although the two forms have paid different premiums and
hold different funds at duration 20 (53,029 against 57,329). No recursion produces that
convergence; the identity is unverified and the 特則 fit is anchored only on durations ≤ 20.
First periods of the base run#
Per policy issued, income-positive, in US dollars. av_pp and cv_pp are stated at the
end of the month, i.e. AV(t+1) and CV(t+1).
t |
|
premiums |
claims_death |
claims_lapse |
claim_expenses |
expenses |
commissions |
|
|
|
|---|---|---|---|---|---|---|---|---|---|---|
0 |
1.000000 |
239.6000 |
9.8387 |
0.8951 |
0.0148 |
305.0000 |
2,587.6800 |
−2,663.8285 |
139.01 |
129.28 |
1 |
0.992978 |
237.9175 |
9.7696 |
1.7795 |
0.0147 |
4.9649 |
0.0000 |
+221.3889 |
278.31 |
258.83 |
2 |
0.986005 |
236.2468 |
9.7010 |
2.6533 |
0.0146 |
4.9300 |
0.0000 |
+218.9479 |
417.92 |
388.67 |
3 |
0.979081 |
234.5879 |
9.6328 |
3.5167 |
0.0144 |
4.8954 |
0.0000 |
+216.5285 |
557.83 |
518.78 |
4 |
0.972206 |
232.9406 |
9.5652 |
4.3697 |
0.0143 |
4.8610 |
0.0000 |
+214.1303 |
698.03 |
649.17 |
5 |
0.965379 |
231.3049 |
9.4980 |
5.2125 |
0.0142 |
4.8269 |
0.0000 |
+211.7532 |
838.54 |
779.84 |
… |
||||||||||
119 |
0.554213 |
132.7893 |
11.9760 |
58.7416 |
0.0180 |
3.0307 |
3.9837 |
+55.0395 |
24,854.87 |
24,854.87 |
239 |
0.353031 |
84.5862 |
17.6411 |
68.8206 |
0.0265 |
2.1325 |
2.5376 |
−6.5721 |
57,431.26 |
57,431.26 |
240 |
0.351656 |
0.0000 |
19.1935 |
51.2541 |
0.0288 |
2.1454 |
0.0000 |
−72.6218 |
57,525.60 |
57,525.60 |
Trace, month 0. C_init = 0.38 × 239.60 = 91.0480; AVg = 0 + 239.60 − 91.0480 = 148.5520; C_maint = (0.005/12) × 148.5520 = 0.0618967; the fund before the mortality
charge is 148.4901033, so the net amount at risk is 100,000 − 148.4901033 = 99,851.5098967 and C_coi = 0.0000983866 × 99,851.5098967 = 9.8240461; AV(1) = (148.5520 − 0.0618967 − 9.8240461) × 1.0024662698 = 138.6660572 × 1.0024662698 = 139.0080451. sc(1) = 7.0%, so CV(1) = 139.0080451 × 0.93 = 129.2774820. Decrements: D(0) = 1 × 0.0000983866, death claims = 100,000 × 0.0000983866 = 9.8386555; S(0) = (1 − 0.0000983866) × 0.0069243826 = 0.0069237014, surrender benefits = 129.2774820 × 0.0069237014 = 0.8950787. Expenses = 300.00 + 60/12 = 305.0000000 and, on its
own line, claim expense = 150 × 0.0000983866 = 0.0147580; commission = 0.90 × 12 × 239.60 = 2,587.6800. CF(0) = 239.6000 − 9.8386555 − 0.8950787 − 0.0147580 − 305.0000000 − 2,587.6800 = −2,663.8284922. Update: l(1) = (1 − 0.0000983866) × (1 − 0.0069243826) = 0.9929779.
Trace, month 1. Premiums = 239.60 × 0.9929779 = 237.9175077. AVg = 139.0080451 + 148.5520 = 287.5600451; C_maint = 0.1198167; C_coi = 0.0000983866 × (100,000 − 287.4402284) = 9.8103753; AV(2) = (287.5600451 − 0.1198167 − 9.8103753) × 1.0024662698 = 278.3145633; CV(2) = 278.3145633 × 0.93 = 258.8325438. D(1) = 0.9929779 × 0.0000983866 = 0.0000976956, claims = 9.7695676; S(1) = 0.9929779 × (1 − 0.0000983866) × 0.0069243826 = 0.0068750825, surrender benefits = 258.8325438 × 0.0068750825 = 1.7794951. Maintenance = 5.0000 × 0.9929779 = 4.9648896 (the inflation factor is 1.01^0 = 1 for months 0–11); claim
expense = 0.0146544; no commission (renewal starts at t = 12). CF(1) = 237.9175077 − 9.7695676 − 1.7794951 − 0.0146544 − 4.9648896 = 221.3889011.
Trace, month 2. Premiums = 239.60 × 0.9860051 = 236.2468301. AVg = 278.3145633 + 148.5520 = 426.8665633; C_maint = 0.1778611; C_coi = 0.0000983866 × (100,000 − 426.6887022) = 9.7966751; AV(3) = 416.8920271 × 1.0024662698 = 417.9201953; CV(3) = 388.6657816. D(2) = 0.0000970096, claims = 9.7009649; S(2) = 0.0068268051, surrender
benefits = 2.6533455; maintenance expense = 4.9300257 and claim expense = 0.0145514.
CF(2) = 236.2468301 − 9.7009649 − 2.6533455 − 0.0145514 − 4.9300257 = 218.9479426.
The yen ledger, month 0. Three translations, not one. Premium 239.6000 × (159.43 + 0.50) = ¥38,319.23; benefits (9.8386555 + 0.8950787) × (159.43 − 0.50) = ¥1,705.91;
expenses and commission (0.0147580 + 305.0000000 + 2,587.6800) × 159.43 = ¥461,182.33.
net_cf_jpy(0) = ¥−424,569.01, against net_cf(0) × 159.43 = ¥−424,694.18 — a difference
of ¥125.17, which is exactly the spread income 0.50 × (239.6000 + 10.7337342). The
two figures are both correct and mean different things, and a model that publishes only
the second has
silently given the spread away.
Whole-run totals, undiscounted, per policy issued: premiums US$34,036.04; death claims
US$20,911.81; surrender benefits US$23,345.07; claim expense US$31.37; acquisition and
maintenance expense US$1,536.77; commission US$3,525.76; Σ CF(t) = −US$15,314.73.
Σ D(t) = 0.209118071 and Σ S(t) = 0.790881929, summing to 1.000000000, with
pols_if(840) = 0. In yen: premiums ¥5,443,383; benefits ¥7,033,745; expenses and
commission ¥812,120; Σ net_cf_jpy = ¥−2,402,482, against Σ net_cf × 159.43 = ¥−2,441,628 — the ¥39,146 gap being the whole-run FX spread income. Two structural facts
fall out of these totals: 85.2% of expected death claims arrive after 払込満了, and
surrenders take 79.1% of the cohort out against mortality’s 20.9%, so this is a lapse-driven
liability wearing a mortality product’s clothes.
The MVA and the target conversion, on the SINGLE shape#
Model point: 一時払保険料 US$100,000, 基本保険金額 equal to it [S3], issue age 60, 契約初期費用 4.50%
[S10] so the fund after the premium and that charge is US$95,500.00 — AV(0) itself is
zero on the convention above, which reads it before the month’s premium — 積立利率 4.72%
fixed for a 15-year 積立利率適用期間 [S4], 目標値 g = 110%, flat FX and a flat rate path. Yen
premium paid = 100,000 × 159.93 = ¥15,993,000; 目標額 = 1.10 × that = ¥17,592,300.
At month 36, twelve years remaining, the MVA against a range of rate moves is
|
+2.0% |
+1.0% |
0.0% |
−1.0% |
−2.0% |
|---|---|---|---|---|---|
|
+0.155947 |
+0.085368 |
+0.008118 |
−0.076506 |
−0.169292 |
|
87,194.38 |
94,934.87 |
103,406.90 |
112,687.73 |
122,863.68 |
Two things to read off it. The zero-move column is not zero — the published table’s zero
column sits at Δ = −0.1% [S3], so a contract surrendered with the market exactly where it
started still pays an MVA of 0.81%. And at Δ = −1.0% the yen-converted surrender value is
already ¥17,909,461, above the 目標額, at duration three: a fall in interest rates triggers
the target conversion, entirely without help from the crediting rate or the currency.
On the flat path the target is reached at month 52 (four years four months), where AV = 116,626.82, mva = 0.007219, sc = 4.2%, CV = 110,886.51 and CV × 158.93 = ¥17,623,193 ≥ ¥17,592,300. Three counterfactuals measure the mechanics that the trigger is easy to get
wrong about: testing the account value instead of the surrender value hits at month
39, thirteen months early; ignoring the 解約控除 alone hits at month 41; ignoring the MVA
alone hits at month 50. The 解約控除 moves the trigger further than the MVA does because it is
the larger deduction over exactly this window — sc of 4.9% at month 41 then 4.2% at month
52, against an mva of 0.78% and 0.72% at the same two months — so dropping it must
trigger earlier, and the two counterfactuals order accordingly.
Under the flat path the conversion is exercised once and its option value is zero — see the
note on intrinsic value above.
Valuation and reserve pointers#
This library projects gross liability cash flows. Every valuation layer consumes them and is cited, never reproduced.
Standard policy reserve (hyōjun sekinin-junbikin, 標準責任準備金). 保険業法第116条 obliges the reserve and delegates the method and coefficients REG-R4; 施行規則第68条 fixes the scope and 第69条 the taxonomy — 保険料積立金, 未経過保険料, 払戻積立金, contingency reserve (kiken junbikin, 危険準備金) REG-R7 REG-R8; 平成8年大蔵省告示第48号 sets 平準純保険料式 with no Zillmer adjustment, the table vintages and the standard valuation interest rate (hyōjun riritsu, 標準利率) machinery REG-R10. The product-specific fact is the date: USD- and AUD-denominated contracts entered the regime only on 1 October 2021, with the 平成13年金融庁告示第24号 changes from 1 April 2022, and every other foreign currency remains outside the 対象契約 R1 REG-R12. The USD 標準利率 is built from A-rated same-currency corporate bond yields at 10 and 20 years through banded 安全率係数, reset off a 基準日 on the 1st of every month R1. No retrieved page publishes the resulting numeric rate, so this library asserts none; the carrier-published 基準利率 and 市場価格調整用利率 series [S4] [S12] [S14] are proxies for the level, not the statutory rate. An 積立利率変動 contract stays in scope because 施行規則第68条 excludes contracts whose 約款 lets the insurer change the 予定利率, not contracts whose crediting rate floats above a fixed one REG-R7. 価格変動準備金 is asset-driven and out of scope REG-R3, but carries an FX-specific rule worth naming: computed inside the 責任準備金 of 外貨建て保険 its asset scope must come from the matching segment on a segregated basis, and the 危険準備金Ⅱ for those contracts must use the 外貨建て保険 risk coefficient R4.
ESR. From 31 March 2026 insurers are supervised on 経済価値ベースのソルベンシー規制, liabilities at 現在推計 plus MOCE, re-measured at each 基準日, calibrated in principle to 99.5%, with early corrective action below 100%, replacing the ソルベンシー・マージン比率 200% trigger REG-R15 REG-R17. This projection is the 現在推計 cash-flow engine and nothing more:
BEL = Σ_t v(t) × [outgo(t) − income(t)], withv(t), MOCE and the standard-formula coefficients out of scope — the 柱告示 were not opened and their coefficients are unverified REG-R16. 為替 is a named market-risk category in the standard model REG-R15, and this is the one product in the library whose liability is denominated in a currency the capital requirement charges for directly. The old basis was ロックイン; a contract whose crediting rate is redeclared monthly and whose surrender value moves with market rates is exactly the contract a locked-in basis cannot describe.The 意見書 chain. 保険業法第121条第1項第1号 requires the 保険計理人, appointed under 第120条, to confirm the reserve is soundly accumulated REG-R5 REG-R6; the IAJ 実務基準 turns that into the 1号収支分析, a forward income-and-outgo analysis over at least ten future years by segment under prescribed scenarios, addressing MVA and foreign-currency business explicitly REG-R22. That is the shape of the output above.
Accounting. IFRS 17 is not mandatory in Japan — IFRS applies as 指定国際会計基準 on a voluntary basis REG-R47. J-GAAP statutory reserving, the ESR economic balance sheet and IFRS 17 are three bases over one set of projected cash flows, and this model keeps the cash flows basis-agnostic.
Disclosure, binding on the outputs rather than on the valuation. The 監督指針 requires an MVA product to illustrate the proportion deducted from the 保険料積立金 at surrender and to disclose the in-force charges, and requires an 外貨建て保険 to state that the yen-converted benefit can fall below the yen-converted premium R3 REG-R14; the 適正表示ガイドライン requires the 実質的な利回り beside the 積立利率, measured where the MVA, the rate-variation period and the surrender charge have all expired R8. On the anchor cell that point is duration 20, and the model can produce it; the library does not publish it, because a yield is a pricing statement and this is a cash-flow model.
Key sensitivities and model risks#
In rough order of leverage:
The crediting rate. The base run sits on the guaranteed floor, which is the only crediting figure for this shape that is a contract term [S2] — and the only one available, since the declared-rate history page is not machine-fetchable [S16]. Moving from 3.00% to 4.00% moves the published 50-year surrender value from 90,715 to 141,257, a factor of 1.56 [S2]. Every non-guaranteed element in the product — the uplift, the 特別積立金, the whole surrender-value run — is a function of this one lever.
The charge stack.
φ1,φ2andμare three std parameters carrying the entire surrender-benefit stream, calibrated to one carrier’s published table for one model point [S2]. The fit at other issue ages, sexes and premium terms is unverified, because no second complete run exists in the retrieved set. A user with a real 算出方法書 replaces the three and changes nothing else.The currency layer. The spread is 0.63% on a round trip and is charged on every crossing; the level of
e(t)scales the whole yen ledger linearly and the whole dollar ledger not at all. The base run’s flat path is a modelling decision, not a forecast, and it is the assumption a reviewer should challenge second.SINGLE-shape persistency. A four-year exit of 60.9% against an industry 解約・失効率 of 5.6% R5 REG-R31 means the liability is realized in a handful of years, and the surrender charge and MVA both bind over exactly that window. The LEVEL curve, by contrast, rests on no public evidence at all.
The MVA’s deterministic degeneracy. The reconstruction reproduces the published table exactly, but
Δ(t)is an input, and a deterministic run holds it at zero — which is not a neutral choice, because the zero column sits at −0.1% and a flat path therefore still charges 0.81% at twelve years remaining. What a deterministic projection cannot say is anything about the MVA’s convexity or about the value of the surrender option it prices.The target rider’s option value is zero by construction in this model. A book of ターゲット型 contracts is a book of short options on the FX-and-rate path, and their intrinsic valuation understates the liability by whatever the time value is — a number this library does not compute and does not estimate.
The uplift’s definition.
AV0is not a published quantity, and the two defensible definitions differ by US$8.73 at 払込満了 and by US$22,617.69 at the terminal month.The horizon. ω = 109 male / 113 female; 85.2% of expected death claims fall after 払込満了. Truncating the projection at 払込満了, or at age 100, is a direct understatement.
Known modeling pitfalls:
The policy currency is the model currency; yen is a translation. Every state variable and every cash flow is in US dollars. A yen figure enters only through
e(t)ands, and the exchange rate is a model point column, never a literal in a formula.net_cf_jpy(t) ≠ net_cf(t) × e(t). Premiums translate ate + s, benefits ate − s, expenses and commission ate. On the anchor cell the difference is ¥125.17 in month 0 and ¥39,146 over the run — the insurer’s spread income, which disappears if the net figure is translated at one rate [S1] [S3].The account-value charges are not cash flows.
C_init,C_maintandC_coimoveav_ppand appear nowhere innet_cf. Booking a charge as revenue alongside the premium that funded it double-counts the premium.av_ppis notcv_pp.CV = AV × (1 − mva − sc) × kl, and all three factors can be active at once on the SINGLE shape. Paying a surrender onav_ppoverstates every early surrender by up to 7% plus the MVA [S3].The MVA is not a charge. It is symmetric, it can be negative, and a fall in rates increases the surrender value [S3] R8. Implementing it as a deduction floored at zero models a different product. It is also zero on an 積立利率計算基準日 and inside a one-year 積立利率適用期間, and identically zero on the whole LEVEL shape [S2] [S3] — a discontinuity a monthly model must place on the right month.
The surrender charge’s base is the 積立金. Three different bases are in use across the market — the account value, the 責任準備金 and the 基本保険金額 [S3] [S7] [S13] — and a rate quoted against one means nothing against another. Applying 7.0% to
SAinstead ofAVis wrong by a factor of several at early durations.The target test runs on the surrender value, after FX and MVA [S9]. Testing the account value converts thirteen months early on the base SINGLE cell (month 39 against month 52), and the error grows with any rate move.
The one-year dead zone is real. A target reached inside the first year does not trigger [S9]; a model that converts at month 6 has invented a contract term.
The uplift and the top-up are identically zero on the guaranteed run.
IDB(t) ≡ 0and 特別積立金 ≡ 0 wheneveric = i0, and the published 3.00% column shows (0) at both 10 and 20 years [S1] [S2]. A non-zero value on the base run is a bug, not a refinement.mort_be_factormust not move the cost-of-insurance charge. The decrement is an experience assumption; the charge basis is a pricing element REG-R2. Wiring one lever to both makes the model absorb its own mortality sensitivity inside the account value.The APL is absent on the SINGLE shape. There is no premium to advance, so the two shapes have different decrement sets, not merely different rates [S2] [S3]. A SINGLE point that carries a premium-default decrement is modelling a contract that does not exist.
The crediting month is the policy month. The rate is declared on the 1st and applied from the 月単位の契約応当日 [S2]; crediting on calendar month ends is wrong for the life of the contract.
(1 + ic)^(1/12), notic/12. The convention is std and the published run is reproduced to the dollar, so a nominal-over-12 implementation will miss the fit table above.The 低解約返戻金 release is a step.
klmoves 0.70 → 0.775 → 0.85 → 0.925 → 1.00 on whole remaining years, rounded up, with the clawback keeping a non-paying cohort suppressed past 払込満了 [S2]. Interpolating across the boundary is wrong, as it is on the chassis.The account value can overtake the sum assured. On the anchor cell
AVcrosses US$100,000 at month 740 (attained age 101), after which the net amount at risk is zero and the cost-of-insurance charge stops. In-force there is 0.000579, so the effect is immaterial in expectation and structural in the code:C_coimust be floored at zero and the death benefit must not be silently floored atAV.The account value can also be exhausted, and the charge must stop there.
C_coiis capped atmax(0, AVg(t) − C_maint(t))std, so the 積立金 never runs negative. The cap binds on the 低解約返戻金特則 cell; without it the shortfall compounds into the net amount at risk and the projection diverges.A refused claim still pays the fund. Where a death benefit is excluded the 積立金 or 解約返戻金 is paid [S2]. Modelling an exclusion as a zero-payment event overstates the insurer’s position — a pure protection product’s habit that does not transfer.