lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] (no subject)


From: Greg Chicares
Subject: [lmi-commits] (no subject)
Date: Wed, 15 Jun 2016 17:15:45 +0000 (UTC)

branch: master
commit 968ab786c69d0ca504ecdc371b2e93a684ec7764
Author: Gregory W. Chicares <address@hidden>
Date:   Wed Jun 15 17:15:12 2016 +0000

    Remove defective commission calculation [429]
    
    Compensation generally varies for different categories of producers.
    Without knowing which category the producer belongs to, lmi cannot
    calculate compensation correctly. The old calculation, now removed,
    was suitable for only one producer category at best, but just plain
    wrong for others. Commit a0d3b6d39f32f601618f7340f15352710567c1ca
    made that calculation conditional, and it was disabled in 2015 for
    all supported products; now the broken code is expunged.
---
 dbnames.xpp          |    2 +-
 ihs_acctval.cpp      |   30 ++----------------------------
 ledger_invariant.cpp |    3 +--
 ledger_xml_io.cpp    |    2 +-
 4 files changed, 5 insertions(+), 32 deletions(-)

diff --git a/dbnames.xpp b/dbnames.xpp
index 547ff00..f63babf 100644
--- a/dbnames.xpp
+++ b/dbnames.xpp
@@ -300,7 +300,7 @@
 {DB_ErPremMethod,DB_Topic_Allocations,"ErPremMethod","Apportionment of 
employer premiums between general and separate accounts: 0=follow input fund 
allocation, 1=credit 'preferred' account",}, \
 {DB_ErPremAcct,DB_Topic_Allocations,"ErPremAcct","Preferred account for 
employer premiums if input overridden: 0=general account, 1=separate 
account",}, \
 {DB_Topic_Compensation,DB_FIRST,"Compensation","Commissions, asset-based 
compensation, and chargebacks",}, \
-{DB_CalculateComp,DB_Topic_Compensation,"CalculateComp","Calculate 
compensation [not fully implemented]",}, \
+{DB_CalculateComp,DB_Topic_Compensation,"CalculateComp","Calculate 
compensation [not implemented]",}, \
 {DB_CompTarget,DB_Topic_Compensation,"CompTarget","Producer-only compensation 
on premium up to target",}, \
 {DB_CompExcess,DB_Topic_Compensation,"CompExcess","Producer-only compensation 
on premium in excess of target",}, \
 {DB_CompChargeback,DB_Topic_Compensation,"CompChargeback","Compensation 
chargeback for early termination",}, \
diff --git a/ihs_acctval.cpp b/ihs_acctval.cpp
index f46b579..6efa4dc 100644
--- a/ihs_acctval.cpp
+++ b/ihs_acctval.cpp
@@ -1543,35 +1543,9 @@ void AccountValue::FinalizeYear()
 
         InvariantValues().GptForceout[Year] = YearsTotalGptForceout;
 
-// TODO ?? Not yet implemented.
+// SOMEDAY !! Not yet implemented.
 //        InvariantValues().NaarForceout[Year] = 
InvariantValues().ErGrossPmt[Year];
-
-        // Producer compensation is complicated, and generally varies
-        // by producer type (which is unknown to lmi). It was probably
-        // a mistake to attempt to calculate it in "simple" situations
-        // because the result is incorrect otherwise.
-        if(CalculateComp && yare_input_.EffectiveDate == 
yare_input_.InforceAsOfDate)
-            {
-            // This should also incorporate:
-            //   asset-tiered compensation
-            //   input 'extra' compensation (on premium and assets)
-            double commission =
-                    InvariantValues().GrossPmt[Year]
-                -   TieredGrossToNet
-                        (InvariantValues().GrossPmt[Year]
-                        ,AnnualTargetPrem
-                        ,CompTarget[Year]
-                        ,CompExcess[Year]
-                        )
-                ;
-            InvariantValues().ProducerCompensation[Year] =
-// This would normally be expected:
-//                  AssetComp[Year] * AVSepAcct
-// but some obsolete product needed this instead:
-                    AssetComp[Year] * (AVSepAcct + AVGenAcct)
-                +   commission
-                ;
-            }
+//        InvariantValues().ProducerCompensation[Year] =
         }
 }
 
diff --git a/ledger_invariant.cpp b/ledger_invariant.cpp
index 5481c9e..1b0377e 100644
--- a/ledger_invariant.cpp
+++ b/ledger_invariant.cpp
@@ -106,8 +106,7 @@ void LedgerInvariant::Alloc(int len)
 
     EndYearVectors  ["TermSpecAmt"           ] = &TermSpecAmt            ;
     EndYearVectors  ["SpecAmt"               ] = &SpecAmt                ;
-    // SOMEDAY !! This contradicts the "ProducerCompensation" comment in the 
header.
-    BegYearVectors  ["ProducerCompensation"  ] = &ProducerCompensation   ;
+    EndYearVectors  ["ProducerCompensation"  ] = &ProducerCompensation   ;
 
     OtherVectors    ["IndvTaxBracket"        ] = &IndvTaxBracket         ;
     OtherVectors    ["CorpTaxBracket"        ] = &CorpTaxBracket         ;
diff --git a/ledger_xml_io.cpp b/ledger_xml_io.cpp
index 7c79e9c..60970e5 100644
--- a/ledger_xml_io.cpp
+++ b/ledger_xml_io.cpp
@@ -260,7 +260,7 @@ void Ledger::write(xml::element& x) const
     title_map["PrefLoanBalance_Guaranteed"      ] = "Guar Preferred Loan Bal";
     title_map["PremTaxLoad_Current"             ] = "Curr Premium Tax Load";
     title_map["PremTaxLoad_Guaranteed"          ] = "Guar Premium Tax Load";
-// TODO ?? Excluded because it's defectively implemented:
+// Excluded because it's unimplemented:
 //    title_map["ProducerCompensation"            ] = " _____________ Producer 
Compensation";
     title_map["ProjectedCoiCharge_Current"      ] = "Experience Rating 
Projected COI Charge";
     title_map["RefundableSalesLoad"             ] = " _____________ Refundable 
Sales Load";



reply via email to

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