lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [lmi] master 64c9105 6/6: Expunge experience rating from l


From: Greg Chicares
Subject: [lmi-commits] [lmi] master 64c9105 6/6: Expunge experience rating from ledger
Date: Sun, 31 Jan 2021 17:27:29 -0500 (EST)

branch: master
commit 64c9105e46e538b182e4f167f21db7b7228da976
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>

    Expunge experience rating from ledger
    
    Removed certain supplemental-report columns, preserving backward
    compatibility as in commit a10b0bb14 of 20190129T2158Z.
    
    In a certain TSV output, wrote zeros in expunged columns as a sop to
    users of a spreadsheet that expects the TSV file never to change
    (instead of using range names as recommended).
---
 input_xml_io.cpp        | 16 ++++++++++++++++
 ledger_evaluator.cpp    | 15 +--------------
 ledger_text_formats.cpp | 51 +++++++++++++------------------------------------
 ledger_variant.cpp      |  6 ------
 ledger_variant.hpp      |  6 +-----
 ledger_variant_init.cpp |  2 --
 mc_enum_types.cpp       |  2 +-
 mc_enum_types.xpp       | 12 ------------
 8 files changed, 32 insertions(+), 78 deletions(-)

diff --git a/input_xml_io.cpp b/input_xml_io.cpp
index 6a0cd83..9058f74 100644
--- a/input_xml_io.cpp
+++ b/input_xml_io.cpp
@@ -360,6 +360,22 @@ void Input::redintegrate_ex_ante
             {
             value = "[none]";
             }
+        // Prior to 2021-01-31, experience-rating columns were offered
+        // for some supplemental reports, but have been withdrawn. For
+        // backward compatibility, they're silently ignored wherever
+        // they occurred in old input files.
+        if
+            (   contains(name, "SupplementalReportColumn")
+            &&
+                (  contains(value, "ExperienceReserve")
+                || contains(value, "NetCOICharge")
+                || contains(value, "ProjectedCoiCharge")
+                || contains(value, "KFactor")
+                )
+            )
+            {
+            value = "[none]";
+            }
         }
 }
 
diff --git a/ledger_evaluator.cpp b/ledger_evaluator.cpp
index 4d3ee91..adf7773 100644
--- a/ledger_evaluator.cpp
+++ b/ledger_evaluator.cpp
@@ -206,7 +206,6 @@ title_map_t static_titles()
     ,{"ErMode"                          , "ER\nPayment\nMode"}
     ,{"ExpenseCharges_Current"          , "Curr\nExpense\nCharge"}
     ,{"ExpenseCharges_Guaranteed"       , "Guar\nExpense\nCharge"}
-    ,{"ExperienceReserve_Current"       , "Experience\nRating\nReserve"}
     ,{"GptForceout"                     , "Forceout"}
     ,{"GrossIntCredited_Current"        , "Curr Gross\nInt\nCredited"}
     ,{"GrossIntCredited_Guaranteed"     , "Guar Gross\nInt\nCredited"}
@@ -218,7 +217,6 @@ title_map_t static_titles()
     ,{"IrrCsv_Guaranteed"               , "Guar IRR\non CSV"}
     ,{"IrrDb_Current"                   , "Curr IRR\non DB"}
     ,{"IrrDb_Guaranteed"                , "Guar IRR\non DB"}
-    ,{"KFactor_Current"                 , "Experience\nRating\nK Factor"}
     ,{"LoanIntAccrued_Current"          , "Curr Loan\nInt\nAccrued"}
     ,{"LoanIntAccrued_Guaranteed"       , "Guar Loan\nInt\nAccrued"}
     ,{"MlyGAIntRate_Current"            , "Curr Monthly\nGen Acct\nInt Rate"}
@@ -231,7 +229,6 @@ title_map_t static_titles()
     ,{"MlySAIntRate_Guaranteed"         , "Guar Monthly\nSep Acct\nInt Rate"}
     ,{"ModalMinimumPremium"             , "Modal\nMinimum\nPremium"}
 //  ,{"NaarForceout"                    , "Forced\nWithdrawal\ndue to\nNAAR 
