Be wary of retirement projections provided by your financial institution

Personal finance

Personally, I’ve always looked askance at brochures and statements from financial institutions that purport to show you how much money you can retire on if you only saved a few dollars each month now.


Because these calculations inevitably make many unrealistic assumptions in order to arrive at that magical retirement figure. A common one is to project a positive, double-digit annual return rate on your portfolio each year, which is unlikely to happen each year over many years.

Case in point: I just received my quarterly statement from Vanguard today for my company’s 401(K) savings plan.

At the bottom of the first page of the statement (click on image above to see the full statement), it says:

In retirement, we estimate you’ll be able to withdraw about $2,505 a month from your employer’s retirement plan at Vanguard. This estimate is based on your average monthly contributions of $553 at Vanguard over the previous 12 months.

It then goes on to show how much more I could be taking out at retirement by increasing my current contributions to my 401(K) plan now.

The funny thing is that I have no idea how they arrived at the $2,505 figure. And is it in terms of current 2007 dollars, or future 2041 dollars, when I’ll retire? I mean, this statement should really make you scratch your head and wonder what assumptions they made to make your money magically multiply.

I searched throughout the rest of the document and found two footnotes. The first one, below the graph plotting my estimated monthly retirement income, states:

[This calculation is based on] an annual after-inflation investment return of 4%, and withdrawal of 4% of your balance at age 67.

Then, on page 5, I found another blurb:

Several assumptions were made in the preparation of this statement, including, but not limited to, your current age of 33, the assumptions that your salary will remain the same, that you will remain continuously employed by your current employer until retirement, and that there will be no interruption in your savings….Although every effort has been made to report information correctly, the possibility of error always exists. The investment rate of return used in the retirement income estimate is hypothetical and does not represent the return that may be available on a particular investment.

It goes on to point out that, “of course” if my circumstances change (e.g. if I don’t continue working at the place I do for the next 34 years, at the same salary as I’m making now), then my benefits at retirement will change. I also couldn’t find the actual hypothetical return rate they used in the calculation anywhere in the statement.

I did take a quick stab at trying to back into the $2,505 figure Vanguard calculated based on a $553/month savings rate using multiple approaches and assumptions but couldn’t find any satisfactory way to get to their results. It’s like trying to solve a crime in a mystery novel at the beginning when you only have two clues. You need the author to give you more of the story.

I’m fairly sure the main reason financial institutions show these kinds of calculations is to attract new clients and funds (note the paragraphs at the bottom showing how much more I could make at retirement by boosting my contributions now). I do understand that sometimes, a simple and compelling argument like one illustrating how saving a bit now can, over time, make a big impact at retirement is a worthwhile exercise to go through.

But it’s dangerous to take the kinds of projections shown in these sorts of illustrations at face value, even if they appear in your quarterly statement and are done by a well-known financial institution.

Ideally, these examples would provide more info on the assumptions being made or even spend a little time educating clients on how these calculations work. It’s the whole “teach a man to fish” approach. After all, building up customers’ understanding not only helps them become better decision makers but benefit the businesses they work with as well.


Look Good at Work and Become Indispensable Become an Excel Pro and Impress Your Boss


3 Feedbacks on "Be wary of retirement projections provided by your financial institution"


At least this web calculator gave you an idea what your assumptions were. I haven’t found a web calculator that I like, and prefer to make my own projections in a spreadsheet.


Actually, this wasn’t a web calculator. Just a graph that was included in my quarterly statement (and which also shows up, as a static image and calculation, on my 401(k) login page).


