Is an Employee Stock Purchase Plan (ESPP) better than a Retirement Account?

September 23, 2020

In last week’s post, I showed that if you have access to an Employee Stock Purchase Plans (ESPP) offering the full 15% maximum discount you can justify prioritizing the ESPP over an index fund investment in a taxable account, despite the higher risk. But I didn’t answer another important question: would you want to prioritize your ESPP even over retirement savings accounts? 

If your company match is 50% or even 100%, well, then you get a quick guaranteed 50% or 100% return, much higher than any ESPP discount you can expect. The retirement plan with such a high matching percentage easily mops the floor with that puny 15% ESPP discount. But what about the 401(k) contributions after the match? Should we forego those and invest in the ESPP instead? Is the ESPP better than a Roth IRA?

Well, it all depends on your personal situation, specifically, your tax and benefit parameters. So, that’s the question for today: How do we determine priorities across the different savings vehicles? Under what conditions would we forego the 401(k) contributions beyond the company match and invest in the ESPP instead?

Let’s take a closer look:

A simple numerical example

We have to start somewhere. So, let’s look at the following case study of someone who is currently working and planning FIRE in about 10 or so years. Not too different from many FIRE enthusiasts I’ve met. But I’m going to do some robustness analysis later and see how the results change if we turn some of the dials in the FIRE machine. Stay tuned!

Marginal Tax rates while working (years 0-10):

  • Ordinary Income – federal: 22%
  • Dividends/Long-term Capital Gains – federal: 15%
  • All income – State: 5%

In other words, a high-paying job (6-figures for a married couple) and a moderate flat state tax rate of 5%. 

Marginal Tax while retired (years 11+):

  • Ordinary Income – federal: 12%. So you end up in the second federal tax bracket, as most early retirees can expect.
  • Dividends/Long-term Capital Gains – federal: 0%. Recall that up to roughly the top of the second federal tax bracket, you pay no taxes on qualified dividends and long-term capital gains. Awesome!
  • All income – State: 5%. I assume that the retiree(s) stays in his/her/their current state and still pay the same 5% rate in retirement.

Next, we have to pick expected returns: As in the post last week, I assume a beta=1 stock that has the same total return expectation as the index. It also features the same split between dividends and capital gains. Also, to be on the safe side, I assume a relatively low nominal return, only 6% total! Thanks to the expensive equity valuations right now:

  • Capital gains, p.a.: 4%
  • Dividend Yield p.a.: 2%

All returns and all calculations are in nominal terms. I also assume that our FIRE planner can get a 15% discount in the ESPP and there’s a minimum 2-year holding period. After that, we can sell the company stock, as recommended last week to diversify away from the concentrated risk the company stock after we captured the full 15% discount.

Fees – I’ll assume the following expense ratios:

  • 401(k): 0.10%. Remember, a lot of savers face much higher expense ratios in their 401(k) plans than what can get when you shop around yourself at Fidelity, Schwab, or Vanguard. (Side note: This was one of the main reasons I wrote the post 4 years ago because I’d seen so many questions about whether it’s worth participating in a high-fee 401(k) plan or simply go the taxable route with zero or low fees instead.)
  • Taxable brokerage account: 0.03%. The run-of-the-mill low-cost equity index fund. And at Fidelity, you can even go all the way to 0% now. But let’s stick with the 0.03% for now.
  • The ESPP has no (ongoing) expense ratio, but I factor in a commission for selling the stock. 

A back-of-the-envelope calculation

Before doing any careful calculations, a back-of-the-envelope calculation yields that the ESPP discount is 15% net of the ordinary marginal income tax rate: 15%x(1-0.27)=10.95%. That’s higher than the 10% drop in the marginal tax rate, which is roughly the value of the tax arbitrage in the 401(k) plan.

So it looks like the ESPP is actually quite competitive with the 401(k) investment (past the employer match). Or so I thought. It turns out, this calculation is way too simplistic.  Let’s start over…

A more detailed calculation

