[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master f44cacf 1/3: Revert part of commit 450145ebfb
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master f44cacf 1/3: Revert part of commit 450145ebfb1f |
Date: |
Mon, 22 Mar 2021 18:21:48 -0400 (EDT) |
branch: master
commit f44cacf37b37527938c6d1e8920e6d3101c8140d
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>
Revert part of commit 450145ebfb1f
Commit 450145ebfb1f of 20210201T1321Z:
"Expunge experience rating from input"
paid careful attention to backward compatibility in 'input_xml_io.cpp',
but the schemata should not have been changed without declaring a new
version of class Input. Reverted schema changes only; a separate commit
will make them "optional". Added comments to guide their future
re-reversion.
---
cell.rnc | 13 +++++++++++++
cell.xsd | 37 +++++++++++++++++++++++++++++++++++++
input_xml_io.cpp | 9 +++++++++
3 files changed, 59 insertions(+)
diff --git a/cell.rnc b/cell.rnc
index 8a6f5ba..77c53e4 100644
--- a/cell.rnc
+++ b/cell.rnc
@@ -115,6 +115,11 @@ cell_element = element cell
## make input easier. E.g., specified amount for 'partners' might
## be two times salary, while 'all others' get a flat $50K.
element EmployeeClass {text}
+ ,## Factor for amortizing mortality profit into future charges.
+ ## Default: '1'.
+ element ExperienceRatingInitialKFactor {nonnegative_double}
+ ,## Overridden reserve rate for experience rating.
+ element ExperienceReserveRate {proportion_double}
,## * Amount of 1035 exchange from a different insurer.
element External1035ExchangeAmount {nonnegative_double}
,## * MEC status of 1035 exchange from a different insurer.
@@ -228,6 +233,8 @@ cell_element = element cell
element InforceMonth {month_int}
,## Monthly premium required to maintain no-lapse guarantee.
element InforceMonthlyNoLapsePremium {nonnegative_double}
+ ,## Inforce net reserve for experience rating.
+ element InforceNetExperienceReserve {xsd:double}
,## No-lapse guarantee is in effect.
element InforceNoLapseActive {yes_or_no}
,## Inforce balance (total indebtedness) for preferred loans:
@@ -259,6 +266,8 @@ cell_element = element cell
element InforceYear {duration_int}
,## Policy-year-to-date payments counted toward target premium.
element InforceYtdGrossPremium {nonnegative_double}
+ ,## Policy-year-to-date "net" COI charge for experience rating.
+ element InforceYtdNetCoiCharge {nonnegative_double}
,## Policy-year-to-date payments subject to premium tax.
element InforceYtdTaxablePremium {nonnegative_double}
,## * Investment management fee of a custom fund.
@@ -318,6 +327,8 @@ cell_element = element cell
element NumberOfIdenticalLives {xsd:nonNegativeInteger}
,## * Override country COI multiplier. Default: 'Yes'.
element OverrideCoiMultiplier {yes_or_no}
+ ,## Override reserve rate for experience rating. Default: 'Yes'.
+ element OverrideExperienceReserveRate {yes_or_no}
,## * Override investment management fee: used only with custom funds.
element OverrideFundManagementFee {yes_or_no}
,## * Multiplier applied to partial-mortality table. Default: '1'.
@@ -481,6 +492,8 @@ cell_element = element cell
element UseCurrentDeclaredRate {yes_or_no}
,## * Let date of birth override issue age. Default: 'Yes'.
element UseDOB {yes_or_no}
+ ,## Use experience rating, on the few contracts that offer it.
+ element UseExperienceRating {yes_or_no}
,## * Illustrate "partial mortality": i.e., reflect assumed deaths
## in a composite illustration.
element UsePartialMortality {yes_or_no}
diff --git a/cell.xsd b/cell.xsd
index 12c6209..71f37f2 100644
--- a/cell.xsd
+++ b/cell.xsd
@@ -80,6 +80,8 @@
<xs:element ref="EffectiveDate"/>
<xs:element ref="EffectiveDateToday"/>
<xs:element ref="EmployeeClass"/>
+ <xs:element ref="ExperienceRatingInitialKFactor"/>
+ <xs:element ref="ExperienceReserveRate"/>
<xs:element ref="External1035ExchangeAmount"/>
<xs:element ref="External1035ExchangeFromMec"/>
<xs:element ref="External1035ExchangeTaxBasis"/>
@@ -119,6 +121,7 @@
<xs:element ref="InforceLeastDeathBenefit"/>
<xs:element ref="InforceMonth"/>
<xs:element ref="InforceMonthlyNoLapsePremium"/>
+ <xs:element ref="InforceNetExperienceReserve"/>
<xs:element ref="InforceNoLapseActive"/>
<xs:element ref="InforcePreferredLoanBalance"/>
<xs:element ref="InforcePreferredLoanValue"/>
@@ -130,6 +133,7 @@
<xs:element ref="InforceTaxBasis"/>
<xs:element ref="InforceYear"/>
<xs:element ref="InforceYtdGrossPremium"/>
+ <xs:element ref="InforceYtdNetCoiCharge"/>
<xs:element ref="InforceYtdTaxablePremium"/>
<xs:element ref="InputFundManagementFee"/>
<xs:element ref="InsuredName"/>
@@ -151,6 +155,7 @@
<xs:element ref="NonsmokerProportion"/>
<xs:element ref="NumberOfIdenticalLives"/>
<xs:element ref="OverrideCoiMultiplier"/>
+ <xs:element ref="OverrideExperienceReserveRate"/>
<xs:element ref="OverrideFundManagementFee"/>
<xs:element ref="PartialMortalityMultiplier"/>
<xs:element ref="Payment"/>
@@ -223,6 +228,7 @@
<xs:element ref="UseAverageOfAllFunds"/>
<xs:element ref="UseCurrentDeclaredRate"/>
<xs:element ref="UseDOB"/>
+ <xs:element ref="UseExperienceRating"/>
<xs:element ref="UsePartialMortality"/>
<xs:element ref="WaiverOfPremiumBenefit"/>
<xs:element ref="WithdrawToBasisThenLoan"/>
@@ -448,6 +454,17 @@ make input easier. E.g., specified amount for 'partners'
might
be two times salary, while 'all others' get a flat $50K.</xs:documentation>
</xs:annotation>
</xs:element>
+ <xs:element name="ExperienceRatingInitialKFactor" type="nonnegative_double">
+ <xs:annotation>
+ <xs:documentation>Factor for amortizing mortality profit into future
charges.
+Default: '1'.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ExperienceReserveRate" type="proportion_double">
+ <xs:annotation>
+ <xs:documentation>Overridden reserve rate for experience
rating.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
<xs:element name="External1035ExchangeAmount" type="nonnegative_double">
<xs:annotation>
<xs:documentation>* Amount of 1035 exchange from a different
insurer.</xs:documentation>
@@ -678,6 +695,11 @@ was never present.</xs:documentation>
<xs:documentation>Monthly premium required to maintain no-lapse
guarantee.</xs:documentation>
</xs:annotation>
</xs:element>
+ <xs:element name="InforceNetExperienceReserve" type="xs:double">
+ <xs:annotation>
+ <xs:documentation>Inforce net reserve for experience
rating.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
<xs:element name="InforceNoLapseActive" type="yes_or_no">
<xs:annotation>
<xs:documentation>No-lapse guarantee is in effect.</xs:documentation>
@@ -742,6 +764,11 @@ regard to term rider and corridor.</xs:documentation>
<xs:documentation>Policy-year-to-date payments counted toward target
premium.</xs:documentation>
</xs:annotation>
</xs:element>
+ <xs:element name="InforceYtdNetCoiCharge" type="nonnegative_double">
+ <xs:annotation>
+ <xs:documentation>Policy-year-to-date "net" COI charge for experience
rating.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
<xs:element name="InforceYtdTaxablePremium" type="nonnegative_double">
<xs:annotation>
<xs:documentation>Policy-year-to-date payments subject to premium
tax.</xs:documentation>
@@ -864,6 +891,11 @@ each one represents. Default: '1'.</xs:documentation>
<xs:documentation>* Override country COI multiplier. Default:
'Yes'.</xs:documentation>
</xs:annotation>
</xs:element>
+ <xs:element name="OverrideExperienceReserveRate" type="yes_or_no">
+ <xs:annotation>
+ <xs:documentation>Override reserve rate for experience rating. Default:
'Yes'.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
<xs:element name="OverrideFundManagementFee" type="yes_or_no">
<xs:annotation>
<xs:documentation>* Override investment management fee: used only with
custom funds.</xs:documentation>
@@ -1243,6 +1275,11 @@ instead of entering the crediting rate explicitly.
Default: 'Yes'.</xs:documenta
<xs:documentation>* Let date of birth override issue age. Default:
'Yes'.</xs:documentation>
</xs:annotation>
</xs:element>
+ <xs:element name="UseExperienceRating" type="yes_or_no">
+ <xs:annotation>
+ <xs:documentation>Use experience rating, on the few contracts that offer
it.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
<xs:element name="UsePartialMortality" type="yes_or_no">
<xs:annotation>
<xs:documentation>* Illustrate "partial mortality": i.e., reflect
assumed deaths
diff --git a/input_xml_io.cpp b/input_xml_io.cpp
index ceafa6a..8b0960e 100644
--- a/input_xml_io.cpp
+++ b/input_xml_io.cpp
@@ -179,6 +179,15 @@ bool Input::is_detritus(std::string const& s) const
return contains(v, s);
}
+// INPUT !! In 'cell.{rnc,xsd}, elements
+// ExperienceRatingInitialKFactor
+// ExperienceReserveRate
+// InforceNetExperienceReserve
+// InforceYtdNetCoiCharge
+// OverrideExperienceReserveRate
+// UseExperienceRating
+// are obsolete and should be removed in a future version.
+
void Input::redintegrate_ex_ante
(int file_version
,std::string const& name