Skip to content
Snippets Groups Projects
Commit 8bdad999 authored by Reinhold Kainhofer's avatar Reinhold Kainhofer
Browse files

Implement premium waiver (i.e. premium-free sum insured, calculated from the surrender value)

parent 609af94d
Branches
Tags
No related merge requests found
...@@ -217,7 +217,7 @@ InsuranceTarif = R6Class( ...@@ -217,7 +217,7 @@ InsuranceTarif = R6Class(
premiumFrequencyCorrection = correctionPaymentFrequency(m = premiumFrequency, i = self$i, order = self$premiumFrequencyOrder); premiumFrequencyCorrection = correctionPaymentFrequency(m = premiumFrequency, i = self$i, order = self$premiumFrequencyOrder);
pvRefund = calculatePVDeath (q, cashflows$death_GrossPremium, v=self$v); pvRefund = calculatePVDeath (q, cashflows$death_GrossPremium, v=self$v);
pvRefundPast = calculatePVDeath (q, cashflows$death_Refund_past, v=self$v) * cashflows[,"death_GrossPremium"]; pvRefundPast = calculatePVDeath (q, cashflows$death_Refund_past, v=self$v) * (cashflows[,"death_GrossPremium"]-cashflows[,"premiums_advance"]);
pv = cbind( pv = cbind(
premiums = calculatePVSurvival (q, cashflows$premiums_advance, cashflows$premiums_arrears, m=premiumFrequency, mCorrection=premiumFrequencyCorrection, v=self$v), premiums = calculatePVSurvival (q, cashflows$premiums_advance, cashflows$premiums_arrears, m=premiumFrequency, mCorrection=premiumFrequencyCorrection, v=self$v),
...@@ -479,33 +479,13 @@ InsuranceTarif = R6Class( ...@@ -479,33 +479,13 @@ InsuranceTarif = R6Class(
# Calculate new sum insured after premium waiver # Calculate new sum insured after premium waiver
Storno = 0; # TODO: Implement storno costs Storno = 0; # TODO: Implement storno costs
newSI = (resReduction - presentValues[,"death_Refund_past"] * (1+self$loadings$security) - c(Storno)) / (presentValues[, "benefits"] * (1+self$loadings$security) + presentValues[, "gamma_nopremiums"]) * sumInsured; newSI = (surrenderValue - presentValues[,"death_Refund_past"] * (1+self$loadings$security) - c(Storno)) /
# str(newSI); (presentValues[, "benefits"] * (1+self$loadings$security) + presentValues[, "gamma_nopremiums"]) * sumInsured;
zaehler=(resReduction - presentValues[,"death_Refund_past"] * (1+self$loadings$security) - c(Storno));
nenner=(presentValues[, "benefits"] * (1+self$loadings$security) + presentValues[, "gamma_nopremiums"]) / sumInsured;
# str(resReduction);
# str(presentValues[,"death_Refund_past"] * cashflows$death_GrossPremium * (1+self$loadings$security) * premiums[["gross"]]);
# str(presentValues[,"death_Refund_past"]);
# str(cashflows$death_GrossPremium * (1+self$loadings$security) * premiums[["gross"]]);
str(cashflows$death_GrossPremium);
str(cashflows);
str((1+self$loadings$security));
str(premiums[["gross"]]);
# str(presentValues[, "benefits"] * (1+self$loadings$security) + presentValues[, "gamma_nopremiums"]);
# res.premiumfree =
# res.gamma.premiumfree =
cbind(res, cbind(res,
"PremiumsPaid"=Reduce("+", cashflows$premiums_advance, accumulate = TRUE), "PremiumsPaid"=Reduce("+", cashflows$premiums_advance, accumulate = TRUE),
"Surrender"=surrenderValue, "Surrender"=surrenderValue,
"PremiumFreeSumInsured" = newSI, "PremiumFreeSumInsured" = newSI
"RedWert_Zaehler" = zaehler,
"RedWert_Nenner" = nenner
) )
}, },
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment