[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [5310] Pass target premium to 7702 object prn, but don't u
From: |
Greg Chicares |
Subject: |
[lmi-commits] [5310] Pass target premium to 7702 object prn, but don't use it yet |
Date: |
Sat, 19 Nov 2011 20:05:42 +0000 |
Revision: 5310
http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=5310
Author: chicares
Date: 2011-11-19 20:05:41 +0000 (Sat, 19 Nov 2011)
Log Message:
-----------
Pass target premium to 7702 object prn, but don't use it yet
Modified Paths:
--------------
lmi/trunk/ihs_acctval.cpp
lmi/trunk/ihs_avmly.cpp
lmi/trunk/ihs_irc7702.cpp
lmi/trunk/ihs_irc7702.hpp
Modified: lmi/trunk/ihs_acctval.cpp
===================================================================
--- lmi/trunk/ihs_acctval.cpp 2011-11-19 13:29:31 UTC (rev 5309)
+++ lmi/trunk/ihs_acctval.cpp 2011-11-19 20:05:41 UTC (rev 5310)
@@ -454,10 +454,16 @@
// TODO ?? We need to reconsider where the Irc7702 object gets created.
// Perhaps it should be when initial DB is first known? No, needed for
// solves. Then maybe we only need to move the call to Initialize7702?
+ double annual_target_premium = GetModalTgtPrem
+ (0
+ ,mce_annual
+ ,InvariantValues().SpecAmt[0]
+ );
Irc7702_->Initialize7702
(InvariantValues().SpecAmt[0] + InvariantValues().TermSpecAmt[0]
,InvariantValues().SpecAmt[0] + InvariantValues().TermSpecAmt[0]
,effective_dbopt_7702(InvariantValues().DBOpt[0].value(),
Equiv7702DBO3)
+ ,annual_target_premium
);
// JOE--Try this instead of your second change to ldginvar.cpp
Modified: lmi/trunk/ihs_avmly.cpp
===================================================================
--- lmi/trunk/ihs_avmly.cpp 2011-11-19 13:29:31 UTC (rev 5309)
+++ lmi/trunk/ihs_avmly.cpp 2011-11-19 20:05:41 UTC (rev 5310)
@@ -1145,6 +1145,7 @@
,OldSA
,new_dbopt
,old_dbopt
+ ,AnnualTargetPrem
);
}
Modified: lmi/trunk/ihs_irc7702.cpp
===================================================================
--- lmi/trunk/ihs_irc7702.cpp 2011-11-19 13:29:31 UTC (rev 5309)
+++ lmi/trunk/ihs_irc7702.cpp 2011-11-19 20:05:41 UTC (rev 5310)
@@ -179,6 +179,7 @@
{
LMI_ASSERT(a_PresentSpecAmt <= a_PresentBftAmt);
LMI_ASSERT(a_PriorSpecAmt <= a_PriorBftAmt);
+ LMI_ASSERT(0.0 <= a_TargetPremium);
// TODO ?? Instead put these in initializer-list and write assertions?
if(0 == InforceDuration)
{
@@ -275,6 +276,7 @@
,double a_PriorSpecAmt
,mcenum_dbopt_7702 a_NewDBOpt
,mcenum_dbopt_7702 a_PriorDBOpt
+ ,double a_TargetPremium
)
{
LMI_ASSERT(a_PriorSpecAmt <= a_PriorBftAmt);
@@ -285,6 +287,7 @@
// as DB as of the last adjustment event.
LMI_ASSERT(materially_equal(PresentSpecAmt, a_PriorSpecAmt));
LMI_ASSERT(PresentDBOpt == a_PriorDBOpt);
+ LMI_ASSERT(0.0 <= a_TargetPremium);
// Should be called only when something actually changed: either
// dbopt changed; or
// specamt changed, causing an actual change in bftamt.
@@ -302,13 +305,14 @@
;
LMI_ASSERT(adj_event);
- // Post BftAmt, SpecAmt, DBOpt changes to local state.
+ // Post target and {BftAmt, SpecAmt, DBOpt} changes to local state.
PriorBftAmt = PresentBftAmt;
PresentBftAmt = a_NewBftAmt;
PriorSpecAmt = PresentSpecAmt;
PresentSpecAmt = a_NewSpecAmt;
PriorDBOpt = PresentDBOpt;
PresentDBOpt = a_NewDBOpt;
+ TargetPremium = a_TargetPremium;
// Apply A + B - C method for both GLP and GSP.
@@ -711,15 +715,18 @@
(double a_BftAmt
,double a_SpecAmt
,mcenum_dbopt_7702 a_DBOpt
+ ,double a_TargetPremium
)
{
LMI_ASSERT(a_SpecAmt <= a_BftAmt);
+ LMI_ASSERT(0.0 <= a_TargetPremium);
PresentDBOpt = a_DBOpt;
PriorDBOpt = PresentDBOpt;
Initialize7702(a_SpecAmt);
PresentBftAmt = a_BftAmt;
PriorBftAmt = PresentBftAmt;
- LeastBftAmtEver = PresentBftAmt;
+ LeastBftAmtEver = PresentBftAmt; // was set to PresentSpecAmt by
Initialize7702(a_SpecAmt); what if DB != SA?
+ TargetPremium = a_TargetPremium;
PresentGLP = CalculateGLP
(InforceDuration // TODO ?? a_Duration...what if inforce?
,PresentBftAmt
@@ -884,15 +891,16 @@
//
// TODO ?? It's also correct only if the supplied target premium
// is correct.
-// double target = TargetPremium;
-
+#if 0
+ double target = TargetPremium;
+#else // About to be removed:
double target = Values.GetTgtPrem
(a_Duration
,a_SpecAmt
- ,mce_option1 // TODO ?? Should pass dbopt.
+ ,mce_option1 // Should pass dbopt [marked as a defect below].
,mce_annual
);
-
+#endif
double z =
( DEndt[a_EIOBasis] * a_LeastBftAmtEver
+ PvChgPol[a_EIOBasis][a_Duration]
@@ -1023,6 +1031,12 @@
{
SpecAmt = a_Trial;
Irc7702_.Initialize7702(a_Trial);
+ const_cast<double&>(Irc7702_.TargetPremium) =
Irc7702_.Values.GetTgtPrem
+ (Duration
+ ,SpecAmt
+ ,mce_option1 // TODO ?? Should pass dbopt.
+ ,mce_annual
+ );
return
Irc7702_.CalculatePremium
(EIOBasis_
Modified: lmi/trunk/ihs_irc7702.hpp
===================================================================
--- lmi/trunk/ihs_irc7702.hpp 2011-11-19 13:29:31 UTC (rev 5309)
+++ lmi/trunk/ihs_irc7702.hpp 2011-11-19 20:05:41 UTC (rev 5310)
@@ -105,6 +105,7 @@
(double a_BftAmt
,double a_SpecAmt
,mcenum_dbopt_7702 a_DBOpt
+ ,double a_TargetPremium
);
void UpdateBOY7702();
void ProcessGptPmt
@@ -121,6 +122,7 @@
,double a_PriorSpecAmt
,mcenum_dbopt_7702 a_NewDBOpt
,mcenum_dbopt_7702 a_PriorDBOpt
+ ,double a_TargetPremium
);
double Forceout();
@@ -220,7 +222,7 @@
std::vector<double> const& LoadTgt; // Premium load up to target
std::vector<double> const& LoadExc; // Premium load on excess over
target
- double const TargetPremium;
+ double TargetPremium;
round_to<double> round_min_premium;
round_to<double> round_max_premium;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [lmi-commits] [5310] Pass target premium to 7702 object prn, but don't use it yet,
Greg Chicares <=