The InnerProj Space (TradLife_A_EX1)#

Inner projection that re-runs the cashflows under a single life stress.

This Space is the engine behind the Solvency II life-risk results in Projection. Each ItemSpace InnerProj[t0, risk, shock] re-runs the per-policy projection from the valuation time t0 under one prescribed life stress, so that the stressed present value of net cashflows can be compared with the unstressed (baseline) one by risk_life_sub().

It inherits all cashflow and present-value Cells from TradLife_A.BaseProj and TradLife_A.PV, and overrides only the Cells needed to anchor the projection at t0 and to apply the stress. The unstressed mortality, lapse and renewal-commission rates are taken from the outer projection and scaled by the shock; the acquisition and maintenance expenses are recomputed locally so they pick up the stressed inflation_factor().

Parameters and References#

t0#

Valuation time the inner projection is anchored at; at t0 the in-force equals that of the outer projection.

Type:

int

risk#

A LifeRiskID code selecting the life sub-risk to stress. Defaults to BASE (0), the unstressed run.

Type:

int, optional

shock#

A LapseShockID code selecting the lapse shock (UP, DOWN or MASS) when risk is LAPSE. Defaults to 0.

Type:

int, optional

Cells Summary#

Overridden Cells#

The following Cells override their TradLife_A.BaseProj counterparts to anchor the projection at t0 and to apply the life shocks.

pols_if(t)

Number of policies: End of period.

pols_if_beg1(t)

Number of policies: Beginning of period 1.

pols_lapse_mass(t)

Number of policies that instantly surrender under the mass-lapse shock.

claims_surr(t)

Surrender benefits.

claims_surr_mass_pp(t)

Surrender benefit per policy for the instantaneous mass-lapse surrenders.

mort_rate(x)

Mortality rate at age x with the mortality / longevity shock applied.

lapse_rate(t)

Surrender Rate

expense_acq_pp(t)

Acquisition expense per policy with the expense shock applied.

expense_maint_pp(t)

Maintenance expense per policy with the expense shock applied.

commissions_ren_pp(t)

Renewal commission per policy with the expense shock applied.

inflation_factor(t)

Expense inflation factor with the expense-inflation shock applied.

Cells Descriptions#

pols_if(t)[source]#

Number of policies: End of period.

The inner projection is anchored at the valuation time t0 (where this returns the outer projection’s in-force) and is defined only for t >= t0. Present values are taken at t0 (e.g. TradLife_A.PV.pv_net_cf at t0), so the t < t0 region is never reached in normal use; evaluating any in-force cell there would recurse without terminating.

pols_if_beg1(t)[source]#

Number of policies: Beginning of period 1.

Overrides the base cell to remove the instantaneous mass-lapse surrenders (pols_lapse_mass()) from the in-force at the start of the period, so the mass lapsers drop out instantly under the Solvency II mass-lapse shock. Identical to the base cell for every other risk / shock, where pols_lapse_mass() is zero.

pols_lapse_mass(t)[source]#

Number of policies that instantly surrender under the mass-lapse shock.

Solvency II models mass lapse as an instantaneous discontinuance at the valuation time t0 rather than an elevated surrender rate spread over the year. At t == t0 a segment-dependent fraction (the LAPSE / MASS factor from the LifeShocks input, selected by segment()) of the policies in force at the beginning of the period instantly surrenders. The amount is removed from pols_if_beg1() so those policies neither pay premiums nor are exposed to mortality or ongoing lapse during the period, and is added to the surrender benefit in claims_surr(). It is zero for every other risk / shock and for t != t0.

Mirrors Override.LapseMass.PolsSurrMass in the solvency2 library.

claims_surr(t)[source]#

Surrender benefits.

Overrides the base cell so the surrender benefit is paid on both the ongoing surrenders (pols_lapse()) and the instantaneous mass-lapse surrenders (pols_lapse_mass()). The ongoing surrenders receive the mid-period average cash value (TradLife_A.BaseProj.claims_surr_pp), while the mass-lapse surrenders receive the cash value at time t (claims_surr_mass_pp()).

claims_surr_mass_pp(t)[source]#

Surrender benefit per policy for the instantaneous mass-lapse surrenders.

The ongoing surrenders are assumed to occur throughout the period, so TradLife_A.BaseProj.claims_surr_pp pays the mid-period average of the cash value at t and t+1. The mass-lapse surrenders, by contrast, occur instantaneously at the valuation time, so the benefit is the cash value at time t only (TradLife_A.BaseProj.cash_value_rate at t).

mort_rate(x)[source]#

Mortality rate at age x with the mortality / longevity shock applied.

The unstressed rate is taken from the outer projection (TradLife_A.BaseProj.mort_rate). Under the MORT risk it is increased and under the LONGV risk it is decreased, by the factor read from the LifeShocks input via life_shock_param(). For any other risk the unstressed rate is returned unchanged.

lapse_rate(t)[source]#

Surrender Rate

The unstressed rate is taken from the outer projection (TradLife_A.BaseProj.lapse_rate); the lapse-up / lapse-down shocks scale it (capped by the LIMIT factor), while the mass-lapse shock leaves the ongoing rate unchanged (it is modelled by pols_lapse_mass() instead).

expense_acq_pp(t)[source]#

Acquisition expense per policy with the expense shock applied.

Recomputes the acquisition expense locally (mirroring TradLife_A.BaseProj.expense_acq_pp) so it uses this Space’s stressed inflation_factor(), then under the EXPS risk increases it by the factor read from the LifeShocks input via life_shock_param(). For any other risk the unstressed amount is returned.

expense_maint_pp(t)[source]#

Maintenance expense per policy with the expense shock applied.

Recomputes the maintenance expense locally (mirroring TradLife_A.BaseProj.expense_maint_pp) so it uses this Space’s stressed inflation_factor(), then under the EXPS risk increases it by the factor read from the LifeShocks input via life_shock_param(). For any other risk the unstressed amount is returned.

commissions_ren_pp(t)[source]#

Renewal commission per policy with the expense shock applied.

The unstressed renewal commission is taken from the outer projection (TradLife_A.BaseProj.commissions_ren_pp); under the EXPS risk it is increased by the factor read from the LifeShocks input via life_shock_param(). For any other risk the unstressed amount is returned unchanged.

inflation_factor(t)[source]#

Expense inflation factor with the expense-inflation shock applied.

Overrides TradLife_A.BaseProj.inflation_factor to compound at a stressed inflation rate under the EXPS risk: the base rate plus the INFL factor read from the LifeShocks input via life_shock_param() (a +1 percentage-point stress). The locally recomputed expenses (expense_maint_pp(), expense_acq_pp()) therefore inflate faster. For any other risk it equals the unstressed factor.