[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master 37944d8 5/6: Add database entities for a mini
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master 37944d8 5/6: Add database entities for a minimum single premium |
Date: |
Thu, 22 Apr 2021 11:57:26 -0400 (EDT) |
branch: master
commit 37944d89d144f37f574c6447244d4615684c4e2a
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>
Add database entities for a minimum single premium
Single-premium sales almost always involve a chosen dollar amount of
premium, and a specified amount calculated as a function of that chosen
premium: the corresponding CVAT corridor, or perhaps some percentage
such as 95% of corridor.
For example, if the premium is $10000 and the corridor factor is 2.02,
then the specified amount would be entered as "corridor" and lmi would
realize that strategy as $20200.
But what happens if the minimum specified amount is, say, $50000? In the
example above, lmi increases the specified amount to $50000...and leaves
the customer's premium alone, because it would be astonishing to demand
$20200 when only $10000 was offered. However, this means that the single
premium is inadequate for the (forced) minimum specified amount, so the
illustration lapses early. It would be reasonable to conclude that the
minimum policy size should be stated in terms of premium rather than
specified amount, and amend the policy specifications accordingly.
If policy specifications are deemed to be immutable, the only reasonable
thing lmi can do is refuse to produce an illustration. Therefore, added
two database entities to support such a refusal.
Some multipliers default to unity because zero would be perilous: e.g.,
setting DB_GuarCoiMultiplier to anything less than one is probably a
mistake; to zero, a catastrophe. However, for DB_MinSinglePremiumMult,
the default is zero because there is no higher a priori minimum.
---
db_sort.sed | 2 ++
dbdict.cpp | 3 +++
dbdict.hpp | 2 ++
dbnames.hpp | 2 ++
dbnames.xpp | 2 ++
oecumenic_enumerations.hpp | 4 ++++
6 files changed, 15 insertions(+)
diff --git a/db_sort.sed b/db_sort.sed
index 74d4848..96735d7 100644
--- a/db_sort.sed
+++ b/db_sort.sed
@@ -307,6 +307,8 @@
/DB_TgtPremIgnoreSubstd\>/ s/^/M010/
/DB_MinPmt\>/ s/^/M011/
/DB_IsSinglePremium\>/ s/^/M012/
+/DB_MinSinglePremiumType\>/ s/^/M013/
+/DB_MinSinglePremiumMult\>/ s/^/M014/
# DB_Topic_SecondaryGuarantees
/DB_NoLapseMinDur\>/ s/^/N001/
/DB_NoLapseMinAge\>/ s/^/N002/
diff --git a/dbdict.cpp b/dbdict.cpp
index b6d5737..8bd7635 100644
--- a/dbdict.cpp
+++ b/dbdict.cpp
@@ -381,6 +381,8 @@ void DBDictionary::ascribe_members()
ascribe("TgtPremIgnoreSubstd" , &DBDictionary::TgtPremIgnoreSubstd
);
ascribe("MinPmt" , &DBDictionary::MinPmt
);
ascribe("IsSinglePremium" , &DBDictionary::IsSinglePremium
);
+ ascribe("MinSinglePremiumType" , &DBDictionary::MinSinglePremiumType
);
+ ascribe("MinSinglePremiumMult" , &DBDictionary::MinSinglePremiumMult
);
ascribe("NoLapseMinDur" , &DBDictionary::NoLapseMinDur
);
ascribe("NoLapseMinAge" , &DBDictionary::NoLapseMinAge
);
ascribe("NoLapseUnratedOnly" , &DBDictionary::NoLapseUnratedOnly
);
@@ -733,6 +735,7 @@ void DBDictionary::InitDB()
Add({DB_MinPremType , oe_monthly_deduction});
Add({DB_TgtPremType , oe_monthly_deduction});
Add({DB_IsSinglePremium , oe_flexible_premium});
+ Add({DB_MinSinglePremiumType, oe_no_min_single_premium});
Add({DB_DeductionMethod , oe_proportional});
Add({DB_DeductionAcct , oe_prefer_general_account});
Add({DB_DistributionMethod , oe_proportional});
diff --git a/dbdict.hpp b/dbdict.hpp
index 54d8c3a..1bdd844 100644
--- a/dbdict.hpp
+++ b/dbdict.hpp
@@ -362,6 +362,8 @@ class LMI_SO DBDictionary
database_entity TgtPremIgnoreSubstd ;
database_entity MinPmt ;
database_entity IsSinglePremium ;
+ database_entity MinSinglePremiumType ;
+ database_entity MinSinglePremiumMult ;
database_entity NoLapseMinDur ;
database_entity NoLapseMinAge ;
database_entity NoLapseUnratedOnly ;
diff --git a/dbnames.hpp b/dbnames.hpp
index ec29017..776afdb 100644
--- a/dbnames.hpp
+++ b/dbnames.hpp
@@ -469,6 +469,8 @@ enum e_database_key
,DB_TgtPremIgnoreSubstd
,DB_MinPmt
,DB_IsSinglePremium
+ ,DB_MinSinglePremiumType
+ ,DB_MinSinglePremiumMult
,DB_Topic_SecondaryGuarantees
diff --git a/dbnames.xpp b/dbnames.xpp
index 36b2ad2..10d20bb 100644
--- a/dbnames.xpp
+++ b/dbnames.xpp
@@ -313,6 +313,8 @@
{DB_TgtPremIgnoreSubstd,DB_Topic_Premiums,"TgtPremIgnoreSubstd","Target
premium ignores substandard rating: 0=no, 1=yes",}, \
{DB_MinPmt,DB_Topic_Premiums,"MinPmt","Minimum initial payment [not
implemented]",}, \
{DB_IsSinglePremium,DB_Topic_Premiums,"IsSinglePremium","Premium flexibility:
0=flexible, 1=single, 2=modified single premium, 3=limited flexible premium",},
\
+{DB_MinSinglePremiumType,DB_Topic_Premiums,"MinSinglePremiumType","Minimum
single premium: 0=none, 1=multiple of corridor AV",}, \
+{DB_MinSinglePremiumMult,DB_Topic_Premiums,"MinSinglePremiumMult","Minimum
single premium as a multiple of corridor: e.g., 1.0 for 100% of corridor AV",},
\
{DB_Topic_SecondaryGuarantees,DB_FIRST,"Secondary
guarantees","Secondary-guarantee options and parameters",}, \
{DB_NoLapseMinDur,DB_Topic_SecondaryGuarantees,"NoLapseMinDur","Minimum number
of years no-lapse guarantee remains in effect if premium requirement
satisfied",}, \
{DB_NoLapseMinAge,DB_Topic_SecondaryGuarantees,"NoLapseMinAge","Minimum age to
which no-lapse guarantee remains in effect if premium requirement satisfied",},
\
diff --git a/oecumenic_enumerations.hpp b/oecumenic_enumerations.hpp
index 7cff113..81f1b43 100644
--- a/oecumenic_enumerations.hpp
+++ b/oecumenic_enumerations.hpp
@@ -153,6 +153,10 @@ enum oenum_premium_flexibility
,oe_limited_flexible_premium
};
+enum oenum_min_single_prem_type
+ {oe_no_min_single_premium
+ ,oe_min_single_premium_corr_mult
+ };
/// Used only for backward compatibility with old versions that didn't
/// distinguish state of jurisdiction from premium-tax state.
- [lmi-commits] [lmi] master updated (905df77 -> 718ef64), Greg Chicares, 2021/04/22
- [lmi-commits] [lmi] master d53539c 1/6: Rebuild 'custom_tools' early in 'hooks/pre-commit', Greg Chicares, 2021/04/22
- [lmi-commits] [lmi] master 60b5d97 2/6: Strenghen asserted preconditions, Greg Chicares, 2021/04/22
- [lmi-commits] [lmi] master 718ef64 6/6: Enforce a minimum single premium for "corridor" strategy, Greg Chicares, 2021/04/22
- [lmi-commits] [lmi] master 8d6c2da 3/6: Transpose two arguments, Greg Chicares, 2021/04/22
- [lmi-commits] [lmi] master 88fbe0c 4/6: Overload calculate_premium(), Greg Chicares, 2021/04/22
- [lmi-commits] [lmi] master 37944d8 5/6: Add database entities for a minimum single premium,
Greg Chicares <=