Projecting flat bonuses and increasing salaries
Question: When running an estimated benefit calculation, the plan sponsor wants to increase wages at 2.5% per year. In the computation, the wages are allowed to increase, but annual bonuses, which are part of pensionable earning, must be projected at the last known amount. Wages are paid monthly at the end of the month. Bonuses are paid once a year at the end of January. How can this be done? There are separate historical fields for wages and bonus.
Answer:
Set-up two start & stop array fields: Salary and Bonus.
Make a Salary Definition Set and Salary Definition: Pay. Include both fields in the Salary History
In the Transform salary topic, the For all periods, Transformation expression might look like:
LastBonus := #getvalue Bonus & |
; get the last non-zero bonus | |
Last_dt := 2 #effdate wages & |
; get the most recent stop date |
|
YearlySum := 1 #mpsum wages & |
; sum wages by calendar year | |
Jan_1 := (-12) #MONTHROUND Last_dt & |
; get Jan 1st of year of Last_dt | |
LastYear_12_31 := Jan_1 #dateminus 1d & |
; get Dec 31st of previous year | |
Value:= YearlySum * (#date = LastYear_12_31) & |
; segregate the value on Dec 31st ; of last year. All other values ; will be zero. |
|
LastYearWages:= 0 #mpsum Value & |
; Make Value the last amount ; of array |
|
years_after:= (#Year #date) #zminus (#year Last_dt) & |
; get the number of years between ; Last_dt and #date |
|
Future_EOM:= (#date = (#endmonth #date) * (#date > (#endmonth Last_dt)) & |
; result=1 if date is in the future ; and end of month result=0 if not |
|
EOM_Jan31:= (#month Future_EOM) = 1 & |
; result=1 if January 31st in ; future result=0 if not |
|
Monthly_wages:= LastYearWages/12 * [(1.025) ** years_after] * Future_EOM & |
; result=monthly wages if future ; date is end of month ; result=0 if not |
|
Annual_Bonus:= EOM_Jan31 * LastBonus |
; annual bonuses are paid ; on Jan 31st of each year |
|
Monthly_after:= Monthly_wages + LastBonus & | ; monthly amounts of wages and ; bonuses after Last_dt |
|
[(#date <= (#endmonth Last_dt)) * #this] + Monthly After |
; actual wages and Bonuses before ; the end of month of Last_dt and ; projected wages and bonuses after |
|