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

Variables & Properties
Data sources to initialize projection values.
Benefit base, used as a basis for withdrawals.
Charge rate, used to calculate the charge amount.
Charge amount, assessed against the account value.
Indicator to determine if the rider's withdrawal program has started.
Withdrawal rate when account value is positive.
Withdrawal rate when account value is zero.
Withdrawal amount.
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
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, 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.
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:
- 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
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.