Asset classes & risk

Comparing asset classes:
returns, risk and backtests

The asset-class backtester puts the S&P 500, Bitcoin and gold on the same euro basis. This guide explains the data, the metrics and the points where a historical comparison can promise more than it can deliver.

Simon Stark|Published 8 August 2026|Approx. 15 min read

01

What would the same starting capital have become?

Three price charts side by side say little. The S&P 500 is quoted in index points, Bitcoin in a currency per coin and gold in this project as the price of a GLD share. Their absolute values are not comparable. The backtester therefore sets every series to the same starting capital on the selected start date and follows how that amount would have developed.

Choose the period, asset classes and starting amount. The result shows historical paths, ending values and risk metrics. It is not a buy recommendation or a forecast. The useful question is: How different were return and risk under the same time conditions?

Why it helps: An asset class can finish first and still experience a loss you would have found difficult to tolerate. Ending value, volatility and drawdown belong together.

02

Same period, same currency, same capital

A fair historical comparison needs three common denominators. All selected series start on the same calendar day, every value is converted to euros and every series starts with the same amount. The difference in ending value then comes from price development rather than different units.

Portfolio value(t) = starting capital × value(t) / value(start)The backtester buys fractional units on paper. It does not simulate a real account, fees or taxes.

The starting value is the last real observation on or before the selected date. This matters on weekends and holidays. If a period starts on Sunday, a listed security normally uses Friday's close, while Bitcoin can have a real weekend value.


03

What is actually being compared?

Names such as “S&P 500” or “gold” sound more precise than they are. A price index, ETF, spot price and total-return index can differ materially. The project therefore fixes one concrete series for each asset class and shows that definition in the dashboard.

Asset classSeries in the backtesterCurrency pathWhat to note
S&P 500FRED SP500, daily closing level of the price indexUSD value divided by the ECB USD per EUR rateThe price index excludes dividends. It is not the total return of an accumulating S&P 500 fund.
BitcoinTen-year BTC/USD history from minute values, live BTC/EUR through CoinGeckoHistory converted with ECB rates, live values already in EURThe source changes on 3 August 2026. The methodology discloses that change.
GoldSPDR Gold Shares (GLD), historical archive and live Alpha Vantage dataUSD close divided by the ECB USD per EUR rateGLD represents gold bullion less fund costs. Its share price is not pure spot gold.

This definition makes the result reproducible, but it also limits its meaning. Someone expecting a total-return index, a different gold ETC or one particular Bitcoin venue is comparing a different series.


04

From provider to browser chart

The site does not call foreign APIs on every page view. A daily process retrieves new values, checks them and stores them in MySQL. The public backtest then reads from this internal history. That keeps results reproducible and prevents a short provider outage from breaking the entire page.

  1. Retrieve: FRED supplies SP500, Alpha Vantage the GLD close, CoinGecko the live Bitcoin value and the ECB the USD/EUR reference rate.
  2. Normalise: Each data point receives a date, raw value, raw currency, source revision and quality status.
  3. Convert to euros: USD series are divided by the same day's ECB “USD per EUR” rate. If no new ECB rate exists on a trading day, the last published reference rate is used.
  4. Validate: Invalid values, duplicate days, wrong currencies and unexpected jumps are rejected or flagged.
  5. Store: An upsert adds new days and marks later changes as revisions. Locks prevent parallel writes.
  6. Calculate: The API builds a shared calendar axis, normalises starting capital and calculates the requested metrics.
Database traceability: Raw value, raw currency, applied exchange rate and FX date remain next to the euro value. A later review can reconstruct one day's calculation.

05

A smooth calendar axis does not need invented prices

Exchanges close at weekends and holidays; Bitcoin trades continuously. Showing only real points would give the three series different date axes. For display, the backtester carries the last known value forward. The database does not create a synthetic price.

That distinction is required for the risk metrics. Carried-forward days do not count as extra days with 0% return. Otherwise S&P 500 and gold volatility would look lower simply because markets close at weekends. Best day, worst day, positive days and Sharpe use only changes between real observations.

Reading detail: Friday-to-Monday is one observed daily change. It may include the whole weekend; the backtester does not invent separate Saturday and Sunday returns.

06

What ending value, return and CAGR say

Ending value translates price movement into an amount. €10,000 becomes €14,000 if the series rises 40% over the selected period. Profit or loss is the same information as a euro difference; both depend on the starting capital.

Total return = ending value / starting value − 1Total return describes the change from beginning to end. It says nothing about how smooth the path was.

CAGR converts the total change into a constant annual rate. The backtester uses the actual calendar days divided by 365.2425. Over short periods, that annualisation can look extreme. A strong week is not a reliable annual return.

