What a backtest simulates
A backtest replays a strategy's rules over past prices as if you had followed them. This page lists what the simulation assumes, so you can judge how much to trust a result.
Timing#
On each rebalance date, Tactfolio reads the rules using that day's closing prices and trades at the same close. No rule can see a price from a later day.
Real trading can't quite do this: you can't know the exact closing price until the market has closed. AI assistants connected through MCP can ask for fills at the next day's open instead, to see how sensitive a strategy is to that gap.
Prices and data#
- Prices are daily and adjusted for splits and dividends, so returns include dividends as if they were reinvested.
- A backtest can only start once every ticker it uses has price history. The results show the dates actually covered, which can be shorter than the window you asked for.
- Missing data stops the backtest with an error instead of being filled in with a made-up return.
- The ticker list contains funds and stocks that trade today. Companies that failed or were delisted aren't in it, which flatters any backtest that picks stocks (see survivorship).
Simulated history#
Some funds are young. The Simulated history option in the Window menu extends a young fund backwards with modelled values from before its first real price, so a strategy can be tested over a longer period. For example, GLD's real prices begin in 2004 and its simulated history reaches back further.
Simulated values are estimates, not prices anyone could have traded. The backtest switches to real prices from the fund's first trading day and lists which tickers used simulated history. Treat results that depend on it with extra care.
Costs#
- Every trade pays slippage, 5 basis points (0.05%) of the amount traded by default. You can change it in the strategy settings.
- Commissions, taxes, and fund fees beyond those already in the fund's price aren't modelled.
- Uninvested cash earns nothing. To earn a short-term Treasury return, hold a cash-like fund such as BIL.
Benchmarks#
The strategy is compared with a benchmark over exactly the same dates. The benchmark is a ticker, SPY by default, or another saved strategy. The starter patterns use QQQ, because it's what their growth side could have held instead.
Metrics#
| Metric | Meaning |
|---|---|
| Total return | Growth over the whole backtest. |
| CAGR | Average yearly growth, compounded. Shown only for backtests of a year or more. |
| Volatility | How much daily returns swing, scaled to a year. |
| Max drawdown | The biggest drop from a peak, shown as a negative number. Closer to zero is better. |
| Sharpe | Average yearly return divided by volatility. Tactfolio doesn't subtract a risk-free interest rate, so compare Sharpe numbers inside Tactfolio. |
| Calmar | CAGR divided by the size of the max drawdown. |
| Turnover | How much of the portfolio is traded per year, one way. 5.1 means 510% a year. |
Reading a backtest explains how to use these numbers together.