The back-of-the-envelope calculation above could be significantly off because we’re compounding several errors in that simplified calculation. And that could potentially make the 401(k) investment much more attractive than the ESPP. For example:

  • The investment in the ESPP and then the taxable account has some significant drag because you’ll have to tax not just the capital gains after 2 years but also your dividend income along the way, and capital gains again when you withdraw. In contrast, the 401(k) defers all the taxation until withdrawal.
  • The 401(k) tax advantage is a bit higher than 10% I initially used (i.e., the drop in the marginal tax rate in retirement). It’s actually (1-future tax rate)/(1-current tax rate)-1 = (1-0.17)/(1-0.27)-1=0.1370=13.70% instead of 10%. 

So, to do a more careful side-by-side calculation, I dug out an old blog post of mine. And I mean a really old post, from more than 4 years ago (=28 years in blogger years, to be precise). I called that post, quite fittingly…

The ultimate retirement account comparison in one single Google Sheet

and I simply added another account option, the ESPP, to accommodate today’s calculations. Here’s the link to the Google Sheet:

After Tax Return Comparison – Google Sheet

As always, you cannot edit the sheet as it is posted online. You’d need to first save YOUR OWN COPY!

In any case, just a quick recap, the sheet calculates the expected IRR of a variety of different accounts (retirement, health savings account, taxable accounts) as a tool to gauge the relative attractiveness of the different account types. And all the calculations are done in a consistent and fair apples-to-apples fashion to avoid some the junk financial advice out there like “the Roth 401(k) is better than the regular 401(k) because it grows tax-free.” Rather, you have to factor all the tax consequences from beginning to end, taxes and matching parameters when the money goes in, taxes while the money grows, and taxes when you take the money out.

The way I implemented the ESPP is to assume that after 2 years, you liquidate the company stock, pay for the capital gains and transaction costs, and then invest the net proceeds in a low-cost equity index fund in your brokerage account.

Update 10/12/2020: As some readers and twitter friends have pointed out, that’s short-changing the ESPP a little bit. It somewhat of a worst-case scenario because you assume that you use the ESPP only once. If you keep rolling the ESPP forward every 2 years and you capture the ESPP discount each time, you’ll do significantly better! I’ll think about how to best implement this in the Google Sheet! 🙂

Update 10/13/2020: I’ve now updated the Google Sheet to allow for the following scenario: when the ESPP pays off after 2 years you can also reinvest that into another round of ESPP contribution. So, for example I could allow a 12-year horizon, 10 years at work, where you run 5 rounds of ESPP contributions back-to-back and then you leave work and invest the final proceeds in a taxable account. See the section below.

All we need to do is to keep track of the current account value and the cost basis over time, see the screenshot from the Google Sheet below:

GoogleSheet Screenshot01
ESPP account value over the first 12 years. After 2 years, you liquidate the ESPP holdings and reinvest the net proceeds. Also, notice that the cost basis steps up at that time. I also assume that you pay taxes on dividends every year and only reinvest the payment net of taxes. Notice the drop in dividend taxes in year 11 and 12, due to lower taxes in early retirement!

So, let’s put all the parameters into the sheet. You do so in the tab “Main”. All parameter inputs from the user are shaded orange. Notice that I assume here that the high-tax regime lasts for the first 10 years, then you retire and the IRR is for the money you withdraw in year 12. 

GoogleSheet Screenshot00
All the parameters we need for the IRR comparison.

And we can check the main results, i.e., a side-by-side comparison of 11 different account types:

GoogleSheet Screenshot02
Main results for the ESPP example

I was quite surprised! The no-match 401(k) is significantly better than the ESPP. The tax arbitrage in the 401(k) translates into a 7.04% IRR. Pretty impressive, because the net-of-fees equity return is only 5.90%, so you gain a full 114 basis points (1.14 percentage points) in annual returns from the tax arbitrage. In contrast, the ESPP advantage melts away quite substantially once you factor in all the nasty tax drags along the way: paying capital gains in year 2, paying dividend taxes along the way, and capital gains again in the end in year 12. Bummer! I would have thought the ESPP gets much closer to the no-match 401(k) IRR. It looks like this FIRE enthusiast is better off not participating in the ESPP until after maxing out the 401(k) annual pre-tax maximum ($19,500 per employee in 2020).

