[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master 649e05f 5/5: Revert "Record a negative experi
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master 649e05f 5/5: Revert "Record a negative experiment" |
Date: |
Thu, 6 Jun 2019 08:24:17 -0400 (EDT) |
branch: master
commit 649e05f09688f75e84ae2204a09d0b9548c9f8da
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>
Revert "Record a negative experiment"
This reverts commit b0e941646cd840c50eeda9f4539d865754d27788,
whose commit message explains why it is now reverted.
---
verify_products.cpp | 94 -----------------------------------------------------
1 file changed, 94 deletions(-)
diff --git a/verify_products.cpp b/verify_products.cpp
index cc476c9..86b9524 100644
--- a/verify_products.cpp
+++ b/verify_products.cpp
@@ -53,18 +53,8 @@ void verify_one_cell
input["Smoking" ] = smoking;
int const min_age =
product_database(yare_input(input)).query<int>(DB_MinIssAge);
- input["UseDOB" ] = "No"; // Prevent Reconcile() from changing age.
input["IssueAge" ] = value_cast<std::string>(min_age);
-#if 0
- input.Reconcile();
- LMI_ASSERT(product_name == input["ProductName"].str());
- LMI_ASSERT(gender == input["Gender" ].str());
- LMI_ASSERT(smoking == input["Smoking" ].str());
- LMI_ASSERT("No" == input["UseDOB" ].str());
- LMI_ASSERT(min_age == input.issue_age());
-#endif // 0
-
yare_input const yi(input);
product_database const db(yi);
auto const era = db.query<oenum_cso_era >(DB_CsoEra);
@@ -91,90 +81,6 @@ void verify_one_cell
return;
}
- input.Reconcile();
- if(product_name != input["ProductName"].str())
- std::cout << product_name << " != " << input["ProductName"].str() <<
std::endl;
- if(gender != input["Gender" ].str())
- std::cout << gender << " != " << input["Gender" ].str() <<
std::endl;
- if(smoking != input["Smoking" ].str())
- std::cout << smoking << " != " << input["Smoking" ].str() <<
std::endl;
- if("No" != input["UseDOB" ].str())
- std::cout << "No" << " != " << input["UseDOB" ].str() <<
std::endl;
- if(min_age != input.issue_age() )
- std::cout << min_age << " != " << input.issue_age() << std::endl;
-
- // These four distinct diagnostics are observed with about a
- // hundred real-world products:
- //
- // Female != Unisex
- // Male != Unisex
- // Unisex != Female
- // Unismoke != Smoker
- //
- // All seem harmless:
- //
- // female or male forced to unisex: This occurs when
- // Add({DB_Irc7702QAxisGender , true});
- // Add({DB_AllowSexDistinct , false});
- // Add({DB_AllowUnisex , true});
- // i.e., for products that are issued only on a unisex basis,
- // but which have 7702 tables for male and female as well as
- // unisex, merely because it seemed expedient to copy the whole
- // multidimensional set. The sex-distinct tables are superfluous
- // and will never be read, so this oddity is benign.
- //
- // unisex forced to female: This occurs when
- // Add({DB_Irc7702QAxisGender , true});
- // Add({DB_AllowSexDistinct , [everywhere but MT]});
- // Add({DB_AllowUnisex , false});
- // so that all insureds are either male or female (except in MT),
- // while unisex is forbidden (even in MT--so such a product cannot
- // be issued in MT at all), yet unisex 7702 tables are provided.
- // Those extra (unisex) tables are superfluous but harmless.
- //
- // unismoke forced to smoker: This occurs when
- // Add({DB_Irc7702QAxisSmoking , true});
- // Add({DB_AllowSmokeDistinct , true});
- // Add({DB_AllowUnismoke , [conditionally true or false]});
- // so that all insureds are either smoker or nonsmoker (except,
- // say, for guaranteed-issue underwriting), and in the particular
- // scenario tested (say, medical underwriting), unisex is entered
- // but forced to change to a different classification (smoker,
- // only because it's the first available enumerator). Unisex 7702
- // rates are provided, and might be required in a different
- // scenario, so all is well.
- //
- // Conclusions.
- //
- // Reconcile() should not be called here at all. Products have
- // two different sets of gender axes, one for underwriting, and
- // another for 7702. Those axes needn't be the same: e.g., a
- // product may be issued only on a sex-distinct basis, yet use
- // unisex 7702 tables--to stay within IRS Notice 88-128's safe
- // harbor, or to use more liberal rates for one market segment
- // at the cost of disadvantaging another. The smoking axes may
- // differ likewise. Calling Reconcile() enforces the underwriting
- // axes, but it is the 7702 axes that are tested here.
- //
- // DB_Irc7702QAxisGender and DB_Irc7702QAxisSmoking are not
- // adequate to describe all permissible variations; arguably
- // something beyond that simple boolean pair would be desirable,
- // e.g., because they cannot represent a smoker-distinct-only
- // product that needs no unismoke tables. In practice, though,
- // unismoke tables generally are provided, even when superfluous.
- // Furthermore, while some products may not allow unisex rating,
- // an exception is usually made for MT, so a more complicated
- // paradigm does not seem practically necessary.
- //
- // It is often convenient to provide a full set of 7702 q tables
- // even for a product that cannot use some of them: ideally, a
- // single set of {1980, 2001, 2017} X {ALB, ANB} tables could
- // then be shared by all products. The presence of superfluous
- // tables is not an anomaly, and product verification need take
- // no note of it. (It is not generally possible to share 7PP and
- // corridor tables tables across products, though, because those
- // tables depend on maturity age.)
-
std::vector<double> const v0 = cso_table
(era
,oe_orthodox
- [lmi-commits] [lmi] master updated (ede9f42 -> 649e05f), Greg Chicares, 2019/06/06
- [lmi-commits] [lmi] master 2081761 1/5: Add missing graphics to fardels, Greg Chicares, 2019/06/06
- [lmi-commits] [lmi] master eca1c31 3/5: Diagnose 7702 q table zero as a problem, Greg Chicares, 2019/06/06
- [lmi-commits] [lmi] master d4eeaab 2/5: Add commented-out deliberate defects, to test product verifier, Greg Chicares, 2019/06/06
- [lmi-commits] [lmi] master b0e9416 4/5: Record a negative experiment, Greg Chicares, 2019/06/06
- [lmi-commits] [lmi] master 649e05f 5/5: Revert "Record a negative experiment",
Greg Chicares <=