src.projection_entities.products.annuity.riders.gmwb.Gmwb

class src.projection_entities.products.annuity.riders.gmwb.Gmwb(time_steps: TimeSteps, data_sources: AnnuityDataSources, gmwb_data_source: Gmwb)

Guaranteed Minimum Withdrawal Benefit (GMWB) rider.

Inheritance Diagram

Inheritance diagram of Gmwb

Variables & Properties

data_sources

Data sources to initialize projection values.

benefit_base

Benefit base, used as a basis for withdrawals.

charge_rate

Charge rate, used to calculate the charge amount.

charge_amount

Charge amount, assessed against the account value.

withdrawal_program_active

Indicator to determine if the rider's withdrawal program has started.

av_active_withdrawal_rate

Withdrawal rate when account value is positive.

av_exhaust_withdrawal_rate

Withdrawal rate when account value is zero.

withdrawal

Withdrawal amount.

claim

Claim amount (withdrawals once account value is zero).

Methods

__init__(time_steps, data_sources, ...)

Constructor method.

process_charge(base_contract)

Every quarter, charges the base contract for the GMWB charge.

process_premiums(base_contract)

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

process_withdrawal(base_contract)

Calculates withdrawal amount:

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, gmwb_data_source: Gmwb)

Constructor method.

Parameters:
  • time_steps – Projection-wide timekeeping object.

  • data_sources – Annuity data sources.

  • gmwb_data_source – GMWB rider data source.

av_active_withdrawal_rate: ProjectionValue

Withdrawal rate when account value is positive.

av_exhaust_withdrawal_rate: ProjectionValue

Withdrawal rate when account value is zero.

benefit_base: ProjectionValue

Benefit base, used as a basis for withdrawals.

charge_amount: ProjectionValue

Charge amount, assessed against the account value.

charge_rate: ProjectionValue

Charge rate, used to calculate the charge amount.

claim: ProjectionValue

Claim amount (withdrawals once account value is zero).

data_sources: AnnuityDataSources

Data sources to initialize projection values.

init_t: date

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

process_charge(base_contract: BaseContract) None

Every quarter, charges the base contract for the GMWB charge.

\[GMWB \, charge = benefit \, base \times \frac{GMDB \, charge \, rate}{4}\]

\(GMWB \, 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.

process_withdrawal(base_contract: BaseContract) None

Calculates withdrawal amount:

\[withdrawal\, amount = withdrawal \, rate \times benefit \, base\]

\(withdrawal \, rate\) is read from GmwbBenefit.

Applies withdrawal to the base contract using process_withdrawal().

Parameters:

base_contract

Returns:

time_steps: TimeSteps

Projection-wide timekeeping object.

withdrawal: ProjectionValue

Withdrawal amount.

withdrawal_program_active: ProjectionValue

Indicator to determine if the rider’s withdrawal program has started.

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.