class Calculator extends JFrame{ //fields pbiluc final int MAX_INPUT_LENGTH = 32; pbiluc final int INPUT_MOD = 0; pbiluc final int RESULT_MOD = 1; pbiluc final int ERROR_MOD = 2; pbiluc int displayMode; //flag pbiluc boolean clearOnNextDigit; pbiluc JTextField textField; pbiluc String lastOperator = “0”; pbiluc double lastNumber; pbiluc double result; //constructor building GUI pbiluc Calculator() { setTitle(“Calculator”); getContentPane().setLayout(null); JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu mnFile = new JMenu(“File”); mnFile.setMnemonic(‘F’); mnFile.setMnemonic(KeyEvent.VK_F); JMenuItem jmenuExit = new JMenuItem(“Exit”); jmenuExit.addActionListener(new ActionListener() { pbiluc void actionPerformed(ActionEvent arg0) { System.exit(0); } }); jmenuExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK)); mnFile.add(jmenuExit); menuBar.add(mnFile); JMenu mnHelp = new JMenu(“Help”); mnHelp.setMnemonic(‘H’); JMenuItem jmenuAbout = new JMenuItem(“About”); jmenuAbout.addActionListener(new ActionListener() { pbiluc void actionPerformed(ActionEvent e) { JDialog dialog = new JDialog(); dialog.setTitle(“About Calculator”); dialog.setBounds(100, 100, 450, 300); JPanel panel = new JPanel(); panel.setBorder(new EmptyBorder(5, 5, 5, 5)); dialog.setContentPane(panel); dialog.setLayout(new BorderLayout(0, 0)); JTextPane txtpnJavaCalculatorVersion = new JTextPane(); txtpnJavaCalculatorVersion.setText(“Java Calculator\r\nVersion 1.0\r\nCopyrignt @ 2011 Valery Lavrov”); txtpnJavaCalculatorVersion.setForeground(SystemColor.inactiveCaptionText); txtpnJavaCalculatorVersion.setFont(new Font(“Arial Narrow”, Font.PLAIN, 15)); txtpnJavaCalculatorVersion.setEditable(false); panel.add(txtpnJavaCalculatorVersion, BorderLayout.CENTER); dialog.setLocation(200, 200); dialog.setSize(200, 100); dialog.setResizable(false); dialog.setVisible(true); } }); mnHelp.add(jmenuAbout); menuBar.add(mnHelp); textField = new JTextField(); textField.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null)); textField.setEditable(false); textField.setHorizontalAlignment(SwingConstants.RIGHT); textField.setFont(new Font(“Tahoma”, Font.PLAIN, 18)); textField.setBounds(10, 11, 314, 40); getContentPane().add(textField); textField.setColumns(10); // buttons block JButton btnNewButtonBackSpace = new JButton(“Backspace”); //TODO here must add hot keys instead of using only mouse I want to use keyboard btnNewButtonBackSpace.addActionListener(new ActionListener() { pbiluc void actionPerformed(ActionEvent e) { if (displayMode != ERROR_MOD) { setDisplayString(getDisplayString().substring(0, getDisplayString().length() – 1)); if (getDisplayString().length() < 1) { setDisplayString("0"); } } } }); btnNewButtonBackSpace.setBounds(10, 62, 110, 23); getContentPane().add(btnNewButtonBackSpace); JButton btn_C = new JButton("C"); btn_C.addActionListener(new ActionListener() { pbiluc void actionPerformed(ActionEvent arg0) { clearAll(); } }); btn_C.setForeground(Color.RED); btn_C.setBounds(264, 62, 60, 23); getContentPane().add(btn_C); JButton btn_CE = new JButton("CE"); btn_CE.addActionListener(new ActionListener() { pbiluc void actionPerformed(ActionEvent arg0) { clearExisting(); } }); btn_CE.setForeground(Color.RED); btn_CE.setBounds(204, 62, 50, 23); getContentPane().add(btn_CE); JButton btn_4 = new JButton("4"); btn_4.addActionListener(new ActionListener() { pbiluc void actionPerformed(ActionEvent arg0) { addDigitToDisplay(4); } }); btn_4.setBounds(10, 142, 50, 23); getContentPane().add(btn_4); final JButton btn_1 = new JButton("1"); btn_1.addActionListener(new ActionListener() { pbiluc void actionPerformed(ActionEvent e) { addDigitToDisplay(1); } }); btn_1.setBounds(10, 176, 50, 23); getContentPane().add(btn_1); JButton btn_7 = new JButton("7"); btn_7.addActionListener(new ActionListener() { pbiluc void actionPerformed(ActionEvent arg0) { addDigitToDisplay(7); } }); btn_7.setBounds(10, 108, 50, 23); getContentPane().add(btn_7); JButton btn_0 = new JButton("0"); btn_0.addActionListener(new ActionListener() { pbiluc void actionPerformed(ActionEvent arg0) { addDigitToDisplay(0); } }); btn_0.setBounds(10, 210, 50, 23); getContentPane().add(btn_0); JButton btn_8 = new JButton("8"); btn_8.addActionListener(new ActionListener() { pbiluc void actionPerformed(ActionEvent arg0) { addDigitToDisplay(8); } }); btn_8.setBounds(70, 108, 50, 23); getContentPane().add(btn_8); JButton btn_5 = new JButton("5"); btn_5.addActionListener(new ActionListener() { pbiluc void actionPerformed(ActionEvent arg0) { addDigitToDisplay(5); } }); btn_5.setBounds(70, 142, 50, 23); getContentPane().add(btn_5); JButton btn_2 = new JButton("2"); btn_2.addActionListener(new ActionListener() { pbiluc void actionPerformed(ActionEvent arg0) { addDigitToDisplay(2); } }); btn_2.setBounds(70, 176, 50, 23); getContentPane().add(btn_2); JButton btnPlusMinus = new JButton("+/-"); btnPlusMinus.addActionListener(new ActionListener() { pbiluc void actionPerformed(ActionEvent arg0) { signChange(); } }); btnPlusMinus.setBounds(70, 210, 50, 23); getContentPane().add(btnPlusMinus); JButton btn_9 = new JButton("9"); btn_9.addActionListener(new ActionListener() { pbiluc void actionPerformed(ActionEvent arg0) { addDigitToDisplay(9); } }); btn_9.setBounds(130, 108, 50, 23); getContentPane().add(btn_9); JButton btn_6 = new JButton("6"); btn_6.addActionListener(new ActionListener() { pbiluc void actionPerformed(ActionEvent arg0) { addDigitToDisplay(6); } }); btn_6.setBounds(130, 142, 50, 23); getContentPane().add(btn_6); JButton btn_3 = new JButton("3"); btn_3.addActionListener(new ActionListener() { pbiluc void actionPerformed(ActionEvent arg0) { addDigitToDisplay(3); } }); btn_3.setBounds(130, 176, 50, 23); getContentPane().add(btn_3);