[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master 7b9b0cf 11/14: Resolve a marked defect [339]
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master 7b9b0cf 11/14: Resolve a marked defect [339] |
Date: |
Sun, 6 Sep 2020 07:50:38 -0400 (EDT) |
branch: master
commit 7b9b0cf5e88d190eb186ae70e4a796bb04b1c519
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>
Resolve a marked defect [339]
The defect marker was spurious: lapses really were reflected, because
of the way 'ItLapsed' was used in GetPartMortQ(). Removed that use of
'ItLapsed', however, because partial-mortality factors are independent
of calculation basis, whereas 'ItLapsed' is not. This makes the
description of the alleged defect accurate, whereas previously it was
not.
However, that description identified no true defect, because the
probability of survival is independent of policy lapse. One might
anticipate a system-test regression, but Ledger::ZeroInforceAfterLapse()
prevents that, by design. Removed an old comment on that function: it
is not possible to know the latest lapse duration among all bases until
after all have been calculated.
---
ihs_acctval.cpp | 12 +++++++-----
ledger.cpp | 3 ---
2 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/ihs_acctval.cpp b/ihs_acctval.cpp
index 79ec645..33b4a2c 100644
--- a/ihs_acctval.cpp
+++ b/ihs_acctval.cpp
@@ -1440,14 +1440,16 @@ void AccountValue::SetAnnualInvariants()
/// limit (if any). If partial mortality is not used, then qx is
/// uniformly zero, tpx is one, and lx is the radix.
///
+/// tpx and lx both have one more element than qx; dropping the first
+/// or last element gives EOY and BOY vectors, respectively.
+///
/// Whether a contract continues after its normal maturity date does
/// not matter. It is treated as not expiring on that date because
/// year-end composite values are multiplied by this lx.
///
-/// TODO ?? These actuarial functions may be thought of as
-/// counting potential inforce lives: they do not reflect lapses.
-/// InforceLivesBoy() and InforceLivesEoy() may be used where
-/// lapses should be taken into account.
+/// These actuarial functions reflect survivorship only, not lapses.
+/// Use AccountValue::InforceLives{E,B}oy() where lapses should be
+/// taken into account; cf. Ledger::ZeroInforceAfterLapse().
void AccountValue::set_partial_mortality()
{
@@ -1472,7 +1474,7 @@ void AccountValue::set_partial_mortality()
double AccountValue::GetPartMortQ(int a_year) const
{
LMI_ASSERT(a_year <= BasicValues::GetLength());
- if(!yare_input_.UsePartialMortality || ItLapsed)
+ if(!yare_input_.UsePartialMortality)
{
return 0.0;
}
diff --git a/ledger.cpp b/ledger.cpp
index 09e3c4d..73f9d9e 100644
--- a/ledger.cpp
+++ b/ledger.cpp
@@ -177,9 +177,6 @@ void Ledger::SetRunBases(int length)
/// want to truncate values on that other basis, even if it means
/// that the vector of inforce lives does not correspond to the
/// current values.
-///
-/// SOMEDAY !! Reconsider whether the values this function sets to
-/// zero should somehow be set to zero upstream.
void Ledger::ZeroInforceAfterLapse()
{
- [lmi-commits] [lmi] master updated (c4f84b4 -> 59860e3), Greg Chicares, 2020/09/06
- [lmi-commits] [lmi] master 123b572 01/14: Avoid reading back from ledger in class AccountValue, Greg Chicares, 2020/09/06
- [lmi-commits] [lmi] master b4eb422 02/14: Rename a variable, Greg Chicares, 2020/09/06
- [lmi-commits] [lmi] master 14c2920 07/14: Factor out partial-mortality calculations, Greg Chicares, 2020/09/06
- [lmi-commits] [lmi] master 338d589 10/14: Call set_partial_mortality() OAOO, Greg Chicares, 2020/09/06
- [lmi-commits] [lmi] master 915e4ef 03/14: Avoid reading back from ledger in class AccountValue, Greg Chicares, 2020/09/06
- [lmi-commits] [lmi] master 540e3ca 04/14: Simplify, Greg Chicares, 2020/09/06
- [lmi-commits] [lmi] master 73d5f2b 06/14: Refactor for terseness, Greg Chicares, 2020/09/06
- [lmi-commits] [lmi] master 2bcf8d3 08/14: Move commentary outside function body, Greg Chicares, 2020/09/06
- [lmi-commits] [lmi] master 7b9b0cf 11/14: Resolve a marked defect [339],
Greg Chicares <=
- [lmi-commits] [lmi] master 3cbd888 12/14: Improve documentation, Greg Chicares, 2020/09/06
- [lmi-commits] [lmi] master 3ff6e18 13/14: Add and use trivial const accessors, Greg Chicares, 2020/09/06
- [lmi-commits] [lmi] master 1f2d652 05/14: Calculate and store partial-mortality tpx along with lx, Greg Chicares, 2020/09/06
- [lmi-commits] [lmi] master a1d6c16 09/14: Improve documentation, Greg Chicares, 2020/09/06
- [lmi-commits] [lmi] master 59860e3 14/14: Move partial mortality into base class, Greg Chicares, 2020/09/06