How to check whether your portfolio is beating the S&P 500
Your portfolio is up 40% over three years and the S&P 500 is up 35%. That looks like a win. The two percentages measure different things, though, and the difference is your deposits.
An index return assumes one lump sum invested on day one. Your money arrived in installments, some of it recently. A fair comparison replays your own deposits into the index on the same dates and compares the two end values.
This article explains why the simple comparison fails, how the replay works, and how to do it with your broker's export. It includes a worked example with round numbers and the four mistakes that make the result look better than it is.
Why the simple comparison fails
An index return assumes you invested everything on day one and never touched it. Private investors invest monthly, sell now and then, and hold cash for a while.
If you deposited most of your money during a dip, your simple return looks good. If you deposited shortly before one, it looks bad. Neither number says whether your choices beat the index.
Take the two numbers from the opening. The 35% is the index's return on a single lump sum, held for the full three years. Your 40% is the return on a stream of deposits, most of which were invested for only part of those three years. The two figures share a start date and an end date, and nothing else.
The error works both ways. An investor who kept adding money through the fall of 2022 and held through the recovery can beat the index chart without a single good stock pick. An investor who made one large deposit at a peak can trail the chart with sensible funds. In both cases the comparison measures timing luck rather than skill.
What a benchmark is for
A benchmark index is a rule-based basket of stocks that anyone can buy cheaply through a tracker fund. The S&P 500 is roughly the 500 largest US companies, weighted by market value. In your bookkeeping the index stands in for the alternative of making no decisions beyond putting the money in and leaving it there.
Every hour spent reading earnings reports, every conviction position and every rebalance is a claim that you can do better than that alternative. Benchmarking checks the claim.
One technical point matters here. Indexes come in a price version and a total-return version. The price version ignores dividends, and the total-return version assumes they are reinvested.
Your own portfolio receives its dividends, so the fair comparison is against the total-return version. The chart quoted in headlines is the price version, and comparing against it gives you an advantage you did not earn.
How the fair comparison works
The method is to replay your own cash flows into the benchmark. Every time you bought €500 of stock, assume you bought €500 of an S&P 500 tracker on the same day. Every sale works the same way.
At the end you have two portfolios. The first is your own. The second is a simulated index portfolio that received your deposits on the same dates and made no stock-picking decisions. That simulated portfolio is your benchmark. It is the index with your timing, rather than the index's chart.
This construction holds your timing constant on both sides of the comparison. Whatever luck, good or bad, was in the dates your money arrived, the simulated portfolio inherits it. The remaining difference between the two end values is your stock selection, isolated and measurable, which the simple comparison cannot show.
A worked example with round numbers
Say you deposited €1,000 on January 1, when a total-return index tracker stood at 100, and another €1,000 on July 1, after a weak spring had taken the tracker down to 80. By December 31 the tracker has recovered to 110.
The simulated portfolio bought 10 units in January (€1,000 ÷ 100) and 12.5 units in July (€1,000 ÷ 80), 22.5 units in total. At year-end those are worth 22.5 × 110 = €2,475 on €2,000 of deposits, a gain of 23.75%.
Now suppose your own portfolio, with your stock picks, ended the year at €2,300. That is +15% on your deposits. The index chart for the calendar year shows +10% (100 to 110), so the simple comparison says you beat the market by five points.
The fair comparison says the opposite. An investor with your deposits and no opinions ended the year with €2,475, which is €175 more than you. Your mid-year deposit landed at the low, and the simulated portfolio got full credit for that. Your stock picks then gave part of that advantage back.
What people find when they check
Morningstar's yearly Mind the Gap studies keep finding that investors' money-weighted returns trail the funds they hold by roughly 1 to 1.5% per year, from timing alone. Add stock selection against a simple tracker and the total gap is typically larger.
Some investors beat the index. Most do not, and most cannot tell either way, because few people run the simulation by hand. In a spreadsheet it needs every cash flow, historical index prices, and currency conversion if you are a European investor buying US stocks.
Memory does not help either. A self-assessment leans on the positions still open in the app, the ones that survived. The stock you sold at a 30% loss in 2022 no longer appears anywhere, so it no longer appears in your mental average.
A proper benchmark run uses the full transaction history, closed positions and fees included. That is why its answer so often differs from the gut feeling.
How to do it in practice
You need three things. The first is your full transaction history, which your broker's export contains. The second is daily historical prices for the benchmark, in the total-return version or the price of an accumulating tracker. The third is exchange rates for the same dates.
The simulation itself is one calculation per transaction. Units bought equal the cash flow divided by the total-return index level on that day. Add them to a running total and repeat for every transaction you ever made. In practice the workflow has three steps.
- Download the transaction export from every broker you use. If you have accounts at more than one broker, they all belong in one ledger, as described in tracking multiple brokers in one dashboard.
- For each cash flow, convert the amount to the index's currency at that day's rate, buy or sell simulated units at that day's total-return level, and keep a running unit count.
- Value the simulated portfolio at today's level, convert it back to your currency, and put it next to your own portfolio's value.
BullBenchmark runs this simulation on your broker export, for the S&P 500 and the Nasdaq 100, in your own currency.
Four mistakes that flatter the result
Four habits produce a flattering but wrong answer.
- Using the price index instead of total return. This is the most common one, and it was covered above.
- Starting the comparison at a convenient date, typically shortly after your worst purchase.
- Ignoring currency. A euro investor's return on US stocks includes the dollar's moves, so the benchmark simulation has to include them too, or the comparison drifts by whatever EUR/USD did.
- Leaving out fees and closed positions. The same rules have to apply to both portfolios, yours and the simulated one, with no exceptions.
What the answer tells you
If you are ahead of the simulated portfolio, the lead comes from your selection and not from the timing of your deposits. If you are behind, you know the size of the gap in euros, and the question whether stock-picking is worth that price has a number in it.
What such a gap adds up to over twenty years is worked out in the cost of never benchmarking your portfolio. In both cases the result means something only against the index you would buy instead of your own picks.
Many investors who run the check do not like the answer. Without the check, there is no way to know which of the two groups your own portfolio belongs to.
In short
- An index return assumes a lump sum on day one. Your deposits arrived over time, so the two percentages are not comparable as they stand.
- A fair benchmark replays your own deposits and withdrawals into a total-return index on the same dates and compares the two end values.
- The difference between your portfolio and the simulated one is your stock selection, with timing luck removed from both sides.
- The comparison needs your full transaction history, closed positions and fees included, plus daily index levels and exchange rates.
BullBenchmark reads the transaction export from your broker and shows your return next to the S&P 500 and the Nasdaq 100, fed with the same deposits on the same dates, in your own currency. The first two weeks are free and no card is needed.
Related: Time-weighted vs money-weighted return · S&P 500 or Nasdaq 100 as your benchmark · What an S&P 500 benchmark tool has to do