src.projection_entities.people.annuitants.Annuitants¶
- class src.projection_entities.people.annuitants.Annuitants(time_steps: TimeSteps, data_sources: AnnuityDataSources)¶
One or more annuitants.
Inheritance Diagram

Variables & Properties
Returns the primary annuitant.
Returns the secondary annuitant.
Data sources to initialize projection values.
List of annuitants
\({_t}q_x\) - Probability of death for the primary annuitant.
\({_t}q_y\) - Probability of death for the secondary annuitant.
Base lapse rate.
Base lapse rate multiplier.
\({_t}q_{lapse}\) - Final lapse rate.
\({_t}q_{annuitization}\) - Annuitization rate.
\(l_{xy}\) - Policy count - both alive.
\(l_{x}d_{y}\) - Policy count - only primary annuitant alive.
\(l_{y}d_{x}\) - Policy count - only secondary annuitant alive.
\(d_{xy}\) - Policy count - both dead.
\(d_{lapse}\) - Policy count - lapsed.
\(d_{annuitization}\) - Policy count - annuitized.
Methods
__init__(time_steps, data_sources)Constructor method.
Projects annuitants forward by one time step.
write_projection_values(output_file_path)Writes all
ProjectionValueattributes in this projection entity to a CSV file.Convenience method that writes
ProjectionValueattributes for itself, as well as any nestedProjectionEntityattributes.Details
- __init__(time_steps: TimeSteps, data_sources: AnnuityDataSources)¶
Constructor method. Initializes a list of annuitants from the
annuitants data source.- Parameters:
time_steps – Projection-wide timekeeping object.
data_sources – Annuity data sources.
- base_lapse_rate: ProjectionValue¶
Base lapse rate.
- d_annuitization: ProjectionValue¶
\(d_{annuitization}\) - Policy count - annuitized.
- d_lapse: ProjectionValue¶
\(d_{lapse}\) - Policy count - lapsed.
- d_xy: ProjectionValue¶
\(d_{xy}\) - Policy count - both dead.
- data_sources: AnnuityDataSources¶
Data sources to initialize projection values.
- init_t: date¶
Initial time step. Marks when this entity first came into existence.
- l_x_d_y: ProjectionValue¶
\(l_{x}d_{y}\) - Policy count - only primary annuitant alive.
- l_xy: ProjectionValue¶
\(l_{xy}\) - Policy count - both alive.
- l_y_d_x: ProjectionValue¶
\(l_{y}d_{x}\) - Policy count - only secondary annuitant alive.
- lapse_multiplier: ProjectionValue¶
Base lapse rate multiplier.
- property primary_annuitant: Annuitant¶
Returns the primary annuitant. Primary annuitant is the youngest annuitant.
- Returns:
Primary annuitant.
- property secondary_annuitant: Annuitant | None¶
Returns the secondary annuitant. Secondary annuitant is the oldest annuitant. Returns
Noneif there is no secondary annuitant.- Returns:
Secondary annuitant.
- t_q_annuitization: ProjectionValue¶
\({_t}q_{annuitization}\) - Annuitization rate.
- t_q_lapse: ProjectionValue¶
\({_t}q_{lapse}\) - Final lapse rate.
- t_q_x: ProjectionValue¶
\({_t}q_x\) - Probability of death for the primary annuitant.
- t_q_y: ProjectionValue¶
\({_t}q_y\) - Probability of death for the secondary annuitant.
- update_decrements() None¶
Projects annuitants forward by one time step. Decrements are applied in the order of:
Annuitization
\[d_{annuitization_t} = d_{annuitization_{t - 1}} + \biggl(l_{xy_{t-1}} + l_{x}d_{y_{t-1}} + l_{y}d_{x_{t-1}}\biggr) \times {_t}q_{annuitization}\]Lapse
\[d_{lapse_t} = d_{lapse_{t - 1}} + \biggl(l_{xy_{t-1}} + l_{x}d_{y_{t-1}} + l_{y}d_{x_{t-1}}\biggr) \times {_t}q_{lapse} \times (1 - {_t}q_{annuitization})\]Mortality
Let policyholder behavior survivorship at time \(t\) be:
\[p_{pb_t} = (1 - {_t}q_{lapse}) \times (1 - {_t}q_{annuitization})\]Then, at time \(t\):
\[ \begin{align}\begin{aligned}l_{xy_t} = l_{xy_{t-1}} \times (1 - {_t}q_x) \times (1 - {_t}q_y) \times p_{pb_t}\\l_{x}d_{y_t} = l_{x}d_{y_{t-1}} \times (1 - {_t}q_x) + \biggl(l_{x}d_{y_{t-1}} \times (1 - {_t}q_x) + l_{xy_{t-1}} \times {_t}q_y \times (1 - {_t}q_x)\biggr) \times p_{pb_t}\\l_{y}d_{x_t} = l_{y}d_{x_{t-1}} \times (1 - {_t}q_y) + \biggl(l_{y}d_{x_{t-1}} \times (1 - {_t}q_y) + l_{xy_{t-1}} \times {_t}q_x \times (1 - {_t}q_y)\biggr) \times p_{pb_t}\\d_{xy_t} = d_{xy_{t-1}} + \biggl(l_{xy_{t-1}} \times {_t}q_x \times {_t}q_y + l_{x}d_{y_{t-1}} \times {_t}q_x + l_{y}d_{x_{t-1}} \times {_t}q_y\biggr) \times p_{pb_t}\end{aligned}\end{align} \]
- Returns:
Nothing.
- write_projection_values(output_file_path: str) None¶
Writes all
ProjectionValueattributes in this projection entity to a CSV file. Existing file will be overwritten.- Parameters:
output_file_path – Output file path.
- Returns:
Nothing.
- write_projection_values_recursively(output_file_path: str) None¶
Convenience method that writes
ProjectionValueattributes for itself, as well as any nestedProjectionEntityattributes.This function behaves recursively, writing output for all nested projection entities no matter how deeply they are nested.
- Parameters:
output_file_path – Output file path
- Returns:
Nothing.