How To Divide Your Investments Between TFSA, RRSP and Non-Registered Accounts

Last update on June 1, 2014.


Since I started MoneyGeek, readers have frequently asked me questions such as the following

"Should I keep U.S. stocks in my RRSP account?"

"Which items in MoneyGeek's portfolio should be contained within RRSP, TFSA, non-registered portfolios?"

In summary, readers wanted to know how they should divide up their money between RRSP, TFSA and non-registered accounts in such a way as to minimize taxes over their lifetimes.

Answering such questions, however, was tricky. The answer depended on each person's unique circumstances, including their age and income level among other factors. I promised my readers that I will work on a tool that will answer this question for them. 

Today, I'm happy to announce that the wait is over. Ladies and gentlemen, please allow me to introduce the "Investment Tax Optimizer". You can access the public version of this tool by clicking on this link, or by going to the Resources menu.


What The Tool Does

The investment tax optimizer takes in various information about your financial circumstances as well as your expectation regarding your investments, and spits out a breakdown of where you should hold your investments.

For example, if you say you want to hold $20,000 in Canadian stocks and $10,000 in Canadian bonds, it might spit out an answer that says you should hold the $20,000 Canadian stocks in the TFSA, and the bonds in the RRSP.

That's what the tool does, but how does the tool come up with the answer? Let me explain as best as I can.


How The Tool Calculates Your Answer

Basically, the tool gets the answer by trying out a lot of different scenarios and by picking out the best scenario.

Each scenario consists of sets of priorities, which consists of the order of the investments, and the order of the tax vehicles.

For example, one priority might look something like this: [Canadian Stocks, Canadian Bonds], [TFSA, RRSP, non-registered]. In plain language, this means the tool will first try to fit as much Canadian stocks into the TFSA account as it can. If the TFSA account gets full, it will try to put the rest inside the RRSP. If that gets full, it will put the rest inside a non-registered account.

Once all the Canadian stocks are fitted inside the accounts, the tool will try to fit the bonds in the same order. In other words, it will try to fit as much bonds inside the TFSA first, and then try the RRSP, and then the non-registered account.

The algorithm tries all possible priorities. In other words, it will try priorities including [Canadian Bonds, Canadian Stocks], [RRSP, TFSA, nonregistered] (i.e. Fit the bonds in inside RRSPs first) and [Canadian Stocks, Canadian Bonds], [TFSA, non-registered, RRSP] as well as all other possibilities.

Once the algorithm allocates investments according to a priority, the algorithm simulates the growth of these investments inside each of these accounts, while maintaining the same priority. For example, if our priority calls for having Canadian stocks inside TFSAs first, then the algorithm will try to put as much Canadian stocks inside the TFSA in the simulated future as well.

I've taken the liberty of making a few assumptions about the user as the tool simulates the future. I've assumed that the user's bond component will increase while the stock component will decrease as the user gets older. I've also assumed that everyone retires at age 65, upon which time the user stops saving and starts withdrawing money. The user withdraws an increasing percentage of his/her money every year, and withdraws every penny by the time he/she is 94.

As people grow older, their financial circumstances change. Therefore, I believe it's unrealistic to expect that the investment priority should stay the same over the person's lifetime. Therefore, I've programmed the algorithm so that once in their lifetime, they change their priorities.

For example, a person might start with the priority [Canadian Stocks, Canadian Bonds], [TFSA, RRSP, non-registered]. Then, the algorithm will try to change the priority to [Canadian Bonds, Canadian Stocks], [TFSA, RRSP, non-registered] after a number of years into its simulation.

The algorithm will try every possible age for switching priorities. For example, it will try switching priorities 5 years from now, as well as 15 years from now. The tool will record the results of the simulation for every single possibility.

After examining the tax implications of every one of these different scenarios, the algorithm will choose the winning priority and switching age based on the most amount of money the user receives during retirement. The tool will then display the breakdown of where you should put your investments based on the winning priority.


Further Considerations

That, in a nutshell, is how the tool works. Let me say another couple of things you should know about regarding the tool.

First, the public version only optimally allocates Canadian stocks and Canadian bonds. MoneyGeek's regular and premium members have access to the members only tool, which allows the user to allocate U.S. stocks as well.

Secondly, I would like to emphasize that this is a tool, and you shouldn't regard the results of this tool as advice. Minimizing taxes involves more than just knowing how to split your investments between TFSA, RRSP and non-registered accounts. Many other considerations come into play as well, so I suggest you talk to an accountant or a tax professional if you want a comprehensive tax planning solution.

That's all I have to say about the tool. I hope you find it useful. If you have any questions, please ask using the comment box below, so that everyone can benefit.

If you enjoyed this article, you might be interested in our free newsletter. Enter your email to get free updates.

Next entry

Previous entry

Similar entries


  1. sberiault2 - 06/10/2014 11:24 p.m. #

    Thanks for adding this tool but there's 2 user inputs I don't quite understand:

    the first one:
    What is your total RRSP contribution room, including used room?
    On my yearly income tax report it only shows how much room I have left. I don't really know how to find out what my total RRSP contribution room is? would it just be the total of what I have invested in my RRSP (is that what you mean by used room?) + the contribution room I have left? please help on this one. thanks.

    the second:
    How much of your RRSP contribution room have you used up so far?
    I guess based on the number from the previous input I would subtract the unused contribution room to get the amount for this user input field. Is this correct?


  2. Jin Choi - 06/11/2014 9:10 a.m. #

    Hi Sylvain, thanks for the feedback. I've changed the tool to address your concerns.

    The tool now takes in unused contribution rooms for TFSA and RRSP, instead of total room.

    I've also changed the label for the used contribution room. It now asks for the total value of investments inside your TFSA/RRSP, which amounts to the same thing.

    Let me know if that's clearer, and if you have any other suggestions.


  3. hlichang - 06/12/2014 2:10 a.m. #

    Hi Jin,

    I have about 20k in a non-registered account despite having abiut 55k in contribution room in RRSPs. I've been advised to wait until most of my income falls into the highest tax bracket before using this contribution room (guaranteed to happen in next year). Do you agree with this approach? Or should I move my non-registered holdings into the RRSP account sooner rather than later?

  4. David - 06/12/2014 5:07 p.m. #

    One observation: You don't consider other assets, such as pension plans. Having a steady stream of retirement income may change the math; if your retirement income will be high enough, it's beneficial to favour TFSA over RRSP to to have truly tax-free growth.

  5. Jin Choi - 06/12/2014 7:04 p.m. #

    @hllchang, I can't answer this because there are other variables at play, such as your age and your investment mix. I would just use the tool.

    @David, that's true. I'll think about how I can incorporate pensions into the algorithm.


  6. sberiault2 - 06/13/2014 7:57 a.m. #

    Thanks Jin for clarifying on my questions by updating the tool. Much clearer now.
    Thanks again.


Post your comment
Web Analytics