But that said, the ESPP is still significantly better than the taxable account. The ESPP also handily beats the Roth IRA. Recall, the Roth IRA has an IRR exactly equal to the net-of-fee equity return (6% minus 0.03% expense ratio). But that 5.97% is still significantly below the IRR of the ESPP once you factor in the 15% discount. And again, this is net of taxes in the ESPP!

So, here’s a summary so far from this concrete parameterization; according to my Google Sheet, this FIRE planner should fill up the FI savings in the following order:

  1. Max out the 401(k) plan with the match. Do not contribute to the Roth 401(k)
  2. Next, max out the Health Savings Account (HSA)
  3. With an income in the 6-figures, you will likely not be able to contribute to the deductible (pre-tax) IRA, but if there’s some way you could, that’s the next account to max out.
  4. Next, max out the 401(k) beyond the match up to the annual maximum. Do not contribute to the Roth 401(k).
  5. Next, max out the ESPP up to the annual maximum
  6. Next, max out the Roth IRA up to the maximum
  7. And if you still got money left over, contribute as much as you can to a taxable brokerage account.

Some caveats:

  • This is all done using fixed expected returns.
  • There is uncertainty about future taxes, no doubt. So I always like to look at how things change when we raise future taxes, see the “Robustness Analysis” section below.
  • If you put all your savings into retirement accounts you might face the headache in early retirement due to penalties (in addition to the taxes) for accessing retirement accounts before age 59.5. Though, there are some ways to access the money penalty free, through Roth conversion ladders and Rule 72(t).
  • I did not factor in the slightly higher risk in the ESPP in the calculations purely based on the first moments (expected returns) and completely ignoring the second moments (risk, correlations). I’d forego the ESPP even if the expected return is only slightly above one of the other options (say single-digit basis points) due to the higher risk inherent in the company stock!

Update 10/13/2020: Multiple ESPP contributions back-to-back

As some people pointed out here and on Twitter, I’ve potentially underestimated the benefit of the ESPP because I assumed that you fund the ESPP only once and then invest the proceeds in the taxable account. But more likely people will just reinvest the proceeds into another round of an ESPP. To allow for multiple ESPP rounds, each subsequent one reinvesting the (after-tax) proceeds of the previous ESPP, I’ve added another field in the  parameter section, see below:

GoogleSheet Screenshot05
You can now simulate multiple ESPPs back-to-back!

I still maintain the previous calculations with the one single ESPP, but I also calculate the portfolio value after 5 iterations of the ESPP (10 years) plus another 2 years of taxable accounts. Notice that I want the flexibility to not have ESPPs over the entire horizon. For example, you might want to study a horizon of 12 years (10 more years at work plus 2 years into retirement), and you would have access to the ESPP only during the first 10 years, not the entire 12 years!

GoogleSheet Screenshot06
The 10 years’ worth of ESPP investments will get you to about $2,840 after tax. After that, you employ the taxable account as before.

And then finally, I display the main results. I still keep the 1x only ESPP columns as before for comparison and add a twelfth column, see the main results below:

GoogleSheet Screenshot07
The IRR of running the ESPP 5x in a row looks much more attractive! It’s indeed better than a 401(k) without the match in this example!

Notice how the ESPP-x5 is vastly more attractive than most of the other accounts, measured by the IRR. Not quite as good as the 401k with a match. But better than a 401k without match, better than the HSA, better than a Roth, and – of course – vastly more attractive than a taxable account. So, if you have access to an ESPP, even with a 2-year minimum holding period, it’s an extremely attractive IRR if you can run these investments back-to-back multiple times.

And, as I’ve said multiple times before, if you get even better terms, such as shorter minimum holding periods, or better stock purchase terms where the you buy your shares at the minimum price over the offer period, then the ESPP becomes even more of a no-brainer!

Robustness Analysis

This was just one single, simple parameterization. Let’s look at how results change if the inputs change:

Higher Taxes:

The first robustness check I’d always like to perform in this context is the “what if future taxes are higher?” scenario. It’s such an important issue that I incorporated this just below the baseline calculation in that same table in the Google Sheet. I raise all of the tax rates (ordinary income and capital gains) upon withdrawing by 5 and 10 percentage points but keep the Roth shielded from those taxes. In the table above, the ranking of all accounts stays the same for a 5% hike, but there are some small changes if you jack up the taxes by 10 points. Now the Roth IRA becomes more attractive than the no-match 401(k). But the Roth still falls short of the ESPP, which is quite surprising.

