| ProfitParticipation {LifeInsureR} | R Documentation | 
Base Class for Profit Participation Schemes
Description
Base Class for Profit Participation Schemes
Base Class for Profit Participation Schemes
Details
Base class for Profit Participation schemes (holding contract-independent values and providing methods to calculate the profit participation values from the given reserves).
The profit participation object is typically not used directly, but rather defined once and then passed on to an InsuranceTarif or InsuranceContract object, where it will be used internally when profit participation is calculated.
This class provides the technical implementation of a profit plan for traditional life insurance contracts with a guaranteed component (calculated before the profit scheme comes into play) and a discretionary profit on top.
This function is called when a new profit participation scheme
is created with a call to ProfitParticipation$new(...). Possible
parameters to the new-Call are all parameters from the ProfitParticipation sublist of the
InsuranceContract.ParameterStructure parameter
structure (which are understood as template values that can be overridden
per contract or even per profit participation scenario) and the components
of the Functions field defining the functions to calculate the individual
components of the profit participation (rates, calculation bases, calculation, benefits)
This method createModification returns a copy of the profit scheme
with all given arguments changed in the schmes's Parameters
parameter list.
As ProfitParticipation is a R6 class with reference logic, simply assigning the object to a new variable does not create a copy, but references the original profit scheme object. To create an actual copy, one needs to call this method, which first clones the whole object and then adjusts all parameters to the values passed to this method.
The InsuranceContract's param structure InsuranceContract.ParameterStructure
contains the field params$ProfitParticipation$advanceProfitParticipation,
which can either be numeric rate for advance profit participation, or
a function with signature function(params, values, ...) that
returns the advance profit participation rate when called with the
contract's parameters and the values calculated so far (cash flows and premiums)
The InsuranceContract's param structure InsuranceContract.ParameterStructure
contains the field params$ProfitParticipation$advanceProfitParticipationInclUnitCost,
which can either be numeric rate for advance profit participation, or
a function with signature function(params, values, ...) that
returns the advance profit participation rate when called with the
contract's parameters and the values calculated so far (cash flows and premiums)
This function provides an easy way to modify the whole set of profit rates after their initial setup. Possible applications are waiting periods, which can be implemented once for all rates rather than inside each individual calculation period.
Public fields
nameThe human-readable name of the profit plan.
ParametersParameter template for profit-participation-specific parameters, i.e. the
ProfitParticipationelement of the InsuranceContract.ParameterStructure data structure.All elements defined in the profit scheme can be overriden per contract in the call to
[InsuranceContract]$newor even in the explicit call toInsuranceContract$profitScenario()orInsuranceContract$addProfitScenario().Functionslist of functions defined to calculate the individual components. For each of the profit components
interest profit
risk profit
expense profit
sum profit
terminal bonus
terminal bonus fund
a rate, a profit base and a calculation function can be defined, by assigning one of the pre-defined ProfitParticipationFunctions or proving your own function with signature
function(rates, params, values, ...). Additionally, for each of the benefit types (survival, death, surrender, premium waiver) a function can be provided to calculate the benefit stemming from profit participation.dummyDummy to allow commas in the previous method
Methods
Public methods
Method new()
Create a new profit participation scheme
Usage
ProfitParticipation$new(name = NULL, ...)
Arguments
nameThe name of the profit scheme (typicall the name of the profit plan and its version)
...profit participation parameters to be stored in the
Parameters field or calculation functions to be stored in the Functions' field
Method setParameters()
Store all passed parameters in the Parameters field
Usage
ProfitParticipation$setParameters(...)
Arguments
...any of the named fields defined in the
ProfitParticipationsublist of the InsuranceContract.ParameterStructure. All other arguments will be ignored
Method setFunctions()
Store all passed functions in the Functions field
Usage
ProfitParticipation$setFunctions(...)
Arguments
...any of the functions defined in the
Functionsfield. All other arguments will be ignored
Method setFallbackParameters()
Fill all missing parameters with the default fall-back values
Usage
ProfitParticipation$setFallbackParameters()
Method createModification()
create a copy of a profit scheme with certain parameters changed
Usage
ProfitParticipation$createModification(name = NULL, ...)
Arguments
nameThe new name for the cloned ProfitParticipation object
...Parameters for the InsuranceContract.ParameterStructure, defining the characteristics of the tariff.
Method getAdvanceProfitParticipation()
Calculate and return the advance profit participation (to be applied on the actuarial gross premium)
Usage
ProfitParticipation$getAdvanceProfitParticipation(params, values, ...)
Arguments
paramsContract-specific, full set of parameters of the contract (merged parameters of the defaults, the tariff, the profit participation scheme and the contract)
valuesContract values calculated so far (guaranteed component of the insurance contract, including cash flows, premiums, reserves etc.).
...optional parameters, to be passed to the advanceProfitParticipation field of the parameter structure (if that is a function)
Returns
Return either one numerical value (constant for the whole premium payment period) of a vector of numerical values for the whole contract period
Method getAdvanceProfitParticipationAfterUnitCosts()
Calculate and return the advance profit participation (to be applied after unit costs are added to the gross premium)
Usage
ProfitParticipation$getAdvanceProfitParticipationAfterUnitCosts( params, values, ... )
Arguments
paramsContract-specific, full set of parameters of the contract (merged parameters of the defaults, the tariff, the profit participation scheme and the contract)
valuesContract values calculated so far (guaranteed component of the insurance contract, including cash flows, premiums, reserves etc.).
...optional parameters, to be passed to the advanceProfitParticipationInclUnitCost field of the parameter structure (if that is a function)
Returns
Return either one numerical value (constant for the whole premium payment period) of a vector of numerical values for the whole contract period
Method setupRates()
Set up the data.frame containing the profit participation rates
Usage
ProfitParticipation$setupRates(params, values, ...)
Arguments
paramsContract-specific, full set of parameters of the contract (merged parameters of the defaults, the tariff, the profit participation scheme and the contract)
valuesContract values calculated so far (guaranteed component of the insurance contract, including cash flows, premiums, reserves etc.).
...additional parameters passed to the profit calculation functions stored in the
Functionsfield.
Method adjustRates()
Adjust the data.frame of profit participation rates after their setup
Usage
ProfitParticipation$adjustRates(rates, params, values)
Arguments
ratesdata.frame of profit paticipation rates
paramsContract-specific, full set of parameters of the contract (merged parameters of the defaults, the tariff, the profit participation scheme and the contract)
valuesContract values calculated so far (guaranteed component of the insurance contract, including cash flows, premiums, reserves etc.).
Method getProfitParticipation()
Calculation the full time series of profit participation for the given contract values
Usage
ProfitParticipation$getProfitParticipation( calculateFrom = 0, profitScenario = NULL, params, values, ... )
Arguments
calculateFromThe time from which to start calculating the profit participation. When a contract is changed at some time t (possibly even changing the profit scheme), all future profit participation needs to be re-calculated from that time on, without changing past profit participation. All values before
calculateFromwill not be calculated.profitScenarioprofit participation values from a previous calculation (NULL if profit calculation is to be calculated from the contract inception). Values before
calculateFromwill be used from this data.frame.paramsContract-specific, full set of parameters of the contract (merged parameters of the defaults, the tariff, the profit participation scheme and the contract)
valuesContract values calculated so far (guaranteed component of the insurance contract, including cash flows, premiums, reserves etc.).
...additional parameters to be passed to
ProfitParticipation$setupRates()
Method clone()
The objects of this class are cloneable with this method.
Usage
ProfitParticipation$clone(deep = FALSE)
Arguments
deepWhether to make a deep clone.