CAGR = (ending value / starting value)1 / years − 1CAGR is a smoothed rate. It does not claim that wealth grew at that rate every single year.

07

Volatility, drawdown, Sharpe and Calmar

Risk has several dimensions. Volatility measures the dispersion of observed daily returns; maximum drawdown measures the deepest fall from a previous high. Sharpe and Calmar relate return to different risk measures. No single number replaces the others.

Annualised volatility

Sample standard deviation of real daily returns, annualised with 252 periods for S&P 500 and gold and 365.2425 for Bitcoin.

σyear = σday × √N

Maximum drawdown

The largest percentage fall from a previous high to a later low. A −50% drawdown needs a subsequent +100% to recover.

Drawdown(t) = value(t) / previous high − 1

Sharpe ratio (0%)

Average daily return divided by its standard deviation and annualised. The backtester deliberately uses a 0% risk-free rate.

Sharpe = average daily return / σday × √N

Calmar ratio

CAGR divided by the absolute maximum drawdown. No value is shown when there is no drawdown.

Calmar = CAGR / |maximum drawdown|

Best and worst day

The largest positive and negative change between two real observations, each with its date.

r(t) = value(t) / value(t−1) − 1

Positive days

Share of observed daily changes above 0%. A high share can coexist with small gains and a few large losses, so read it with worst day and drawdown.

positive changes / all changes

The dashboard presents Sharpe and Calmar without a quality badge. “Higher” is usually preferable within the same method, but short periods, outliers and return distributions can move both metrics substantially.


08

A higher return is not enough

Suppose series A has 12% CAGR, 16% volatility and a −25% maximum drawdown. Series B has 18% CAGR, 60% volatility and a −70% drawdown. B was more profitable in hindsight, but it required much more patience, risk tolerance and confidence in a recovery.

Sharpe asks how much average return was earned for ongoing volatility. Calmar focuses more on the worst historical fall. Best and worst day show whether isolated jumps carry a large part of the result, while positive days show how often the path moved up.

  • Ending value and total return answer what happened in the selected window.
  • CAGR makes different lengths broadly comparable.
  • Volatility describes the ongoing movement of real daily changes.
  • Maximum drawdown is the hardest historical stress test inside the window.
  • Sharpe and Calmar combine return with two different risk perspectives.
Practical order: Check period and series first, then drawdown and volatility, followed by return and ratios. The largest ending value should not decide the impression by itself.

09

What the backtest deliberately leaves out

The calculator answers a defined historical question. Several factors are missing once you turn it into a real investment strategy. Some would lower the result; others would change the comparison basis.

  • No costs or taxes: Trading costs, spreads, account fees, taxes and personal allowances are excluded.
  • No inflation: Values are nominal. A euro at the end does not have the same purchasing power as a euro at the start.
  • No S&P 500 dividends: FRED SP500 is a price index; distributions and reinvestment are excluded.
  • Gold through GLD: The listed gold proxy includes fund costs and deviations from spot.
  • Lump sum, not savings plan: Deposits, withdrawals and rebalancing are not simulated.
  • No portfolio effect: Assets run separately; correlations and the benefit of mixing are not calculated.
  • Currency effect remains: A euro investor experiences both USD price movement and USD/EUR movement. That is intentional.
  • Historical window: A different start date can materially change ranking, drawdown and risk-adjusted metrics.

Even a ten-year window is only one slice of history. The backtester therefore offers several fixed periods and a custom range.


10

How to get useful answers from the comparison

  1. Start with “Max”: The comparison begins at the latest common data start and avoids mismatched histories.
  2. Change the windows: Compare one, three, five and ten years. A ranking that survives every window is more informative than one victory.
  3. Check the data date: The last real value shows whether a weekend, holiday or failed request was carried forward.
  4. Read risk before return: Maximum drawdown, worst day and volatility show what happened between start and finish.
  5. Compare like with like: This project's Sharpe uses a 0% risk-free rate. A fund report may use a different definition.
  6. Ask the next question: Do you need reinvested dividends, real inflation, savings contributions or a mixed portfolio? That requires a larger model.

Use the calculator to test assumptions. It quickly shows whether “asset X was clearly better” is true only for one favourable start point or also survives other windows.


Test a custom comparison

Select S&P 500, Bitcoin and gold, change starting capital and period, and read return and risk together.


11

Where the data and methodology come from

The dashboard methodology names the source, symbol, currency and data date for every series. These primary sources document the endpoints and definitions used. Written permissions for imported historical files are stored separately from the web root.


Read next

Related articles