I also go through three additional robustness checks that require changing the parameters in the Google Sheet inputs:

  • E1: Move to a no-tax state. In retirement, you only pay the federal taxes: 12% on ordinary income and no tax on capital gains and dividends. Compliments of a move to one of the no-tax states (Alaska, Florida, Nevada, South Dakota, Texas, Washington, and Wyoming).
  • E2: Longer horizon: Notice that this early retiree will not just liquidate all of the accounts in year 11 or 12. Some of the money has to last 30+ years. Does anything change when we stretch out the horizon? What about the money you’ll need in year 30 of retirement? So, let’s keep all parameters the same as in the baseline
  • E3: Flat taxes throughout: What about folks who expect a pretty much flat tax throughout their life? In other words, you face a modest flat state tax (e.g. Colorado, North Carolina, etc.) and you expect to stay in the second federal tax bracket both during your last 10 years of working and then remain there in retirement as well. This flat tax scenario will negate the tax arbitrage in the 401(k) plan!

Let’s take a look at how these will change the relative attractiveness of the two retirement accounts that “compete” with your ESPP money:

  • Qualitatively, E0, E2, and E2 all give you the same results. The ranking: 401(k) post-match is on top, then the ESPP, then the Roth. Though, I would argue that in E2 (longer horizon) I’d probably prefer the Roth IRA, despite the slightly lower IRR (0.06 percentage points lower than the ESPP) just for the peace of mind and a hedge that taxable account might become the target of higher taxes in the future.
  • In the case where you face just one constant flat tax rate (E3) you’ll get a completely different order: Now the ESPP is the most attractive option (6.88%) followed by the Roth (5.97%) while the no-match 401(k) is the least attractive option (5.90%). That makes perfect sense: the Roth with the lower expense ratio will beat the 401(k) in the absence of any 401(k) tax arbitrage. In contrast, the ESPP faces relatively little tax drag over time, but you enjoy a nice sizable return boost due to the 15% employer match spread over a relatively short time window.
ESPP IRR Chart01
IRRs of three different accounts ESPP, 401(k) beyond match, Roth IRA) under different parameter assumptions. E0=baseline from above.

Conclusion

There you have it. ESPPs are a pretty neat benefit. Especially if you get the full 15% discount. As long as you quickly liquidate the company stock and funnel it into a taxable account with a low-cost index fund after the minimum holding period. In a direct comparison, the ESPP likely beats the taxable account at least in expected terms. And even risk-adjusted as I showed last week.

When comparing the ESPP with retirement accounts, there are a lot more moving parts. A 401(k) plan with the match, sometimes 50% or even 100%, will easily beat the ESPP. The calculations here show that the ESPP may beat the 401(k) beyond the company match if the marginal taxes over your lifetime are sufficiently flat or even increasing. There is a good chance that the 401(k) plan beats the ESPP if you expect your marginal taxes to go down, as is often the case because you move into a lower bracket and potentially even move from the high-income tax state where you worked to a zero or at least low-tax state in retirement. Just like we did here in the ERN household.

The ESPP vs. Roth IRA trade-off depends not just on the tax parameters but also on the horizon. So you might find yourself in a situation where the ESPP is more attractive for funding the early retirement expenses. But the Roth IRA is needed for funding the subsequent, late retirement stage. It all depends on your personal idiosyncratic situation. Personal Finance is indeed very personal.

Thanks for stopping by today! What did you find when you input your own tax parameters? Looking forward to your comments below!

Picture credit: pixabay.com

