src.projection_entities.products.annuity.riders.gmdb.rav.GmdbRav

class src.projection_entities.products.annuity.riders.gmdb.rav.GmdbRav(time_steps: TimeSteps, data_sources: AnnuityDataSources, gmdb_data_source: Gmdb)

GMDB Return of Account Value rider.

Inheritance Diagram

Inheritance diagram of GmdbRav

Variables & Properties

Methods

__init__(time_steps, data_sources, ...)

Constructor method.

process_charge(base_contract)

Every month, charges the base contract for the GMDB fee.

process_premiums(base_contract)

Adds premiums paid from the base contract into the benefit base.

update_benefit_base(base_contract)

Sets benefit base to account value.

update_net_amount_at_risk(base_contract)

Calculates and updates the Net Amount At Risk (NAAR):

write_projection_values(output_file_path)

Writes all ProjectionValue attributes in this projection entity to a CSV file.

write_projection_values_recursively(...)

Convenience method that writes ProjectionValue attributes for itself, as well as any nested ProjectionEntity attributes.

Details

__init__(time_steps: TimeSteps, data_sources: AnnuityDataSources, gmdb_data_source: Gmdb)

Constructor method.

Parameters:
  • time_steps – Projection-wide timekeeping object.

  • data_sources – Annuity data sources.

  • gmdb_data_source – GMDB rider data source.

benefit_base: ProjectionValue

Benefit base, used to calculate death benefit payout.

charge_amount: ProjectionValue

Charge amount, assessed against the account value.

charge_rate: ProjectionValue

Charge rate, used to calculate the charge amount.

data_sources: AnnuityDataSources

Data sources to initialize projection values.

init_t: date

Initial time step. Marks when this entity first came into existence.

net_amount_at_risk: ProjectionValue

Net Amount At Risk (NAAR).

process_charge(base_contract: BaseContract) None

Every month, charges the base contract for the GMDB fee.

\[GMDB \, charge = account \, value \times \frac{GMDB \, charge \, rate}{12}\]

\(GMDB \, charge \, rate\) is read from charge_rate().

Applies charge to the base contract using assess_charge().

Parameters:

base_contract – Base contract.

Returns:

Nothing.

process_premiums(base_contract: BaseContract) None

Adds premiums paid from the base contract into the benefit base.

Parameters:

base_contract – Base contract.

Returns:

Nothing.

time_steps: TimeSteps

Projection-wide timekeeping object.

update_benefit_base(base_contract: BaseContract) None

Sets benefit base to account value.

Parameters:

base_contract – Base contract.

Returns:

Nothing.

update_net_amount_at_risk(base_contract: BaseContract) None

Calculates and updates the Net Amount At Risk (NAAR):

\[NAAR = max(benefit\, base - account\, value, 0)\]
Parameters:

base_contract – Base contract.

Returns:

Nothing.

write_projection_values(output_file_path: str) None

Writes all ProjectionValue attributes 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 ProjectionValue attributes for itself, as well as any nested ProjectionEntity attributes.

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.