WO2002013097A2 - Personal financial planning - Google Patents

Personal financial planning Download PDF

Info

Publication number
WO2002013097A2
WO2002013097A2 PCT/US2001/024354 US0124354W WO0213097A2 WO 2002013097 A2 WO2002013097 A2 WO 2002013097A2 US 0124354 W US0124354 W US 0124354W WO 0213097 A2 WO0213097 A2 WO 0213097A2
Authority
WO
WIPO (PCT)
Prior art keywords
year
goal
user
tax
retirement
Prior art date
Application number
PCT/US2001/024354
Other languages
French (fr)
Other versions
WO2002013097A9 (en
Inventor
Kathy K. Dyer
Ralph Joseph Wolf
Eric Francois Penanhoat
Steven Andrew Feinschreiber
Deborah Ellen Kemp
William Van Harlow
Colin Dean Chickles
Kimberly Anne Petrosso
Ellen Katrina Connor
Shari Frances Gershenfeld
Original Assignee
Fmr Corp.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fmr Corp. filed Critical Fmr Corp.
Priority to AU2001279165A priority Critical patent/AU2001279165A1/en
Publication of WO2002013097A2 publication Critical patent/WO2002013097A2/en
Publication of WO2002013097A9 publication Critical patent/WO2002013097A9/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/02Banking, e.g. interest calculation or account maintenance

Definitions

  • This invention relates to personal financial planning.
  • a 38-year old person may set a goal for the amount of money that he or she would like to have accumulated for retirement at, say, age 65. He or she can then analyze whether his or her current assets and money that he or she can save in the interim will grow to the desired amount by the time he or she reaches retirement.
  • College planning can be handled in a similar way, as can other financial goals, such as saving for a down payment on a home .
  • a financial planning strategy typically involves a number of these financial goals and a consideration of financial preferences and investment strategies.
  • a person can start thinking, formulating, and implementing a financial strategy by drawing upon different sources of information and advice such as financial advisors or brokers, publications, and tools available on the Internet.
  • the invention features performing multiple random simulations of outcomes for muLtiple interdependent financial goals as an indicator of the likelihood of success in reaching the financial goals.
  • the invention features an article including a machine-readable medium which stores machine -executable instructions, the instructions causing a machine to perform multiple random simulations of outcomes for multiple interdependent financial goals associated with an investor and generate a graphical user interface simultaneously displaying results of the simulations as probabilities indicating the likelihood of success in reaching the financial goals.
  • the invention features gathering from a user information about multiple interdependent financial goals, gathering from a financial entity information about classes of investments owned by the user and controlled by the financial entity, and performing multiple random simulations of outcomes for the multiple interdependent financial goals using the information gathered from the user and the information gathered from the financial entity.
  • the invention features calculating the likelihood of success in reaching multiple interdependent financial goals associated with an investor considering the investor's asset allocations.
  • the invention features a system including a server configured to connect to a network and a process accessible by the server and configured to gather data about multiple financial goals from an investor associated with the financial goals and from an entity associated with the server and to perform simulations of outcomes for the financial goals as an indicator of the likelihood of success in reaching the financial goals.
  • the personal investments review (PIR) tool integrates multiple financial goals planning with investment planning and includes planning, investment, and other features.
  • the PIR tool allows for realistic investment planning, allowing investors (users of the PIR tool) to plan as individuals or with a spouse/planning partner. Users of the PIR tool can create goals to reflect their financial objectives, which may be any combination of retirement, education, and other goals.
  • the PIR tool considers mutual fund and brokerage account information held inside and outside the entity providing the PIR tool, which allows for comprehensive planning, even if some assets are held outside of the entity providing the PIR tool.
  • the PIR tool enables users to test different investment strategies in trying to reach their goals.
  • the users can input values to test outcomes and/or the PIR tool can "solve” and provide users with values, e.g., how much more to save, to achieve the desired outcome.
  • the PIR tool provides an easily understood graphical depiction of investment strategies, including graphs and/or tables that show projected asset levels and goal funding, e.g., the probability that each goal will be reached/funded. Users can, from the asset allocation and goal probability results of the PIR tool, refer to a next best target investment tool to more closely align their investments and target asset mixes to their goals.
  • FIG. 1 is a block diagram of a financial planning tool in accordance with an embodiment of the invention.
  • FIG . 2 is a diagram of a network configuration.
  • -FIG. ' 3 is a block diagram of a financial planning tool in accordance with an embodiment of the invention.
  • FIGS. 4-32 show screen shots implementing a financial planning tool in accordance with an embodiment of the invention.
  • FIGS. 33-35 are block diagrams of financial planning processes in accordance with an embodiment of the invention.
  • FIGS. 36-39 show screen shots implementing a solving function included in a financial planning tool in accordance with an embodiment of the invention.
  • a personal investments review (PIR) system 100 provides a tool that integrates multi-goal financial planning with investment planning.
  • the PIR system 100 helps a user (not shown) establish savings and time horizons for retirement, education, and other goals, evaluate whether the user's current savings strategy is likely to be sufficient to fund the goals, and consider investment options such as mutual funds that may be appropriate investments for the user.
  • the PIR system 100 evaluates how the user's current portfolio mix of stocks, bonds, and short-term investments could potentially perform over time in a wide spectrum of hypothetical market situations. The results of this evaluation are graphically presented to the user, showing when and where any shortfalls may occur.
  • the PIR system 100 also generates alternative investment strategies that could improve the chances of funding the goals and provides a list of investment options that could help the user move toward target asset mixes.
  • the PIR system 100 allows the user to establish a comprehensive financial plan, starting in an information gathering stage 102.
  • the PIR system 100 projects the financial plan's performance from year-to-year. Over 100 years of "planning lifetime" can be accommodated.
  • the PIR system 100 gathers planning and investment information including user information 104, accounts information 106, and goals information 108 from the user and/or from resources available to the PIR system 100.
  • the PIR system 100 via a processing engine 112, uses the gathered information and generates an investment strategy to support the financial plan.
  • the investment strategy provides a probability output for each goal that represents the likelihood that the goal will be fully funded.
  • the processing engine 112 tests the financial plan's performance over time in multiple simulated financial market environments. This testing takes into account that the user may experience many different market environments during the user's planning lifetime.
  • the processing engine 112 can also perform goal solving that can vary user input such as retirement age or annual contributions to produce a desired result, such as a confidence level (probability) of meeting a goal.
  • the probability output is graphically presented to the user in a user interface including a graph 116 and text (not shown) explaining aspects of the output.
  • the processing engine 112 calculates a probability that represents the likelihood that the user will meet his or her financial goals.
  • the processing engine 112 tests how the user's financial plan will perform over time (using either the current or target asset mixes) in many simulated market environments, e.g., 250 simulations. To simulate the various market environments, the processing engine 112 uses a dataset of randomly generated returns for stocks, bonds, and short- term investments. Each set of returns maintains the historical correlation among the asset classes. The probability represents the proportion of market simulations in which the user was able to meet all the goal expenses, each and every year, for the life of the plan. For example,- if in 200 out of 250 simulations the user was able to meet all the goal expenses, the probability for that goal would be 80%.
  • the PIR system 100 also provides target asset mixes at the goal and money-type (taxable vs.
  • target asset mix would be generated by the processing engine 112 for the tax-advantaged assets associated with the retirement goal.
  • Another target asset mix would be generated for the taxable assets associated with this goal.
  • the processing engine 112 tests the financial plan over time, with up to five potential target asset mixes, in many different market environments, to determine which offers the best chance of success to fund the goal. Selection of target asset mixes is also influenced by the investor's risk tolerance - this precludes the PIR system 100 from recommending a target asset mix that exceeds the user's risk tolerance.
  • a "what-if" functionality similar to the goal solving described above, allows the user to view how the probability of funding their goals would change if he or she adopted the generated target asset mixes.
  • the PIR system 100 automatically suggests a "next best target investment . " The PIR system 100 quantifies sub asset class differences (positive or negative) between the user's current asset allocations and target asset mixes generated by the tool. If additional purchases are suggested, the PIR system 100 identifies up to ten funds (related to the entity providing the PIR system 100 or not) per sub asset class. Each identified fund is shown along with various views of fund information, such as fees and charges, performance, and risk, for the user's convenience. The user may also view a detailed report of their current fund holdings .
  • a routine 202 included in a network arrangement 200 can implement the PIR system 100.
  • the routine 202 is controlled and maintained by an entity, e.g., a brokerage or mutual fund company.
  • entity e.g., a brokerage or mutual fund company.
  • a user (not shown) at a user terminal 204, connects to a network 206, e.g., the Internet.
  • a network 206 e.g., the Internet.
  • the user can access the entity's web site maintained at a server 208.
  • the user can pass through the entity's firewall 210 and access the entity's protected (secure) server 212.
  • the protected server 212 accesses the routine 202 and provides the user with the capabilities of the PIR system 100.
  • routine 202 may also or instead be included in the protected server 212. Additionally, the routine may be included in or be accessible by the server 208 rather than behind the firewall 210 at the protected server 212, thereby giving users access to the PIR system 100 without security protection.
  • the routine 202 is illustrated in FIG. 3.
  • the routine 202 can be broken down into two stages: an input stage 300 (like the information gathering stage 102 in FIG. 1) and an asset liability model (ALM) processing stage 302 (like the processing stage 110 in FIG. 1) .
  • the ALM processing stage 302 includes a data valuation stage 304 that stores and interprets the information obtained in the input stage 300 for use by an ALM engine 306 (like the processing engine 112 in FIG. 1) in an ALM engine stage 308.
  • the ALM engine 306 integrates multiple-goals planning and investing strategies.
  • the ALM engine 308 produces two sets of results in an output validation stage 310: confidence level and asset allocation data 312 and wealth level, inflow (financing) , and outflow (payment) data 314.
  • Planning and investment information related to the user is obtained in the input stage 300.
  • Three categories of information are gathered: user profile information 316 (like the user information 104 in FIG. 1), goals information 318 (like the goals information 108 in FIG. 1) , and accounts information 320 (like the accounts information 106 in FIG. 1) .
  • the user can enter information for these three categories via a user interface 322, e.g., a graphical user interface including one or more screens enabling the user to input data using buttons, checkboxes, drop-down menus, text boxes, and similar tools.
  • the routine 202 may also or instead gather information from collections of stored data maintained by or otherwise accessible to the entity, such as assets, accounts, and 401 (k) plans managed for the user by the entity.
  • the user profile information 316 includes profile information specific to each person covered by the user's financial plan including the user, the user's spouse/partner, and the user's dependents.
  • the user can enter the profile information on a personal demographics information screen 400 as shown in FIG. 4 and on a personal income information screen 500 as shown in FIG. 5.
  • the profile information can include data -such as age, salary, number of children, marital status, social security, pensions, part-time jobs, state tax rate, local tax rate, tax filing status, and bequests. Tax status is taken into consideration by the ALM engine 306 during the simulation process (determining if the goals can be achieved under a variety of simulated investment scenarios) .
  • the user profile information 316 also includes data obtained through a household data IPQ (investor profile questionnaire) . Through answering the IPQ, the user indirectly indicates his or her financial and risk tolerance,. The user can answer the IPQ on IPQ screens 600, 700 as shown in FIGS. 6-7. A more detailed listing of the profile information is set forth in the Append
  • IPQ questions are asked directly to the user, such as: a) household income change over the next X years, e.g., five years, b) how much of monthly take-home income is used for essential expenses, c) household overall financial situation, d) emergency fund/short term use of assets, e) level of investment knowledge and experience with stocks or stock mutual funds, f) risk tolerance scale, and g) selling tendencies, e.g., asking if given a $100,000 fall in value, when would the user sell.
  • IPQ questions are inferred from the data entered in the profiles 316, goals 318, and accounts 320 sections, such as: a) total current financial assets (accounts data) , b) yearly saving amount towards goal (accounts data) , c) number of dependents (personal information data) , d) household income before tax (personal information data) , e) household federal tax bracket (computed based on federal tax tables) , and f) time horizon (inferred from goal start and end dates and cash flows) .
  • the IPQ information is used to set a cap on the asset mix that the ALM engine 306 can choose from in selecting or suggesting an investment asset mix for the user that can help the user meet his or her goals.
  • the ALM engine 306 will be constrained to show the best available target asset mix from the four remaining portfolios (all cash, conservative, balanced, and growth) .
  • the IPQ score is the lowest of three scores: time horizon, financial tolerance, and risk tolerance. The last two are computed from the data provided by the user using a standard IPQ scoring algorithm.
  • the ALM engine 306 first runs unconstrained and produces one of six target asset mixes (stocks/bonds/short-term) in percentage increments, e.g., 100/0/0, 85/15/0, 70/25/5, 50/40/10, 20/50/30, and 0/0/100.
  • the asset mix is tapped into a time horizon score using a portfolio lookup table used in the IPQ scoring.
  • the time horizon score is combined with the financial tolerance and risk tolerance scores to compute the final score and provide the asset mix used as a cap.
  • This uses the "standard" IPQ scoring and will result in one of four target asset mixes (stocks/bonds/short-term: 85/15/0, 70/25/5, 50/40/10, and 20/50/30) . Aggressive growth (85% stocks, 15% bonds) is therefore ' the most aggressive asset allocation that the ALM engine 306 can generate given these target asset mixes. The ALM engine' s target asset allocation result thus can better estimate the time horizon score.
  • the ALM engine 306 takes the cashflow stream of liabilities into account and therefore better estimates the time sensitivity of a particular goal.
  • the following time horizon IPQ questions are therefore not asked: 1) estimate the annual income needed from retirement investments (not needed because the answer to this question is implicitly built into the planning section based on retirement goal information - the ALM engine 306 takes this income flow into account to find a target asset allocation) , and 2) choose the statement that best describes your (the user's) plan to use retirement savings and investments (not needed because the answer to this question is implicitly built into the planning section, where distribution rules are used to withdraw money from different account types, and MRDs (minimum required distributions) are computed automatically) .
  • the goals information 318 includes descriptions of the goals that the user is planning for. Each goal is a stream of desired expenditures in the form of a dollar amount in each of a series of years. Every goal includes: a) a unique goal name, b) a goal type, c) a start year (before, after, or including the current year) , d) an end year (greater than or equal to the current year and greater than or equal to the starting year, and for non-retirement goals, ending by the time retirement ends) , and e) a liability stream (vector of expenditures with at least one non-zero element) .
  • the routine 202 provides for three types of goals: retirement, education, and other. The goal types are both accumulation and distribution oriented.
  • the retirement goal could be used to ensure that a level of annual income or annual expenses may be met annually throughout retirement.
  • An "other" goal could be established to accumulate a lump-sum down payment for a house.
  • An education goal may be established to ensure that a specific amount is available annually over four years to meet college expenses.
  • the user is always offered a retirement goal, either as an individual goal or a joint goal for the user and the user's spouse/planning partner.
  • Retirement goal information can be entered on retirement goal screens 800, 900 as shown in FIGS. 8-9.
  • the user specifies the amount of annual income (or annual expenses) desired during retirement, rather than an accumulated amount desired at the start of retirement, and the PIR tool provides the probability that this amount of income (or annual spending) will be available (or attainable) each and every year throughout retirement.
  • annual retirement income can be provided via social security income, pensions, and other sources.
  • the annual retirement income goal is the amount desired after tax considerations. A more detailed listing of the retirement information is set forth in the Appendix at pages 1-2.
  • the user is also able to create up to nine other (custom or education) goals starting at a goal creation screen 1000 as shown in FIG. 10.
  • the goal creation screen 1000 includes an explanation of goal types and a drop-down menu 1002 where the user can select the appropriate goal type for his or her custom goal.
  • These other goals can be any combination of education or other goals.
  • An education goal may be, for example, planning to pay for a child's college education.
  • the user enters more detailed goal information on a details screen, for example, an education goal screen 1100, shown in FIG. 11.
  • the user provides a unique name for the selected custom goal.
  • a more detailed listing of custom goal information is set forth in the Appendix at page 2.
  • a goal summary screen 1200 details the annual cost and the corresponding years for each goal created.
  • a goals graph 1202 displays goal timing and cost over the life of the goals and estimated lifetime of the investor.
  • a goals table 1204 displays summary information pertaining to each goal (rows 1206a-n) , including goal name (column 1208) , goal type (column 1210) , owner (column 1212) , start and end years (columns 1214 and 1216) , cost (annual expenses or total cost) (column 1218), and edit/delete options (column 1220) .
  • the user can click on an edit button 1222 in a row 1206 to change the assumptions/parameters for the goal in that row 1206, a delete button 1224 in a row 1206 to remove the goal in that row 1206, an add goal button 1226 to enter additional investment goals, or on a next button 1228 if the goals are complete.
  • the goals graph 1202 illustrates data included in the goals table 1204.
  • the goals graph 1202 displays the amount of annual expenses or total cost associated with each goal (from the cost column 1218 for each row 1206) for each year that the user has at least one active goal.
  • the goals graph 1202 spans from no later than the earliest year in the start year column 1214 to no earlier than the latest year in the end year column 1216.
  • the goals are color-coded in the goals graph 1202, so a goal's duration and annual costs can be easily determined by looking at the goals graph 1202.
  • Every goal type also includes a funding order, a surplus feature, exclusions, and the possibility of one-time contributions.
  • the funding order for each goal type is assumed to be: a) retirement: taxable, tax deferred (e.g., annuity, work place accounts, and traditional IRAs), tax free (e.g., Roth IRAs) ; b) education: pre-paid tuition, gifts/trusts (e.g. . , UTMA/UGMA), tax deferred (e.g., CIT accounts), tax free (e.g., educations IRAs), taxable, and c) other: taxable.
  • tax deferred e.g., annuity, work place accounts, and traditional IRAs
  • tax free e.g., Roth IRAs
  • education e.g. . , UTMA/UGMA
  • tax deferred e.g., CIT accounts
  • tax free e.g., educations IRAs
  • taxable e.g
  • the PIR tool is "smart" in recognizing distinct saving vehicles such as traditional and Roth IRAs (individual retirement accounts) , college investment trust accounts
  • CITs Code Division Multiple Access/Uniform Transfer to Minors Act/Uniform Gift to Minors Act
  • UTMA/UGMA Uniform Transfer to Minors Act/Uniform Gift to Minors Act
  • tax consequences This allows the PIR tool to automatically assign current assets and future contributions in tax-advantaged accounts to appropriate goals. Users can prioritize goals by assigning taxable assets to goals. By default, taxable assets are assigned to the retirement goal.
  • the PIR tool is sensitive to the unique rules and requirements that apply to certain retirement or education savings accounts. For example, as appropriate, the PIR tool will assess a 10% tax penalty on premature distributions or calculate and withdraw the minimum required distribution. There are also edits to ensure that planned contributions to retirement accounts do not exceed IRS (Internal Revenue Service) limits.
  • IRS Internal Revenue Service
  • the PIR tool is also sensitive to the tax status of assets and maintains separate "buckets" for taxable, tax- deferred, and tax-free assets.
  • a hierarchy of withdrawals ensures that, as appropriate, taxable income sources are liquidated before tax-deferred or tax-free sources.
  • the PIR tool applies federal tax brackets each year based upon annual income and filing status. If the user enters a state/local tax rate, these taxes are also deducted.
  • the PIR tool takes taxes from investment earnings and distributions, where applicable.
  • the PIR tool may also provide an interface to accept user-supplied cost basis for specified retirement accounts . 5
  • the surplus feature ensures that when a surplus dollar amount remains after the funding of a goal, the surplus is moved into the next goal's accounts as appropriate. UTMA/UGMA assets for a college goal do not flow to the next goal and remain with the specified child. Pre-paid tuition, education
  • One-time contributions include contributions from an external source such as a gift from a relative, an
  • Each one-time contribution should have a dollar amount and a contribution year which is less than or equal to the last year of the goal it is
  • the accounts information 320 shown in FIGS. 13a-b on an accounts screens 1300, includes a description of the user's current financial assets/accounts.
  • FIG. 13a shows a top portion 1302 of the accounts screen 1300 including information on accounts maintained by or held inside the entity providing 10 the PIR system.
  • FIG. 13b shows a bottom portion 1304 of the accounts screen 1300 including information on accounts maintained or held by third parties.
  • each account on the accounts screen 1300 includes: a) a unique account name (columns 1306a-b) , 15 b) an account type, e.g., taxable, tax deferred, tax free, annuity, IRA, and CIT (college investment trust) (columns 1306a-b) , c) an associated goal type (each account is allocated to a goal and to an owner, e.g., user,
  • contribution information e.g., any contribution amount, contribution start, and contribution end (columns 1314a-b) , h) whether the account is included in the user' s 30 financial plan (columns 1316a-b), and i) edit/delete options (columns 1318a-b) .
  • contribution information e.g., any contribution amount, contribution start, and contribution end (columns 1314a-b) , h) whether the account is included in the user' s 30 financial plan (columns 1316a-b), and i) edit/delete options (columns 1318a-b) .
  • At the bottom of the top portion 1302 and the bottom portion 1304 is the total value and total annual contributions or future savings of the accounts listed in the top portion 1302 and the bottom portion 1304, respectively.
  • At the bottom 5 of the accounts screen 1300 (shown in FIG. 13b) is the total value of all accounts on the accounts screen 1300.
  • the user can change the information on the accounts screen 1300 to reflect changes in their financial plan.
  • the user can edit specific fields for an account by clicking on an 10 edit button 1320 in that account's row 1322, delete an account by clicking on a delete button 1324 in that account's row 1322, and add accounts by clicking on an add accounts button 1326.
  • the user can click on a back button 1328 to return to the previous screen in the PIR system or on a next button 1330 15 if the accounts information is complete.
  • a more detailed listing of account information is set forth in the Appendix at pages 3-5.
  • the information gathered in the input stage 300 is formatted and checked for 20 consistency 324 using a set of rules and assumptions 326, e.g., software metrics. A more detailed description of the rules and assumptions are set forth in the Appendix at pages 35-36 and 47-51.
  • the information is stored and interpreted 328 to be processed by the ALM 25 engine 306.
  • the data is organized in the following arrays: ,. mich . ' a) goals information (see FIG. 12), e.g., start, end, and amount, b) liability stream: a time series of dollars corresponding to the liabilities for each goal 30 created using the following assumptions and calculations: 1) liabilities grow at the total rate provided by the user,
  • the data in the arrays is then aggregated and ordered to allow the ALM engine 306 to process the information logically across the simulations.
  • the environment described by the aggregated and ordered information is used to process all the asset allocation combinations across the different goals by an asset allocation cap 330.
  • the user indicates how to allocate his or her taxable savings to goals by entering a percentage for each goal, as on a taxable account goal allocation screen 1400, shown FIG. 14.
  • a corresponding simulation environment is then built, based on the user-supplied information: a) calculate ages for each point in the simulation, b) determine the base income tax bracket for each .
  • asset allocations contains the asset allocations at each date (because some accounts have pre-set asset allocations, e.g., CITs) . Asset allocations are held constant over the forecast horizon (except for those with pre-set asset allocations) . A more detailed description of asset allocation is set forth in the Appendix at pages 36-42.
  • the accounts information 320 is used in formulating simulated returns 332.
  • the ALM engine 306 considers sets of simulated returns to forecast the wealth across the user's accounts. By providing different sets of possible returns for stocks, bonds, and short-term, the sets of returns represent different states of the financial market during the planning horizon. The user need not provide estimates for his or her investments' future return and for the inflation rate.
  • the set of returns is pre-computed and the same data is used for all users. The results will thus be the same if the same set of inputs is used.
  • the entity provides the set of returns, with updates being made on a periodic basis, e.g., annually.
  • the simulated returns include a variety of features. One feature of the simulated returns includes a common set of randomly generated numbers used to build yearly return series for stocks, bonds, and short-term.
  • a covariance matrix is constructed using monthly returns for stocks, bonds, and short-term from Ibbotson Associates from 1926 to the December of the last available full year of data. The matrix is then transformed using Cholesky decomposition.
  • the resulting set of parameters can be combined with three randomly generated numbers, generated using a normal distribution with a mean of zero and a standard deviation of one.
  • the result is a set of three random return numbers that are consistent with the
  • the ALM engine 306 accepts the inputs described above to produce the results described above.
  • the ALM engine 306 produces a probability output, as shown on a current situation
  • ,. responsible . screen 1500 displays a percent probability for each of the user' s goals indicating the likelihood that the goal will be fully funded (realized) given the user's current strategy and multiple investment return scenarios derived from the user' s
  • the graph 1502 shows a bar 1504 indicating a sixty-seven percent probability of funding the retirement goal.
  • the user can learn more about the probabilities graph 1502 by clicking on a link to another screen including explanatory text in a "learn more" section 1506 of the current situation screen 1500.
  • the user can click on a probability link 1508.
  • the user can click on an assumptions link 1510. The user can see the hypothetical market value of his or her savings and investments for key
  • the goal analysis link 1512 brings the user to a goal analysis screen, partially shown in FIG. 16 on a savings and investments goal analysis screen 1600.
  • screen shows a graph and a table for each goal representing how the user's current savings and investments are projected to change from the current date to the end of each goal.
  • Clicking on a goal funding link 1602 brings the user to a goal analysis goal funding screen, partially shown in FIG. 17 on a
  • the goal analysis goal funding screen shows projected taxable and tax-advantaged asset levels and goal funding (at a specified probability level, e.g., 75%) .
  • the goal analysis goal funding screen displays a graph and a table for each goal representing the funding of each
  • the user can adjust their current situation by clicking on a link in an "adjustment" section 1514 of the current situation screen 1500.
  • the user can access a "what-if" future contributions screen 1800 as in FIG. 18 by clicking on a
  • the ALM engine 306 provides for the "what-if” scenarios accessible by the "what-if” links 1516 and 1518.
  • the "what- if” functionality allows a user to test whether increased savings, or changes to goal expenses or time horizon (beginning and end dates for goal-related expenditures) , could improve the probability that a goal will be fully funded, before making changes to his or her plan.
  • the user may input values to test outcomes and/or the ALM engine 306 can provide the user with values to achieve the user's goals. For example, on the future contributions screen 1800, the user can enter in "what-if" annual contributions for accounts held inside or outside the entity providing the PIR system in text boxes 1804.
  • a graph 1806 (FIG. 18) or 1910 (FIG. 19) displays the probabilities that the user's goafcls will be funded given the user's current investment plan.
  • the ALM engine 306 calculates the probability of each goal being funded given the "what-if" investment scenario and presents the resulting probabilities on a target asset mix screen 2000, shown in FIG. 20.
  • a target asset mix graph 2002 displays the current and "what-if” probabilities for each goal, accenting any probability changes between the current and "what-if” scenarios. If the user elects to make changes based upon experimentation in the "what-if” area", plan data can be updated with one keystroke by clicking on a submit button 1802 (FIG. 18) or 1902 (FIG. 19) . (Users do not need to return to 5 the input section to make these changes) .
  • the investment summary screen 2100 includes a summary of the user's investment strategy analysis. As generated by the ALM engine 306, the investment summary screen 2100 includes suggestions as to how the user can move closer to his or her
  • the user can click on a current holdings button 2102 on the investment summary screen 2100 and access a current
  • the current holdings screen 2200 lists the user's current holdings for each goal, broken up into separate tables based on tax type of the accounts funding the goal, e.g., tax-advantaged accounts and taxable accounts .
  • Each account is identified by name and
  • the asset allocation breakdown (e.g., stocks, bonds, and short-term) for each account is also given.
  • the PIR system also provides an analysis of the user's current and target asset allocations on an asset allocation scrfceen ⁇ 2300 as in FIG. 23.
  • the asset allocation screen 2300
  • 25 includes a textual and graphical explanation of the user's ,,ohn . current portfolio compared to the target asset mix for each goal.
  • the user can click on a "what-if” button 2302 and access a "what-if” screen, e.g., the 30 target asset mix screen 2000 in FIG. 20.
  • the user can click on a historical performance button 2304 next to that goal's textual and graphical comparison to access a historical performance screen 2400 as in FIG. 24.
  • the historical performance screen 2400 includes the historical returns, market increases, and market declines. The user can change the time horizon to see how the portfolios compare during a different time horizon by entering a new time frame, in a text box 2402.
  • the user can click on a diversification button 2306 to access a diversification screen 2500, shown in FIG. 25.
  • the diversification screen 2500 displays the taxable accounts assigned to all goals (as needed) in dollars or percentages, as chosen in checkboxes 2502 by the user.
  • An asset allocation graph 2504 breaks the user's investments down by asset type, e.g., stocks, bonds, short-term, and other.
  • An exposure graph 2506 and a sectors graph 2508 include a "look-through" for mutual funds (breaking down the mutual fund portfolio to show underlying investments) .
  • the exposure graph 2506 breaks the investments into dollars or percentages based on asset type, e.g.," domestic stock, foreign stock, bonds, short-term, and other.
  • the sectors graph 2508 breaks the investments into dollars or percentages based on industry sector, e.g., durables, staples, energy, finance, health, retail, service, technology, utilities, cyclicals, unclassified stock, bonds, short-term, and other.
  • the diversification screen 2500 also includes a table (an asset allocation table 2510 is partially shown) for each of the graphs 2504, 2506, and 2508 detailing the holdings (one holding per table row) that make up the investments included in the graphs 2504, 2506, and 2508.
  • the tables include one column for each asset type or industry sector included in the corresponding graph 2504, 2506, or 2508.
  • the asset allocation table includes one. column each for stocks (column 2512), bonds (column 2514), short-term (column 2516), and other (column 2518).
  • Each table also includes a total column, such as column 2520, including the total dollar or percentage value for each row (holding) .
  • the PIR system also provides for investment alternatives on an investment alternatives screen 2600 as in FIG. 26.
  • the investment alternatives screen 2600 lets the user view for each goal the current diversification of his or her taxable and non-taxable savings and evaluate how his or her assets are spread among industry sectors and foreign and domestic securities. Suggested changes to the user's current investment strategy are automatically given for each goal that may move the user closer to his or her target asset mix.
  • next target investment button 2602 To evaluate ways to adjust the current portfolio to move towards the suggested target asset mix, the user can click on a next target investment button 2602 to access a next target investment screen 2700, shown in FIG. 27.
  • the next target investment screen 2700 helps the user narrow the array of investment alternatives within each of the target asset mixes. See pending United States patent application 09/409,140 filed fc September 30, 1999 for an explanation of one way to implement the next target investment process.
  • the user can click on a funds to consider button 2604 to view a list of investments, e.g., mutual funds, that the user may want to consider purchasing in order to move closer to his or her target asset mixes.
  • the investments in the list can include investments opportunities held inside and outside the entity providing the PIR system.
  • the ALM engine 306 determines an investment style that the user may want to consider. Once an investment style is identified, the funds to consider screens 2800 (FIG. 28), 2900 (FIG. 29), 3000 (FIG. 30), and 3100 (FIG. 31), described further below, display funds by category, e.g., domestic large blend stock funds, foreign stock funds, domestic large growth stock funds, and bond funds. The categories are based on Morningstar, Inc.
  • the screens 2800, 2900, 3000, and 3100 assist the user in evaluating individual funds as investment choices.
  • the funds listed are screened to meet certain characteristics, although the funds need not be screened. For example, the list may only include funds with assets over $300 million or with a minimum of five years' performance history and the highest risk-adjusted return (using Sharpe three year rates) within their respective Morningstar Investment Category. Further, the foreign stock funds may only include those funds that invest primarily in equity securities of issuers located outside the United States.
  • the user can select one of four types of analysis to view the list by: summary (FIG. 28), risks (FIG. 29), loads and fees (FIG. 30), and profile (FIG. 31).
  • the investments in each "analysis type's list are divided into tables by asset fc t type. Each table row includes the name of one investment option and a checkbox that the user may click to select that investment for consideration in the user's target asset mix. The remaining columns in the tables are determined by the analysis type.
  • the screens in FIGS. 28-31 are partial screen shots.
  • the screens 2800, 2900, 3000, and 3100 each also include a clear button to clear any choices the user made in the checkboxes and a submit button to submit any choices made in the checkboxes.
  • Each screen also includes information on evaluating and selecting funds, how funds are chosen for listing on the screen, and the columns in that particular screen view. Also from the investment alternatives screen 2600, the user can click on a current holdings button 2606 to access a current holdings screen, such as the current holdings screen 2200 of FIG. 22.
  • the ALM engine 306 also can generate an action plan for the user as on an action steps screen 3200 as in FIG. 32.
  • the action plan is customized to the user's circumstances and use of the PIR tool.
  • the action plan items vary depending on whether or not the user achieved a specified probability level, e.g., 75%, for all of their goals or not, is within four years of retirement, and has entered additional goals (beyond retirement) , additional accounts, and explored the investment strategy portions of the PIR tool.
  • a specified probability level e.g., 75%
  • the ALM engine 306 implements a process 3300 as shown in FIG. 33.
  • the process 3300 includes calculating 3302 the first year (partial year) ratio to determine how much of an
  • the ALM engine 306 calculates 3304 the contributions to each account in each goal for all years and calculates 3306 the one-time contributions to each account in each goal for all years.
  • the ALM engine 306 can then perform 3308 analysis for each goal in each year, a process described further below.
  • the dollar results of the performing 3308 are converted 3310 from nominal dollars to real dollars.
  • the outputs, the confidence level and asset allocation data 312 and the wealth level, inflow (financing), and outflow (payment) data 314, can then be calculated 3312. These outputs are set forth on page . 27 of the Appendix.
  • the process 3308 is illustrated in FIG. 34.
  • the ALM engine 306 first updates 3400 variables for the year in question such as federal tax filing status, ages, inflation factor, and any early withdrawal penalty rate. Then the implicit retirement goal expenses for the year can be calculated 3402. These expenses will be zero before retirement begins. Once retirement begins, all contributions to the retirement goal, education goals, and other goals are de-facto expenses for the retirement goal.
  • Contributions to the retirement goal occur during retirement when one person is retired and one person is still working. Pre-tax contributions are accounted for through a reduction in income so only after-tax contributions need to be accounted for here.
  • the ALM engine 306 calculates 3404 the base retirement income and determines the taxable income before investment returns and taxable withdrawals.
  • the base taxable income is also calculated 3406 for each child/dependent. This taxable income calculation is for tax calculations only - it is not income to the goal as, for example, Social Security would be to the retirement goal.
  • the ALM engine 306 also rolls down 3408 any CIT asset allocation for each college goal and gets 3410-MRD divisors as necessary for the user and the user's spouse/planning partner if the user is above a certain age and still living.
  • the ALM engine performs 3412 each simulation.
  • the simulations are performed using a Monte Carlo algorithm and are set forth in the Appendix at pages 14-24.
  • the ALM engine 306 determines 3414 the confidence level of assets (asset projection) . This includes determining and saving the total level of assets for each goal at the 50%, 75%, and 90% level of confidence.
  • the ALM engine 306 also determines the taxable assets, tax-deferred assets, and tax-free assets for each simulation.
  • the ALM engine 306 also determines 3416 the confidence level for any goal that has ended (based on the number of bankruptcies) .
  • balances are transferred 3418 as necessary. Balances are transferred when either a person dies or a goal is completed. Federal tax tables are also updates 3420 for inflation to get the tax brackets ready for the next year.
  • the solver feature of the ALM engine 306 varies user input such as retirement age or annual contributions to produce a desired result, such as a confidence level (probability) of meeting a goal.
  • FIG. 35 illustrates a solver process 3500, which is set forth in more detail at pages 27-35 in the Appendix.
  • the ALM engine 306 knows to run a solver process by receiving notice 3502 that the solver is activated, e.g., by examining a goal solver flag's true or false status. Inputs for the solver are set forth on page 5 of the Appendix.
  • the ALM engine 306 determines 3504 which goal to solve for and determines 3506 what question to solve for, e.g., retirement fc age, annual retirement, college, or other expenses, annual savings necessary to provide for retirement, college, or custom goal.
  • the ALM engine 306 can then solve 3508 for the question, usually at a specified level of confidence, e.g., 75%.
  • the interface for the solvers is client-side java, although the solver could be run server-side. Due to processing constraints and presentation requirements, client- side java may be required.
  • a goal solvers page is essentially a "what-if" page. Examples of goal solvers pages are a retirement goal page 3600 in FIG. 36, a retirement assets page 3700 in FIG.
  • the initial view is the user's current situation. All selections are set to the user's default preferences.
  • the chart selection default is: "Goal Probabilities," as in FIGS. 36, 38, and 39, default goal to solve for is retirement, as in FIGS. 36-37, and the default confidence level is 75%, as in FIGS. 36-39. Also, all solver results are initially blank.
  • the retirement goal page 3600 includes a chart/graph 3602 illustrating the user's current situation.
  • Two graph views are available on a solver page: one view shows the probabilities for all goals (as in the graph 3602 and in graphs 3802 and 3902 in FIGS. 18 and 19 respectively) and another view showing assets over time for the selected goal (as shown in graph 3702 in FIG. 37) .
  • the user can choose a graph view using checkboxes 3604.
  • the user may solve for any one goal at a time.
  • the choices for goal selection are the goals the user ⁇ has entered and are available in a drop-down menu 3606.
  • Solver questions 3608a-c are determined by the goal selected. Selecting a goal fc using the drop-down menu 3606 will interactively set the solver questions displayed.
  • the user may select from different levels of confidence, e.g., 90%, 75%, and 50%, using a drop-down menu 3610. If the user interface control allows, the user may also type in a desired confidence level from 1% to 99% in whole percentages. Pressing a solve button 3612a-c for a question 3608a-c runs the solver for that question. During the solving process, "solving" message (s) are displayed to the user. When the solution is complete, the solver result is displayed for the selected question and any other solver result is cleared. The solver result is displayed in text 3614 and in the chart 3602. The result may not match the desired confidence level exactly.
  • the solver will display age 63 at 77% confidence.
  • the solver will stop at the confidence level that is closest to, but no less than, the desired confidence level.
  • no solution may exist. If no solution exists then the following (or a similar) message is displayed to the user in a message box (now shown) with an OK button: "Solution could not be reached, closest solution is displayed” . Upon pressing the OK button, the message appears in the question area. The result displayed will be the last valid iteration (trial solution) , with a confidence level of more or less than the desired confidence level.
  • Three solver questions 3608a-c are presented when solving for retirement: 1) When can I/we retire?, 2) How much can I/we afford to spend each year in retirement, and 3) How much do I/we need to save each year to retire?
  • the text of the questions 3808a-c uses "we” if the user is working with a working spouse/planning partner and neither person is retired. In all other cases, the question uses "I.”
  • the first question 3608a should only be displayed if one of the following conditions is true: the user is single and not yet retired or the user is married and at least one person in the marriage is still working. Retirement age and year (current and solver) should be displayed for any user or spouse/planning partner who is still working. A couple who is still working will have both parties' retirement ages and years displayed. A working user with a non-working spouse/planning partner would only have the user's retirement age and year displayed.
  • checkboxes 3616 the user can choose to solve by keeping years between retirement constant or solve for the same retirement year. The checkboxes 3616 are only displayed if both persons are still working.
  • the text for annual expenses is "Average annual expenses of $xxx,xxx.” If the user has not entered detailed expenses then the text for annual expenses is "Annual expenses of $xxx,xxx.” If the user has entered detailed expenses then a link is displayed to view the detailed expenses in a pop-up. If the user has run the solver then both the current and solver expenses are displayed, otherwise just the current expenses are displayed. If the user has entered detailed expenses, the user is informed that: "All of your expenses are adjusted proportionately (increased or decreased by the same percentage) when solving for the amount you can spend.” Note that a solution will always exist for this question.
  • the third question 3608c should only be displayed if one of the following conditions is true: the user is single and not yet retired or the user is married and neither person is fc retired (current year is before household retirement year) .
  • the user may choose with checkboxes 3618 to solve by changing savings to taxable accounts or to tax-deferred annuities.
  • the solver result shows the changed value for the solver variable and current value for the unchanged variable.
  • a solution will not exist. For example, a user may wish to reach a 75% confidence level by changing contributions to a tax-deferred annuity but even with $0 contributions the confidence level could still be above 75%.
  • the retirement assets page 3700 includes the features described above for the retirement goals page 3600.
  • the graph 3702 displays the user's assets over time rather than goal percentages.
  • the graph 3702 of projected assets over time has mouseovers for each bar 3704a-n that displays the value, year, and ages of the user and the user's spouse/planning partner. When a college goal is selected, the age of the child is included in the mouseover as well.
  • the mouseovers for the chart 3702 shows the retirement ages of the user and the user' s spouse/planning partner and the life planning ages of the user and the user's spouse/planning partner.
  • the chart shows the start and end of the goal. If the goal has already started then the start year is be displayed.
  • the chart 3702 also includes a link 3706 to a pop-up table view of the data. Referring to FIG. 38, the education goal page 3800
  • _ includes the features described for the retirement goals page 3600.
  • Two solver education questions 3804a-b are presented: 1) How much do we/I need to save each year to afford this goal?, and 2) How much can we/I afford to spend each year?
  • the text of the questions 3804a-b uses "we” if the user is working with a working spouse/planning partner and neither person is retired. In all other cases, the questions 3804a-b use "I.”
  • the user may choose to solve by changing savings to CITs, UTMA/UGMAs, prepaid tuition, and taxable accounts using a drop-down menu 3806.
  • the solver result shows the changed value for the solver variable and current value for the unchanged variables .
  • a user may wish to reach a 75% confidence level by changing contributions to a CIT but even with $0 contributions the confidence level could still be above 75%.
  • the text for annual expenses is "Average annual expenses of $xx,xxx.” If the user has not entered detailed expenses then the text for annual expenses is "Annual expenses of $xx,xxx.” If the user has entered detailed expenses then a link 3808 is displayed to view the detailed expenses in a pop-up. If the user has run the solver then both the current and solver expenses are displayed, otherwise just the current expenses are displayed. If the user has entered detailed expenses, the user is informed that: "All of your expenses are adjusted proportionately (increased or decreased by the same percentage) when solving for the amount you can spend.”
  • the custom goal page 3900 includes the features described above for the retirement goals page fc 4 3600.
  • Two solver custom goal questions 3904a-b are presented: 1) H ⁇ w much do we/I need to save each year to afford this goal?, and 2) How much can we afford to spend each year?
  • the text of the questions 3904a-b uses "we” if the user is working with a working spouse/planning partner and neither person is retired. In all other cases, the questions 3904a-b use "I.”
  • the only solver variable is contributions to a taxable account. As with solving for retirement age, sometimes a solution will not exist.
  • a user may wish to reach a 75% confidence level by changing contributions to a taxable account but even with $0 contributions the confidence level could still be above 75%.
  • the text for annual expenses is "Average annual expenses of $xx,xxx” If the user has not entered detailed expenses then the text for annual expenses is "Annual expenses of $xx,xxx.” If the user has entered detailed expenses then a link 3906 is displayed to view the detailed expenses in a pop-up. If the user has run the solver then both the current and solver expenses are displayed, otherwise just the current expenses are displayed. If the user has entered detailed expenses, the user is informed that: "All of your expenses are adjusted proportionately (increased or decreased by the same percentage) when solving for the amount you can spend.”
  • the array of returns is a array of nominal, pre-tax returns, for all asset allocations, for all simulations, for the maximum number of years.
  • the maximum number of years is 114.
  • the first asset allocation is (1.00,.00,.00); the second asset allocation is (.95,.05,.00); the third asset allocation is (.95,.00,.05); the fourth asset allocation is (.90,.10,.00) and so forth.
  • the last asset allocation is of course (.00,.00, 1.00).
  • the annual inflation rate is a constant and is equal to 3.06%. This rate is updated annually using Ibbotson inflation data from the period January 1926 to December of the last available full year of data. Show values in real dollars (true or false) User and Spouse Information
  • User's IRA year limit (the last year the user may make an IRA contribution (not Roth IRA)) Spouse's IRA year limit (the last year the spouse may make an IRA contribution (not Roth IRA))
  • User's IRA eligibility year (the first year the user may withdraw from an IRA or Roth IRA without paying a penalty)
  • Spouse's IRA eligibility year (the first year the spouse may withdraw from an IRA or Roth IRA without paying a penalty)
  • User's early retirement year (year user turns age 55) Spouse's early retirement year (year spouse turns age 55)
  • All retirement income streams are pretax amounts. Each income stream may start before retirement but must end by the household last year. Each income stream is a vector of zero or positive values from the current year to the household last year.
  • User's pension income stream (this is an aggregate of all the user's pensions Spouse's pension income stream (this is an aggregate of all the spouse's pensions)
  • User's additional income stream (this is an aggregate of all the user's additional income)
  • Spouse's additional income stream (this is an aggregate of all the spouse's additional income)
  • Name (name of the goal is the child's name). Each name must be unique.
  • College penalty rate a constant: .10. This is the penalty rate applied to withdrawals from certain accounts when the assets are not used for college.
  • Each name must be unique.
  • Goal name There are up to 10 goals allowed. There will be 1 retirement goal, 0 to 9 college goals, and 0 to 9 custom goals. A goal is a stream of desired expenditures in the form of a dollar amount each year. Goal name
  • Goal type Each name must be unique.
  • the goal name enables the goal to be associated with a set of accounts and with a person or persons. Goal type
  • Each goal has a type: retirement, college, or custom Goal start year
  • Each goal has a starting year. This year may be before the current year. Goal end year
  • Each goal has an ending year. This year must be greater than or equal to the current year, and greater than or equal to the starting-year. Additionally, all non-retirement goals must end by the time retirement ends. ,. -Goal liability stream
  • Each goal has liability stream. This is a vector of expenditures. Only one element must be non-zero.
  • One-time contributions are assumed to come from an external source such as a gift from a relative, an inheritance, sale of a house. In any case, it is assumed that a one-time contribution to an account does not have a corresponding one-time expense for another goal. All one-time contributions must have a contribution year which is less than or equal to the last year of the goal it is associated with. One-time contributions with a contribution year before the current year should be ignored since the contribution has already occurred. One-time contributions are converted from today's dollars to nominal (future dollars) before they are sent to the engine. Appendix
  • the allowed account types which do not include all account types, are: IRA for the user, IRA for die spouse, Taxable account . Year Each College Goal
  • the allowed account types which do not include all account types, are: CIT Plan, Custodial, Pre-paid tuition, Taxable account Year Each Custom goal
  • MRD minimum required distributions
  • Each account has an asset allocation of stocks, bonds, and cash.
  • the allocations will either be the current allocations or target allocations.
  • Each asset allocation provided will already be rounded to the nearest 5% for stocks, bonds, and short-term. By doing this there will be 231 possible asset allocations. What is actually passed to the engine is not the separate values for stocks, bonds, and short-term, but instead the asset allocation number from 1 to 231. Note, we assume that each asset allocation remains constant throughout the financial projection.
  • each account has an asset allocation number.
  • the retirement g oal has the following accounts.
  • Taxable (joint taxable assets for user and spouse)
  • the taxable account has the following data items
  • IRA for the user has the following data items
  • Roth IRA for the user has the following data items
  • Roth ERA for the spouse has the following data items
  • Each college goal has the following accounts.
  • Pr ⁇ -paid-tuition has the following data items
  • the custodial account has the following data items
  • the Education ERA has the following data items
  • the CIT Plan has the following data items
  • the taxable account has the following data items
  • Each custom goal has the following accounts.
  • the taxable account has the following data items
  • Data for the solvers determines whether a solver should be run, which solver to run, the desired confidence level, any other needed information.
  • goalSolverFlag a boolean flag indicating whether the engine needs to run a solver goalldentifier, the goal to solve for.
  • the default goal is retirement desiredConfidenceLevel, the confidence level to solve for.
  • the default is .75 which is 75%. Desired confidence level may be a minimum of .01 and a maximum of .99. solverToRun, the specific solver question to be solved.
  • contributionTypeSelection the account type for which contributions will be varied (iterated). contributionTypeS election will be null if the user is not solving for contributions.
  • the contribution type selections are: TAXABLE_ACCOUNT, ANNUITY_ACCOUNT, CIT_ACCOUNT, PREPAID_TUITION_ACCOUNT, CUSTODIAL_ACCOUNT.
  • Each solver question knows what contribution type selections it can handle. retirementAgeSolverSelection. The user may choose to solve for the same retirement year as the spouse or solve by adjusting both retirement ages the same number of years. This variable is only used if the user is married and both persons are still working.
  • the selections are: SAME_YEAR and SAME_CHANGE
  • the first year ratio equals ⁇ MONTHS_EN_YE AR - current month + 1) / (MONTHS_rN_YE AR )
  • Employer pre-tax contribution initial employer pre-tax contribution * (1+ user's annual income increase rate) ⁇ (number of years since the current year)
  • Participant pre-tax contribution initial participant pre-tax contribution * (1+ user's annual income increase rate) ⁇ (number of years since the current year)
  • Participant after-tax contribution initial participant after-tax contribution * (1+ user's annual income increase rate) ⁇ (number of years since the current year)
  • Employer pre-tax contribution initial employer pre-tax contribution * (1+ spouse's annual income increase rate) ⁇ (number of years since the current year)
  • Participant pre-tax contribution initial participant pre-tax contribution * (1+ spouse's annual income increase rate) ⁇ (number of years since the current year)
  • Participant after-tax contribution initial participant after-tax contribution * (1+ spouse's annual income increase rate) ⁇ (number of years since the current year)
  • ERA pre-tax contribution initial ERA pre-tax contribution * (1+ user's contribution increase rate) ⁇
  • ERA after-tax contribution initial ERA after-tax contribution * (1+ user's contribution increase rate) ⁇
  • Roth ERA contribution initial Roth ERA contribution * (1+ user's contiibution increase rate) ⁇ (number of years since the current year)
  • Roth ERA contribution initial Roth ERA contribution * (1+ user's contribution increase rate) ⁇ (number of years since the current year)
  • Temp Value (ERA pre-tax contribution + ERA after-tax contribution + Roth ERA contribution)
  • ERA pre-tax contribution (ERA pre-tax contribution / temp) * annual ERA contribution limit
  • ERA after-tax contribution (ERA after-tax contribution / temp) * annual ERA contribution limit
  • Roth ERA contribution (Roth ERA contribution / temp) * annual ERA contribution limit
  • ERA pre-tax contribution initial ERA pre-tax contribution * (1+ spouse's contribution increase rate) ⁇
  • ERA after-tax contribution initial ERA after-tax contribution * (1+ spouse's contribution increase rate) ⁇
  • Roth ERA contribution initial Roth ERA contribution * (1+ spouse's contribution increase rate) ⁇ (number of years since the current year)
  • Roth ERA contribution initial Roth ERA contribution * (1+ spouse's contribution increase rate) ⁇ (number k • of years since the current year)
  • Temp Value (ERA pre-tax contribution + ERA after-tax contribution + Roth ERA contribution)
  • ERA pre-tax contribution (ERA pre-tax contribution / temp) * annual ERA contribution limit
  • Child's age year being processed - child's birth year.
  • the inflation factor is used to convert today's dollars (real dollars) to nominal dollars and vice versa in any given year. Appendix
  • the inflation factor starts out as the value 1 and is increased by (1 + inflation rate) each year after the first year.
  • One penalty rate is used for all tax-deferred/ tax-free retirement accounts except workplace accounts and one penalty rate is for workplace savings accounts.
  • the taxable account does not have an early withdrawal penalty.
  • the user and spouse have separate penalty rates since they are different ages. These penalty rate are updated each year. Accounts for college goals do not have early withdrawal penalties, although the funds must be used for education.
  • Assets may be withdrawn without penalty from workplace savings accounts if the participant separated from service in the year he/she turned age 55 or later. Also, assets may be withdrawn if the participant is age 59 1/2 or older.
  • Penalty rate early withdrawal penalty rate
  • Assets may be withdrawn without penalty from workplace savings accounts if the participant separated from service in the year he/she turned age 55 or later. Also, assets may be withdrawn if the participant is age 59 1/2 or older.
  • the base income each year is the after-tax total earned income.
  • User's earned income user's initial income * (1+ user's income increase rate) ⁇ (number of years since the current year)
  • Add user's earned income to taxable income subtract the following from taxable income (these are the pre-tax contributions): 'Note that we do not deduct the employer workplace contribution from taxable income user's participant pre-tax contribution * (1+ user's income mcrease rate) ⁇ (number of years since the cu ⁇ ent year) user's ERA pre-tax annual contribution, adjusted for annual increases and ERA limits
  • State taxes max(taxable income * state tax rate.O) Add values to total earned income, which is zero until now.
  • State taxes max(taxable income * state tax rate,0) Add values to total earned income, which is zero until now.
  • these income streams may have values before the household retirement begins. These values are handled as described below; there is no difference in handling between before and after retirement
  • the vector of total earned incomes is an output of the engine.
  • this taxable income calculation is for tax calculations only. This income amount is not income to the goal as, for example, Social Security would be to the retirement goal. Determining taxable income for the child enables us to determine the-tax rate to apply.
  • Child's taxable income (initial income * the inflation factor) - (deductions * the inflation factor) ' V. ⁇
  • Asset allocation number is 4 ⁇ Appendix
  • Asset allocation number 7
  • MRD divisor MRD divisor method (age of user in the year, true, age of spouse in the year)
  • MRD divisor MRD divisor method (age of user in the year) ⁇ ⁇
  • Taxable investment income last year's balance * random return
  • State tax on investment income taxable investment income * state tax rate Determine taxable account balance Add investment income Subtract federal taxes Subtract state taxes Update Taxable income
  • the account balance last year's balance * (1 + random return - annuity fee) ⁇
  • an MRD is a withdrawal from a tax-deferred account, a tax on the amount withdrawn, and a deposit into the taxable account of the remaining amount. MRDs are performed on the following accounts:
  • MRDs for the user 1 Lf (the year > user's ERA year limit) ⁇ 'User's workplace account 'Determine the MRD amount Lf ((the year ⁇ user's start year for 403(b) balances) And (there are 403(b) balances)) ⁇
  • MRD amount MLN((last year's account balance - 403(b) 1986 asset balance) / user's MRD divisor, this year's account balance)
  • MRD amount MAX(MRD amount, 0)
  • MRD amount MIN(last year's account balance / user's MRD divisor, this year's account balance) ⁇ Appendix
  • Cost basis ratio MLN(cost basis / account balance, 1)
  • Taxable withdrawal MRD amount * (1 - cost basis ratio)
  • MRD amount MIN(last year's account balance / user's MRD divisor, this year's account balance)
  • Cost basis ratio MLN(cost basis / account balance, 1) ⁇
  • Taxable withdrawal MRD amount * (1 - cost basis ratio)
  • Incremental withdrawal MLN(account balance, remaining goal / after-tax ratio
  • the Roth ERA is a tax free account so there are no taxes due on withdrawals. We make the assumption that the 5-year aging requirement to avoid taxation has been satisfied. 'For the Roth ERA only, we always withdraw from cost basis first which is a different procedure from other accounts.
  • Withdraw penalty-free and tax-free amount withdrawal MLN(cost basis,account balance, remaining goal) Subtract the withdrawal from the account balance Subtract the withdrawal from the cost basis Subtract the withdrawal from the remaining goal
  • Incremental withdrawal MLN(account balance, remaining goal / after-tax ratio, Federal Tax bracket (taxable income) - taxable income) 'Note, if taxable income is above the highest tax bracket then the remaining amount in the tax bracket is infinite.
  • a partial first year return equals: (the corresponding random return) * (the first year ratio). Note, for a partial first year the CIT plan fee must be prorated as well.
  • Account type is taxable account ⁇
  • Taxable investment income last year's balance * random return
  • State tax on investment income taxable investment income * state tax rate Determine taxable account balance Add investment income Subtract federal taxes Subtract state taxes Update Taxable income
  • Taxable investment income last year's balance * random return
  • State tax on investment income taxable investment income * state tax rate
  • Incremental withdrawal MLN(account balance, rernaining goal / after-tax ratio, Federal
  • Tax bracket (child taxable income) - child taxable income)
  • Taxable investment income last year's balance * random return
  • State tax on investment income taxable investment income * state tax rate
  • a partial first year contribution equals: (the corresponding contribution) * (the first year ratio).
  • This data should be loaded into the chart data array for each goal.
  • the retirement assets are categorized as follows: Taxable assets
  • the college assets are categorized as follows: Taxable assets
  • the first step is to determine the total assets for each goal for the year at the 50%, 75%, and 90% confidence levels.
  • 50% corresponds to the 126 th highest amount
  • 75% co ⁇ esponds to the 188 th highest amount
  • 90% corresponds to the 226 th highest amount.
  • the second step is to determine the sub-set asset values for retirement and each college goal.
  • the 50% confidence amount for taxable assets equals the taxable assets that co ⁇ espond to the simulation number of the
  • the 70% confidence amount for taxable assets equals the taxable assets that correspond to the simulation number of the
  • the 90% confidence amount for taxable assets equals the taxable assets that correspond to the simulation number of the
  • Balances are transferred when either a person dies or a goal is completed. Note: the financial projection ends with the household last year (last year of retirement) which means that balances are never transferred from retirement goal to any other goal.
  • Lf (the year is the last year of the college goal and there are other college goals remaining with later ending years) ⁇ Transfer balances, except the taxable account, to the next ending college goal with a later ending year. Note that * the- custodial account does not get transferred; it remains with the child. Since the assets are transfe ⁇ ed, rather than withdrawn, no taxes are due. If there is more than one college goal with the same subsequent ending date, Ihen the assets should be transfe ⁇ ed proportionally. For example, if there are two college goals with the next • " . " . ending date then each goal should get half the assets.
  • the next ending goal may be a college goal, custom goal, or the retirement goal.
  • Lf there is more than one goal with the same subsequent ending date then the assets should be transfe ⁇ ed proportionally. For example, if there are two goals with the next ending date then each goal should get half the assets.
  • Taxable withdrawal (account balance - cost basis)
  • Taxable withdrawal MAX(account balance - cost basis,0)
  • Taxable withdrawal MAX(account balance - cost basis.O)
  • next ending goal (which could be a custom goal, college goal, or retirement goal) with a later ending year.
  • the assets should be transferred proportionally. For example, if there are two goals with the next ending date then each goal should get half the assets.
  • the confidence level has a minimum value of 0% and a maximum value of 100%.
  • the sub-set charts show the breakdown of retirement assets into three component groups: taxable, tax-defe ⁇ ed, and tax free assets in a stacked bar chart.
  • One chart shows the assets at 50% level of confidence, the second at 75%, and the third at 90%.
  • Implicit expenses are contributions to other goals during the life of the goal.
  • a solver is tool which varies user input such as retirement age or annual contributions to produce a desired result such as a confidence level of meeting a goal.
  • the user must indicate which goal to solve for, which will be received by the engine as a goal identifier.
  • the goal identifier will of course also determine the goal type.
  • solverMode is set to true.
  • Solving begins when solver request is received by the engine.
  • solverMode is set to false.
  • Each goal solver will return a solver confidence level which will usually be the last trialConfidenceLevel
  • Each solver will return the input value that produces the solver confidence level. This is generally the last trialValue or value(s) directly determined by the last trialValue.
  • the expense solvers will return an expense vector, and average annual expenses (scalar value)
  • CONFLDENCE_TOLERANCE .0025. For example, if desiredConfidenceLevel is 75% then a solver result between .7475 and
  • EXPENSE_MULTEPL1ER 5. Multiplies the lowTrialValue until a valid lowTrialValue is obtained
  • CONTRLBUTION_INCREASE 10000. Added to the highTrialValue until a valid highTrialValue is obtained
  • the retirement age solver answers the question: When can I (we) retire? // Single user, still working
  • the user may choose to solve for the same retirement year as the spouse or solve by adjusting both retirement ages the same number of years.
  • the selections are: SAME_YEAR and SAME_CHANGE. -
  • HighTrialValue Min(user's life planning year - startingRetirementYearUser, spouse's life planning year - startingRetirementYearSpouse)
  • the retirement expenses solver answers the question: How much can we (I) afford to spend each year in retirement? We solver for the vector of expenses (the liability stream) that the user can afford at the desired level of confidence. We solve by varying the amounts of all expenses proportionately, rather than eliminating particular expenses or modifying expense start or end dates.
  • the college expenses solver answers the question: How much can we (I) afford to spend each year for this goal? Solving for college expenses is exactly the same as solving for retirement expenses except for calculating average annual expenses.

Abstract

Personal financial planning includes performing multiple random simulations of outcomes for multiple interdependent financial goals as an indicator of the likelihood of success in reaching the financial goals.

Description

PERSONAL FINANCIAL PLANNING
BACKGROUND This invention relates to personal financial planning. In typical retirement planning, for example, a 38-year old person may set a goal for the amount of money that he or she would like to have accumulated for retirement at, say, age 65. He or she can then analyze whether his or her current assets and money that he or she can save in the interim will grow to the desired amount by the time he or she reaches retirement. College planning can be handled in a similar way, as can other financial goals, such as saving for a down payment on a home .
A financial planning strategy typically involves a number of these financial goals and a consideration of financial preferences and investment strategies. A person can start thinking, formulating, and implementing a financial strategy by drawing upon different sources of information and advice such as financial advisors or brokers, publications, and tools available on the Internet.
SUMMARY
In general, in one aspect, the invention features performing multiple random simulations of outcomes for muLtiple interdependent financial goals as an indicator of the likelihood of success in reaching the financial goals. In general, in another aspect, the invention features an article including a machine-readable medium which stores machine -executable instructions, the instructions causing a machine to perform multiple random simulations of outcomes for multiple interdependent financial goals associated with an investor and generate a graphical user interface simultaneously displaying results of the simulations as probabilities indicating the likelihood of success in reaching the financial goals.
In general, in another aspect, the invention features gathering from a user information about multiple interdependent financial goals, gathering from a financial entity information about classes of investments owned by the user and controlled by the financial entity, and performing multiple random simulations of outcomes for the multiple interdependent financial goals using the information gathered from the user and the information gathered from the financial entity.
In general, in another aspect, the invention features calculating the likelihood of success in reaching multiple interdependent financial goals associated with an investor considering the investor's asset allocations.
In general, in another aspect, the invention features a system including a server configured to connect to a network and a process accessible by the server and configured to gather data about multiple financial goals from an investor associated with the financial goals and from an entity associated with the server and to perform simulations of outcomes for the financial goals as an indicator of the likelihood of success in reaching the financial goals. One or more of the following advantages may be provided by one or more aspects of the invention.
The personal investments review (PIR) tool integrates multiple financial goals planning with investment planning and includes planning, investment, and other features. The PIR tool allows for realistic investment planning, allowing investors (users of the PIR tool) to plan as individuals or with a spouse/planning partner. Users of the PIR tool can create goals to reflect their financial objectives, which may be any combination of retirement, education, and other goals. The PIR tool considers mutual fund and brokerage account information held inside and outside the entity providing the PIR tool, which allows for comprehensive planning, even if some assets are held outside of the entity providing the PIR tool. The PIR tool enables users to test different investment strategies in trying to reach their goals. The users can input values to test outcomes and/or the PIR tool can "solve" and provide users with values, e.g., how much more to save, to achieve the desired outcome. The PIR tool provides an easily understood graphical depiction of investment strategies, including graphs and/or tables that show projected asset levels and goal funding, e.g., the probability that each goal will be reached/funded. Users can, from the asset allocation and goal probability results of the PIR tool, refer to a next best target investment tool to more closely align their investments and target asset mixes to their goals.
Other advantages and features will become apparent from the following description and from the claims.
DESCRIPTION OF DRAWINGS FIG. 1 is a block diagram of a financial planning tool in accordance with an embodiment of the invention.
FIG . 2 is a diagram of a network configuration. -FIG.' 3 is a block diagram of a financial planning tool in accordance with an embodiment of the invention.
FIGS. 4-32 show screen shots implementing a financial planning tool in accordance with an embodiment of the invention. FIGS. 33-35 are block diagrams of financial planning processes in accordance with an embodiment of the invention. FIGS. 36-39 show screen shots implementing a solving function included in a financial planning tool in accordance with an embodiment of the invention.
DETAILED DESCRIPTION Referring to FIG. 1, a personal investments review (PIR) system 100 provides a tool that integrates multi-goal financial planning with investment planning. The PIR system 100 helps a user (not shown) establish savings and time horizons for retirement, education, and other goals, evaluate whether the user's current savings strategy is likely to be sufficient to fund the goals, and consider investment options such as mutual funds that may be appropriate investments for the user. In evaluating the probabilities of funding each goal, the PIR system 100 evaluates how the user's current portfolio mix of stocks, bonds, and short-term investments could potentially perform over time in a wide spectrum of hypothetical market situations. The results of this evaluation are graphically presented to the user, showing when and where any shortfalls may occur. The PIR system 100 also generates alternative investment strategies that could improve the chances of funding the goals and provides a list of investment options that could help the user move toward target asset mixes.
The PIR system 100 allows the user to establish a comprehensive financial plan, starting in an information gathering stage 102. The PIR system 100 projects the financial plan's performance from year-to-year. Over 100 years of "planning lifetime" can be accommodated. In the information gathering stage 102, the PIR system 100 gathers planning and investment information including user information 104, accounts information 106, and goals information 108 from the user and/or from resources available to the PIR system 100. In a processing stage 110, the PIR system 100, via a processing engine 112, uses the gathered information and generates an investment strategy to support the financial plan. The investment strategy provides a probability output for each goal that represents the likelihood that the goal will be fully funded. To provide the probability output, the processing engine 112 tests the financial plan's performance over time in multiple simulated financial market environments. This testing takes into account that the user may experience many different market environments during the user's planning lifetime. The processing engine 112 can also perform goal solving that can vary user input such as retirement age or annual contributions to produce a desired result, such as a confidence level (probability) of meeting a goal. In an understanding stage 114, the probability output is graphically presented to the user in a user interface including a graph 116 and text (not shown) explaining aspects of the output. In the processing stage 110, based upon the user's current asset allocation or a target asset mix generated by the PIR system 100, the processing engine 112 calculates a probability that represents the likelihood that the user will meet his or her financial goals. To calculate this probability, the processing engine 112 tests how the user's financial plan will perform over time (using either the current or target asset mixes) in many simulated market environments, e.g., 250 simulations. To simulate the various market environments, the processing engine 112 uses a dataset of randomly generated returns for stocks, bonds, and short- term investments. Each set of returns maintains the historical correlation among the asset classes. The probability represents the proportion of market simulations in which the user was able to meet all the goal expenses, each and every year, for the life of the plan. For example,- if in 200 out of 250 simulations the user was able to meet all the goal expenses, the probability for that goal would be 80%. The PIR system 100 also provides target asset mixes at the goal and money-type (taxable vs. tax-advantaged) level. For example, a distinct target asset mix would be generated by the processing engine 112 for the tax-advantaged assets associated with the retirement goal. Another target asset mix would be generated for the taxable assets associated with this goal. The processing engine 112 tests the financial plan over time, with up to five potential target asset mixes, in many different market environments, to determine which offers the best chance of success to fund the goal. Selection of target asset mixes is also influenced by the investor's risk tolerance - this precludes the PIR system 100 from recommending a target asset mix that exceeds the user's risk tolerance. A "what-if" functionality, similar to the goal solving described above, allows the user to view how the probability of funding their goals would change if he or she adopted the generated target asset mixes.
To assist users who wish to adopt target asset mixes, the PIR system 100 automatically suggests a "next best target investment . " The PIR system 100 quantifies sub asset class differences (positive or negative) between the user's current asset allocations and target asset mixes generated by the tool. If additional purchases are suggested, the PIR system 100 identifies up to ten funds (related to the entity providing the PIR system 100 or not) per sub asset class. Each identified fund is shown along with various views of fund information, such as fees and charges, performance, and risk, for the user's convenience. The user may also view a detailed report of their current fund holdings .
Referring to FIG. 2, a routine 202 included in a network arrangement 200 can implement the PIR system 100. The routine 202 is controlled and maintained by an entity, e.g., a brokerage or mutual fund company. To access the routine 202, a user (not shown) at a user terminal 204, connects to a network 206, e.g., the Internet. Through the network 206, the user can access the entity's web site maintained at a server 208. After providing valid authorization information at the web site, the user can pass through the entity's firewall 210 and access the entity's protected (secure) server 212. The protected server 212 accesses the routine 202 and provides the user with the capabilities of the PIR system 100. Shown as being accessible by the protected server 212, the routine 202 may also or instead be included in the protected server 212. Additionally, the routine may be included in or be accessible by the server 208 rather than behind the firewall 210 at the protected server 212, thereby giving users access to the PIR system 100 without security protection.
The routine 202 is illustrated in FIG. 3. The routine 202 can be broken down into two stages: an input stage 300 (like the information gathering stage 102 in FIG. 1) and an asset liability model (ALM) processing stage 302 (like the processing stage 110 in FIG. 1) . The ALM processing stage 302 includes a data valuation stage 304 that stores and interprets the information obtained in the input stage 300 for use by an ALM engine 306 (like the processing engine 112 in FIG. 1) in an ALM engine stage 308. In the ALM engine stage 308, the ALM engine 306 integrates multiple-goals planning and investing strategies. The ALM engine 308 produces two sets of results in an output validation stage 310: confidence level and asset allocation data 312 and wealth level, inflow (financing) , and outflow (payment) data 314.
Planning and investment information related to the user is obtained in the input stage 300. Three categories of information are gathered: user profile information 316 (like the user information 104 in FIG. 1), goals information 318 (like the goals information 108 in FIG. 1) , and accounts information 320 (like the accounts information 106 in FIG. 1) . The user can enter information for these three categories via a user interface 322, e.g., a graphical user interface including one or more screens enabling the user to input data using buttons, checkboxes, drop-down menus, text boxes, and similar tools. (Throughout the PIR system, one of these input mechanisms may be described, but any of the input mechanisms may be used.) The routine 202 may also or instead gather information from collections of stored data maintained by or otherwise accessible to the entity, such as assets, accounts, and 401 (k) plans managed for the user by the entity.
The user profile information 316 includes profile information specific to each person covered by the user's financial plan including the user, the user's spouse/partner, and the user's dependents. The user can enter the profile information on a personal demographics information screen 400 as shown in FIG. 4 and on a personal income information screen 500 as shown in FIG. 5. The profile information can include data -such as age, salary, number of children, marital status, social security, pensions, part-time jobs, state tax rate, local tax rate, tax filing status, and bequests. Tax status is taken into consideration by the ALM engine 306 during the simulation process (determining if the goals can be achieved under a variety of simulated investment scenarios) . The user profile information 316 also includes data obtained through a household data IPQ (investor profile questionnaire) . Through answering the IPQ, the user indirectly indicates his or her financial and risk tolerance,. The user can answer the IPQ on IPQ screens 600, 700 as shown in FIGS. 6-7. A more detailed listing of the profile information is set forth in the Appendix at page 1.
Only a subset of IPQ questions are asked directly to the user, such as: a) household income change over the next X years, e.g., five years, b) how much of monthly take-home income is used for essential expenses, c) household overall financial situation, d) emergency fund/short term use of assets, e) level of investment knowledge and experience with stocks or stock mutual funds, f) risk tolerance scale, and g) selling tendencies, e.g., asking if given a $100,000 fall in value, when would the user sell.
Other answers to IPQ questions are inferred from the data entered in the profiles 316, goals 318, and accounts 320 sections, such as: a) total current financial assets (accounts data) , b) yearly saving amount towards goal (accounts data) , c) number of dependents (personal information data) , d) household income before tax (personal information data) , e) household federal tax bracket (computed based on federal tax tables) , and f) time horizon (inferred from goal start and end dates and cash flows) . The IPQ information is used to set a cap on the asset mix that the ALM engine 306 can choose from in selecting or suggesting an investment asset mix for the user that can help the user meet his or her goals. For example, if the IPQ information places the user's target asset mix into the growth portfolio, the ALM engine 306 will be constrained to show the best available target asset mix from the four remaining portfolios (all cash, conservative, balanced, and growth) . The IPQ score is the lowest of three scores: time horizon, financial tolerance, and risk tolerance. The last two are computed from the data provided by the user using a standard IPQ scoring algorithm. The ALM engine 306 first runs unconstrained and produces one of six target asset mixes (stocks/bonds/short-term) in percentage increments, e.g., 100/0/0, 85/15/0, 70/25/5, 50/40/10, 20/50/30, and 0/0/100. The asset mix is tapped into a time horizon score using a portfolio lookup table used in the IPQ scoring. The time horizon score is combined with the financial tolerance and risk tolerance scores to compute the final score and provide the asset mix used as a cap. This uses the "standard" IPQ scoring and will result in one of four target asset mixes (stocks/bonds/short-term: 85/15/0, 70/25/5, 50/40/10, and 20/50/30) . Aggressive growth (85% stocks, 15% bonds) is therefore' the most aggressive asset allocation that the ALM engine 306 can generate given these target asset mixes. The ALM engine' s target asset allocation result thus can better estimate the time horizon score. The ALM engine 306 takes the cashflow stream of liabilities into account and therefore better estimates the time sensitivity of a particular goal. The following time horizon IPQ questions are therefore not asked: 1) estimate the annual income needed from retirement investments (not needed because the answer to this question is implicitly built into the planning section based on retirement goal information - the ALM engine 306 takes this income flow into account to find a target asset allocation) , and 2) choose the statement that best describes your (the user's) plan to use retirement savings and investments (not needed because the answer to this question is implicitly built into the planning section, where distribution rules are used to withdraw money from different account types, and MRDs (minimum required distributions) are computed automatically) .
The goals information 318 includes descriptions of the goals that the user is planning for. Each goal is a stream of desired expenditures in the form of a dollar amount in each of a series of years. Every goal includes: a) a unique goal name, b) a goal type, c) a start year (before, after, or including the current year) , d) an end year (greater than or equal to the current year and greater than or equal to the starting year, and for non-retirement goals, ending by the time retirement ends) , and e) a liability stream (vector of expenditures with at least one non-zero element) . 'The routine 202 provides for three types of goals: retirement, education, and other. The goal types are both accumulation and distribution oriented. For example, the retirement goal could be used to ensure that a level of annual income or annual expenses may be met annually throughout retirement. An "other" goal could be established to accumulate a lump-sum down payment for a house. An education goal may be established to ensure that a specific amount is available annually over four years to meet college expenses. The user is always offered a retirement goal, either as an individual goal or a joint goal for the user and the user's spouse/planning partner. Retirement goal information can be entered on retirement goal screens 800, 900 as shown in FIGS. 8-9. In the retirement goal, the user specifies the amount of annual income (or annual expenses) desired during retirement, rather than an accumulated amount desired at the start of retirement, and the PIR tool provides the probability that this amount of income (or annual spending) will be available (or attainable) each and every year throughout retirement. In addition to savings, annual retirement income can be provided via social security income, pensions, and other sources. The annual retirement income goal is the amount desired after tax considerations. A more detailed listing of the retirement information is set forth in the Appendix at pages 1-2.
The user is also able to create up to nine other (custom or education) goals starting at a goal creation screen 1000 as shown in FIG. 10. The goal creation screen 1000 includes an explanation of goal types and a drop-down menu 1002 where the user can select the appropriate goal type for his or her custom goal. These other goals can be any combination of education or other goals. An education goal may be, for example, planning to pay for a child's college education. "After selecting the custom goal type, the user enters more detailed goal information on a details screen, for example, an education goal screen 1100, shown in FIG. 11. On the education goal screen 1100, the user provides a unique name for the selected custom goal. A more detailed listing of custom goal information (including education goal information) is set forth in the Appendix at page 2. Once goals have been entered, a goal summary screen 1200, shown in FIG. 12, details the annual cost and the corresponding years for each goal created. On the goal summary screen 1200, a goals graph 1202 displays goal timing and cost over the life of the goals and estimated lifetime of the investor. A goals table 1204 displays summary information pertaining to each goal (rows 1206a-n) , including goal name (column 1208) , goal type (column 1210) , owner (column 1212) , start and end years (columns 1214 and 1216) , cost (annual expenses or total cost) (column 1218), and edit/delete options (column 1220) . The user can click on an edit button 1222 in a row 1206 to change the assumptions/parameters for the goal in that row 1206, a delete button 1224 in a row 1206 to remove the goal in that row 1206, an add goal button 1226 to enter additional investment goals, or on a next button 1228 if the goals are complete.
The goals graph 1202 illustrates data included in the goals table 1204. The goals graph 1202 displays the amount of annual expenses or total cost associated with each goal (from the cost column 1218 for each row 1206) for each year that the user has at least one active goal. Thus, the goals graph 1202 spans from no later than the earliest year in the start year column 1214 to no earlier than the latest year in the end year column 1216. The goals are color-coded in the goals graph 1202, so a goal's duration and annual costs can be easily determined by looking at the goals graph 1202.
Every goal type also includes a funding order, a surplus feature, exclusions, and the possibility of one-time contributions. The funding order for each goal type is assumed to be: a) retirement: taxable, tax deferred (e.g., annuity, work place accounts, and traditional IRAs), tax free (e.g., Roth IRAs) ; b) education: pre-paid tuition, gifts/trusts (e.g.., UTMA/UGMA), tax deferred (e.g., CIT accounts), tax free (e.g., educations IRAs), taxable, and c) other: taxable.
The PIR tool is "smart" in recognizing distinct saving vehicles such as traditional and Roth IRAs (individual retirement accounts) , college investment trust accounts
(CITs), UTMA/UGMA (Uniform Transfer to Minors Act/Uniform Gift to Minors Act), etc. and their tax consequences. This allows the PIR tool to automatically assign current assets and future contributions in tax-advantaged accounts to appropriate goals. Users can prioritize goals by assigning taxable assets to goals. By default, taxable assets are assigned to the retirement goal. The PIR tool is sensitive to the unique rules and requirements that apply to certain retirement or education savings accounts. For example, as appropriate, the PIR tool will assess a 10% tax penalty on premature distributions or calculate and withdraw the minimum required distribution. There are also edits to ensure that planned contributions to retirement accounts do not exceed IRS (Internal Revenue Service) limits. The PIR tool is also sensitive to the tax status of assets and maintains separate "buckets" for taxable, tax- deferred, and tax-free assets. A hierarchy of withdrawals ensures that, as appropriate, taxable income sources are liquidated before tax-deferred or tax-free sources. The PIR tool applies federal tax brackets each year based upon annual income and filing status. If the user enters a state/local tax rate, these taxes are also deducted. The PIR tool takes taxes from investment earnings and distributions, where applicable. The PIR tool may also provide an interface to accept user-supplied cost basis for specified retirement accounts . 5 The surplus feature ensures that when a surplus dollar amount remains after the funding of a goal, the surplus is moved into the next goal's accounts as appropriate. UTMA/UGMA assets for a college goal do not flow to the next goal and remain with the specified child. Pre-paid tuition, education
10 IRAs, and CIT accounts flow to the next college goal. If there no college goals remain, the assets are withdrawn, taxed, penalized as appropriate, and the remainder is deposited to the user's taxable account for retirement. Excess taxable assets (whether from a college goal or a custom
15 goal) simply flow to the next ending goal. The handling of asset flow from goal to goal is what integrates the goals. A change in one goal can affect all the goals that come after it. Exclusions for the goals include that the priorities of the goals cannot be changed and that the results of the ALM
20 engine's processing are the probabilities of meeting the goals' liabilities rather than the percentage of the goals' liabilities that can be funded.
One-time contributions include contributions from an external source such as a gift from a relative, an
25 inheritance, sale of a house, etc. It is assumed that a one-
,,. . time 'contribution to an account does not have a corresponding one-time expense for another goal. Each one-time contribution should have a dollar amount and a contribution year which is less than or equal to the last year of the goal it is
30 associated with. Each contribution's dollar amount is converted from today's dollars to nominal (future) dollars before being processed by the ALM engine 306. A one-time contribution with a contribution year before the current year is ignored because the contribution has already occurred. A more detailed listing of one-time contribution information for different goal types is set forth in the Appendix at page 3... 5 The accounts information 320, shown in FIGS. 13a-b on an accounts screens 1300, includes a description of the user's current financial assets/accounts. FIG. 13a shows a top portion 1302 of the accounts screen 1300 including information on accounts maintained by or held inside the entity providing 10 the PIR system. FIG. 13b shows a bottom portion 1304 of the accounts screen 1300 including information on accounts maintained or held by third parties. The description for each account on the accounts screen 1300 includes: a) a unique account name (columns 1306a-b) , 15 b) an account type, e.g., taxable, tax deferred, tax free, annuity, IRA, and CIT (college investment trust) (columns 1306a-b) , c) an associated goal type (each account is allocated to a goal and to an owner, e.g., user,
20 spouse, child, etc. (columns 1308a-b) , d) an owner (columns 1308a-b) , e) a dollar amount (current wealth) (columns 1310a- b), f) asset allocation, e.g., stocks, bonds, short-
* φ
25 term, etc. (columns 1312a-b) ,
,,., ' g) contribution information, e.g., any contribution amount, contribution start, and contribution end (columns 1314a-b) , h) whether the account is included in the user' s 30 financial plan (columns 1316a-b), and i) edit/delete options (columns 1318a-b) . At the bottom of the top portion 1302 and the bottom portion 1304 is the total value and total annual contributions or future savings of the accounts listed in the top portion 1302 and the bottom portion 1304, respectively. At the bottom 5 of the accounts screen 1300 (shown in FIG. 13b) is the total value of all accounts on the accounts screen 1300.
The user can change the information on the accounts screen 1300 to reflect changes in their financial plan. The user can edit specific fields for an account by clicking on an 10 edit button 1320 in that account's row 1322, delete an account by clicking on a delete button 1324 in that account's row 1322, and add accounts by clicking on an add accounts button 1326. The user can click on a back button 1328 to return to the previous screen in the PIR system or on a next button 1330 15 if the accounts information is complete. A more detailed listing of account information is set forth in the Appendix at pages 3-5.
In the data valuation stage 304, the information gathered in the input stage 300 is formatted and checked for 20 consistency 324 using a set of rules and assumptions 326, e.g., software metrics. A more detailed description of the rules and assumptions are set forth in the Appendix at pages 35-36 and 47-51. Once formatted and checked, the information is stored and interpreted 328 to be processed by the ALM 25 engine 306. The data is organized in the following arrays: ,.„ . ' a) goals information (see FIG. 12), e.g., start, end, and amount, b) liability stream: a time series of dollars corresponding to the liabilities for each goal 30 created using the following assumptions and calculations: 1) liabilities grow at the total rate provided by the user,
2) retirement liabilities are adjusted with retirement additional income, pension, and social security income numbers (after taxes) , and
3) further adjustments are applied to account for the income and contributions of working when the user or the user's spouse/planning partner is retired while the other one is still working, c) profiles information specific to each person covered by the user's financial plan, d) accounts information (see FIG. 13), e.g., value, contributions, allocation, cost basis, etc., e) time series of contributions for each account created using the account information for each goal, where a portion or all of the taxable assets may be manually or automatically reassigned to other goals, and f) tax information, e.g., filing status, state tax, and exemptions .
The data in the arrays is then aggregated and ordered to allow the ALM engine 306 to process the information logically across the simulations.
The environment described by the aggregated and ordered information is used to process all the asset allocation combinations across the different goals by an asset allocation cap 330. The user indicates how to allocate his or her taxable savings to goals by entering a percentage for each goal, as on a taxable account goal allocation screen 1400, shown FIG. 14. A corresponding simulation environment is then built, based on the user-supplied information: a) calculate ages for each point in the simulation, b) determine the base income tax bracket for each . year of the simulation, c) determine the marital status for each year, d) create the contribution array for each simulation, e) create cost basis array, and f) create an asset allocations array that contains the asset allocations at each date (because some accounts have pre-set asset allocations, e.g., CITs) . Asset allocations are held constant over the forecast horizon (except for those with pre-set asset allocations) . A more detailed description of asset allocation is set forth in the Appendix at pages 36-42.
The accounts information 320 is used in formulating simulated returns 332. The ALM engine 306 considers sets of simulated returns to forecast the wealth across the user's accounts. By providing different sets of possible returns for stocks, bonds, and short-term, the sets of returns represent different states of the financial market during the planning horizon. The user need not provide estimates for his or her investments' future return and for the inflation rate. The set of returns is pre-computed and the same data is used for all users. The results will thus be the same if the same set of inputs is used. The entity provides the set of returns, with updates being made on a periodic basis, e.g., annually. The simulated returns include a variety of features. One feature of the simulated returns includes a common set of randomly generated numbers used to build yearly return series for stocks, bonds, and short-term.
Another feature of the simulated returns is that stocks, bonds, and short-term returns are consistent with the three „ 5 asset classes' historical correlation and volatility. A covariance matrix is constructed using monthly returns for stocks, bonds, and short-term from Ibbotson Associates from 1926 to the December of the last available full year of data. The matrix is then transformed using Cholesky decomposition.
10 For each year in the simulation, the resulting set of parameters can be combined with three randomly generated numbers, generated using a normal distribution with a mean of zero and a standard deviation of one. The result is a set of three random return numbers that are consistent with the
15 historical correlation of stocks, bonds, and short-term. This process is run for each year in each simulation.
The ALM engine 306 accepts the inputs described above to produce the results described above. The ALM engine 306 produces a probability output, as shown on a current situation
20 screen 1500 as shown in FIG. 15 that represents the likelihood that the user's goals will be fully funded, e.g., that the user may realize the goals. Pages 5-27 of the Appendix describe the ALM engine's processing capabilities in more detail .
25 A probabilities graph 1502 on the current situation
,.„ . screen 1500 displays a percent probability for each of the user' s goals indicating the likelihood that the goal will be fully funded (realized) given the user's current strategy and multiple investment return scenarios derived from the user' s
30 current asset allocation. For example, the graph 1502 shows a bar 1504 indicating a sixty-seven percent probability of funding the retirement goal. The user can learn more about the probabilities graph 1502 by clicking on a link to another screen including explanatory text in a "learn more" section 1506 of the current situation screen 1500. To learn about how the probabilities 5 in the graph 1502 are calculated, the user can click on a probability link 1508. To view assumptions used in calculating the probabilities, the user can click on an assumptions link 1510. The user can see the hypothetical market value of his or her savings and investments for key
10 years of his or her goals by clicking on a goal analysis link 1512.
The goal analysis link 1512 brings the user to a goal analysis screen, partially shown in FIG. 16 on a savings and investments goal analysis screen 1600. The goal analysis
15 screen shows a graph and a table for each goal representing how the user's current savings and investments are projected to change from the current date to the end of each goal. Clicking on a goal funding link 1602 brings the user to a goal analysis goal funding screen, partially shown in FIG. 17 on a
20 goal funding screen 1700. The goal analysis goal funding screen shows projected taxable and tax-advantaged asset levels and goal funding (at a specified probability level, e.g., 75%) . The goal analysis goal funding screen displays a graph and a table for each goal representing the funding of each
25 goal. . . 'The user can adjust their current situation by clicking on a link in an "adjustment" section 1514 of the current situation screen 1500. The user can access a "what-if" future contributions screen 1800 as in FIG. 18 by clicking on a
30 future contributions link 1514 and a "what-if" goal adjustment screen 1900 as in FIG. 19 by clicking on a adjust goals link 1516. Clicking on an investment strategy link 1520 brings the user to an investment summary screen 2100 as in FIG. 21 that can be helpful in reviewing the user's current portfolio to determine if the user's investments are adequately diversified. Each of the screens 1800, 1900, and 2100 are . described below in turn.
The ALM engine 306 provides for the "what-if" scenarios accessible by the "what-if" links 1516 and 1518. The "what- if" functionality allows a user to test whether increased savings, or changes to goal expenses or time horizon (beginning and end dates for goal-related expenditures) , could improve the probability that a goal will be fully funded, before making changes to his or her plan. The user may input values to test outcomes and/or the ALM engine 306 can provide the user with values to achieve the user's goals. For example, on the future contributions screen 1800, the user can enter in "what-if" annual contributions for accounts held inside or outside the entity providing the PIR system in text boxes 1804. On the goal adjustment screen 1900, the user can enter in start years for goals in first year text boxes 1904, end years for goals in last year text boxes 1906, and/or goal annual costs in annual cost text boxes 1908. To help the user determine what goals may need changes, a graph 1806 (FIG. 18) or 1910 (FIG. 19) displays the probabilities that the user's goafcls will be funded given the user's current investment plan. To test the "what-if" scenario using the changes, the user clicks on a test button 1808 (FIG. 18) or 1912 (FIG. 19) . The ALM engine 306 calculates the probability of each goal being funded given the "what-if" investment scenario and presents the resulting probabilities on a target asset mix screen 2000, shown in FIG. 20. A target asset mix graph 2002 displays the current and "what-if" probabilities for each goal, accenting any probability changes between the current and "what-if" scenarios. If the user elects to make changes based upon experimentation in the "what-if" area", plan data can be updated with one keystroke by clicking on a submit button 1802 (FIG. 18) or 1902 (FIG. 19) . (Users do not need to return to 5 the input section to make these changes) .
The investment summary screen 2100 includes a summary of the user's investment strategy analysis. As generated by the ALM engine 306, the investment summary screen 2100 includes suggestions as to how the user can move closer to his or her
10 target asset mix for each goal and funds/investment options that the user previously selected as possible investment alternatives .
The user can click on a current holdings button 2102 on the investment summary screen 2100 and access a current
15 holdings screen 2200, shown in FIG. 22. The current holdings screen 2200 lists the user's current holdings for each goal, broken up into separate tables based on tax type of the accounts funding the goal, e.g., tax-advantaged accounts and taxable accounts . Each account is identified by name and
20 holdings/asset class. The asset allocation breakdown (e.g., stocks, bonds, and short-term) for each account is also given.
The PIR system also provides an analysis of the user's current and target asset allocations on an asset allocation scrfceen φ 2300 as in FIG. 23. The asset allocation screen 2300
25 includes a textual and graphical explanation of the user's ,,„ . current portfolio compared to the target asset mix for each goal. To see the probabilities of funding each goal if the user adopted the target asset mix, the user can click on a "what-if" button 2302 and access a "what-if" screen, e.g., the 30 target asset mix screen 2000 in FIG. 20.
To see how the current asset allocation for a particular goal would have historically compared to the shown target asset mixes, the user can click on a historical performance button 2304 next to that goal's textual and graphical comparison to access a historical performance screen 2400 as in FIG. 24. Based on the time horizon for a goal and the asset allocation of the user's current and target asset mixes, the historical performance screen 2400 includes the historical returns, market increases, and market declines. The user can change the time horizon to see how the portfolios compare during a different time horizon by entering a new time frame, in a text box 2402.
To view the diversification of the user's current holdings displayed on the asset allocation screen 2300, the user can click on a diversification button 2306 to access a diversification screen 2500, shown in FIG. 25. The diversification screen 2500 displays the taxable accounts assigned to all goals (as needed) in dollars or percentages, as chosen in checkboxes 2502 by the user. An asset allocation graph 2504 breaks the user's investments down by asset type, e.g., stocks, bonds, short-term, and other. An exposure graph 2506 and a sectors graph 2508 include a "look-through" for mutual funds (breaking down the mutual fund portfolio to show underlying investments) . The exposure graph 2506 breaks the investments into dollars or percentages based on asset type, e.g.," domestic stock, foreign stock, bonds, short-term, and other. The sectors graph 2508 breaks the investments into dollars or percentages based on industry sector, e.g., durables, staples, energy, finance, health, retail, service, technology, utilities, cyclicals, unclassified stock, bonds, short-term, and other. The diversification screen 2500 also includes a table (an asset allocation table 2510 is partially shown) for each of the graphs 2504, 2506, and 2508 detailing the holdings (one holding per table row) that make up the investments included in the graphs 2504, 2506, and 2508. The tables include one column for each asset type or industry sector included in the corresponding graph 2504, 2506, or 2508. For example, the asset allocation table includes one. column each for stocks (column 2512), bonds (column 2514), short-term (column 2516), and other (column 2518). Each table also includes a total column, such as column 2520, including the total dollar or percentage value for each row (holding) . The PIR system also provides for investment alternatives on an investment alternatives screen 2600 as in FIG. 26. The investment alternatives screen 2600 lets the user view for each goal the current diversification of his or her taxable and non-taxable savings and evaluate how his or her assets are spread among industry sectors and foreign and domestic securities. Suggested changes to the user's current investment strategy are automatically given for each goal that may move the user closer to his or her target asset mix.
To evaluate ways to adjust the current portfolio to move towards the suggested target asset mix, the user can click on a next target investment button 2602 to access a next target investment screen 2700, shown in FIG. 27. The next target investment screen 2700 helps the user narrow the array of investment alternatives within each of the target asset mixes. See pending United States patent application 09/409,140 filed fc September 30, 1999 for an explanation of one way to implement the next target investment process.
The user can click on a funds to consider button 2604 to view a list of investments, e.g., mutual funds, that the user may want to consider purchasing in order to move closer to his or her target asset mixes. The investments in the list can include investments opportunities held inside and outside the entity providing the PIR system. Using a "look through" analysis, the ALM engine 306 determines an investment style that the user may want to consider. Once an investment style is identified, the funds to consider screens 2800 (FIG. 28), 2900 (FIG. 29), 3000 (FIG. 30), and 3100 (FIG. 31), described further below, display funds by category, e.g., domestic large blend stock funds, foreign stock funds, domestic large growth stock funds, and bond funds. The categories are based on Morningstar, Inc. Investment Categories that Strategic Adviser's, Inc. (SAI) modifies slightly. The screens 2800, 2900, 3000, and 3100 assist the user in evaluating individual funds as investment choices. The funds listed are screened to meet certain characteristics, although the funds need not be screened. For example, the list may only include funds with assets over $300 million or with a minimum of five years' performance history and the highest risk-adjusted return (using Sharpe three year rates) within their respective Morningstar Investment Category. Further, the foreign stock funds may only include those funds that invest primarily in equity securities of issuers located outside the United States.
The user can select one of four types of analysis to view the list by: summary (FIG. 28), risks (FIG. 29), loads and fees (FIG. 30), and profile (FIG. 31). The investments in each "analysis type's list are divided into tables by asset fc t type. Each table row includes the name of one investment option and a checkbox that the user may click to select that investment for consideration in the user's target asset mix. The remaining columns in the tables are determined by the analysis type. The screens in FIGS. 28-31 are partial screen shots. The screens 2800, 2900, 3000, and 3100 each also include a clear button to clear any choices the user made in the checkboxes and a submit button to submit any choices made in the checkboxes. Each screen also includes information on evaluating and selecting funds, how funds are chosen for listing on the screen, and the columns in that particular screen view. Also from the investment alternatives screen 2600, the user can click on a current holdings button 2606 to access a current holdings screen, such as the current holdings screen 2200 of FIG. 22.
The ALM engine 306 also can generate an action plan for the user as on an action steps screen 3200 as in FIG. 32. The action plan is customized to the user's circumstances and use of the PIR tool. The action plan items vary depending on whether or not the user achieved a specified probability level, e.g., 75%, for all of their goals or not, is within four years of retirement, and has entered additional goals (beyond retirement) , additional accounts, and explored the investment strategy portions of the PIR tool. At the conclusion of each interaction, data is saved so the user may return to the PIR tool to monitor his or her progress or update the plan as their circumstances change.
In generating and gathering the data for the PIR system' s screens, the ALM engine 306 implements a process 3300 as shown in FIG. 33. The process 3300 includes calculating 3302 the first year (partial year) ratio to determine how much of an
*• annual return the user receives in the first year. Then the ALM engine 306 calculates 3304 the contributions to each account in each goal for all years and calculates 3306 the one-time contributions to each account in each goal for all years. The ALM engine 306 can then perform 3308 analysis for each goal in each year, a process described further below.
The dollar results of the performing 3308 are converted 3310 from nominal dollars to real dollars. The outputs, the confidence level and asset allocation data 312 and the wealth level, inflow (financing), and outflow (payment) data 314, can then be calculated 3312. These outputs are set forth on page . 27 of the Appendix. The process 3308 is illustrated in FIG. 34. The ALM engine 306 first updates 3400 variables for the year in question such as federal tax filing status, ages, inflation factor, and any early withdrawal penalty rate. Then the implicit retirement goal expenses for the year can be calculated 3402. These expenses will be zero before retirement begins. Once retirement begins, all contributions to the retirement goal, education goals, and other goals are de-facto expenses for the retirement goal. Contributions to the retirement goal occur during retirement when one person is retired and one person is still working. Pre-tax contributions are accounted for through a reduction in income so only after-tax contributions need to be accounted for here. Then the ALM engine 306 calculates 3404 the base retirement income and determines the taxable income before investment returns and taxable withdrawals. The base taxable income is also calculated 3406 for each child/dependent. This taxable income calculation is for tax calculations only - it is not income to the goal as, for example, Social Security would be to the retirement goal. The ALM engine 306 also rolls down 3408 any CIT asset allocation for each college goal and gets 3410-MRD divisors as necessary for the user and the user's spouse/planning partner if the user is above a certain age and still living. Having all of this data, the ALM engine performs 3412 each simulation. The simulations are performed using a Monte Carlo algorithm and are set forth in the Appendix at pages 14-24. The ALM engine 306 then determines 3414 the confidence level of assets (asset projection) . This includes determining and saving the total level of assets for each goal at the 50%, 75%, and 90% level of confidence. For the retirement and education goals only, the ALM engine 306 also determines the taxable assets, tax-deferred assets, and tax-free assets for each simulation. The ALM engine 306 also determines 3416 the confidence level for any goal that has ended (based on the number of bankruptcies) . Then, for each simulation, balances are transferred 3418 as necessary. Balances are transferred when either a person dies or a goal is completed. Federal tax tables are also updates 3420 for inflation to get the tax brackets ready for the next year.
The solver feature of the ALM engine 306 varies user input such as retirement age or annual contributions to produce a desired result, such as a confidence level (probability) of meeting a goal. FIG. 35 illustrates a solver process 3500, which is set forth in more detail at pages 27-35 in the Appendix. The ALM engine 306 knows to run a solver process by receiving notice 3502 that the solver is activated, e.g., by examining a goal solver flag's true or false status. Inputs for the solver are set forth on page 5 of the Appendix. The ALM engine 306 determines 3504 which goal to solve for and determines 3506 what question to solve for, e.g., retirement fc age, annual retirement, college, or other expenses, annual savings necessary to provide for retirement, college, or custom goal. The ALM engine 306 can then solve 3508 for the question, usually at a specified level of confidence, e.g., 75%. The interface for the solvers is client-side java, although the solver could be run server-side. Due to processing constraints and presentation requirements, client- side java may be required. A goal solvers page is essentially a "what-if" page. Examples of goal solvers pages are a retirement goal page 3600 in FIG. 36, a retirement assets page 3700 in FIG. 37, a education goal page 3800 in FIG. 38, and a custom goal page. 3900 in FIG. 39, each described further below. When the user accesses a goal solvers page, the initial view is the user's current situation. All selections are set to the user's default preferences. The chart selection default is: "Goal Probabilities," as in FIGS. 36, 38, and 39, default goal to solve for is retirement, as in FIGS. 36-37, and the default confidence level is 75%, as in FIGS. 36-39. Also, all solver results are initially blank.
Referring first to FIG. 36, the retirement goal page 3600 includes a chart/graph 3602 illustrating the user's current situation. Two graph views are available on a solver page: one view shows the probabilities for all goals (as in the graph 3602 and in graphs 3802 and 3902 in FIGS. 18 and 19 respectively) and another view showing assets over time for the selected goal (as shown in graph 3702 in FIG. 37) . The user can choose a graph view using checkboxes 3604.
The user may solve for any one goal at a time. The choices for goal selection are the goals the user Λhas entered and are available in a drop-down menu 3606. Solver questions 3608a-c are determined by the goal selected. Selecting a goal fc using the drop-down menu 3606 will interactively set the solver questions displayed.
The user may select from different levels of confidence, e.g., 90%, 75%, and 50%, using a drop-down menu 3610. If the user interface control allows, the user may also type in a desired confidence level from 1% to 99% in whole percentages. Pressing a solve button 3612a-c for a question 3608a-c runs the solver for that question. During the solving process, "solving" message (s) are displayed to the user. When the solution is complete, the solver result is displayed for the selected question and any other solver result is cleared. The solver result is displayed in text 3614 and in the chart 3602. The result may not match the desired confidence level exactly. For example, if a user is solving for retirement age at a confidence level of 75%, and age 62 gives a confidence level of 74% while age 63 gives a confidence level of 77%, the solver will display age 63 at 77% confidence. The solver will stop at the confidence level that is closest to, but no less than, the desired confidence level.
In some cases, no solution may exist. If no solution exists then the following (or a similar) message is displayed to the user in a message box (now shown) with an OK button: "Solution could not be reached, closest solution is displayed" . Upon pressing the OK button, the message appears in the question area. The result displayed will be the last valid iteration (trial solution) , with a confidence level of more or less than the desired confidence level. Three solver questions 3608a-c are presented when solving for retirement: 1) When can I/we retire?, 2) How much can I/we afford to spend each year in retirement, and 3) How much do I/we need to save each year to retire? The text of the questions 3808a-c uses "we" if the user is working with a working spouse/planning partner and neither person is retired. In all other cases, the question uses "I." The first question 3608a should only be displayed if one of the following conditions is true: the user is single and not yet retired or the user is married and at least one person in the marriage is still working. Retirement age and year (current and solver) should be displayed for any user or spouse/planning partner who is still working. A couple who is still working will have both parties' retirement ages and years displayed. A working user with a non-working spouse/planning partner would only have the user's retirement age and year displayed. With checkboxes 3616, the user can choose to solve by keeping years between retirement constant or solve for the same retirement year. The checkboxes 3616 are only displayed if both persons are still working.
For the second question 3608b, if the user has entered detailed expenses, then the text for annual expenses is "Average annual expenses of $xxx,xxx." If the user has not entered detailed expenses then the text for annual expenses is "Annual expenses of $xxx,xxx." If the user has entered detailed expenses then a link is displayed to view the detailed expenses in a pop-up. If the user has run the solver then both the current and solver expenses are displayed, otherwise just the current expenses are displayed. If the user has entered detailed expenses, the user is informed that: "All of your expenses are adjusted proportionately (increased or decreased by the same percentage) when solving for the amount you can spend." Note that a solution will always exist for this question.
The third question 3608c should only be displayed if one of the following conditions is true: the user is single and not yet retired or the user is married and neither person is fc retired (current year is before household retirement year) .
The user may choose with checkboxes 3618 to solve by changing savings to taxable accounts or to tax-deferred annuities. The solver result shows the changed value for the solver variable and current value for the unchanged variable. As with solving for retirement age, sometimes a solution will not exist. For example, a user may wish to reach a 75% confidence level by changing contributions to a tax-deferred annuity but even with $0 contributions the confidence level could still be above 75%.
Referring to FIG. 37, the retirement assets page 3700 includes the features described above for the retirement goals page 3600. In FIG. 37, however, the graph 3702 displays the user's assets over time rather than goal percentages. The graph 3702 of projected assets over time has mouseovers for each bar 3704a-n that displays the value, year, and ages of the user and the user's spouse/planning partner. When a college goal is selected, the age of the child is included in the mouseover as well. For the retirement goal as in FIG. 37, the mouseovers for the chart 3702 shows the retirement ages of the user and the user' s spouse/planning partner and the life planning ages of the user and the user's spouse/planning partner. If one person is non-working, then that person will not have a retirement age and only a life planning age would be shown for that person. Naturally, a single person has one retirement age and one life planning age only. A person who is already retired will not have retirement age/year displayed. For an education goal and for a custom goal, the chart shows the start and end of the goal. If the goal has already started then the start year is be displayed. The chart 3702 also includes a link 3706 to a pop-up table view of the data. Referring to FIG. 38, the education goal page 3800
_ includes the features described for the retirement goals page 3600. Two solver education questions 3804a-b are presented: 1) How much do we/I need to save each year to afford this goal?, and 2) How much can we/I afford to spend each year? The text of the questions 3804a-b uses "we" if the user is working with a working spouse/planning partner and neither person is retired. In all other cases, the questions 3804a-b use "I." For the first question 3804a, the user may choose to solve by changing savings to CITs, UTMA/UGMAs, prepaid tuition, and taxable accounts using a drop-down menu 3806. The solver result shows the changed value for the solver variable and current value for the unchanged variables . As with solving for retirement age, sometimes a solution will not exist. For example, a user may wish to reach a 75% confidence level by changing contributions to a CIT but even with $0 contributions the confidence level could still be above 75%. For the second education question 3804b, if the user has entered detailed expenses then the text for annual expenses is "Average annual expenses of $xx,xxx." If the user has not entered detailed expenses then the text for annual expenses is "Annual expenses of $xx,xxx." If the user has entered detailed expenses then a link 3808 is displayed to view the detailed expenses in a pop-up. If the user has run the solver then both the current and solver expenses are displayed, otherwise just the current expenses are displayed. If the user has entered detailed expenses, the user is informed that: "All of your expenses are adjusted proportionately (increased or decreased by the same percentage) when solving for the amount you can spend."
Referring to FIG. 39, the custom goal page 3900 includes the features described above for the retirement goals page fc 4 3600. Two solver custom goal questions 3904a-b are presented: 1) Hσw much do we/I need to save each year to afford this goal?, and 2) How much can we afford to spend each year? The text of the questions 3904a-b uses "we" if the user is working with a working spouse/planning partner and neither person is retired. In all other cases, the questions 3904a-b use "I." The only solver variable is contributions to a taxable account. As with solving for retirement age, sometimes a solution will not exist. For example, a user may wish to reach a 75% confidence level by changing contributions to a taxable account but even with $0 contributions the confidence level could still be above 75%. For the second custom goal message 3904b, if the user has entered detailed expenses then the text for annual expenses is "Average annual expenses of $xx,xxx" If the user has not entered detailed expenses then the text for annual expenses is "Annual expenses of $xx,xxx." If the user has entered detailed expenses then a link 3906 is displayed to view the detailed expenses in a pop-up. If the user has run the solver then both the current and solver expenses are displayed, otherwise just the current expenses are displayed. If the user has entered detailed expenses, the user is informed that: "All of your expenses are adjusted proportionately (increased or decreased by the same percentage) when solving for the amount you can spend."
Other embodiments are within the scope of the following claims .
Appendix
Calculation Engine Input Data
Pre-cailculated array of returns.
The array of returns is a array of nominal, pre-tax returns, for all asset allocations, for all simulations, for the maximum number of years. The maximum number of years is 114. There are 231 asset allocations with combinations of stocks, bonds, and cash.
The first asset allocation is (1.00,.00,.00); the second asset allocation is (.95,.05,.00); the third asset allocation is (.95,.00,.05); the fourth asset allocation is (.90,.10,.00) and so forth. The last asset allocation is of course (.00,.00, 1.00).
The array is of size: max number of years * number of asset allocations * number of simulations = 114 * 231 * 250 or
(114, 231, 250) Inflation rate
The annual inflation rate is a constant and is equal to 3.06%. This rate is updated annually using Ibbotson inflation data from the period January 1926 to December of the last available full year of data. Show values in real dollars (true or false) User and Spouse Information
User is married (true or false)
User's birth year
Spouse's birth year
User non-working, true or false. If true the user will not have a retirement age or date.
User's retirement age, datum will exist unless user is non-working
User retirement year, datum will exist unless user is non-working
Spouse non-working, true or false. If true the spouse will not have a retirement age or date.
Spouse's retire age, datum will exist unless spouse is non-working.
Spouse's retirement year, datum will exist unless spouse is non-working.
Household retirement year
User's life planning age
User's life planning year
Spouse's life planning age
Spouse's life planning year
Household last year
User's initial income (current salary plus other income)
User's annual income increase rate
Spouse's initial income (current salary plus other income)
Spouse's annual income increase rate.
State tax rate
Federal tax filing status (single or married filing jointly)
Exemption amount (taxable income is reduced by this amount)
Deductions (taxable income is reduced by this amount)
Year Limits
User's IRA year limit (the last year the user may make an IRA contribution (not Roth IRA)) Spouse's IRA year limit (the last year the spouse may make an IRA contribution (not Roth IRA)) User's IRA eligibility year (the first year the user may withdraw from an IRA or Roth IRA without paying a penalty) Spouse's IRA eligibility year (the first year the spouse may withdraw from an IRA or Roth IRA without paying a penalty) User's early retirement year (year user turns age 55) Spouse's early retirement year (year spouse turns age 55) User's MRD start year for 403(b) balances. This is the year the user turns age 75 r ., Spouse's MRD start year for 403(b) balances. This is the year the spouse turns age 75.
Retirement Specific Data
User's annual contribution increase rate (applies to all the user's retirement contributions except workplace plans) Spouse's annual contribution increase rate (applies to all the spouse's retirement contributions except workplace plans)
Retirement income streams
All retirement income streams are pretax amounts. Each income stream may start before retirement but must end by the household last year. Each income stream is a vector of zero or positive values from the current year to the household last year.
Income Streams:
User's Social Security income stream
Spouse's Social Security income stream Appendix
User's pension income stream (this is an aggregate of all the user's pensions Spouse's pension income stream (this is an aggregate of all the spouse's pensions) User's additional income stream (this is an aggregate of all the user's additional income) Spouse's additional income stream (this is an aggregate of all the spouse's additional income)
College Goal Child Information
For each college goal the following data items are needed :
Name (name of the goal is the child's name). Each name must be unique.
Child's birth year
Initial income
Deductions (used to reduce taxable income). Initial value must be increased by inflation each year.
Federal tax filing status (this will always be single for the child)
Education IRA year limit. This is the last year an Education IRA contribution may be made for this person.
Annual contribution increase rate (applies to all accounts for the goal).
Contribution end year. This is the last year a contribution will be made for the goal. This year must be less than or equal to the last year of the goal.
College Specific Data
College cost inflation rate, a constant: .05
Annual CIT Plan fee, a constant: .0030. Annual CIT Plan returns are reduced by this fee.
Education IRA annual limit, a constant: 500. This limit is in nominal dollars. This limit applies to each college, goal separately.
College penalty rate, a constant: .10. This is the penalty rate applied to withdrawals from certain accounts when the assets are not used for college.
Custom goal Information
For each custom goal the following data items are needed
Name. Each name must be unique.
Annual contribution increase rate (applies to all accounts for the goal).
Contribution end year. This is the last year a contribution will be made for the goal. This year must be less than or equal to the
Iastyear ofthe goal.
Goals
There are up to 10 goals allowed. There will be 1 retirement goal, 0 to 9 college goals, and 0 to 9 custom goals. A goal is a stream of desired expenditures in the form of a dollar amount each year. Goal name
Each name must be unique. The goal name enables the goal to be associated with a set of accounts and with a person or persons. Goal type
Each goal has a type: retirement, college, or custom Goal start year
Each goal has a starting year. This year may be before the current year. Goal end year
Each goal has an ending year. This year must be greater than or equal to the current year, and greater than or equal to the starting-year. Additionally, all non-retirement goals must end by the time retirement ends. ,. -Goal liability stream
Each goal has liability stream. This is a vector of expenditures. Only one element must be non-zero.
One-time Contributions.
All goals have the possibility of one-time contributions. These one-time contributions are assumed to come from an external source such as a gift from a relative, an inheritance, sale of a house. In any case, it is assumed that a one-time contribution to an account does not have a corresponding one-time expense for another goal. All one-time contributions must have a contribution year which is less than or equal to the last year of the goal it is associated with. One-time contributions with a contribution year before the current year should be ignored since the contribution has already occurred. One-time contributions are converted from today's dollars to nominal (future dollars) before they are sent to the engine. Appendix
'Note, the actual inputs may have two additional fields, goal type and goal name, which are simply used to identify which goal a one-time contribution belongs to. Retirement Goal
Amount (in nominal dollars) Account Type
The allowed account types, which do not include all account types, are: IRA for the user, IRA for die spouse, Taxable account . Year Each College Goal
Amount (in nominal dollars) Account Type
The allowed account types, which do not include all account types, are: CIT Plan, Custodial, Pre-paid tuition, Taxable account Year Each Custom goal
Amount (in nominal dollars)
Year
' Custom goal one-time contributions are deposited in each goal's taxable account respectively.
Federal Tax Table
This is a static table of data that is used for federal tax calculations MRD divisor table
This is a static table of data that is used in MRD (minimum required distributions) calculations. The MRD table is actually two tables, one for a single or widowed person and one for a married couple. The table stores MRD divisors. An MRD is determined by taking an account balance and dividing by the appropriate MRD divisor.
Accounts
Account-related constants
Annual annuity fee, constant: .0080. Annuity returns are reduced by this amount
Annual IRA contribution limit, a constant: 2000. This limit is in nominal dollars. This limit applies to the user and spouse separately.
Early withdrawal penalty rate, a constant: .10
Asset Allocations
Each account has an asset allocation of stocks, bonds, and cash. The allocations will either be the current allocations or target allocations. Each asset allocation provided will already be rounded to the nearest 5% for stocks, bonds, and short-term. By doing this there will be 231 possible asset allocations. What is actually passed to the engine is not the separate values for stocks, bonds, and short-term, but instead the asset allocation number from 1 to 231. Note, we assume that each asset allocation remains constant throughout the financial projection.
In addition to the account data items listed below, each account has an asset allocation number. The retirement g oal has the following accounts.
Taxable, account (joint taxable assets for user and spouse)
The taxable account has the following data items
Initial balance _, ., Initial" user's annual contribution
Initial spouse's annual contribution Annuity for the user
Annuity account for the user has the following data items
Initial Balance
Initial Cost Basis
Initial annual contribution Annuity for the spouse
Annuity account for the spouse has the following data items
Initial Balance
Initial Cost Basis Appendix
Initial annual contribution Workplace for the user
Workplace account for the user has the following data items
Initial Balance
Initial Cost Basis
Initial employer pre-tax contribution
Initial participant pre-tax contribution
Initial participant after-tax contribution
Pre-1986 403(b) balance Workplace for the spouse
Workplace account for the spouse has the following data items
Initial Balance
Initial Cost Basis
Initial employer pre-tax contribution
Initial participant pre-tax contribution
Initial participant after-tax contribution
Pre-1986 403(b) balance IRA for the user
IRA for the user has the following data items
Initial balance
Initial cost basis
Initial pre-tax annual contribution
Initial after-tax annual contribution IRA for the spouse
IRA for the spouse has the following data items
Initial balance
Initial cost basis
Initial pre-tax annual contribution
Initial after-tax annual contribution Roth IRA for the user
Roth IRA for the user has the following data items
Initial balance
Initial cost basis
Initial annual contribution Roth IRA for the spouse
Roth ERA for the spouse has the following data items
Initial balance
Initial cost basis
Initial annual contribution
Each college goal has the following accounts.
Pre-paid tuition
Prε-paid-tuition has the following data items
Initial balance
Initial Cost Basis .-. Initial annual contribution Custodial account
The custodial account has the following data items
Initial balance
Initial annual contribution Education Ira
The Education ERA has the following data items
Initial balance
Initial cost basis
Initial annual contribution Appendix
CIT Plan
The CIT Plan has the following data items
Initial balance
Initial Cost Basis
Initial annual contribution Taxable account
The taxable account has the following data items
Initial balance
Initial annual contribution
Each custom goal has the following accounts.
Taxable account
The taxable account has the following data items
Initial balance
Initial annual contribution
Solvers
Data for the solvers determines whether a solver should be run, which solver to run, the desired confidence level, any other needed information. goalSolverFlag, a boolean flag indicating whether the engine needs to run a solver goalldentifier, the goal to solve for. The default goal is retirement desiredConfidenceLevel, the confidence level to solve for. The default is .75 which is 75%. Desired confidence level may be a minimum of .01 and a maximum of .99. solverToRun, the specific solver question to be solved. contributionTypeSelection, the account type for which contributions will be varied (iterated). contributionTypeS election will be null if the user is not solving for contributions. The contribution type selections are: TAXABLE_ACCOUNT, ANNUITY_ACCOUNT, CIT_ACCOUNT, PREPAID_TUITION_ACCOUNT, CUSTODIAL_ACCOUNT. Each solver question knows what contribution type selections it can handle. retirementAgeSolverSelection. The user may choose to solve for the same retirement year as the spouse or solve by adjusting both retirement ages the same number of years. This variable is only used if the user is married and both persons are still working. The selections are: SAME_YEAR and SAME_CHANGE
Engine Processing
Calculate the first year (partial year) ratio.
User will get from 1 to 12 months of the annual return, depending on the current month. For example, if the current month is January the user will get 12 months of return and if the current month is December the user will get 1 month of return. In the first year (the current year), each annual return will be multiplied by this ratio. The first year ratio equals <MONTHS_EN_YE AR - current month + 1) / (MONTHS_rN_YE AR )
Calculate the explicit contributions to each account in each goal for all years.
We assume that all contributions are made at the end of the year. Partial first year -
Since we have no year-to date contribution information, we simply prorate the contribution for the current year based on the portion of the year remaining. If the year is the current year then the partial year contribution equals (the corresponding ■* " contribution amount) * (the first year ratio) For each year from the current year to the household last year if (solverMode = true) { look at the goal ending year for the goal being solved for. If the year being processed is greater than the goal ending year then stop all financial projection processing. }
Retirement Goal
Taxable account
If (the year < user's retirement year) { Appendix
User's annual contribution = user's initial annual contribution * (1+ user's contribution increase rate) Λ (number of years since the current year)
} else { user's annual contribution = 0
}
Lf (the year < spouse' s retirement year) {
Spouse's annual contribution = spouse's initial annual contribution * (1+ spouse's contribution increase rate) Λ (number of years since the current year)
} else { spouse's annual contribution = 0
}
Annuity for the user
If (the year < user's retirement year) {
User's annual contribution = user's initial annual contribution * (1+ user's contribution increase rate) Λ (number of years since the current year)
} else { user's annual contribution = 0
} Annuity for the spouse
If (the year < spouse's retirement year) {
Spouse's annual contribution = spouse's initial annual contribution * (1+ spouse's contribution increase rate) Λ (number of years since the current year)
} else { spouse's annual contribution = 0
} Workplace for the user
Lf (the year < user's retirement year) {
Employer pre-tax contribution = initial employer pre-tax contribution * (1+ user's annual income increase rate) Λ (number of years since the current year)
Participant pre-tax contribution = initial participant pre-tax contribution * (1+ user's annual income increase rate) Λ (number of years since the current year)
Participant after-tax contribution = initial participant after-tax contribution * (1+ user's annual income increase rate) Λ (number of years since the current year)
} else {
Employer pre-tax contribution = 0
Participant pre-tax contribution = 0
Participant after-tax contribution = 0
" } Workplace for spouse
If (the year < spouse's retirement year) {
Employer pre-tax contribution = initial employer pre-tax contribution * (1+ spouse's annual income increase rate) Λ (number of years since the current year)
Participant pre-tax contribution = initial participant pre-tax contribution * (1+ spouse's annual income increase rate) Λ (number of years since the current year)
Participant after-tax contribution = initial participant after-tax contribution * (1+ spouse's annual income increase rate) Λ (number of years since the current year)
} else {
Employer pre-tax contribution = 0
Participant pre-tax contribution = 0
Participant after-tax contribution = 0 Appendix
} IRA for the user and Roth ERA for the user
Lf ((the year < user's retirement year) And (the year <= user's ERA year limit)) {
ERA pre-tax contribution = initial ERA pre-tax contribution * (1+ user's contribution increase rate) Λ
(number of years since the current year)
ERA after-tax contribution = initial ERA after-tax contribution * (1+ user's contribution increase rate) Λ
(number of years since the current year)
Roth ERA contribution = initial Roth ERA contribution * (1+ user's contiibution increase rate) Λ (number of years since the current year)
} else if (the year < user's retirement year) { ERA pre-tax contribution = 0 ERA after-tax contribution = 0
Roth ERA contribution = initial Roth ERA contribution * (1+ user's contribution increase rate) Λ (number of years since the current year)
} else {
ERA pre-tax contribution = 0 ERA after-tax contribution = 0 Roth ERA contribution = 0
}
'Make sure total ERA + Roth ERA contributions are within the limit
Lf (ERA pre-tax contribution + ERA after-tax contribution + Roth ERA contribution >= annual ERA contribution limit) {
Temp Value = (ERA pre-tax contribution + ERA after-tax contribution + Roth ERA contribution) ERA pre-tax contribution = (ERA pre-tax contribution / temp) * annual ERA contribution limit ERA after-tax contribution = (ERA after-tax contribution / temp) * annual ERA contribution limit Roth ERA contribution = (Roth ERA contribution / temp) * annual ERA contribution limit
}
ERA for the spouse and Roth ERA for the spouse
Lf ((the year < spouse's retirement year) And (the year <= spouse's IRA year limit)) {
ERA pre-tax contribution = initial ERA pre-tax contribution * (1+ spouse's contribution increase rate) Λ
(number of years since the current year)
ERA after-tax contribution = initial ERA after-tax contribution * (1+ spouse's contribution increase rate) Λ
(number of years since the current year)
Roth ERA contribution = initial Roth ERA contribution * (1+ spouse's contribution increase rate) Λ (number of years since the current year)
} else if (the year < spouse's retirement year) {
ERA pre-tax contribution = 0
ERA after-tax contribution = 0
Roth ERA contribution = initial Roth ERA contribution * (1+ spouse's contribution increase rate) Λ (number k • of years since the current year)
} else {
ERA pre-tax contribution = 0
ERA after-tax contribution = 0
Roth ERA contribution = 0
}
'Make sure total ERA + Roth IRA contributions are within the limit
If (ERA pre-tax contribution + ERA after-tax contribution + Roth ERA contribution >= annual ERA contribution limit) {
Temp Value = (ERA pre-tax contribution + ERA after-tax contribution + Roth ERA contribution) ERA pre-tax contribution = (ERA pre-tax contribution / temp) * annual ERA contribution limit IRA after-tax contribution = (IRA after-tax contribution / temp) * annual ERA contribution limit Roth ERA contribution = (Roth ERA contribution / temp) * annual ERA contribution limit Appendix
>
For each college goal { Pre-paid tuition
Lf (the year <= contribution end year) {
Annual contribution = initial annual contribution * (1+ contribution increase rate) Λ (number of years since the current year)
} else { annual contribution = 0
}
Custodial Account
Lf (the year <= contribution end year) {
Annual contribution = initial annual contribution * (1+ contribution increase rate) Λ (number of years since the current year)
} else { annual contribution = 0
}
Education ERA
Lf ((the year <= contribution end year) And (the year <= education ERA year limit)) {
Annual contribution = initial annual contribution * (1+ contribution increase rate) Λ (number of years since the current year)
'Make sure the contribution amount is within the account limit
Annual contribution = MLN(annual contribution, Education ERA limit)
} else { annual contribution = 0
}
CIT Plan
Lf (the year <= contribution end year) {
Annual contribution = initial annual contribution * (1+ contribution increase rate) Λ (number of years since the current year)
} else { annual contribution = 0
}
Taxable account
Lf (the year <= contribution end year) {
Annual contribution = initial annual contribution * (1+ contribution increase rate) Λ (number of years since the current year)
} 1 else { annual contribution = 0 ' } }'.
For each custom goal { Taxable account
Lf (the year <= contribution end year) {
Annual contribution = initial annual contribution * (1+ contribution increase rate) Λ (number of years since the current year)
} else { annual contribution = 0 } Appendix
} Next year
Calculate the one-time contributions to each account in each goal for all years.
'Most years will not have a one-time contribution and so will have a value of zero. Lf there are two or more one-time contributions for the same year in the same account, those contributions will be combined. Note that since one-time contributions do not have a corresponding one-time expense to another goal, they cannot be combined with the vector of regular annual contributions.
For each account that may have a one-time contribution, create a vector (array) of one time contributions from the current year to the household last year.
Retirement Goal
For each one-time contribution {
Lf the account type is the user's ERA {
Lf (the contribution year <= user' s life planning year and >= current year) {
Add the one-time contribution to the existing one-time contribution amount for the year. } } Lf the account type is the spouse's ERA {
Lf (the contribution year <= spouse's life planning year and >=current year) {
Add the one-time contribution to the existing one-time contribution amount for the year. } } Lf the account type is taxable account {
Lf (the contribution year <= household last year and >= current year) {
Add the one-time contribution to the existing one-time contribution amount for the year. } } } Each College Goal
For each one-time contribution {
Lf (the contribution year <= goal end year and >= cirrrent year) {
Add the one-time contribution to the existing one-time contribution amount for the year in the account type indicated. Valid account types are: CIT, Custodial, Pre-paid tuition, taxable account } } Each Custom Goal
For each one-time contribution {
Lf (the contribution year <= goal end year and >= cuπent year) {
Add the one-time contribution to the existing one-time contribution amount for the year in the taxable account. } }
For each year ϊrom'the current year to the household last year Update the federal tax filing status
Lf the user was single, keep as single. Lf the user was married and either person is no longer living, i.e. the year is greater ^ "" than either user's life planning year or spouse's life planning year, then change federal tax filing status to single.
Update the ages of the user, spouse, and all children
'The ages are needed for MRD calculations
User's age = year being processed - user's birth year
Spouse's age = year being processed - spouse's birth year
For each child, child's age = year being processed - child's birth year.
Update the inflation factor.
The inflation factor is used to convert today's dollars (real dollars) to nominal dollars and vice versa in any given year. Appendix
The inflation factor starts out as the value 1 and is increased by (1 + inflation rate) each year after the first year.
Update the early withdrawal penalty rate for the user and spouse
One penalty rate is used for all tax-deferred/ tax-free retirement accounts except workplace accounts and one penalty rate is for workplace savings accounts. The taxable account does not have an early withdrawal penalty. The user and spouse have separate penalty rates since they are different ages. These penalty rate are updated each year. Accounts for college goals do not have early withdrawal penalties, although the funds must be used for education.
User's retirement account penalty rate
Lf the year is before the user's ERA eligibility year then set the penalty rate to the early withdraw penalty rate.
Otherwise, set it to zero. User's workplace savings penalty rate
Assets may be withdrawn without penalty from workplace savings accounts if the participant separated from service in the year he/she turned age 55 or later. Also, assets may be withdrawn if the participant is age 59 1/2 or older.
Lf ((user's retirement year >= User's early retirement year) And (this year >= user's retirement year)){ Penalty rate = 0
}
Else Lf (this Year >= user's ERA eligibility year) { Penalty rate = 0
}
Else {
Penalty rate = early withdrawal penalty rate }
Spouse's retirement account penalty rate
Lf the year is before the spouse's ERA eligibility year then set the penalty rate to the early withdraw penalty rate. Otherwise, set it to zero.
Spouse's workplace savings penalty rate
Assets may be withdrawn without penalty from workplace savings accounts if the participant separated from service in the year he/she turned age 55 or later. Also, assets may be withdrawn if the participant is age 59 1/2 or older.
Lf ((spouse's retirement year >= spouse's early retirement year) And (this year >= spouse's retirement year)){ Penalty rate = 0
}
Else Lf (this Year >= spouse's IRA eligibility year) { Penalty rate = 0
}
Else {
Penalty rate = early withdrawal penalty rate
} '
Calculate the implicit retirement goal expenses for the year. This will be zero before retirement begins.
Once retirement begins, all contributions to the retirement goal, college goals, and custom goals are defacto expenses for the retirement goal. Contributions to the retirement goal occur during retirement when one person is retired and one person is still working. Pre-tax retirement contributions are accounted for through a reduction in income so only after-tax contributions need to be accounted for here.
'If user is not retired but spouse is retired
If ((the year < user's retirement year) AND (the year >= spouse's retirement year)) {
Add the following contributions to the retirement goal amount for the year: user's taxable contribution user's annuity contribution user's Workplace participant after-tax contribution user's ERA after-tax annual contribution Appendix user's Roth ERA contribution
}
'Lf spouse is not retired but user is retired
Else Lf ((the year < spouse's retirement year) AND (the year >= user's retirement year)) {
Add the following contributions to the retirement goal amount for the year: spouse's taxable contribution spouse's annuity contribution spouse's Workplace participant after-tax contribution spouse's IRA after-tax annual contribution spouse's Roth ERA contribution }
'Lf either the user or spouse is retired, i.e. household retirement year has been reached If (the year >= household retirement year) { For each college goal { For each account {
Add the contribution amount to the retirement goal amount for the year. } }
For each custom goal { For each account {
Add the contribution amount to the retirement goal amount for the year. } } }
Calculate the base retirement income and determine the taxable income before investment returns and taxable withdrawals.
"The base income each year is the after-tax total earned income.
'User's income
'Increase the user's current income by the user's annual income increase rate if the year is after the current year. Once the user retires, set the user's current income to zero. . . .
If (the year < user's retirement year) {
User's earned income = user's initial income * (1+ user's income increase rate) Λ (number of years since the current year)
} else {
User's earned income = 0 }
'Spouse's income
'Increase the spouse's current income by t e spouse's annual income increase rate if the year is after the cuπent year. Once the spouse retires, set the spouse's current income to zero. Lf (the year-< spouse's retirement year) { " .". Spouse's earned income = spouse's initial income * (1+ spouse's income increase rate) Λ (number of years since the current year)
} else {
Spouse's earned income = 0 }
Calculate the joint taxable income of the user and the spouse
Starting with 0 dollars, subtract the deductions and exemption amount, both indexed for inflation. This will make taxable income negative at this point Appendix Taxable income equals - (exemption amount + deductions) * the inflation factor
Add Salary and Other Income. This is part of taxable income estimation. Note, once the user / couple is in retirement, all income is assigned to retirement Lf (the year < household retirement year) {
Add the following to taxable income:
User's earned income
Spouse's earned income subtract the following from taxable income (these are the pre-tax contributions): 'Note that we do not deduct the employer workplace contribution from taxable income user's participant pre-tax contribution * (1+ user's income increase rate) Λ (number of years since the current year) user's ERA pre-tax annual contribution, adjusted for annual increases and ERA limits spouse's participant pre-tax contribution * (1+ spouse's income increase rate) Λ (number of years since the current year) spouse's IRA pre-tax annual contribution, adjusted for annual increases and ERA limits
}
Elself ((the Year < user's retirement year) And (the Year >= spouse's retirement year)) {
'User is still working but the spouse is retired. User's salary after pre-tax contributions and federal and state 'taxes is added to the after-tax retirement income stream: total earned income. After-tax contributions are 'already handled as a retirement expense.
Add user's earned income to taxable income: subtract the following from taxable income (these are the pre-tax contributions): 'Note that we do not deduct the employer workplace contribution from taxable income user's participant pre-tax contribution * (1+ user's income mcrease rate) Λ (number of years since the cuπent year) user's ERA pre-tax annual contribution, adjusted for annual increases and ERA limits
'Get the after-tax amount of taxable income and add it to earned income calculate federal taxes on the taxable income using the federal tax method calculate state taxes on the taxable income using the state tax rate.
State taxes = max(taxable income * state tax rate.O) Add values to total earned income, which is zero until now.
Add user's total income, as adjusted above
Subtract both pre-tax contributions, as adjusted above
Subtract federal taxes
Subtract state taxes
Make sure the value of total earned income is at least zero
} *
Elself ((the Year < spouse's retirement year) And (the Year >= user's retirement year)) {
'Spouse is still working but the spouse is retired. Spouse's salary after pre-tax contributions and federal and state 'Jaxes is added to the after-tax retirement income stream: total earned income. After-tax contributions are 'already handled as a retirement expense.
Add spouse's earned income to taxable income subtract the following from taxable income (these are the pre-tax contributions): 'Note that we do not deduct the employer workplace contribution from taxable income spouse's participant pre-tax contribution * (1+ spouse's income increase rate) Λ (number of years since the current year) spouse's IRA pre-tax annual contribution, adjusted for annual increases and ERA limits
'Get the after-tax amount of taxable income and add it to earned income Appendix calculate federal taxes on the taxable income using the federal tax method calculate state taxes on the taxable income using the state tax rate.
State taxes = max(taxable income * state tax rate,0) Add values to total earned income, which is zero until now.
Add spouse's total income, as adjusted above
Subtract both pre-tax contributions, as adjusted above
Subtract federal taxes
Subtract state taxes
Make sure the value of total earned income is at least zero
}
'Add pensions, Social Security, and additional income. These values come from the retirement income streams for the year. We assume that Social Security retirement benefits are 85% taxable.
'Important note: these income streams may have values before the household retirement begins. These values are handled as described below; there is no difference in handling between before and after retirement
In a temporary variable, store the sum of pensions, Social Security, etc. temp = user's pension + spouse's pension + user's Social Security * .85 + spouse's Social Security * .85 + user's additional income + spouse's additional income
'Find incremental increase in federal taxes from earned income, and store in a temporary variable. Temp2 = federal taxes of (taxable income + temp) - federal taxes of (taxable income)
'Get the after-tax amount of Social Security, pensions, and additional income and add it to total earned income add temp value to total earned income subtract temp2 from total earned income subtract incremental state taxes (temp * state tax rate) from total earned income
Add taxable portion of Social Security, pensions, and additional income to taxable income, i.e. add the value temp to taxable income.
'Add non-taxable part of Social Security to total earned income add user's Social Security * .15 to total earned income add spouse's Social Security * .15 to total earned income
Deposit total earned income (an after-tax value) to the taxable account.
Save total earned income (an after-tax value) to the vector of total earned incomes. The vector of total earned incomes is an output of the engine.
}
Calculate the base taxable income for each child {
'Important note: this taxable income calculation is for tax calculations only. This income amount is not income to the goal as, for example, Social Security would be to the retirement goal. Determining taxable income for the child enables us to determine the-tax rate to apply.
Lf (the year <= college goal ending year) {
Child's taxable income = (initial income * the inflation factor) - (deductions * the inflation factor) ' V. }
Rolldown CIT account asset allocation for each college goal {
Select asset allocation based on child's age
'Note, for rules on converting asset allocations to asset allocation numbers, see the section "Standardized Asset
'Allocations" in Calculations Before the Engine
Case: child's age <=3 {
Set CIT asset allocation to the asset allocation number coπesponding to a stock percentage of 88%, a bond percentage of 12%, and a short-term percentage of 0%. Asset allocation number is 4 } Appendix
Case: child's age <= 6) {
Set CIT asset allocation to the asset allocation number coπesponding to a stock percentage of 85%, a bond percentage of 15%, and a short-term percentage of 0%. Asset allocation number is 7
}
Case: child's age <= 9) {
Set CIT asset allocation to the asset allocation number corresponding to a stock percentage of 73%, a bond percentage of 27%, and a short-term percentage of 0%.
}
Case: child's age<= 12) {
Set CIT asset allocation to the asset allocation number corresponding to a stock percentage of 63 %, a bond percentage of 33%, and a short-term percentage of 4%.
}
Case: child's age <= 15) {
Set CIT asset allocation to the asset allocation number coπespondmg to a stock percentage of 50%, a bond percentage of 40%, and a short-term percentage of 10%.
}
Case: child's age <= 18) {
Set CLT asset allocation to the asset allocation number coπespondmg to a stock percentage of 25%, a bond percentage of 50%, and a short-term percentage of 25%.
}
Case else { 'child age is > 18
Set CIT asset allocation to the asset allocation number coπesponding to a stock percentage of 20%, a bond percentage of 40%, and a short-term percentage of 40%.
}
}
Get MRD divisors as necessary for the user and spouse
'Determine the MRD divisor for the user if he/she is above a certain age and is still living Lf ((the year > user's ERA year limit) And (the year <= user's life planning year)) {
'if the user is married and the spouse is still living
Lf (user is married And (the year <= Spouse's life planning year)) {
User's MRD divisor = MRD divisor method (age of user in the year, true, age of spouse in the year)
}
Else {
User's MRD divisor = MRD divisor method (age of user in the year) } }
'Determine the MRD divisor for the spouse if he/she is above a certain age and is still living If ((the year > spouse's ERA year limit) And (the year <= spouse's life planning year)) {
'if the user is married and the user is still living
Lf (user is married And (the year <= user's life planning year)) { " Spouse's MRD divisor = MRD divisor method (age of spouse in the year, true, age of user in the year)
}
Else {
Spouse's MRD divisor = MRD divisor method (age of spouse in the year) } }
For each simulation (we have 250 simulations) if (solverMode = true) { look at the bankruptcy indicator for the goal being solved for. If the bankruptcy indicator is true then stop all processing for the simulation and proceed to the next simulation. } Appendix
Perform the financial projection for the retirement goal
Update the account value for the year's random returns
For each account, get the year's random return corresponding to the account's asset allocation. Lf the year is the current year then we must calculate a partial first year return. A partial first year return equals (the coπesponding random return) * (the first year ratio). Note, for a partial first year the annuity account fee must be prorated as well.
Lf the account is the taxable account {
Taxable investment income = last year's balance * random return
Federal tax on investment income = federal tax method (taxable income + investment income) - federal tax method (taxable income)
State tax on investment income = taxable investment income * state tax rate Determine taxable account balance Add investment income Subtract federal taxes Subtract state taxes Update Taxable income
Add taxable investment income to taxable income
}
Lf the account is not the taxable account or an annuity account{
The account balance = last year's balance * (1 + random return)
}
If the account is an annuity account {
The account balance = last year's balance * (1 + random return - annuity fee) }
Make the contribution for each account
For each account, add the contribution amount to the account balance at the end of the year. Update each account's cost basis as necessary. Lf the year is the cuπent year then we must calculate a partial first year contribution. A partial first year contribution equals: (the corresponding contribution) * (the first year ratio).
Taxable Account
Lf (the year < user's retirement year) { Add the user's taxable contribution
} if (the year < spouse's retirement year) { Add the spouse's taxable contribution
}
Add total earned income Annuity for the user
Lf (the year < user's retirement year) { Add the user's annuity contribution Update the cost basis by adding the annual contribution to the cost basis.
- }
Annuity for the spouse
Lf (the year < spouse's retirement year) { Add the spouse's annuity contribution Update the cost basis by adding the annual contribution to the cost basis.
}
Workplace for the user
Lf (the year < user's retirement year) {
Add the employer pre-tax contribution
Add the participant pre-tax contribution
Add the participant after-tax contribution
Update the cost basis by adding the participant after-tax contribution to the cost basis.
} Workplace for the spouse Appendix
Lf (the year < spouse's retirement year) { Add the employer pre-tax contribution Add the participant pre-tax contribution Add the participant after-tax contribution Update the cost basis by adding the participant after-tax contribution to the cost basis.
} ERA for the user
Lf (the year <= user's ERA year limit) { Add the pre-tax annual contribution Add the after-tax annual contribution Update the cost basis by adding the after-tax annual contribution to the cost basis
}
ERA for the spouse
Lf (the year <= spouse's ERA year limit) { Add the pre-tax annual contribution Add the after-tax annual contribution Update the cost basis by adding the after-tax annual contribution to the cost basis
}
Roth ERA for the user
Lf (the year < user's retirement year) { Add the annual contribution Update the cost basis by adding the annual contribution to the cost basis.
} Roth ERA for the spouse
Lf (the year < spouse's retirement year) {
Add the annual contribution
Update the cost basis by adding the annual contribution to the cost basis. }
Make the one-time contributions for each account that may have a one-time contribution
Add the contribution amount to the balance of the account indicated. We do not change account cost basis and there are no tax calculations required. The possible account types are: taxable, user's ERA, and spouse's ERA.
Do the MRDs as necessary
At a practical level, an MRD is a withdrawal from a tax-deferred account, a tax on the amount withdrawn, and a deposit into the taxable account of the remaining amount. MRDs are performed on the following accounts:
Workplace account for the user
Workplace account for the spouse
ERA for the user
ERA for the spouse
"MRDs for the user 1 Lf (the year > user's ERA year limit) { 'User's workplace account 'Determine the MRD amount Lf ((the year < user's start year for 403(b) balances) And (there are 403(b) balances)) {
These 403(b) assets are protected from MRDs
MRD amount = MLN((last year's account balance - 403(b) 1986 asset balance) / user's MRD divisor, this year's account balance)
'Make sure the MRD is not less than zero, which could often be the case.
MRD amount = MAX(MRD amount, 0)
} else {
MRD amount = MIN(last year's account balance / user's MRD divisor, this year's account balance) } Appendix
Withdraw MRD amount from workplace savings account Determine cost basis ratio
Lf ( account balance is zero ) { Cost basis ratio = 1
} else {
Cost basis ratio = MLN(cost basis / account balance, 1)
} Subtract the MRD amount from the account balance Subtract (MRD amount * cost basis ratio) from the cost basis
Determine the taxes on the withdrawal
Taxable withdrawal = MRD amount * (1 - cost basis ratio)
Federal tax = federal taxes of (taxable income + taxable withdrawal) - federal taxes of (taxable income)
State taxes = taxable withdrawal * state tax rate
Deposit MRD amount net of taxes, to the taxable account Add (MRD amount - (federal tax + state tax))
Update taxable income
Add the taxable withdrawal amount to taxable income
'User's ERA account Determine the MRD amount
MRD amount = MIN(last year's account balance / user's MRD divisor, this year's account balance)
Withdraw MRD amount from ERA account Determine cost basis ratio
Lf ( account balance is zero ) { Cost basis ratio = 1
} else {
Cost basis ratio = MLN(cost basis / account balance, 1) }
Subtract the MRD amount from the account balance Subtract (MRD amount * cost basis ratio) from the cost basis
Determine the taxes on the withdrawal
Taxable withdrawal = MRD amount * (1 - cost basis ratio)
Federal tax = federal taxes of (taxable income + taxable withdrawal) - federal taxes of (taxable - income)
State taxes = taxable withdrawal * state tax rate
Deposit MRD amount, net of taxes, to the taxable account Add (MRD amount - (federal tax + state tax))
Update taxable income
Add the taxable withdrawal amount to taxable income
'Note that we don't do MRDs for annuities
}
'MRDs for the spouse
Lf (the year > spouse's ERA year limit) { Appendix
"The exact same logic applies to the MRDs for the spouse }
Pay the goal amount
'Pay for the goal by withdrawing funds from the accounts. This includes updating taxable income as necessary and updating each account's cost basis as necessary.
Make withdrawals from accounts in the following order until the goal is paid or assets are depleted. Taxable account
' Note, withdrawals from the taxable account do not have any tax effects. Lf (there are sufficient assets to pay the goal) { Subtract the goal amount from the account Pay the goal and go on to the next goal
} else {
Pay as much of the goal as possible, depleting the taxable account. }
Annuity for the user
'Withdraw from the account until the remaining goal is paid or the account is depleted
Determine the cost basis ratio = MLN(cost basis / account balance, 1)
While (goal amount > 0 And account balance > 0) {
Determine the after-tax ratio of the next dollar withdrawn.
Federal marginal tax rate = federal marginal rate (taxable income)
Total tax rate = federal marginal rate + state tax rate + retirement account penalty rate
After-tax ratio = (1 - cost basis ratio) * (1 - total tax rate) + cost basis ratio
'For example, if the federal marginal rate is 28%, the state rate is 6%, penalty rate is 10%, and cost basis ratio = 40% then total tax rate = 44% and after-tax ratio = (1 - .40) * (1 - .44)
+ .40 = .724 or 72.4%. This means that of the next $1 dollar withdrawn from the account,
$.724 will be left after taxes to pay the goal.
Determine the incremental amount to be withdrawn.
'This amount is the minimum of the amount in the account, the remaining retirement goal
(grossed-up), and the remaining amount in the tax bracket.
Incremental withdrawal = MLN(account balance, remaining goal / after-tax ratio,
(Federal Tax bracket (taxable income) - taxable income) / (1 - cost basis ratio) )
'Lf cost basis ratio is 1 then incremental withdrawal = MIN(account balance, remaining goal / after-tax ratio)
'Note, if taxable income is above the highest tax bracket then the remaining amount in the tax bracket is infinite.
Subtract the incremental withdrawal from the account
Update the cost basis
Subtract (incremental withdrawal) * (cost basis ratio) from the account
Subtract the after-tax amount of the withdrawal from the remaining goal amount Subtract (incremental withdrawal) * (after-tax ratio)
Update taxable income
Add (incremental withdrawal) * (1 - cost basis ratio) to taxable income 'Adding the withdrawal to the taxable income will result in a new (higher) marginal tax rate and a higher tax bracket at the beginning of the next loop. We are really looping through tax brackets until the goal is paid or the account is depleted. Appendix
Annuity for the spouse
Same logic as for the annuity account for the user
Workplace account for the user
Same logic as for the annuity account for the user except that the penalty rate is the workplace penalty rate Workplace account for the spouse
Same logic as for the annuity account for the user except that the penalty rate is the workplace penalty rate
ERA for the user
Same logic as for the annuity account for the user
ERA for the spouse
Same logic as for the annuity account for the user
Roth ERA for the user
"The Roth ERA is a tax free account so there are no taxes due on withdrawals. We make the assumption that the 5-year aging requirement to avoid taxation has been satisfied. 'For the Roth ERA only, we always withdraw from cost basis first which is a different procedure from other accounts.
Withdraw penalty-free and tax-free amount withdrawal = MLN(cost basis,account balance, remaining goal) Subtract the withdrawal from the account balance Subtract the withdrawal from the cost basis Subtract the withdrawal from the remaining goal
Withdraw amount with a potential penalty and & potential tax
'Note, either the goal amount will already be fully paid or the cost basis for the account will be used up (zero)
Lf (the year >= user's eligibility year) { 'no tax or penalty is due withdrawal = MTN(account balance, remaining goal) Subtract the withdrawal from the account and from the remaining goal amount.
} else {
'tax and penalty are due on the full amount withdrawn While (goal amount > 0 And account balance > 0) {
Determine the after-tax ratio of the next dollar withdrawn.
Federal marginal tax rate = federal marginal rate (taxable income) Total tax rate = federal marginal rate + state tax rate + retirement account ' - penalty rate
After-tax ratio = (1 - total tax rate)
'For example, if the federal marginal rate is 28%, the state rate is 6%, penalty rate is 10%, then total tax rate = 44% and after-tax ratio = (1 - .44) = .560 or 56.0%. This means that of the next $1 dollar withdrawn from the account $.560 will be left after taxes to pay the goal.
Determine the incremental amount to be withdrawn.
"This amount is the minimum of the amount in the account, the remaining retirement goal (grossed-up), and the remaining amount in the tax bracket. Incremental withdrawal = MLN(account balance, remaining goal / after-tax ratio, Federal Tax bracket (taxable income) - taxable income) 'Note, if taxable income is above the highest tax bracket then the remaining amount in the tax bracket is infinite. Appendix
Subtract the incremental withdrawal from the account
Subtract the after-tax amount of the withdrawal from the remaining goal amount Subtract (incremental withdrawal) * (after-tax ratio)
Update taxable income
Add (incremental withdrawal) to taxable income
'Adding the withdrawal to the taxable income will result in a new (higher) marginal tax rate and a higher tax bracket at the beginning of the next loop. We are really looping through tax brackets until the goal is paid or the account is depleted. } 'end while loop }
Roth ERA for the spouse
Same logic as for the Roth ERA account for the user
Update the bankruptcy indicator
Lf (the goal amount could not be fully paid) { Set the bankruptcy indicator to true
'Note, once the bankruptcy indicator is set to true, it is never reset to false. Thus, at the end of the goal the bankruptcy indicator will be true if in any year the goal amount could not be fully paid.
}
Perform the financial projection for each college goal {
Update the account value for the year's random returns {
For each account, get the year's random return coπesponding to the account's asset allocation. If the year is the current year then we must calculate a partial first year return. A partial first year return equals: (the corresponding random return) * (the first year ratio). Note, for a partial first year the CIT plan fee must be prorated as well.
Account type is taxable account {
Taxable investment income = last year's balance * random return
Federal tax on investment income = federal tax method (taxable income + investment income) - federal tax method (taxable income)
State tax on investment income = taxable investment income * state tax rate Determine taxable account balance Add investment income Subtract federal taxes Subtract state taxes Update Taxable income
Add taxable investment income to taxable income
• } Account type is custodial account) {
'Important note: me investment income from the custodial account is taxable to the child and not to the user/spouse
Taxable investment income = last year's balance * random return
Federal tax on investment income = federal tax method (child's taxable income + investment income)
- federal tax method (child's taxable income)
State tax on investment income = taxable investment income * state tax rate
Determine account balance
Add investment income
Subtract federal taxes
Subtract state taxes Update Child's Taxable income
Add taxable investment income to child's taxable income Appendix
}
Account type is CIT account { account balance = last year's balance * (1 + random return - CIT plan fee)
}
Account type is pre-paid tuition account { account balance = last year's balance * (1 + college inflation rate)
}
Account type is Education ERA { account balance = last year's balance * (1 + random return)
} }
Make the contribution for each account {
'For each account, add the contribution amount to the account balance at the end of the year. Update each account's cost basis as necessary. Lf the year is the cuπent year then we must calculate a partial first year contribution. A partial first year contribution equals: (the corresponding contribution) * (the first year ratio). Taxable Account
Lf (the year <= contribution end year) { Add the taxable contribution
} Custodial Account
Lf (the year <= contribution end year) {
Add the custodial account contribution
} CIT Account
If (the year <= contribution end year) {
Add the CIT account contribution
Update the cost basis by adding the contribution to the cost basis.
} Pre-paid tuition
Jf (the year <= contribution end year) {
Add the pre-paid tuition account contribution
Update the cost basis by adding the contribution to the cost basis.
} Education ERA
Lf ((the year < Education ERA year limit) And (the year <= contribution end year)) { Add the annual Education ERA contribution Update the cost basis by adding the contribution to the cost basis. } }
Make the one-time contributions for each account that may have a one-time contribution { ' 'Note that one-time contributions to Educational ERAs are not permitted taxable account
Add the one-time contribution to the taxable account custodial account
Add the one-time contribution to the custodial account CIT account
Add the one-time contribution to the custodial account Update the cost basis by adding the contribution to the cost basis, pre-paid tuition account
Add the one-time contribution to the pre-paid tuition account Update the cost basis by adding the contribution to the cost basis }
Pay the goal amount { Appendix
'Pay for the goal by withdrawing funds from the accounts. This includes updating taxable income (both user/spouse and child income) as necessary and updating each account's cost basis as necessary. As soon as a goal is paid (goal amount is zero), go on to the next goal.
Make withdrawals from accounts in the following order until the goal is paid or assets are depleted. Pre-paid tuition
'Withdraw from the account until the remaining goal is paid or the account is depleted " Determine the cost basis ratio = MlN(cost basis / account balance, 1) While (goal amount > 0 And account balance > 0) {
Determine the after-tax ratio of the next dollar withdrawn.
Federal marginal tax rate = federal marginal rate (child taxable income)
Total tax rate = federal marginal rate + state tax rate
After-tax ratio = (1 - cost basis ratio) * (1 - total tax rate) + cost basis ratio
'For example, if the federal marginal rate is 15%, the state rate is 6%, and cost basis ratio =
40% then total tax rate = 21% and after-tax ratio = (1 - .40) * (1 - .21) + .40 = .874 or
87.4%. This means that of the next $ 1 dollar withdrawn from the account, $.874 will be left after taxes to pay the goal.
Determine the incremental amount to be withdrawn.
'This amount is the minimum of the amount in the account, the remaining college goal
(grossed-up), and the remaining amount in the tax bracket.
Incremental withdrawal = MLN(account balance, rernaining goal / after-tax ratio, Federal
Tax bracket (child taxable income) - child taxable income)
'Note, if taxable income is above the highest tax bracket then the remaining amount in the tax bracket is infinite.
Subtract the incremental withdrawal from the account
Update the cost basis
Subtract (incremental withdrawal) * (cost basis ratio)
Subtract the after-tax amount of the withdrawal from the remaining goal amount Subtract (incremental withdrawal) * (after-tax ratio)
Update child's taxable income
Add (incremental withdrawal) * (1 - cost basis ratio) to taxable income 'Adding the withdrawal to the taxable income will result in a new (higher) marginal tax rate and a higher tax bracket at the beginning of the next loop. We are really looping through tax brackets until the goal is paid or the account is depleted. }
Custodial Account • ' Note, withdrawals from the taxable account do not have any tax effects.
Withdrawal = MLN(account balance, remaining goal) Subtract the withdrawal from the account balance
Subtract the withdrawal from the rerraining goal CIT account
Same logic as for pre-paid tuition Education ERA
Withdrawal = MIN(account balance, remaining goal)
Subtract the withdrawal from the account balance
Subtract the withdrawal from the remaining goal
Subtract the withdrawal from the cost basis but do not let cost basis go below zero. Taxable account
' Note, withdrawals from the taxable account do not have any tax effects.
Withdrawal = MLN(account balance, rerriaining goal) Appendix
Subtract the withdrawal from the account balance Subtract the withdrawal from the remaining goal }
Update the bankruptcy indicator
Lf (the goal amount could not be fully paid) { Set the bankruptcy indicator to true
'Note, once the bankruptcy indicator is set to true, it is never reset to false. Thus, at the end of the goal the bankruptcy indicator will be true if in any year the goal amount could not be fully paid. } }
Perform the financial projection for each custom goal { Update the account value for the year's random returns
For the taxable account (the only account allowed in this goal is the taxable account), get the year's random return corresponding to the account's asset allocation. Lf the year is the current year then we must calculate a partial first year return. A partial first year return equals (the corresponding random return) * (the first year ratio).
Taxable investment income = last year's balance * random return
Federal tax on investment income = federal tax method (taxable income + investment income) - federal tax method (taxable income)
State tax on investment income = taxable investment income * state tax rate
Determine taxable account balance
Add investment income
Subtract federal taxes
Subtract state taxes Update Taxable income
Add taxable investment income to taxable income
Make the contribution for the account
'Lf the year is the current year then we must calculate a partial first year contribution. A partial first year contribution equals: (the corresponding contribution) * (the first year ratio).
Taxable account
Lf (the year <= contribution end year) {
Add the taxable contribution }
Make the one-time contribution
Add the one-time contribution amount to the balance of the taxable account. There are no tax calculations required.
Pay the goal amount
.'Pay for the goal by withdrawing funds from the accounts. Since the only account is the taxable account (all taxes have already been paid) so there are no tax effects.
Taxable account
If (there are sufficient assets to pay the goal) { Subtract the goal amount from the account Pay the goal and go on to the next goal
} else {
Pay as much of the goal as possible, depleting the taxable account. } Appendix
Update the bankruptcy indicator
Lf (the goal amount could not be fully paid) { Set the bankruptcy indicator to true
'Note, once the bankruptcy indicator is set to true, it is never reset to false. Thus, at the end of the goal the bankruptcy indicator will be true if in any year the goal amount could not be fully paid. } }
Next simulation
Determine confidence level assets
/* When we are in solver mode we don't need the confidence level of assets (asset projections), we only need the confidence levels. */
Lf (solverMode = False) {
Determine and save the total level of assets for each goal at the 50%, 75%, and 90% level of confidence. For the retirement goal and college goal only, also determine the taxable assets, tax-deferred assets, and tax-free assets at the 50%, 75%, and 90% level of confidence.
This data should be loaded into the chart data array for each goal. Thus there are three total asset projection charts for each goal and three sub-set asset projection charts for retirement and each college goal showing the breakdown of assets.
The retirement assets are categorized as follows: Taxable assets
Taxable account Tax-deferred assets
Annuity for the user
Annuity for the spouse
Workplace for the user
Workplace for the spouse
ERA for the user
ERA for the spouse Tax-free assets
Roth ERA for the user
Roth ERA for the spouse
The college assets are categorized as follows: Taxable assets
Taxable account
Custodial Account Tax-deferred assets
Pre-paid tuition
CIT Plan Tax-free assets
Education ERA
The first step is to determine the total assets for each goal for the year at the 50%, 75%, and 90% confidence levels. 50% corresponds to the 126th highest amount, 75% coπesponds to the 188th highest amount, and 90% corresponds to the 226th highest amount. We also need, for retirement only, the simulation numbers to which these values correspond.
The second step is to determine the sub-set asset values for retirement and each college goal.
The 50% confidence amount for taxable assets equals the taxable assets that coπespond to the simulation number of the
126th highest amount of total assets.
The 70% confidence amount for taxable assets equals the taxable assets that correspond to the simulation number of the
188th highest amount of total assets.
The 90% confidence amount for taxable assets equals the taxable assets that correspond to the simulation number of the
226th highest amount of total assets.
The confidence amounts for tax-defeπed assets and tax-free assets are determined in a similar manner. Appendix
}
Determine confidence level for any goal that has ended (based on number of bankruptcies.)
Lf (the year is the lastyear of the goal) {
Confidence level = 1- ( number of bankruptcies / number of simulations) }
Transfer balances as necessary (for all 250 simulations)
Balances are transferred when either a person dies or a goal is completed. Note: the financial projection ends with the household last year (last year of retirement) which means that balances are never transferred from retirement goal to any other goal.
Lf (the year is the user's last year but not the spouse's last year) { Transfer user's annuity to spouse's annuity
We assume that the spouse make's the user's annuity his or her own. The annuity is not paid out. For taxation of annuities see section 72 of the IRC.
Add user's annuity balance to spouse's annuity balance.
Add user's annuity cost basis to spouse's cost basis
Delete user's annuity Transfer user's workplace account to spouse's workplace account
Note: there is no step-up in cost basis. Pre 1986 403(b) balances are not transfeπed.
Add user's workplace balance to spouse's workplace balance
Add user's workplace cost basis to spouse's workplace cost basis
Delete user's workplace account. Transfer user's ERA account to spouse's ERA account
Note: there is no step-up in cost basis.
Add user's ERA balance to spouse's ERA balance
Add user's ERA cost basis to spouse's ERA cost basis
Delete user's ERA account Transfer user's Roth ERA account to spouse's Roth ERA account
Note: there is no step-up in cost basis.
Add user's Roth ERA balance to spouse's Roth ERA balance
Add user's Roth ERA cost basis to spouse's Roth ERA cost basis
Delete user's Roth ERA
}
Lf (the year is the spouse's last year but not the user's last year) { Same logic as with the transfer at the user's last year }
For each college goal {
Lf (the year is the last year of the college goal and there are other college goals remaining with later ending years) { Transfer balances, except the taxable account, to the next ending college goal with a later ending year. Note that * the- custodial account does not get transferred; it remains with the child. Since the assets are transfeπed, rather than withdrawn, no taxes are due. If there is more than one college goal with the same subsequent ending date, Ihen the assets should be transfeπed proportionally. For example, if there are two college goals with the next " .". ending date then each goal should get half the assets.
Pre-paid tuition
Add pre-paid tuition account balance to the pre-paid tuition account balance of the next ending college goal with a later ending year
Add pre-paid tuition account cost basis to the pre-paid tuition account cost basis of the next ending college goal with a later ending year
Delete the pre-paid tuition account Education ERA
Add Education ERA account balance to the Education ERA account balance of the next ending college goal with a later ending year Appendix
Add Education ERA account cost basis to the Education ERA account cost basis of the next ending college goal with a later ending year. Delete Education ERA account CIT Plan
Add CIT Plan balance to the CIT Plan balance of the next ending college goal with a later ending year Add CIT Plan cost basis to the CIT Plan cost basis of the next ending college goal with a later ending year Delete the CIT Plan
Transfer taxable account balances to the next ending goal. The next ending goal may be a college goal, custom goal, or the retirement goal. Lf there is more than one goal with the same subsequent ending date, then the assets should be transfeπed proportionally. For example, if there are two goals with the next ending date then each goal should get half the assets.
Taxable account
Add taxable account balance to the taxable account balance of the next goal with a later ending year. Delete taxable account }
Lf (the year is the last year of the college goal and there are no other college goals remaining with later ending years) { Transfer balances to the taxable account of the next ending goal, which could be a custom goal or the retirement goal. Note that the custodial account does not get transfeπed; it remains with the child.
Pre-paid tuition
Taxable withdrawal = (account balance - cost basis)
Federal taxes = federal taxes of (taxable income + taxable withdrawal) - federal taxes of (taxable income)
State taxes = taxable withdrawal * state tax rate
Add (pre-paid tuition account balance - (federal tax + state tax)) to retirement taxable account
Add the taxable withdrawal amount to taxable income (user & spouse taxable income)
Delete the pre-paid tuition account Education ERA
'Education ERA assets accumulate tax free to the child only. If the assets are not used for an educational purpose then the earnings on the account are taxed and a penalty is assessed as well.
Taxable withdrawal = MAX(account balance - cost basis,0)
Federal taxes = federal taxes of (taxable income + taxable withdrawal) - federal taxes of (taxable income)
State taxes = taxable withdrawal * state tax rate
Add (Education ERA account balance - (federal tax + state tax + (taxable withdrawal * college penalty rate))) to retirement taxable account
Add the taxable withdrawal amount to taxable income (user & spouse taxable income)
Delete the education ERA account CIT Plan
Taxable withdrawal = MAX(account balance - cost basis.O)
Federal taxes = federal taxes of (taxable income + taxable withdrawal) - federal taxes of (taxable income) 1 • State taxes = taxable withdrawal * state tax rate
Add (CIT plan account balance - (federal tax + state tax + (taxable withdrawal * college penalty rate))) to retirement taxable account
Add the taxable withdrawal amount to taxable income (user & spouse taxable income)
Delete the CIT plan account Taxable account
Add the taxable account balance to the retirement taxable account
Delete the taxable account
ach custom goal {
Lf (the year is the last year of the custom goal) { Appendix
Transfer balances to the next ending goal (which could be a custom goal, college goal, or retirement goal) with a later ending year. Lf there is more than one goal with the same subsequent ending date, then the assets should be transferred proportionally. For example, if there are two goals with the next ending date then each goal should get half the assets.
Taxable account
Add the taxable account balance of this goal to the taxable account of the next ending goal with a later e nding year.
Delete the taxable account of this goal. } }
Update federal tax table for inflation
Update the tax brackets by multiplying the existing tax brackets by (1 + inflation rate). This will get the tax brackets ready for the next year. Note that we update the tax brackets, but not the tax rates. The tax rates remain constant Next Year
Convert chart data from nominal dollars to real dollars.
Lf (Show values in real dollars is true) {
We convert from nominal dollars to real dollars by dividing each nominal value by (1 + inflation) Λ (year processed - current year)
For example, if inflation is 3% and a nominal value two years from the current year is $1,000, then the value in real dollars is
$1,000 / ( (1.03) A (2) ) = $942.5959 }
Calculation Engine Outputs if (solverMode = false) { // while we are solving we don't need to output this data. Confidence Levels
For each goal we display the confidence level, or percent chance of making the goal. The confidence level has a minimum value of 0% and a maximum value of 100%. Graphical Output
For each goal we display three graphs of total assets over time: at the 50%, 75%, and 90% levels of confidence. Each graph requires a vector of values (one for each year), and the first and last years to plot
For the retirement goal we also display three sub-set asset projection graphs. The sub-set charts show the breakdown of retirement assets into three component groups: taxable, tax-defeπed, and tax free assets in a stacked bar chart. One chart shows the assets at 50% level of confidence, the second at 75%, and the third at 90%.
For each goal we display the goal amounts (a vector), which aggregates all expenses for the goal, including implicit expenses. Implicit expenses (applicable to the retirement goal only) are contributions to other goals during the life of the goal.
For the retirement goal we output total earned income (which are after-tax values) for each year. These amounts are the after-tax incomes from non-investment income, which is determinable (non-stochastic). .-.
Solvers
A solver is tool which varies user input such as retirement age or annual contributions to produce a desired result such as a confidence level of meeting a goal.
Goal Solver Selection
The engine will know to run a goal solver by examining the goal solver flag, i.e. goalSolverFlag = TRUE. The user must indicate which goal to solve for, which will be received by the engine as a goal identifier. The goal identifier will of course also determine the goal type. The user must indicate which input data to solve for (the input data item that will be changed), which will be received by the engine as one of the solvers listed below. Appendix if (goalSolver = TRUE) { determine which goal to solve for { determine which question to solve for { } } }
Running the Engine
Each of the solvers runs the engine iteratively. During the solving process it is not necessary to perform some operations, which saves processing time. When solving is complete the engine is run once more with all the processes turned on. When solving begins, solverMode is set to true.' Solving begins when solver request is received by the engine. When solving is complete solverMode is set to false.
Goal Solver Output
Each goal solver will return a solver confidence level which will usually be the last trialConfidenceLevel
Each solver will return the input value that produces the solver confidence level. This is generally the last trialValue or value(s) directly determined by the last trialValue.
Each solver will return the asset projections
The expense solvers will return an expense vector, and average annual expenses (scalar value)
If a solution cannot be reached, the solver will also return a "no solution" error message.
Variables
These variables are internal to the solving methods. Each solver uses a subset of these variables. Inputs are listed in the solver subsection of Calculation Engine Input Data. highTrialValue = trial value of input datum that produces a confidence level at or above the desired confidence level. lowTrialValue = trial value of input datum that produces a confidence level below the desired confidence level. trialValue = value of input datum to be used in the iteration trialConfidenceLevel = confidence level produced from running the engine with the trialValue startingExpense Vector = cuπent expense vector (liability stream) for the goal. startmgRetirementYearUser = user's current retirement year or the household retirement year as needed startmgRetirementYearSpouse = spouse's cuπent retirement year or the household retirement year as needed
MAX TERATIONS = 20
CONFLDENCE_TOLERANCE = .0025. For example, if desiredConfidenceLevel is 75% then a solver result between .7475 and
.7525 would be acceptable.
EXPENSE_MULTEPL1ER = 5. Multiplies the lowTrialValue until a valid lowTrialValue is obtained
CONTRLBUTION_INCREASE = 10000. Added to the highTrialValue until a valid highTrialValue is obtained
ZERO = 0.0, ONE = 1.0, TWO = 2.0, TEN = 10.0
Retirement Age(s): Question 1 for retirement
The retirement age solver answers the question: When can I (we) retire? // Single user, still working
If (user is single and (user's retirement year > cuπent year) ) { Solve by changing user's retirement year
} .
,. -else if (user is married) { if (user is still working and spouse not working) { Solve by changing user's retirement year only
} else if (spouse is still working and user is not working) { Solve by changing spouse's retirement year only
} else if (user is still working and spouse is still working) {
Solve by changing user's retirement year and spouse's retirement year } else { Appendix return a "not meaningful" eπor to the application. }
} if (solving by changing both user's retirement year and spouse's retirement year) {
/* The user may choose to solve for the same retirement year as the spouse or solve by adjusting both retirement ages the same number of years. The selections are: SAME_YEAR and SAME_CHANGE. -
Lf solving for the same retirement year, we need to adjust the starting retirement year such that both persons have the same starting retirement year. All iterations are based on varying the retirement year(s), indirectly, through the trial value. The retirement years are then used to obtain retirement ages. */
, if (retirementAgeSolverSelection = SAME_YEAR) { startingRetirementYearUser = household retirement year start gRetiremenfYearSpouse = household retirement year run the engine startingConfidenceLevel = confidence level produced from engine run
} else if (retirementAgeSolverSelection = SAME_CHANGE){ startingRetirementYearUser = user's cuπent retirement year startingRetirementYearSpouse = spouse's cuπent retirement year startingConfidenceLevel = confidence level produced from current data
} else { invalid selection }
// determine the high trial value and low trial value so we can begin solving. if (startingConfidenceLevel < desiredConfidenceLevel) { lowTrialValue = ZERO //no change from retirement years (ages)
// set highTrialValue to largest increase (delay) to retirement year with both persons still alive. highTrialValue = Min(user's life planning year - startingRetirementYearUser, spouse's life planning year - startingRetirementYearSpouse)
/* test high trial value to make sure it produces a confidence level equal to or more than the desired confidence level. Lf the oldest possible retirement ages still leave a confidence level below the desired confidence level then stop solving, send a "no solution" message to the application, and send the solver results to the application (confidence level and changed input value) */ user's retirement year = startingRetirementYearUser + highTrialValue spouse's retirement year = startingRetirementYearSpouse + highTrialValue run the engine trialConfidenceLevel = confidence level from running the engine if (trialConfidenceLevel < desiredConfidenceLevel) {
_stop solving return "no solution" message to the application return trialConfidenceLevel as the solver confidence level return (user's retirement year - user's birth year) as the solver result for user's retirement age. return (spouse's retirement year - spouse's birth year) as the solver result for spouse's retirement age. } } else if (startingConfidenceLevel >= desiredConfidenceLevel) { highTrialValue = ZERO // no change from retirement years
// set lowTrialValue to soonest year, which will result in a retirement in the current year for at least one person. // lowTrialValue will be negative Appendix lowTrialValue = Max(current year - startingRetirementYearUser, current year - startingRetirementYearSpouse)
/* test low trial value to make sure it produces a confidence level below the desired confidence level. Lf the youngest possible retirement ages still leave a confidence level above the desired confidence level then stop solving, send a "no solution" message to the appUcation, and send the solver results to the application (confidence level and changed input value) */ user's retirement year = startingRetirementYearUser + lowTrialValue spouse's retirement year = startingRetirementYearSpouse + lowTrialValue run the engine trialConfidenceLevel = confidence level from running the engine if (trialConfidenceLevel >= desiredConfidenceLevel) { stop solving if (trialConfidenceLevel >= (desiredConfidenceLevel + .005) ) { // edge case handling return "no solution" message to the application
} return trialConfidenceLevel as the solver confidence level return (user's retirement year - user's birth year) as the solver result for user's retirement age. return (spouse's retirement year - spouse's birth year) as the solver result for spouse's retirement age. } }
// Solve
While ( (abs(trialConfidenceLevel - desiredConfidenceLevel) >= CONFEOENCE_TOLERANCE) And (highTrialValue > lowTrialValue) ) { trialValue = Ceiling((highTrialValue + lowTrialValue) / TWO) // round to next higher integer user's retirement year = startingRetirementYearUser + trialValue spouse's retirement year = StartingRetirementYearSpouse + trialValue run the engine trialConfidenceLevel = confidence level from running the engine
// examine the result (trialConfidenceLevel) and recalculate the upper and lower bounds. Lf (trialConfidenceLevel < desiredConfidenceLevel ) lowTrialValue = trialValue
} else { highTrialValue = trialValue if (highTrialValue - lowTrialValue = ONE) { lowTrialValue = highTrialValue ' }
} - ■ i A- 1
} return trialConfidenceLevel as the solver confidence level return (user's retirement year - user's birth year) as the solver result for user's retirement age. return (spouse's retirement year - spouse's birth year) as the solver result for spouse's retirement age. return the asset projections } else if (solving by changing user's retirement year only or spouse's retirement year only) { // Note that "person" should be replaced with "user" or "spouse" as appropriate startingRetirementYear for person = person's retirement year startingConfidenceLevel = confidence level produced from current data Appendix
// determine the high trial value and low trial value so we can begin solving. if (startingConfidenceLevel < desiredConfidenceLevel) { lowTrialValue = ZERO // no change from retirement year (age)
// set highTrialValue to largest increase (delay) to retirement year with person still alive. highTrialValue = person's life planning year - startmgRetiremenfYear for person person's retirement year = startingRetirementYear for person + highTrialValue run the engine trialConfidenceLevel = confidence level from running the engine if (trialConfidenceLevel < desiredConfidenceLevel) { stop solving return "no solution" message to the application return trialConfidenceLevel as the solver confidence level return (person's retirement year - person's birth year) as the solver result for retirement age. } } else if (startingConfidenceLevel >= desiredConfidenceLevel) { highTrialValue = ZERO // no change from retirement years
// set lowTrialValue to soonest year, which will result in a retirement in the cuπent year. // lowTrialValue will be negative lowTrialValue = current year - startingRetirementYear for person person's retirement year = startingRetirementYear for person + lowTrialValue run the engine trialConfidenceLevel = confidence level from running the engine if (trialConfidenceLevel >= desiredConfidenceLevel) { stop solving if (trialConfidenceLevel >= (desiredConfidenceLevel + .005) ) { // edge case handling return "no solution" message to the application
} return trialConfidenceLevel as the solver confidence level return (person's retirement year - person's birth year) as the solver result for retirement age. } }
II Solve solving is exactly the same as solving for both persons except that only one retirement year is set return trialConfidenceLevel as the solver confidence level return (person's retirement year - person's birth year) as the solver result for retirement age. return the asset projections
Retirement Expenses: Question 2 for retirement
The retirement expenses solver answers the question: How much can we (I) afford to spend each year in retirement? We solver for the vector of expenses (the liability stream) that the user can afford at the desired level of confidence. We solve by varying the amounts of all expenses proportionately, rather than eliminating particular expenses or modifying expense start or end dates.
// start with the cuπent expense vector and probability (confidence) level startingConfidenceLevel = confidence level produced from current data
// note, we must have a valid expense vector, which is an expense vector with at least one positive expense amount startingExpense Vector = cuπent retirement expense vector Appendix
// determine the high trial value and low trial value so we can begin solving. if (startingConfidenceLevel < desiredConfidenceLevel) { lowTrialValue = ONE // this is setting the low trial value to the current expenses. highTrialValue = ZERO } else if (startingConfidenceLevel >= desiredConfidenceLevel) { highTrialValue = ONE lowTrialValue = ONE While(trialConfidenceLevel >= desiredConfidenceLevel) { lowTrialValue = lowTrialValue * EXPENSE_MULTLPLIER
// Multiply the expense for each year by the low trial value, run the financial projection,
// and set trialConfidenceLevel to the resulting confidence level. retirement expense vector = lowTrialValue * startingExpense Vector run the engine trialConfidenceLevel = confidence level from nrnning the engine } }
// Solve
While ( (abs(trialConfidenceLevel - desiredConfidenceLevel) >= CONFIDENCE_TOLERANCE) And (i <= MAXJTERATIONS) ) { trialValue = (highTrialValue + lowTrialValue) / TWO // Multiply the expense for each year by the trial value and run the financial projection, retirement expense vector = trialValue * startingExpense Vector run the engine trialConfidenceLevel = confidence level from running the engine
// examine the result (trialConfidenceLevel) and recalculate the upper and lower bounds. Lf (trialConfidenceLevel < desiredConfidenceLevel ) lowTrialValue = trialValue
} else { highTrialValue = trialValue
} i = i + l
}
// return the results
//Calculate the average annual expenses in today's dollars For (each year from the current year to the household last year) { averageAnnualExpenses += expense vector[year processed] / (1 + inflation) Λ (year processed - current year) } averageAnnualExpenses = averageAnnualExpenses / (household last year - MAX(household retirement year, current year) +1)
" Teturn, trialConfidenceLevel as the solver confidence level return the retirement expense vector, averageAnnualExpenses, and trialValue as the solver result return the asset projections
// Note that the solver result for detailed expenses can simply be obtained by multiplying each itemized expense by trialValue if ( i > MAX_ΠΕRATIONS) { // if the maximum number of iterations has been reached return "no solution" message to the application }
Retirement Contributions: Question 3 for retirement
The retirement contributions solver answers the question: How much do we Q need to save each year to afford retirement? Appendix
We solve for either taxable contributions or tax-deferred contributions, which do not have contribution Umits. Retirement accounts with contribution limits such as ERAs or workplace accounts are not handled. if (contributionTypeSelection = TAXABLE_ACCOUNT) {
// start with the current contribution and probability (confidence) level startingConfidenceLevel = confidence level produced from current data startingContribution = Imtial user's annual contribution for the taxable account user_fraction_taxable_contribution = Initial user's annual retirement contribution for the taxable account / (sum of user + spouse annual retirement contribution for the taxable account)
// determine the high trial value and low trial value so we can begin solving. if (startingConfidenceLevel < desiredConfidenceLevel) { lowTrialValue = startingContribution
// we must keep increasing contributions until we get a valid high trial value. highTrialValue = 0.0 While(trialConfidenceLevel < desiredConfidenceLevel) { highTrialValue = highTrialValue * TEN + CONTRLBUTION NCREASE
// run financial projection with highTrialValue, and set trialConfidenceLevel to the resulting confidence level.
Initial user's annual contribution for the taxable account = highTrialValue * user_fraction_taxable_contribution
Initial spouse's annual contribution for the taxable account = highTrialValue *
(l-user_fraction_taxable_contribution) run the engine trialConfidenceLevel = confidence level from running the engine } } if (startingConfidenceLevel >= desiredConfidenceLevel) { highTrialValue = startingContribution lowTrialValue = 0.0
/* test low trial value to make sure it is less than the desired confidence level. Lf zero contributions still leaves a confidence level at or above the desired confidence level then stop solving, send a "no solution" message to the appUcation, and send the solver results to the appUcation (confidence level and changed input value) */
Initial user's annual contiibution for the taxable account = lowTrialValue * user_fraction_taxable_contribution
Initial spouse's annual contribution for the taxable account = lowTrialValue *
(l-user_fraction_taxable_contribution) run the engine trialConfidenceLevel = confidence level from nmning the engine if (trialConfidenceLevel >= desiredConfidenceLevel) { stop solving return "no solution" message to the application return trialConfidenceLevel as the solver confidence level * return lowTrialValue as the solver result for taxable contributions return the asset projections } - }".
// Solve
While ( (abs(trialConfidenceLevel - desiredConfidenceLevel) >= CONFEOENCE_TOLERANCE) And (i <= MAXJTERATIONS) ) { trialValue = (highTrialValue + lowTrialValue) / 2.0 // run the financialProjection engine with trialValue Initial user's annual contribution for the taxable account = trialValue * user_fraction_taxable_contribution Initial spouse's annual contribution for the taxable account = trialValue * (l-user_fraction_taxable_contribution) run the engine trialConfidenceLevel = confidence level from running the engine Appendix
// examine the result (trialConfidenceLevel) and recalculate the upper and lower bounds. If (trialConfidenceLevel < desiredConfidenceLevel ) lowTrialValue = trialValue
} else { highTrialValue = trialValue
} i = i + l
}
// return the results return trialConfidenceLevel as the solver confidence level return trialValue as the solver result for taxable contributions return the asset projections if ( i > MAX_LTERATIONS) { // if the maximum number of iterations has been reached return "no solution" message to the appUcation }
} else if (contributionTypeSelection = ANNUITY_ACCOUNT) {
/* Solving for tax-deferred annuity contributions is exactly the same as solving for taxable account contributions, except that the taxable account variables are replaced with the annuity account variables. */
} else { return a not handled eπor. //this should never happen.
}
College Expenses: Question 1 for college
The college expenses solver answers the question: How much can we (I) afford to spend each year for this goal? Solving for college expenses is exactly the same as solving for retirement expenses except for calculating average annual expenses.
//Calculate the average annual expenses in today's dollars For (each year from the current year to the goal end year) { averageAnnualExpenses += expense vector[year processed] / (1 + inflation) Λ (year processed - current year)
} averageAnnualExpenses = averageAnnualExpenses / (goal end year - goal start year +1)
College Contributions: : Question 2 for college
The college contributions solver answers the question: How much do we (I) need to save each year to afford this goal? We solve for either CIT contributions, prepaid tuition contributions, custodial account contributions, or taxable account contributions,. We do not solve for Education ERA contributions, which has a low contribution limit Note that there are Umits (high limits) on CIT contributions that the engine does not handle. Also note that prepaid tuition can really only be used for tuition and fees and not other expenses such as room and board.
' "if (contributionTypeSelection = CLT_ACCOUNT) {
/* Solving for CIT account contributions is exactly the same as solving for taxable account contributions for retirement except that the taxable account variables are replaced with the CIT account variables. Also, the trial values are simply put into the imtial annual contribution to the CIT account; they are not separated into user and spouse contributions.*/ } if (contributionTypeSelection = PREPAJJJ_TUITTON_ACCOUNT) {
/* Solving for prepaid tuition account contributions is exactly the same as solving for taxable account contributions for retirement, except that the taxable account variables are replaced with the prepaid tuition account variables. Also, the trial values are simply put into the initial annual contribution to the prepaid tuition account; they are not separated into user and spouse contributions.*/ Appendix
} if (contributionTypeSelection = CUSTODIAL_ACCOUNT) {
/* Solving for CUSTODIAL account contributions is exactly the same as solving for taxable account contributions for retirement, except that the taxable account variables are replaced with the CUSTODIAL account variables. Also, the trial values are simply put into the initial annual contribution to the CUSTODIAL account; they are not separated into user and spouse contributions.*/
} if (contributionTypeSelection = TAXABLE_ACCOUNT) {
/* Solving for TAXABLE account contributions is exactly the same as solving for taxable account contributions for retirement, except that the retirement taxable account variables are replaced with the college taxable account variables.
Also, the trial values are simply put into the initial annual contribution to the TAXABLE account; they are not separated into user and spouse contributions.*/
} else { return a not handled error, //this should never happen. }
Custom Goal Expenses: Question 1 for custom goal
The custom goal expenses solver answers the question: How much can we (I) afford to spend each year for this goal? Solving for custom goal expenses is exactly the same as solving for retirement expenses except for calculating average annual expenses.
//Calculate the average annual expenses in today's dollars For (each year from the current year to the goal end year) { averageAnnualExpenses += expense vector[year processed] / (1 + inflation) Λ (year processed - cuπent year)
} ' averageAnnualExpenses = averageAnnualExpenses / (goal end year - goal start year +1)
Custom Goal Contributions: Question 2 for custom goal
The custom goal contributions solver answers the question: How much do we (I) need to save each year to afford this goal? We solve for taxable account contributions. if (contributionTypeSelection = TAXABLE_ACCOUNT) {
/* Solving for TAXABLE account contributions is exactly the same as solving for taxable account contributions for retirement, except that the retirement taxable account variables are replaced with the custom goal taxable account variables. Also, the trial values are simply put into the initial annual contribution for the TAX.ABLE account; they are not separated into user and spouse contributions.*/
} else { return a not handled eπor. //this should never happen. }
Calculations before the engine
Constants
^ "II All values are for year 2000 except where noted
Inflation rate
The inflation rate is set at 3.06% or .0306. This value is updated each year based on Ibbotson inflation data from 1926 to the latest available year. The 3.06% value is updated for 1999, and is based on Ibbotson inflation date from January 1926 to December 1998.
College inflation rate = 5.00% or .0500
403(b) pre-1986 MRD start age = 75
MRD start age years = 70 years
MRD start age months = 6 months
ERA eligibility start age years = 59 years
ERA eligibility start age months = 6 months Appendix
LRS early retirement age = 55
Education ERA age limit = 18. This is the last age an Education LRA contribution may be made for a person.
Child tax deductions default = 700.
Tax deductions default for the user / spouse = 7350 if the user is married, 4400 if the user is single.
Value per exemption = 2800
Asset Allocation
Goal-level Current Asset Allocations Defined
Inputs:
All aggregate-level accounts for all goals. An aggregate level account is simply an "account" as understood by the engine. All accounts of the same owner and same type are combined. For example, if the user has three ERA accounts then user IRA account for the engine is these three accounts combined. For asset allocation purposes, each account needs to have a balance (can be zero), stock percentage, bond percentage, and short-term percentage. The percentages must have a total value of 100%, or be missing entirely. Each percentage must also be non-negative. Note that since pre-paid tuition plans do not have an asset allocation, the asset allocation percentages will always be missing.
Outputs:
For the retirement goal: taxable asset allocation, tax-deferred/tax-free asset aUocation For each college goal: taxable asset allocation, tax-defeπed/tax-free asset allocation For each custom goal: taxable asset allocation
Asset Allocations are organized as follows Retirement asset allocations: Taxable assets
Taxable account Tax-deferred/tax free assets
Annuity for the user, Annuity for the spouse, Workplace for the user, Workplace for the spouse,. ERA for the user ERA for the spouse, Roth ERA for the user, Roth LRA for the spouse
College assets for each college goal Taxable assets
Taxable account, Custodial Account Tax-deferred tax-free assets
Pre-paid tuition, CIT Plan, Education ERA
Custom goal assets for each custom goal Taxable assets
Taxable account
The asset aUocation(s) for each goal is the dollar weighted average of the asset allocations of all accounts in the asset group (taxable or tax-deferred tax-free).
• Taxable asset allocation for the retirement goal is the asset aUocation of the taxable account (or weigthed average of the user's taxable account and spouse's taxable account).
• Tax-deferred/tax-free asset allocation for the retirement goal is the weighted average of Annuity for the user, Annuity for the spouse, Workplace for the user, Workplace for the spouse, ERA for the user, ERA for the spouse, Roth ERA for the user, Roth ERA for the spouse. r "• Taxable asset allocation for a college goal is the weighted average of the taxable account and the custodial account
• Tax-deferred/tax-free asset allocation for a college goal is the Education ERA asset aUocation (pre-paid tuition does not have an asset allocation and CIT asset allocation is set each year by an age-dependent formula.)
• Taxable asset allocation for a custom goal is simply the asset allocation of the taxable account.
Important: if an account does not have an asset aUocation then it is skipped. Lf there are no asset allocations in the asset group (as defined above) then the asset allocation for the goal is deemed missing and the proceedure for handling missing asset allocations must be applied. Appendix
Missing Asset Allocations
Each goal has is associated with a set of asset allocations. The retirement goal and each college goal have current and target taxable asset allocation and a current and target taxdeferred taxfree asset aUocation. Each custom goal has a current and target taxable asset allocation. The financial projection, i.e. the main engine, can be run with either the cuπent asset allocations or the target asset aUocations. To run the financial projection with a current asset aUocation for a goal, the asset aUocation must of course exist.
It is possible to have a missing asset allocation for a goal. This occurs when there are zero assets for the taxable asset allocation or zero assets for the tax-defeπed/tax-free asset aUocation, or zero assets for both. A person can legitimately have a goal with zero current assets and intended future contributions that must be invested according to some asset allocation. When there are zero assets from which to determine an asset allocation then either (1) an asset allocation must be provided by the user or (2) an asset allocation must be provided by the program.
'Set tiie goal-level asset allocation when one is missing
Lf there are no assets from which to determine an asset allocation and an asset allocation is not provided by the user, then use the following rules to set an asset aUocation.
For the retirement goal and each college goal
If there are taxable assets but no tax-defeπed/tax-free assets then we set the tax-deferred/tax-free asset aUocation to the same value as the taxable asset aUocation.
If there are tax-defeπed/tax-free assets but no taxable assets then we set the taxable asset aUocation to the same value as the tax-deferred tax-free asset aUocation.
Lf there are no taxable assets or tax-deferred assets then set their asset aUocation to the asset allocation of the unassigned taxable assets (i.e. the taxable asset aUocation for first ending goal since unassigned taxable assets get assigned to the first ending goal). Lf there are no unassigned taxable assets either then set their asset aUocation to the growth portfolio: 70% stocks, 25% bonds, 5% short-term.
For each custom goal
Lf there are no taxable assets then set the asset allocation to the asset allocation of the unassigned taxable assets. If there are no unassigned taxable assets either then set the asset allocation to the growth portfolio: 70% stocks, 25% bonds, 5% short-term.
Standardized Asset Allocations
Inputs:
"The input asset aUocations may be cuπent asset allocations or target asset aUocations. Each asset aUocation has a stock percentage, bond percentage, and short-term percentage. The allocation percentages always total to 100%. Each percentage is also non-negative.
For the retirement goal: taxable asset allocation, tax-deferred/tax-free asset aUocation
For each college goal: taxable asset allocation, tax-defeπed/tax-free asset allocation
For each custom goal: taxable asset allocation Outputs: each account in each goal will be assigned as asset allocation number
'Set the asset allocations in each account in each goal
'Asset allocations are rounded to the nearest 5%. The set of rounded asset allocations are then mapped into an asset allocation
'number from 1 to 231. Asset aUocation number 1 is aU stock and asset allocation number 231 is aU short-term.
For each goal
'Tax-deferred/tax free assets
Get the tax-defeπed/tax-free asset allocation
Round stock, bond, and short-term percentages to the nearest 5%.
Round the stock percentage to the nearest 5% and add the remainder (positive or negative) to the bond percentage.
Round the modified bond percentage (bond percentage + remainder) to the nearest 5% Appendix
Set the short-term percentage to 100% - (rounded stock percentage + rounded bond percentage) 'For example, if the stock percentage is 88% and the bond percentage is 8%, then the rounded stock percentage is 90%, with a remainder of -2%. The modified bond percentage of 6% (8% - 2% = 6%) is then rounded to 5%. The short-term percentage is then 100 - (90% + 5%) = 5% For each account
Set the asset allocation number for the account based on the rounded percentages. N = (100% - rounded stock percentage) / 5%
M = ( (100%. - rounded stock percentage) - rounded bond percentage) / 5% Asset allocation number = (N*(N+1) / 2) + M + 1 Next account
'Taxable assets
Get the taxable asset allocation
Round stock, bond, and short-term percentages to the nearest 5%.
For each account
Set the asset allocation number for the account based on the rounded percentages. 'Use the same rule as for tax-defeπed/tax-free assets. Next account Next Goal
Solving for asset allocations
The engine may be run with the goal-level standardized asset allocations for each account (each account asset allocation is set to the taxable or tax-defeπed tax-free asset aUocation for the goal as appropriate) or with the target asset allocations for each account This section describes how to solve for the target asset aUocations and how to apply the target asset allocations.
Definition: tax-advantaged accounts and non-tax-advantaged accounts
For the retirement goal and each custom goal, the non-tax-advantaged accounts consist of simply the taxable accounts. For each education goal the non-tax-advantaged accounts consist of the taxable account and the custodial account. For each goal the tax-advantaged accounts consist of all accounts assigned to the goal except the non-tax-advantaged accounts.
Definition: Target asset allocations
There are 6 possible target asset aUocations for any group of assets. Note that each goal can have two groups of assets, tax- advanta ed and non-tax-advanta ed. The 6 asset aUocations are:
Figure imgf000075_0001
Since there are 6 asset aUocations per asset group and there are 2 asset groups, there are a total 36 possible asset allocation combinations per goal.
Definition: Annual returns and standard deviations for target asset aUocations, across tax rates. All values are inflation adjusted (inflation taken out), and are after taxes.
Mean Returns
Figure imgf000075_0002
Appendix
Standard Deviations
Figure imgf000076_0001
Prepare the cash flows For each goal {
Convert the liability stream (vector of expenses) to real dollars and compute the sum. The result is a present value liability amount, or simply "liabiUty amount". For example, if a goal consists of a $4,000 expense in 3 years and a $5,000 expense in 4 years, with a 3.0% inflation rate then the Uability amount equals 4000 / (1.03)Λ3 + 5000 / (1.03)Λ4 = $8,103
Convert the contributions for each goal to real dollars and compute the sum. Contributions include regular annual contributions and one-time contributions. Each account has a vector of regular annual contributions and a vector of one-time contributions. Two present values must be calculated, one for tax-advantaged accounts and one for non-tax- advantaged accounts. To get the present value, each contribution amount is discounted by the inflation rate over the appropriate number of years. For example, if in calculating the tax-advantaged present value of contributions for retirement there is an ERA contribution of $1,000 in 2004 and the current year is 2001, then the present value is 1000 / (1.03) Λ3 = $915.14 assuming a 3% inflation rate.
Lf the goal is the retirement goal {
Convert the income streams to a single present value. The income streams include the pension income vector, Social Security income vector, and additional income vector; income vectors for both user and spouse are included. Earned income when one spouse is retired and one is not must also be included. To get the present value, each income amount is discounted by the inflation rate over the appropriate number of years.
}
}
Prepare the time horizons
For each goal, the time horizon is the value-weighted time of the liabilities, i.e. :
For each year from adjusted start year to end_of_goal { Temp_Var+= (year-cuπentyear) * UabiUty_amount
}
Goal_timeJhorizon = temp_Var / Sum(liability_amount from adjusted start year to end_of_goal)
Note, the adjusted start year is the greater of the actual start year and the current year.
Get the tax rate
In this solving procedure we utilize a single tax rate for each goal.
For the retirement goal and each custom goal, the tax rate is the marginal federal tax rate based on income levels for the current year.
For each education goal, the tax rate is .15 (the lowest federal rate).
State and local tax rates are ignored.
Prepare the balances For each goal {
Get the balance for the non-tax-advantaged accounts.
This equals the sum of the balances for aU non-tax-advantaged accounts Appendix
Get the balance for the tax-advantaged accounts
This equals the sum of the balances for aU tax-advantaged accounts. }
Add contributions and income to the balances For each goal {
Add the present value of contributions to tax-advantaged accounts to the balance for tax-advantaged accounts.
Add the present value of contributions to non-tax-advantaged accounts to the balance for non-tax-advantaged accounts.
Lf the goal is the retirement goal {
Add the present value of income * (1 - tax rate) to the balance for the non-tax-advantaged accounts. } }
Determine the liabilities for each asset group in each goal.
"The present value of the liabilities for each goal is divided into a liability to be paid by the tax-advantaged assets and a liabiUty to be paid by the non-tax-advantaged assets. For each goal {
Liability for tax-advantaged assets = (tax-advantaged assets * (1-tax rate) / ( tax-advantaged assets * (1-tax rate) + non-tax-advantaged assets)) * present value of liabiUties
Liability for non-tax-advantaged assets = (non-tax-advantaged assets / ( tax-advantaged assets * (1-tax rate) + nontax-advantaged assets)) * present value of liabiUties }
Solve for the target asset allocation for each goal {
'At the end of the procedure each goal will have two target asset allocations: one for tax-advantaged assets and one for
'non-tax-advantaged assets.
Get the tax rate for the goal
Get the time horizon for the goal
Asset allocation for tax-advantaged assets {
Needed log return = In ((liability for tax-advantaged assets / (1-tax rate)) / tax-advantaged assets)
' Note, the needed log return is the total log return on the tax-advantaged assets that would be needed to pay the
' UabiUty
For each asset allocation from "all short-term" to "ah stock" { annual expected log return = coπesponding value from table above, based on asset allocation and 0% tax rate. annual standard deviation = coπesponding value from table above, based on asset allocation and 0% tax rate. 'Note, 0% tax rate is used here because no tax is due until the liabiUty must be paid, total expected log return = annual expected log return * time horizon k total standard deviation = annual standard deviation * (time horizon) Λ.5
Z-score for needed log return = (needed log return - total expected log return) / total standard deviation 'The z-seore corresponds to a probability value in the cumulative standard normal probability function. The probability of funding the goal is the probability of getting an actual return >= to the needed log return. Therefore, the higher the z-score, the lower the probability, and the lower the z-score the higher the probability. The asset allocation with the lowest z-score is the optimal asset allocation.
}
Each asset allocation will have a z-score. The asset allocation with the lowest z-score is the optimal asset allocation for the tax-advantaged assets. }
Asset allocation for non-tax-advantaged assets {
Needed log return = In (liability for tax-advantaged assets / non-tax-advantaged assets)
' Note, the needed log return is the total log return on the tax-advantaged assets that would be needed to pay the Appendix ' UabiUty
For each asset allocation from "all short-term" to "aU stock" { annual expected log return = coπesponding value from table above, based on asset allocation and tax rate, annual standard deviation = corresponding value from table above, based on asset aUocation and tax rate, total expected log return = annual expected log return * time horizon total standard deviation = annual standard deviation * (time horizon) Λ.5
Z-score for needed log return = (needed log return - total expected log return) / total standard deviation "The z-score coπesponds to a probability value in the cumulative standard normal probability function. The probability of funding the goal is the probability of getting an actual return >= to the needed log return. Therefore, the higher the z-score, the lower the probability, and the lower the z-score the higher the probability. The asset allocation with the lowest z-score is the optimal asset allocation.
}
Each asset allocation will have a z-score. The asset allocation with the lowest z-score is the optimal asset allocation for the non-tax-advantaged assets. } error handling {
It is possible that no optimal asset allocation will be obtained. This may occur if there are no current assets and no contributions, which would result in a division by zero. Lf this occurs, set the target asset allocation to "balanced".
} }
Adjust the target non-tax-advantaged asset aUocation for the first ending goal.
Lf (the non-tax-advantaged balance for the first ending goal including the present value of contributions is > twice the present value of the liability) {
'make sure the target asset allocation is sufficiently aggressive.
If (the target asset allocation is "all short-term" or "conservative") { Set the target asset aUocation to "balanced"
} }
'Note, at this point we have the unconstrained "solver asset allocations"
Get the target asset aUocation from the EPQ and set the asset allocation caps.
'From the LPQ scoring procedure, get the target asset allocation. The EPQ provides a single target asset allocation. 'This "original" EPQ target asset aUocation is used as a cap on the final target asset allocation on the tax-advantaged 'assets and non-tax-advantaged assets. This procedure is performed for each goal. For each goal {
Tax-advantaged LPQ cap = LPQ target asset aUocation
Non-tax-advantaged EPQ cap = EPQ target asset allocation }
Compute a new EPQ target asset allocation, based on the solved asset allocations above. For each Goal { ' •"■ For tax-advantaged and non-tax-advantaged asset allocation
Using the asset aUocation that has been solved for, lookup the appropriate inferred time score from the following table:
Figure imgf000078_0001
Appendix
Figure imgf000079_0001
Take the resulting time score and use it in the EPQ procedure to obtain a new target asset aUocation
'Note, for goals that start in less than 4 years this new asset allocation wiU often be more aggressive than desired. 'The cap on asset aUocation below will make sure the target asset allocation is not too aggressive. " }
Cap the new EPQ target asset allocation to determine the final target asset allocations For each Goal {
'Note, agressiveness numbers, 1 through 6, can be used to compute the minimum Tax-advantaged assets
Final target asset aUocation = MLN(tax-advantaged EPQ cap, new tax-advantaged LPQ target asset allocation)
Non-tax-advantaged assets
Final target asset aUocation = MEN(non-tax-advantaged EPQ cap, new non-tax-advantaged EPQ target asset allocation) }
AppUcation of target asset allocations
'If the engine is run with the target asset allocations then they should be applied as follows, after obtaining the asset 'allocation number for each target asset allocation. For each goal {
Non-tax-advantaged assets
Set the asset allocation for each account to the target asset aUocation
Tax-advantaged assets
Set the asset allocation for each account to the target asset aUocation, except for the pre-paid tuition account which does not have an asset aUocation. Note, the CIT account wiU have its asset allocation re-set each year automatically. }
One-time Contributions
One-time contributions are entered in today's dollars (real dollars). Convert one-time contributions to nominal dollars. For each one-time contribution multiply the original amount by (1 + inflation) Λ (contribution year - current year)
User and Spouse "Year Calculations"
User's birth year = Year (user's birth date) Spouse's birth year = Year (spouse's birth date)
// determine user's retirement year, if appUcable. A non-working person will not have a retirement age or year If ( user is not non_working) {
User's retirement year = (user's birth year + user's retirement age)
// determine spouse's retirement year, if applicable. A non-working person will not have a retirement age or year. If (a spouse exists AND spouse is not non_working) {
Spouse's retirement year = (spouse's birth year + spouse's retirement age) }
// determine if the user is still working if (user is non_working) { stiHWorking Jser = false } else if (user's retirement year <= cuπent year) { Appendix stiUWorking_User = false
} else { stiUWorkingJJser = true }
// determine if the spouse is stiU working, assuming a spouse exists if (spouse is non_working) { stillWorking_Spouse = false
} else if (spouse's retirement year <= cuπent year) { stillWorking_Spouse = false
} else { stillWorking_Spouse = true }
User's life planning year = (user's birth year + user's life planning age)
Spouse's life planning year = (spouse's birth year + spouse's life planning age)
Household retirement year = MTNøiser's retirement year, spouse's retirement year)
Household last year = MAX(user's life planning year, spouse's life planning year)
Number of years in retirement = household last year -MAX(household retirementYear,cuπent year ) +1
User's ERA year limit
'This year is the last calendar year the user may make a contribution to a conventional ERA. This is the year before the year the user turns 70 1/2. The following year MRDs must start. user's ERA year U it = Year (user's birth date + MRD start age years + MRD start age months) -1 Spouse's IRA year Umit
'This year is the last calendar year the spouse may make a contribution to a conventional ERA. This is the year before the year the spouse turns 70 1/2. The following year MRDs must start. spouse's IRA year Umit = Year (spouse's birth date + MRD start age years + MRD start age months) -1 User's ERA eligibility year
"This is the year the user turns 59 1/2 . Starting with this year the user does not have to pay early withdrawal penalty for
ERA assets. user's ERA eligibility year = Year (user's birth date + ERA eligibility start age years + LRA eligibility start age months) Spouse's IRA eligibility year
'This is the year the spouse turns 59 1/2 . Starting with this year the spouse does not have to pay early withdrawal penalty for ERA assets. spouse's IRA eligibility year = Year (spouse's birth date + IRA eligibility start age years + ERA eligibility start age months) User's early retirement year
'This is the year the user turns 55.
User's early retirement year = user's birth year + LRS early retirement age Spouse's early retirement year
'This isthe year the spouse turns 55.
Spouse's early retirement year = spouse's birth year + BRS early retirement age User's MRD start year for 403(b) pre-1986 balances <• * 'This year is the first calendar year the user must make a Minimum Required Distribution (MRD) from pre-1986 403b balances (part of Workplace accounts). This is the year the user turns 75.
User's MRD start year for 403(b) pre-1986 balances = user's birth year + 403(b) pre-1986 MRD start age Spouse's MRD start year for 403(b) pre-1986 balances
Spouse's MRD start year for 403(b) pre-1986 balances = Spouse's birth year + 403(b) pre-1986 MRD start age
User and Spouse Monetary Calculations
Inputs: user's salary, user's other income, user's income increase rate, spouse's salary, spouse's other income, spouse's income increase rate, number of dependents
Outputs, which are sent to the main engine:
User's initial income = user's salary + user's other income Appendix
Spouse's initial income = spouse's salary + spouse's other income User's income increase rate
If user's annual income increase rate is not provided then its value is set to the inflation rate, i.e. the default value for the user's annual income increase rate is the inflation rate Spouse's income increase rate
Lf user's annual income increase rate is not provided then its value is set to the inflation rate, i.e. the default value for the spouse's annual income increase rate is the inflation rate Exemption amount
Lf the number of dependents is not provided then set number of dependents to 0
Exemption amount = (number of dependents + 1) * value per exemption (a constant) Deductions
If the value of tax deductions is not provided then set the value to the tax deductions default.
Child Calculations
For each child ,i.e. college goal, determine the following items using the inputs as avaUable and default values.
Inputs: name.cmld's birth date, deductions, income, annual contribution increase rate, contribution end year.
Outputs, which are sent to the main engine:
Name = same as input name
Education ERA year limit = Year( cmld's birth date) + Education ERA age limit
Deductions
Lf a value is not provided, set deductions to child tax deductions default (in Ust of constants). Income
Lf a value is not provided, set income to zero Annual contribution increase rate
Lf a value is not provided, set annual contribution increase rate to the inflation rate. Contribution end year
If a value is not provided, set contribution end year to goal end year (set in the goals section below).
'Make sure contribution end year is not after the end of the goal or after the end of retirement contribution end year = MLN(contribution end year, goal end year, household last year). Federal tax filing status
Set federal tax filing status to single.
Custom Goal Information Calculations
For each custom goal, determine the following items using the inputs as avaUable and default values.
Inputs: name, annual contribution increase rate, contribution end year.
Outputs, which are sent to the main engine:
Name = same as input name
Education ERA year limit = Year( ch d's birth date) + Education ERA age
Annual contribution increase rate
Lf a value is not provided, set annual contribution increase rate to the inflation rate. Contribution end year
If a value is not provided, set contribution end year to goal end year (set in the goals section below).
'Make sure contribution end year is not after the end of the goal or after the end of retirement contribution end year = MLN(contribution end year, goal end year, household last year).
Other Data
Show values in real dollars
This variable has a value of either true or false. A value of true means the output of the engine should be in real (today's) dollars and a value of false means the output of the engine should be in future (nominal) doUars. Lf "show values in real dollars" is not provided then a value of true is used. Income Streams
User's social security
"The user's Social Security is an income stream that starts at the Social Security start year and ends at the user's life planning year.
Inputs: annual amounζ starting age Appendix
Outputs: Social Security income stream Calculate starting and ending years startingyear = MAX(user's birth year 4- user's starting age, current year) ending year = user's birth year + user's life planning age Income stream
For starting year to ending year {
Social Security income in the year = annual amount * (1 + inflation rate) Λ (year processed - cuπent year)
} Spouse's social security
Same logic as for the user's Social Security income stream User's pensions
.'There will be 0 to 10 pensions. Each pension income is an income stream that starts at the start year and ends at the end year. Pension income may begin before retirement. Income amounts before the current year are ignored. Inputs: each pension income has the following inputs: amount, starting age, inflation adjusted, current employer, joint life Partial Data and Defaults
Lf a value for starting age is not provided then starting age is set to 65.
Lf a value for inflation adjusted is not provided then inflation adjusted is set to false
Lf a value for current employer is not provided then cuπent employer is set to true
Lf a value for joint life is not provided then joint life is set to true Outputs: a single pension income stream for the user. Income Stream
Create a pension income vector with a starting year of the cuπent year and an ending year of the household last year
For each pension {
Calculate the starting and ending years
Starting year = MAX(user's birth year + user's starting age, current year) Lf (joint life is true ) {
' Joint life means joint life and survivor. With this option, the pension continues as long either person is still Uving, the default for all pensions. In general, the pension amount entered will be lower if joint life is selected than if the pension only continues to the pension owner's life planning year, ending year = household last year
} else { ending year = user's life planning year. }
'Determine the pension amount in the starting year if the pension has not yet started. After this value is determined, the pension value in subsequent years is simply the starting value adjusted for inflation or not. For a pension that has started, the value for the cuπent year is simply the amount entered. Values for subsequent years are determined in the same manner as for pensions that have not yet started.
Lf a person is already retired then the cuπent employer field is ignored and the pension amount entered is the nominal amount used for the starting year (so no adjustment needs to be made). Note that if a person is already retired and indicates that the pension is from a current employer (invatid condition) then the invalid condition is ignored since current employer field is ignored when a person is retired.
Lf ((starting year > cuπent year) And (current year < user's retirement year) ) { 'If the pension is from a previous employer then the initial value in nominal dollars is the value entered by the user so no adjustment is necessary. We only need to adjust the starting amount for a pension from a current employer. Lf (the pension is from a cuπent employer) {
"The pension is based on the last salary amount when the pension starts. Amount = amount * (1 + user's annual income increase rate) Λ (MIN(user's retirement year - current year, starting year - current year)) } } Appendix
'Add the pension amount to the income stream For starting year to ending year {
'Inflation adjusted means that the pension amount increases with inflation once the pension starts. If (inflation adjusted ) {
Add (amount * (1 + inflation rate)Λ (year processed- starting year) ) to the existing pension amount for the year
} else {
Add (amount) to the existing pension amount for the year } } . }
Spouse's pensions
Same logic as for the user's Pension income stream User's additional income
'There will be 0 to 10 additional incomes. Each additional income is an income stream that starts at the start year and ends at the end year. Additional income may begin before retirement. Income amounts before the cuπent year are ignored.
Income amounts after the household last year are ignored.
Inputs: each addition income has the following inputs: amount, starting age, ending age, inflation adjusted
Outputs: a single additional income for the user.
Income Stream
Create an additional income vector with a starting year of the current year and an ending year of the household last year
For each additional income {
Calculate starting and ending years starting year = MAX(user's birth year + user's starting age, current year) ending year = MEN(user's birth year + user's ending age, household last year)
'Add the additional income amount to the income stream For (starting year to ending year) { If (inflation adjusted ) {
Add (amount * (1 + inflation rate)Λ (year processed- current year) ) to the existing income amount for the year
} else {
Add (amount * (1 + inflation rate)Λ (starting year- current year) ) to the existing income amount for the year }
}
} ^ "
Spouse's additional income
Same ldgi as for the user's additional income stream
Goals
Retirement
1. Calculate the total goal amount for each year. The output wUl be a UabiUty stream, also known as an expense vector (expense amounts for each year) from the cuπent year to the household last year. If the household is not yet in retirement then the first expense will occur in the household retirement year or later, rather than the current year.
2. Calculate the average annual expenses in today's dollars
Create a retirement expense vector with a starting year of the cuπent year and an ending year of the household last year Appendix
'Periodic Expenses
Periodic expenses have the following inputs: amount, starting year, ending year, inflation adjusted, expense type, expense category. Expense type and expense category are only used for descriptive charts and so are not used in the calculations here. Expenses before retirement begins are ignored and expenses after retirement ends are ignored. By definition a retirement expense occurs within retirement.
Partial Data and Defaults
Lf a value for starting year is not provided then starting year is set to household retirement year. Lf a value for ending year is not provided then ending year is set to household last year. Lf a value for inflation adjusted is not provided then inflation adjusted is set to true Lf a value for expense type is not provided then expense type is set to "necessities". Lf a value for expense category is not provided then expense category is set to "required" For (each periodic expense assigned to the goal ) { Complete partial data as necessary using defaults
Starting year = MAX(starting year, household retirement year, current year) Ending year = MEN(ending year, household last year) For (starting year to ending year) {
'Inflation-adjusted means that the amount is increased each year for inflation once the expense begins. An expense that is inflation adjusted is a constant (level) expense in real dollars. In any case, the starting expense amount is always in real dollars. Lf (inflation adjusted ) {
Add (amount * (1 + inflation rate)Λ (year processed- cuπent year) ) to the existing expense amount for the year
} else {
Add (amount * (1 + inflation rate)Λ (starting year- cuπent year) ) to the existing expense amount for the year } } Next periodic expense
'One-time expenses
One-time expenses have the following inputs: amount, year, expense type, expense category. Expense type and expense category are only used for descriptive charts and so are not used in the calculations here. Expenses before retirement begins are ignored and expenses after retirement ends are ignored. By definition a retirement expense occurs within retirement. Partial Data and Defaults
Lf a value for year is not provided then year is set to household retirement year.
Lf a value for expense type is not provided then expense type is set to "necessities".
Lf a value for expense category is not provided then expense category is set to "required". For (each one-time expense assigned to the goal ) {
Complete partial data as necessary using defaults year = MIN(MAX(year, household retirement year, current year), household last year)
Add (amount * (1 + inflation rate)Λ (year - current year) ) to the existing expense amount for the year specified Next orte-time- expense
'Bequeath Amount-
The bequeath amount has the following input: amount The bequeath amount is handled as a one-time expense that occurs at the end of retirement The expense type is "bequeath" and the expense category is "optional"
Add (amount * (1 + inflation rate)Λ (household last year - cuπent year) ) to the existing expense amount for the household last year
Goal start year
Goal start year = household retirement year. Goal start year may be before the cuπent year. Goal end year
Goal end year = household last year Appendix
//Calculate the average annual expenses in today's dollars
For (each year from the current year to the household last year) { averageAnnualExpenses += expense vector[year processed] / (1 + inflation) Λ (year processed - current year)
} averageAnnualExpenses = averageAnnualExpenses /
(household last year - MAX(household retirement year,cuπent year) +1)
College
1. Calculate the goal amount for each year. The output will be a liabiUty stream (expense amounts for each year) from the cuπent year to the household last year. If the college goal has not yet started then the first expense will occur when the college goal starts, rather than the current year.
2. Calculate the average annual expenses in today's dollars
For (each college goal) {
Create a college expense vector with a starting year of the current year and an ending year of the household last year
'Periodic Expenses
Periodic expenses have the following inputs: amount starting year, ending year, inflation adjusted. Expenses before the current year are ignored and expenses after retirement ends are ignored.
Partial Data and Defaults
Lf a value for inflation adjusted is not provided then inflation adjusted is set to true For (each periodic expense assigned to the goal ) { Complete partial data as necessary using defaults Starting year = MAX(starting year, cuπent year) Ending year = MEN(ending year, household last year) For (starting year to ending year) {
'Inflation-adjusted means that the amount is increased each year for college inflation once the expense begins. An expense that is college inflation adjusted is a constant (level) expense in terms of today's college costs. Lf (inflation adjusted ) {
Add (amount * (1 + college inflation rate)Λ (year processed- cuπent year) ) to the existing expense amount for the year
} else {
Add (amount * (1 + college inflation rate)Λ (starting year- cuπent year) ) to the existing expense amount for the year } } Next periodic expense
'One-time expenses
One-time expenses have the following inputs: amount, year. Expenses before the cuπent year are ignored and expenses after retirement ends are ignored.
Partial Data and Defaults
All data fields are required For (each one-time expense assigned to the goal ) { .'. Complete partial data as necessary using defaults year = MIN(MAX(year, cuπent year), household last year)
Add (amount * (1 + college inflation rate)Λ (year - current year) ) to the existing expense amount for the year specified Next one-time expense
Goal start year
Goal start year = first year in the college expense vector for which there is a positive value. Goal end year
Goal end year = last year in the college expense vector for which there is a positive value. Appendix
//Calculate the average annual expenses in today's dollars
For (each year from the current year to the goal end year) { averageAruiualExpenses += expense vector[year processed] / (1 + inflation) Λ (year processed - cuπent year)
} averageAnnualExpenses = averageAnnualExpenses / (goal end year - goal start year +1)
Next college goal
Custom
1. Calculate the goal amount for each year. The output will be a liabiUty stream (expense amounts for each year) from the cuπent year to the household last year. Lf the custom goal has not yet started then the first expense will occur when the custom goal starts, rather than the cuπent year.
2. Calculate the average annual expenses in today's doUars
For (each custom goal) {
Create a custom goal expense vector with a starting year of the cuπent year and an ending year of the household last year
'Periodic Expenses
Periodic expenses have the following inputs: amount, starting year, ending year, inflation adjusted. Expenses before the current year are ignored and expenses after retirement ends are ignored.
Partial Data and Defaults
If a value for inflation adjusted is not provided then inflation adjusted is set to true For (each periodic expense assigned to the goal ) { Complete partial data as necessary using defaults Starting year = MAX(starting year, cuπent year) Ending year = MEN(ending year, household last year) For (starting year to ending year) {
'Inflation-adjusted means that the amount is increased each year for inflation once the expense begins. An expense that is inflation adjusted is a constant (level) expense in real dollars. In any case, the starting expense amount is always in real doUars. If (inflation adjusted ) {
Add (amount * (1 + inflation rate)Λ (year processed - cuπent year) ) to the existing expense amount for the year
} else {
Add (amount * (1 + inflation rate)Λ (starting year - current year) ) to the existing expense amount for the year } } Next periodic expense
'One-time expenses
One-time expanses have the following inputs: amount, year. Expenses before the current year are ignored and expenses after retirement ends are ignored. Partial Data and Defaults * ,', All data fields are required
For (each one-time expense assigned to the goal ) {
Complete partial data as necessary using defaults year = MEN(MAX(year, cuπent year), household last year)
Add (amount * (1 + inflation rate)Λ (year - current year) ) to the existing expense amount for the year specified Next one-time expense
Goal start year
Goal start year = first year in the custom goal expense vector for which there is a positive value. Goal end year
Goal end year = last year in the custom goal expense vector for which there is a positive value. Appendix
//Calculate the average annual expenses in today's dollars
For (each year from the current year to the goal end year) { averageAnnualExpenses += expense vector[year processed] / (1 + inflation) Λ (year processed - current year)
} averageAnnualExpenses = averageAi ualExpenses / (goal end year - goal start year +1)
Next custom goal
Specific Methods Federal Taxes
The federal tax method takes two values: filing status and taxable income.
First use the filing status to determine which section of the table to use. The table has four filing statuses, although only two are used in this program (single and married filing jointly). Each record in the table has the following fields: filing status, tax bracket, tax amount, and tax rate.
Calculate the federal tax
Compare the taxable income to the next higher tax bracket, if one exists. For example, if for 1999 your taxable income is $55,000 and your filing status is MFJ then the next higher tax bracket is 104050. If (the next highest tax bracket is the first tax bracket) {
Federal tax = MAX(taxable income * tax rate,0) } else if (the next higher tax bracket is not the first tax bracket) {
Federal tax = tax amount + (taxable income - next lower tax bracket) * tax rate
'For example, if for 1999 your taxable income is $225,000 and your filing status is MFJ then the federal tax
'would be 40432.5 + (225000 - 158550) * .36 = $64,354 5 } else if (taxable income is greater than the highest tax bracket) {
Federal tax = tax amount + (taxable income - highest tax bracket) * tax rate
'For example, if for 1999 your taxable income is $300,000 and your filing status is MFJ then the federal tax
'would be 85288.5 + (300000 -283150) * .396 = $91,961.1 }
Federal Marginal Tax Rate
The federal marginal tax rate method takes two values: filing status and taxable income.
First, use the filing status to determine which section of the table to use. The table has four filing statuses, although only two are used in this program (single and married filing jointly). Each record in the table has the following fields: filing status, tax bracket, tax amount and tax rate.
Find the marginal tax rate Lf (taxable income < 0) {
► Marginal tax rate = 0 } else {^ f - -_ Find the record corresponding to the next higher tax bracket. If no next higher tax bracket exists (income is higher than highest tax bracket), go to the last record. For example, if for 1999 your taxable income is $55,000 and your filing status is MFJ then the next higher tax bracket is 104050.
Marginal tax rate = tax rate
}
Federal Tax Bracket
This method calculates the next highest federal tax bracket given 1999 ordinary personal income The federal tax bracket method takes two values: filing status and taxable income. Appendix
First, use the filing status to determine which section of the table to use. The table has four filing statuses, although only two are used in this program (single and married filing jointly). Each record in the table has the following fields: filing status, tax bracket tax amount, and tax rate.
Find the tax bracket
Lf (taxable income < 0) { Federal tax bracket = 0
} else {
Find the record coπesponding to the next higher tax bracket. If no next higher tax bracket exists (income is higher than highest tax bracket), return an infinite value (the highest possible double value will do). For example, if for 1999 your taxable income is $55,000 and your filing status is MFJ then the next higher tax bracket is 104050.
Federal tax bracket = tax bracket
}
Pre-calc lated array of returns.
The calculation engine uses a set of pre-calculated annual returns.
Inputs: array of stock, bond, and short-term returns for 250 simulations for 114 years. The returns in this array are real (i.e. inflation taken out) annual return relatives. A return relative is simply 1 + the return, e.g. 1.0638. These returns are consistent with the historical correlation of stocks, bonds, and short-term investments. The array is of size (maximum number of years, number of simulations, asset categories) = (114,250,3)
Outputs:
The set of returns is an array of nominal, annual pre-tax returns, for all asset allocations, for aU simulations, for the maximum number of years. The maximum number of years is 114, the number of asset allocations is 231, and the number of simulations is
250. The aπay is of size: max number of years * number of asset allocations * number of simulations = 114 * 231 * 250 or
(114, 231, 250)
Number of asset allocations
In actuaUty there are of course an infinite number of possible asset aUocations but as a practical matter we divide the spectrum of possible asset allocations into increments of 5% for stocks, bonds, and short term. With the constraint that the allocations must always total 100% and no aUocation may be less than zero, there are 231 asset aUocations with combinations of stocks, bonds, and cash. The first asset allocation is (1.00,.00,.00) which is all stock; the second asset aUocation is (.95,.05,.00); the third asset allocation is (.95,.00,.05); the fourth asset aUocation is (.90,.10,.00); the fifth asset aUocation is (.90,.05,.05) and so forth. The last asset aUocation is of course (.00,.00,1.00) which is all short-term.
Calculate the array of returns for all asset allocations
For each year
For each asset allocation number
Determine the asset allocation, e.g. (,85,.10,.5) For each simulation S = stock return relative for the year and simulation number from the input array -. * - B = bond return relative for the year and simulation number from the input array
C = cash (short-term) return relative for the year and simulation number from the input array Return = stock percent * (S * (1+ inflation) - 1) + bond percent * (B * (1+ inflation) - 1) + short-term percent * (C * (l+ inflation) - !) Next simulation Next asset aUocation number Next Year Appendix
Addendum
Discussion on MRDs
Minimum Required Distributions (MRDs) are IRS mandated withdrawals from tax-deferred retirement accounts.
Withdrawals from tax-deferred retirement accounts, including MRDs, are treated as ordinary personal income for lax purposes. The calculation rules below are a legal subset of the actual LRS rules for MRDs. We perform MRDs before any other withdrawals are made to any type of account.
Assumptions:
MRDs are required to begin by April 1 following the calendar year in which the customer turns 70 1/2.
All subsequent distributions must then be made by December 31 of each distribution year. We assume the first MRD occurs on the prior December 31 rather than on April 1.
The recalculation method is used for computing life expectancy (MRD divisor), for all accounts.
The account may have 403(b) 1986 balances (MRDs not required until age 75 on balances as of 1/1/1986).
All MRD withdrawals occur on December 31 (end of year).
Any joint life expectancy calculations are based upon the spouse as beneficiary. Non-spouse beneficiaries are not handled.
If a spouse exists (and is living) then joint life expectancy is always utiUzed.
Although due to legislation changes some retirement plans may defer MRD requirements while the participant is stiU employed, we will assume that MRDs begin in the year in which the owner turns 70 1/2.
After the owner's lifetime age has been attained, account ownership will transfer to the surviving spouse, if one exists, and the survivor's single life expectancy will be utilized.
Note that we are not perforating MRDs on tax-defeπed annuities. In actuatity tax-defeπed annuities have mandatory withdrawals starting at age 85.

Claims

What is claimed is: 1. A method comprising: performing multiple random simulations of outcomes for multiple interdependent financial goals as an indicator of the likelihood of success in reaching the financial goals.
2. The method of claim 1 further comprising generating ' a probability for each financial goal representing the likelihood of success in reaching the financial goal.
3. The method of claim 2 in which the probability for each financial goal is based at least in part on classes of investments available to fund the financial goals and on allocations of assets within each of the classes.
4. The method of claim 1 further comprising displaying the results of the multiple random simulations on a graphical user interface.
5. The method of claim 1 in which the performing includes considering multiple classes of investments of differing risk characteristics.
6. The method of claim 1 in which the simulations span the lifetime of the financial goals.
1 . The method of claim 6 in which tax characteristics of -each class of investment are automatically considered for -each year of a financial plan including the financial goals.
8. The method of claim 7 in which the tax characteristics include tax rates.
9. The method of claim 7 in which the tax characteristics include tax-based restrictions on the investments.
10. The method of claim 1 in which the performing includes considering random variations in market conditions , over the life of the financial goals.
11. The method of claim 1 in which the performing includes implementing a Monte' Carlo simulation algorithm.
12. The method of claim 1 in which the financial goals include retirement.
13. The method of claim 1 in which the financial goals include a series of distributions.
14. The method of claim 1 in which the performing includes considering cash flow calculations rather than annuitizing a lump sum.
15. The method of claim 14 further comprising automatically generating separate target asset allocations for different financial goals.
,
16. The method of claim 1 in which assets are transferred from goal to goal over time in the simulations as goals are. completed.
17. The method of claim 1 further comprising generating income stream data versus retirement income stream goals for all years beginning at least as early as retirement and running through death of the investor.
18. The method of claim 1 further comprising automatically presenting a proposed next target investment for each of several proposed asset allocations associated with different classes of assets.
19. The method of claim 1 further comprising _ automatically presenting an action plan that depends at least in part on the likelihood of success in reaching the financial goals.
20. The method of claim 1 further comprising automatically presenting a list of classes of investment, financial goals that are to be funded by each of the classes, and a graphical indication of asset allocation associated with each of the classes.
21. An article comprising a machine-readable medium which stores machine -executable instructions, the instructions causing a machine to: perform multiple random simulations of outcomes for multiple interdependent financial goals associated with an investor; and generate a graphical user interface simultaneously displaying results of the simulations as probabilities indicating the likelihood of success in reaching the financial goals.
22. The article of claim 21 in which the graphical user interface shows the results at a specified probability level.
23. The article of claim 21 in which the graphical user interface displays a table including information on the financial goals.
24. The article of claim 21 further causing a machine to generate income stream data versus retirement income stream goals for all years beginning at least as early as retirement and running through death of the investor.
25. The article of claim 21 further causing a machine to enable a user of the graphical user interface to invoke an analysis for different asset allocations to determine the effect of different asset allocations on the likelihood of success in reaching the financial goals.
26. The article of claim 21 in which the graphical user interface automatically presents a proposed next target investment for each of several proposed asset allocations associated with different classes of assets.
27. The article of claim 21 in which the graphical user interface automatically presents an action plan that depends at least in part on the probabilities.
28. The article of claim 21 in which the graphical user interface automatically presents a list of classes of investment, financial goals that are to be funded by each of the classes, and a graphical indication of asset allocation associated with each of the classes.
,
29. The article of claim 21 in which the probabilities are based at least in part on classes of investments available to fund the financial goals and on allocations of assets within each of the classes.
30. A method comprising: gathering from a user information about multiple interdependent financial goals; gathering from a financial entity information about classes of investments owned by the user and controlled by the financial entity; and performing multiple random simulations of outcomes for the multiple interdependent financial goals using the information gathered from the user and the information gathered from the financial entity.
31. The method of claim 30 in which the outcomes indicate a likelihood of success m reaching the financial goals.
32. The method of claim 30 further comprising automatically making assumptions about an association of known classes of investments owned by the user and the financial goals.
33. The method of claim 30 further comprising automatically allocating known classes of investments to the financial goals without reference to any pre-known association of the classes of investments with types of the financial goals.
34. A method comprising: calculating the likelihood of success m reaching multiple interdependent financial goals associated with an investor considering the investor's asset allocations.
35. The method of claim 34 m which the calculating also considers fee characteristics of particular investment vehicles .
36. The method of claim 34 further comprising progressively rolling down the asset allocation of college investment trust accounts.
37. The method of claim 34 in which the asset allocations are standardized into increments of X percent.
38. A system comprising: a server configured to connect to a network; and a process accessible by the server and configured to gather data about multiple financial goals from an investor associated with the financial goals and from an entity associated with the server and to perform simulations of outcomes for the financial goals as an indicator of the likelihood of success in reaching the financial goals.
PCT/US2001/024354 2000-08-03 2001-08-02 Personal financial planning WO2002013097A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2001279165A AU2001279165A1 (en) 2000-08-03 2001-08-02 Personal financial planning

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US63192800A 2000-08-03 2000-08-03
US09/631,928 2000-08-03

Publications (2)

Publication Number Publication Date
WO2002013097A2 true WO2002013097A2 (en) 2002-02-14
WO2002013097A9 WO2002013097A9 (en) 2003-04-03

Family

ID=24533351

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/024354 WO2002013097A2 (en) 2000-08-03 2001-08-02 Personal financial planning

Country Status (2)

Country Link
AU (1) AU2001279165A1 (en)
WO (1) WO2002013097A2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7801787B2 (en) 2008-06-24 2010-09-21 Microsoft Corporation Determination of customized investing advice
US20140258023A1 (en) * 2013-03-11 2014-09-11 Bank Of America Corporation Intelligent Personal Finance Tracking Engine
WO2023064251A1 (en) * 2021-10-12 2023-04-20 Jpmorgan Chase Bank, N.A. Method and system for adaptive asset allocation and financial planning

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
No Search *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7801787B2 (en) 2008-06-24 2010-09-21 Microsoft Corporation Determination of customized investing advice
US20140258023A1 (en) * 2013-03-11 2014-09-11 Bank Of America Corporation Intelligent Personal Finance Tracking Engine
WO2023064251A1 (en) * 2021-10-12 2023-04-20 Jpmorgan Chase Bank, N.A. Method and system for adaptive asset allocation and financial planning

Also Published As

Publication number Publication date
WO2002013097A9 (en) 2003-04-03
AU2001279165A1 (en) 2002-02-18

Similar Documents

Publication Publication Date Title
US20160110814A1 (en) Asset and liability modeling tool
US20060020531A1 (en) Risk return presentation method
US7577597B1 (en) System for financial planning
US8498913B2 (en) Portfolio integration module for providing financial planning and advice
Joyce et al. Institutional investor portfolio allocation, quantitative easing and the global financial crisis
US7860774B1 (en) System and method for providing financial advice for an investment portfolio
US9836797B2 (en) Estate disposition modeling
US20080249925A1 (en) Liability advice system and method
US20070038545A1 (en) Facilitating management of 401K retirement savings plans
WO2011109576A1 (en) System and methods for management of real property and for comparing real properties for purchase
WO2004006049A2 (en) Method and system to value projects taking into account political risks
US20150026096A1 (en) Pool-based system for organizing and measuring personalized financial management techniques
US8473392B1 (en) System and method for evaluation and comparison of variable annuity products
WO2014100724A1 (en) System and method for optimizing collateral management
Brösel et al. Valuation of entrepreneurial businesses
CA3135912C (en) System and method for generating indicators derived from simulated projections incorporating financial goals
KR20160111500A (en) Stratified composite portfolios of investment securities
US11748814B2 (en) Planning engine for a financial planning system
US20200357069A1 (en) Financial planning system with automated selection of products and financing
US11922504B2 (en) Optimization and prioritization of account directed distributions in an asset management system
CA2641949A1 (en) Method configured for facilitating financial consulting services
WO2002013097A2 (en) Personal financial planning
WO2001027844A9 (en) Investment analysis and management system for generating financial advice
US20100299281A1 (en) Facilitating management of 401K retirement savings plans
US20230267542A1 (en) System and method for analysing financial products

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
COP Corrected version of pamphlet

Free format text: PAGES 1/40-40/40, DRAWINGS, REPLACED BY NEW PAGES 1/40-40/40; DUE TO LATE TRANSMITTAL BY THE RECEIVING OFFICE

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase in:

Ref country code: JP