lmi-commits
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]