Limit"}
-    ,{"NetCOICharge_Current"            , "Experience\nRating\nNet 
COI\nCharge"}
     ,{"NetClaims_Current"               , "Curr Net\nClaims"}
     ,{"NetClaims_Guaranteed"            , "Guar Net\nClaims"}
     ,{"NetIntCredited_Current"          , "Curr Net\nInt\nCredited"}
@@ -249,7 +246,6 @@ title_map_t static_titles()
     ,{"PrefLoanBalance_Guaranteed"      , "Guar\nPreferred\nLoan Bal"}
     ,{"PremTaxLoad_Current"             , "Curr\nPremium\nTax Load"}
     ,{"PremTaxLoad_Guaranteed"          , "Guar\nPremium\nTax Load"}
-    ,{"ProjectedCoiCharge_Current"      , "Experience\nRating\nProjected\nCOI 
Charge"}
     ,{"RefundableSalesLoad"             , "Refundable\nSales\nLoad"}
     ,{"RiderCharges_Current"            , "Curr Rider\nCharges"}
     ,{"Salary"                          , "Salary"}
@@ -342,7 +338,6 @@ mask_map_t static_masks()
     ,{"ErMode"                          ,  "Semiannual"}
     ,{"ExpenseCharges_Current"          , "999,999,999"}
     ,{"ExpenseCharges_Guaranteed"       , "999,999,999"}
-    ,{"ExperienceReserve_Current"       , "999,999,999"}
     ,{"GptForceout"                     , "999,999,999"}
     ,{"GrossIntCredited_Current"        , "999,999,999"}
     ,{"GrossIntCredited_Guaranteed"     , "999,999,999"}
@@ -354,7 +349,6 @@ mask_map_t static_masks()
     ,{"IrrCsv_Guaranteed"               ,  "100000.00%"}
     ,{"IrrDb_Current"                   ,  "100000.00%"}
     ,{"IrrDb_Guaranteed"                ,  "100000.00%"}
-    ,{"KFactor_Current"                 ,    "9,999.99"}
     ,{"LoanIntAccrued_Current"          , "999,999,999"}
     ,{"LoanIntAccrued_Guaranteed"       , "999,999,999"}
     ,{"MlyGAIntRate_Current"            ,      "99.99%"}
@@ -367,7 +361,6 @@ mask_map_t static_masks()
     ,{"MlySAIntRate_Guaranteed"         ,      "99.99%"}
     ,{"ModalMinimumPremium"             , "999,999,999"}
 //  ,{"NaarForceout"                    , "999,999,999"}
-    ,{"NetCOICharge_Current"            , "999,999,999"}
     ,{"NetClaims_Current"               , "999,999,999"}
     ,{"NetClaims_Guaranteed"            , "999,999,999"}
     ,{"NetIntCredited_Current"          , "999,999,999"}
@@ -385,7 +378,6 @@ mask_map_t static_masks()
     ,{"PrefLoanBalance_Guaranteed"      , "999,999,999"}
     ,{"PremTaxLoad_Current"             , "999,999,999"}
     ,{"PremTaxLoad_Guaranteed"          , "999,999,999"}
-    ,{"ProjectedCoiCharge_Current"      , "999,999,999"}
     ,{"RefundableSalesLoad"             , "999,999,999"}
     ,{"RiderCharges_Current"            , "999,999,999"}
     ,{"Salary"                          , "999,999,999"}
@@ -593,10 +585,8 @@ format_map_t static_formats()
 // >
     ,{"AddonMonthlyFee"                 , f2}
     ,{"AnnualFlatExtra"                 , f2}
-// TODO ?? The precision of 'InforceLives' and 'KFactor' is inadequate.
-// Is every other format OK?
+// TODO ?? The precision of 'InforceLives' is inadequate. Is every other 
format OK?
     ,{"InforceLives"                    , f2}
-    ,{"KFactor"                         , f2}
 // >
 // F1: zero decimals, commas
 // > Format as a number with thousand separators and no decimal places 
(#,###,##0)
@@ -627,7 +617,6 @@ format_map_t static_formats()
     ,{"ErModalMinimumPremium"           , f1}
 //  ,{"ErMode"                          , f1} // Not numeric.
     ,{"ExpenseCharges"                  , f1}
-    ,{"ExperienceReserve"               , f1}
     ,{"FundNumbers"                     , f1}
     ,{"GptForceout"                     , f1}
     ,{"GrossIntCredited"                , f1}
@@ -637,7 +626,6 @@ format_map_t static_formats()
     ,{"LoanIntAccrued"                  , f1}
     ,{"ModalMinimumPremium"             , f1}
     ,{"NaarForceout"                    , f1}
-    ,{"NetCOICharge"                    , f1}
     ,{"NetClaims"                       , f1}
     ,{"NetIntCredited"                  , f1}
     ,{"NetPmt"                          , f1}
@@ -647,7 +635,6 @@ format_map_t static_formats()
     ,{"PolicyFee"                       , f1}
     ,{"PrefLoanBalance"                 , f1}
     ,{"PremTaxLoad"                     , f1}
-    ,{"ProjectedCoiCharge"              , f1}
     ,{"RefundableSalesLoad"             , f1}
     ,{"RiderCharges"                    , f1}
     ,{"Salary"                          , f1}
diff --git a/ledger_text_formats.cpp b/ledger_text_formats.cpp
index 9bbdc2e..bcaaac7 100644
--- a/ledger_text_formats.cpp
+++ b/ledger_text_formats.cpp
@@ -107,11 +107,7 @@ std::map<std::string,ledger_metadata> const& 
ledger_metadata_map()
         m["IrrCsv_Guaranteed"          ] = ledger_metadata(2, 
oe_format_percentage, "Guar IRR on CSV"                       ); // "Guaranteed 
Cash Value IRR"
         m["IrrDb_Current"              ] = ledger_metadata(2, 
oe_format_percentage, "Curr IRR on DB"                        ); // "Current 
Death Benefit IRR"
         m["IrrDb_Guaranteed"           ] = ledger_metadata(2, 
oe_format_percentage, "Guar IRR on DB"                        ); // "Guaranteed 
Death Benefit IRR"
-        m["ExperienceReserve_Current"  ] = ledger_metadata(0, oe_format_normal 
   , "Experience Rating Reserve"             ); // "Net Mortality Reserve"
         m["NetClaims_Current"          ] = ledger_metadata(0, oe_format_normal 
   , "Curr Net Claims"                       ); // "Experience Rating Current 
Net Claims"
-        m["NetCOICharge_Current"       ] = ledger_metadata(0, oe_format_normal 
   , "Experience Rating Net COI Charge"      ); // "Net Mortality Charge"
-        m["ProjectedCoiCharge_Current" ] = ledger_metadata(0, oe_format_normal 
   , "Experience Rating Projected COI Charge"); // "Projected Mortality Charge"
-        m["KFactor_Current"            ] = ledger_metadata(4, oe_format_normal 
   , "Experience Rating K Factor"            );
         m["GrossPmt"                   ] = ledger_metadata(0, oe_format_normal 
   , "Premium Outlay"                        ); // "Total Payment"
         m["LoanIntAccrued_Current"     ] = ledger_metadata(0, oe_format_normal 
   , "Curr Loan Int Accrued"                 ); // "Current Accrued Loan 
Interest"
         m["NetDeathBenefit"            ] = ledger_metadata(0, oe_format_normal 
   , "Net Death Benefit"                     ); // "Current Net Death Benefit"
@@ -536,14 +532,14 @@ void PrintCellTabDelimited
         ,"YearEndInforceLives"
         ,"ClaimsPaid"
         ,"NetClaims"
-        ,"ExperienceReserve"
+        ,"[obsolete]"
         ,"ProjectedMortalityCharge"
-        ,"KFactor"
+        ,"[obsolete]"
         ,"NetMortalityCharge0Int"
         ,"NetClaims0Int"
-        ,"ExperienceReserve0Int"
+        ,"[obsolete]"
         ,"ProjectedMortalityCharge0Int"
-        ,"KFactor0Int"
+        ,"[obsolete]"
         };
 
     for(auto const& i : sheaders)
@@ -583,7 +579,7 @@ void PrintCellTabDelimited
         os << Invar.value_str("AnnualFlatExtra"       ,j) << '\t';
         os << Curr_.value_str("COICharge"             ,j) << '\t';
         os << Curr_.value_str("RiderCharges"          ,j) << '\t';
-        os << Curr_.value_str("NetCOICharge"          ,j) << '\t';
+        os << "0\t"; // obsolete
         os << Curr_.value_str("SepAcctCharges"        ,j) << '\t';
 
         os << Curr_.value_str("AnnSAIntRate"          ,j) << '\t';
@@ -614,35 +610,14 @@ void PrintCellTabDelimited
 
         os << Curr_.value_str("ClaimsPaid"            ,j) << '\t';
         os << Curr_.value_str("NetClaims"             ,j) << '\t';
-        os << Curr_.value_str("ExperienceReserve"     ,j) << '\t';
-        os << Curr_.value_str("ProjectedCoiCharge"    ,j) << '\t';
-        os << Curr_.value_str("KFactor"               ,j) << '\t';
-
-        // Show experience-rating columns for current-expense, zero-
-        // interest basis if used, to support testing.
-        std::vector<mcenum_run_basis> const& 
bases(ledger_values.GetRunBases());
-        if(contains(bases, mce_run_gen_curr_sep_zero))
-            {
-            LedgerVariant const& Curr0 = ledger_values.GetCurrZero();
-            os << Curr0.value_str("NetCOICharge"          ,j) << '\t';
-            os << Curr0.value_str("NetClaims"             ,j) << '\t';
-            os << Curr0.value_str("ExperienceReserve"     ,j) << '\t';
-            os << Curr0.value_str("ProjectedCoiCharge"    ,j) << '\t';
-            os << Curr0.value_str("KFactor"               ,j) << '\t';
-            }
-        else
-            {
-            os << "0\t";
-            os << "0\t";
-            os << "0\t";
-            os << "0\t";
-            os << "0\t";
-            }
-
-        if(contains(bases, mce_run_gen_curr_sep_half))
-            {
-            alarum() << "Three-rate illustrations not supported." << LMI_FLUSH;
-            }
+        os << "0\t"; // obsolete
+        os << "0\t"; // obsolete
+        os << "0\t"; // obsolete
+        os << "0\t"; // obsolete
+        os << "0\t"; // obsolete
+        os << "0\t"; // obsolete
+        os << "0\t"; // obsolete
+        os << "0\t"; // obsolete
 
         os << '\n';
         }
diff --git a/ledger_variant.cpp b/ledger_variant.cpp
index d669f47..c2ae7fb 100644
--- a/ledger_variant.cpp
+++ b/ledger_variant.cpp
@@ -93,10 +93,6 @@ void LedgerVariant::Alloc(int len)
     BegYearVectors  ["GrossIntCredited"       ] = &GrossIntCredited       ;
     BegYearVectors  ["LoanIntAccrued"         ] = &LoanIntAccrued         ;
 
-    BegYearVectors  ["NetCOICharge"           ] = &NetCOICharge           ;
-
-    ForborneVectors ["ExperienceReserve"      ] = &ExperienceReserve      ;
-
     BegYearVectors  ["PolicyFee"              ] = &PolicyFee              ;
     BegYearVectors  ["PremTaxLoad"            ] = &PremTaxLoad            ;
     BegYearVectors  ["DacTaxLoad"             ] = &DacTaxLoad             ;
@@ -123,7 +119,6 @@ void LedgerVariant::Alloc(int len)
     EndYearVectors  ["SurrChg"                ] = &SurrChg                ;
     EndYearVectors  ["TermPurchased"          ] = &TermPurchased          ;
     EndYearVectors  ["BaseDeathBft"           ] = &BaseDeathBft           ;
-    EndYearVectors  ["ProjectedCoiCharge"     ] = &ProjectedCoiCharge     ;
 
     OtherVectors    ["MlySAIntRate"           ] = &MlySAIntRate           ;
     OtherVectors    ["MlyGAIntRate"           ] = &MlyGAIntRate           ;
@@ -133,7 +128,6 @@ void LedgerVariant::Alloc(int len)
     OtherVectors    ["AnnGAIntRate"           ] = &AnnGAIntRate           ;
     OtherVectors    ["AnnHoneymoonValueRate"  ] = &AnnHoneymoonValueRate  ;
     OtherVectors    ["AnnPostHoneymoonRate"   ] = &AnnPostHoneymoonRate   ;
-    OtherVectors    ["KFactor"                ] = &KFactor                ;
 
     OtherScalars    ["LapseMonth"             ] = &LapseMonth             ;
     OtherScalars    ["LapseYear"              ] = &LapseYear              ;
diff --git a/ledger_variant.hpp b/ledger_variant.hpp
index bbfebde..67b2113 100644
--- a/ledger_variant.hpp
+++ b/ledger_variant.hpp
@@ -94,7 +94,6 @@ class LMI_SO LedgerVariant final
     std::vector<double> NetIntCredited;
     std::vector<double> GrossIntCredited;
     std::vector<double> LoanIntAccrued;
-    std::vector<double> NetCOICharge;
     std::vector<double> PolicyFee;
     std::vector<double> PremTaxLoad;
     std::vector<double> DacTaxLoad;
@@ -120,10 +119,8 @@ class LMI_SO LedgerVariant final
     std::vector<double> SurrChg;         // Not used yet.
     std::vector<double> TermPurchased;
     std::vector<double> BaseDeathBft;
-    std::vector<double> ProjectedCoiCharge;
 
-    // Forborne vectors.
-    std::vector<double> ExperienceReserve;
+    // Forborne vectors [none presently].
 
     // Nonscalable vectors.
     std::vector<double> MlySAIntRate;
@@ -134,7 +131,6 @@ class LMI_SO LedgerVariant final
     std::vector<double> AnnGAIntRate;
     std::vector<double> AnnHoneymoonValueRate;
     std::vector<double> AnnPostHoneymoonRate;
-    std::vector<double> KFactor;
 
     // Nonscalable scalars.
     double LapseMonth;
diff --git a/ledger_variant_init.cpp b/ledger_variant_init.cpp
index 9114690..af9daa9 100644
--- a/ledger_variant_init.cpp
+++ b/ledger_variant_init.cpp
@@ -86,8 +86,6 @@ void LedgerVariant::Init
 //  SurrChg         =
 //  TermPurchased   =
 //  BaseDeathBft    =
-//  ProjectedCoiCharge =
-//  KFactor         =
 
     InitAnnLoanCredRate = bv.InterestRates_->RegLnCredRate
         (GenBasis_
diff --git a/mc_enum_types.cpp b/mc_enum_types.cpp
index 7ee61db..21a74de 100644
--- a/mc_enum_types.cpp
+++ b/mc_enum_types.cpp
@@ -157,7 +157,7 @@ MC_DEFINE(part_mort_table,1)
 MC_DEFINE(premium_table,1)
 MC_DEFINE(from_point,4)
 MC_DEFINE(to_point,4)
-MC_DEFINE(report_column,55)
+MC_DEFINE(report_column,51)
 MC_DEFINE(suppl_illus_type,3)
 
 #undef MC_DEFINE
diff --git a/mc_enum_types.xpp b/mc_enum_types.xpp
index b044f19..e468680 100644
--- a/mc_enum_types.xpp
+++ b/mc_enum_types.xpp
@@ -602,11 +602,7 @@
     ,mce_guaranteed_cash_value_irr \
     ,mce_current_death_benefit_irr \
     ,mce_guaranteed_death_benefit_irr \
-    ,mce_experience_reserve \
     ,mce_current_net_claims \
-    ,mce_current_net_coi_charge \
-    ,mce_current_projected_coi_charge \
-    ,mce_current_k_factor \
     ,mce_total_payment \
     ,mce_current_loan_interest_accrued \
     ,mce_net_death_benefit \
@@ -659,11 +655,7 @@
     ,"IrrCsv_Guaranteed" \
     ,"IrrDb_Current" \
     ,"IrrDb_Guaranteed" \
-    ,"ExperienceReserve_Current" \
     ,"NetClaims_Current" \
-    ,"NetCOICharge_Current" \
-    ,"ProjectedCoiCharge_Current" \
-    ,"KFactor_Current" \
     ,"GrossPmt" \
     ,"LoanIntAccrued_Current" \
     ,"NetDeathBenefit" \
@@ -718,11 +710,7 @@
     ,"Guaranteed Cash Value IRR" \
     ,"Current Death Benefit IRR" \
     ,"Guaranteed Death Benefit IRR" \
-    ,"Net Mortality Reserve" \
     ,"Experience Rating Current Net Claims" \
-    ,"Net Mortality Charge" \
-    ,"Projected Mortality Charge" \
-    ,"Experience Rating K Factor" \
     ,"Total Payment" \
     ,"Current Accrued Loan Interest" \
     ,"Current Net Death Benefit" \



reply via email to

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