[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" \
- [lmi-commits] [lmi] master updated (ef8f7b4 -> 64c9105), Greg Chicares, 2021/01/31
- [lmi-commits] [lmi] master 72b54df 3/6: Expunge experience-rating calculations [322], Greg Chicares, 2021/01/31
- [lmi-commits] [lmi] master 2384269 1/6: Allow currency/currency --> double, Greg Chicares, 2021/01/31
- [lmi-commits] [lmi] master 64c9105 6/6: Expunge experience rating from ledger,
Greg Chicares <=
- [lmi-commits] [lmi] master 0e4c210 2/6: Mark experience-rating code for expunction, Greg Chicares, 2021/01/31
- [lmi-commits] [lmi] master 7d7b4b4 4/6: Expunge experience rating from database [321], Greg Chicares, 2021/01/31
- [lmi-commits] [lmi] master 526fdb4 5/6: Neither use nor allow experience rating, Greg Chicares, 2021/01/31