20 thoughts on “Is an Employee Stock Purchase Plan (ESPP) better than a Retirement Account?

  1. Hey ERN,
    Sorry this is not topic related, did you ever consider changing the ending of the Google Sheet link from “edit?usp=sharing” to “copy”? This way it automatically asks the user who clicks the link if they want to make a copy in their own Google account.

  2. Back when I worked at a publicly traded company, I had ESPP. It worked out to a 15% discount of the stock price at either the beginning or the end of the 6 month period, whichever was lower. I funded it from my paycheck at the max rate permitted and then sold immediately when the period ended. I had no hold period after the end of the period. The average dollar is invested for just 3 months and provided a minimum of a 15% return (as long as the stock didn’t crater between the time the purchase happened and the open of the market the next morning) giving me a 72% net annualized return.

    I then just paid my normal short-term capital gains rate on it. This worked out to giving me a decent pay boost. I wasn’t looking at it as a long-term investment, just a quick win.

    For example, let’s say I could put up to 10% of my salary in per year and I made $100k. Over the 6 month period, I would end up with $5k in the ESPP account which would purchase the stock at a 15% discount. If the stock had gone from $20 to $18 over the course of the period then I would buy at $15.30 (15% discount to the $18). I would get 326 shares and immediately sell them for $18 grossing $5868 + the leftover $14 or so that was not sufficient to buy a complete share. Then I would pay my normal taxes (22% federal and 5% state) on the extra $882 leaving me with an extra ~$648 more than I would have had if I didn’t participate in the ESPP.

    It is even better if the price of the stock went up over the period. Let’s say it went from $20 to $22. Again I would put in $5000 over the 6 months, but this time I would buy it at $17 (15% discount to the beginning of the period at $20). I get 294 shares and sell them for $22 grossing $6468 + about $2 left over. Pay tax on the $1468 and end up netting ~$1074.

    Notice though, I had to be able to float the $5k during the period. Since this is extremely low risk, I could just borrow from my emergency fund to do it if needed.

    There are additional strategies such as leaving it there for an extra year to get long-term capital gains treatment, but that would mean having to float $15k (current period + the other periods for 2 years) and it comes at a greater risk because the money is in the market and subject to the fluctuations for the next year. I decided I didn’t want that risk and would take the quick gains even though I needed to pay my short-term capital gains rate on it.

    I worked for a company with a really volatile stock price. This worked in my favor! When the price went way up during the period, I killed it. When it went down I still made the 15% (72% NA).

      1. Yes, this is more typical. You get to purchase the shares at the lowest price either at the beginning or the end of the 6 month offering period (this is how most larger tech companies work).

        I don’t get why people keep using the terms “return” and “discount” interchangeably. This is incorrect. If you get a 15% discount, that equates to a 17.65% return. And this is risk free!

        You don’t need to hold for two years, you just sell as soon as the shares land in your account (every 6 months which usually lands during an open trading window) which locks in a worst case 17.65% return before taxes.

        There are IRS contribution limits, but you should ALWAYS max out your ESPP under these terms. This assumes that you sell immediately.

        1. Very good point. But keep in mind that the 15% discount is pre-tax. Maybe 10% post tax for most high-income earners, in which case the return is 1/0.9-1=11.1%. So, the difference between return and discount isn’t that large anymore. 🙂

  3. Great work, and almost any inputs result in 401k with match, HSA, and remaining 401k for me.

    Why would withdrawal for Federal taxes not be at the blended rate of 8.8% (24.5 k at 0%, 19.75k at 10%, and 60.5k at 12%)?

    I struggle to decide which activity (pension, TGH, Roth conversion, IRA withdrawal, etc.) gets to ‘fill’ the standard deduction bucket or use blended the approach?

    1. Oops. Not enough coffee this morning. Should have been at the blended rate. That would have made my statement above more compelling! In fact, it would be even lower than 8.8% because of HSA and 401k, like you said.

      1. During working years, the blended rate concept only applies in retirement, since while working those low brackets are already filled up.

    2. Great question~
      The mathematically sound way to do this is to it step-wise.
      Step 1: Fill up the lowest tax brackets with the inflexible, non-negotiable, non-movable items: Social Security, Pension, Rental income (though there’s some tax planning and shifting expenses around).
      Step 2: Fill up the rest of the 0% bracket (if applicable), using the 0% rate.
      Step 3: Fill up more at the 10% bracket
      etc.

      You never want to use the blended approach.

      1. Yes, I get that. I’m just putting money in 401k with 27% tax avoidance now.

        In early retirement, I’ll be rolling over or withdrawing to the top of the 12% federal bracket (about 105k) to prevent huge RMDs later. I’m just pointing out tax arbitrage is greater than 10% (22% – 12%).

  4. You know I’ve always thought this discussion sort of superficial at best. Money is fungible. That means the money I make this month and next month are inherently the same (provided you spend them at the same time). So if you can fund espp for just a single period then you no longer need to contribute from your budget to espp. You just replace your new income spending with the deposit position of the espp from the last period. In that way only the Roth and 401k are long term pulls from your budget.

    1. You raise a very important point I had ignored before. I tried to make this strictly a time T (invest) vs T+N (withdraw) problem and then compare a simple IRR calculation with only two cash flows, one in T and one in T+N.
      Reality is much more complicated. The ESPP may free up cash flow in T+1 and assuming that these additional funds are necessarily invested in the taxable account is only a worst-case scenario assumption. You can likely do better if you keep investing the freed-up cash flow in something better than the taxable account. Most likely the ESPP in the next year (or whenever the minimum holding period expires).

      So, I will think about how to account for this in the calculations. The simplified calculations are likely correct if you assume that the ESPP is for the last window before retirement.

    2. I’ve now updated the IRR calculation to allow for multiple ESPP rounds back-to-back (i.e., recycling the same money). Much higher IRRs, of course. Beats the 401k w/o match and Roth in most cases I looked at.
      Thanks for the suggestion! 🙂

  5. I am way off topic here and late to the game but I just read your lengthy exchange with Actuary on Fire about MMT. I am not a fan of MMT but for those who are I have a simple question. If government spending and debt is meaningless why bother issuing bonds at all? Why tax anything at all? Why not print all you need (or more accurately, digitally create)? Why have mortgages with interest rates or mortgages at all? If you want a house why doesn’t the government simply deposit the money into your account and you buy it? Or better make the house free. This is somewhat a reductio ad absurdem but seems the inevitable endgame of this ‘theory’. This way the result is equality. There is no real money. Everyone lives in million dollar houses. But then who builds them? Why work if the government simply creates all you need magically? Perhaps a different agenda is at play here rather than economics.

    1. Oh, my, I hated that MMT discussion. Your comment sounds like the whole discussion with MMT is obviously an application of a mathematical proof by contradiction. If MMT is true you can deduce all sorts of crazy nonsensical conclusions. Ergo, MMT is false to begin with.
      Glad we’re on the same page! 🙂

  6. I also have a 15% ESPP program through work. I considered putting about $5,000 a year into the program, sell it immediately and then use the money to fund the Roth IRA account. You only mention putting the money into a taxable account after you sell the shares. I didn’t see a discussion on throwing the money into a Roth IRA after selling the shares. Would that make a difference, or is it better to put it into a low cost index taxable account vs the Roth IRA?

    1. Yes, this is something I fixed in the Google Sheet. You can still do the ESPP just for 1 iteration and then invest everything into the taxable account (somewhat of a worst-case scenario). But I also do an additional scenario where use multiple ESPP iterations; back-to-back. If you assume that you can capture 5 rounds of ESPP discounts, the IRR is likely VERY ATTRACTIVE. Even higher than a HSA, and much higher than in the Roth. Maybe not as high as the 401k with match, though.

  7. Off topic, but why do SWR simulations always focus on maintaining constant real withdrawals? Real incomes grow (the effect is even more pronounced for those targeting FAT FIRE) by about 0.5% to 1% pa (depending on the income cohort). So, relative to the rest of the population, an early retiree using constant real withdrawals will be15% to 30% worse off after 30 years. Do you think this matters or not?

    1. I’m troubled by that too. You may maintain your real purchasing power. But if you want to keep up with Joneses you’ll likely have to grow your withdrawals by about 0.5-1%. If you factor that into your strategy you should probably reduce your SWR. I briefly wrote about this issue in Part 32: https://earlyretirementnow.com/2019/08/29/you-are-a-pension-fund-of-one-swr-series-part-32/
      (see item 7 in that post)

      But that said, a lot of folks are happy not growing their consumption in real terms later in retirement. (if they stay healthy)
      For us early retirees, that may not be the case, though!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.