Backtest options

Trade

Long The complete portfolio goes long on equities.
Short The complete portfolio goes short on equities.

Number of stocks

It defines the maximum number of stocks that will be selected in each period.

Begin year

The year of the first observation.

End year

The year of the last observation. Up to now keeps the last period running until today.

Max per sector

The maximum number of stocks in portfolio per sector.

Rebalance timing

Defines the moments of the observations.

The backtest uses annual results. An observation at start of Q[2-4] 2015 uses the annual results of 2014. An observation at start of Q1 2015 uses the annual results of 2013. Using the annual results of 2015 would be a look-ahead bias, because they were not yet known at that time. Of course, this only applies to the backtest. You can invest at any time using the trailing values. But observations at start Q2 are the most reliable.

Rebalance strategy

Defines the behavior at the each moment of rebalancing. It uses mostly technical indicators that can be used to automatically decide not to sell some stocks at the end of a period and keep them for the next period. For instance "Keep 20% from top" means that stocks that have a period price ending above 20% from the period top are not being sold and kept for the next backtest period. So all stocks with price at the end of the period below 20% from the top of the period are sold, and replaced by new selected ones.

Full rebalance All stocks bought at previous observation are sold. The top list of the screen run at the moment of observation is bought.
Keep winners All stocks bought at previous observation are sold, except those that had a positive return on the last backtest period. The top list of the screen run at the moment of observation is bought to complete the portfolio.
Keep condition All stocks bought at previous observation are sold, except those that meet the condition. The top list of the screen run at the moment of observation is bought to complete the portfolio.
Keep x% from top All stocks bought at previous observation are sold, except those with price higher than x% from the top of the last backtest period. The top list of the screen run at the moment of observation is bought to complete the portfolio.
Accumulate All stocks in the portfolio are kept. The top list of the screen run at the moment of observation are bought and added to the existing positions, or used to start a new position if the portfolio was incomplete.
Keep matching criteria excl. valuation A stock is kept if the non-valuation metric conditions of the screen still apply. The following 4 metric groups are considered valuation metrics:
  • Valuation - Intrinsic Value
  • Valuation - yield on Price
  • Valuation - yield on EV
  • Valuation - Assets

Sell strategy

The sell strategy (early sell) is used to define profit taking or a stop loss. It defines the conditions under which stocks are sold during the last period. Only the daily open prices are used to decide a sell. If the stock is sold, the position is not taken by a new position until the new observation.

Keep full period No stocks are sold during the last period.
Sell at target Stocks are sold when the price target is met.
Sell at x% profit Stocks are sold when the price increased more than x% in the period. The backtester identifies if a stock's period-high breached your set sell percentage. If triggered, the exit is recorded at exactly the sell percentage.
Pyramid sell at a-b-c-d% profit If the price return withing the period reaches the next level of the pyramid, 25% of the position is sold at that price level.
Stop loss x% Stocks are sold when the price decreased more than x% in the period. The backtester identifies if a stock's period-low breached your set stop-loss percentage. If triggered, the exit is recorded at exactly the stop-loss price. When a stop-loss is triggered, the actual execution price may differ from your exact stop price due to market gaps, low liquidity, or rapid price movements. To make your backtest more realistic, you can define a Slippage % specifically for stop-loss orders. This percentage acts as an estimated penalty applied only when a position is closed via a stop-loss trigger.

Note: This tool is designed to evaluate the effectiveness of fundamental metrics over long horizons. It does not simulate intraday price gaps or slippage (e.g., a stock opening below your stop loss). Users who wish to model a more conservative outcome are encouraged to adjust their stop-loss percentages or factor a small margin of error into the final returns.

Position sizes

Defines the size of the stock positions. It is used to decide the size of the stock positions and what needs to be done if not enough stocks were found at the start of the period.

With excess cash in bonds, at 0% or in the benchmark, a period in which the screen finds no stock at all is not left out: it is fully invested in bonds, in cash or in the benchmark. With maximum positions there is nothing to fill the portfolio with.

Equally weighted. Maximum positions. At any point in time, all positions in the portfolio have equal weight. It will take a position of total capital ÷ number of selected stocks. If the screen does not return enough stocks, the position of the stocks is increased to obtain full investment.
Equally weighted. Excess cash in bonds. At any point in time, all stock positions in the portfolio have equal weight. It will take a position of total capital ÷ Maximum number of stocks in the selected stocks. If the screen does not return enough stocks, the excess cash is used to buy 6 month US bonds.
Equally weighted. Excess cash 0%. At any point in time, all stock positions in the portfolio have equal weight. It will take a position of total capital ÷ Maximum number of stocks in the selected stocks. If the screen does not return enough stocks, the excess cash is considered to give no return.
Equally weighted. Excess cash in the benchmark. At any point in time, all stock positions in the portfolio have equal weight. It will take a position of total capital ÷ Maximum number of stocks in the selected stocks. If the screen does not return enough stocks, the excess cash is invested in the benchmark: the first quote under Compare to.
Volatility weighted. Maximum positions. Volatility weighted will take larger positions in less volatile stocks, trying to make all positions equal risk. The relative position = 1 / min(0.05, max(0.005, Price.SD 60)). If the screen does not return enough stocks, the position of the stocks is increased to obtain full investment.
Volatility weighted. Excess cash in bonds. Volatility weighted will take larger positions in less volatile stocks, trying to make all positions equal risk. The relative position = 1 / min(0.05, max(0.005, Price.SD 60)). If the screen does not return enough stocks, the excess cash is used to buy 6 month US bonds.
Volatility weighted. Excess cash 0%. Volatility weighted will take larger positions in less volatile stocks, trying to make all positions equal risk. The relative position = 1 / min(0.05, max(0.005, Price.SD 60)). If the screen does not return enough stocks, the excess cash is considered to give no return.
Volatility weighted. Excess cash in the benchmark. Volatility weighted will take larger positions in less volatile stocks, trying to make all positions equal risk. The relative position = 1 / min(0.05, max(0.005, Price.SD 60)). If the screen does not return enough stocks, the excess cash is invested in the benchmark: the first quote under Compare to.
Expectation weighted. Maximum positions. The position of a stock depends on the expected one year price return: The relative position = min(0.2, max(0.02, Price.expected return)). If the screen does not return enough stocks, the position of the stocks is increased to obtain full investment.
Expectation weighted. Excess cash in bonds. The position of a stock depends on the expected one year price return: The relative position = min(0.2, max(0.02, Price.expected return). If the screen does not return enough stocks, the excess cash is used to buy 6 month US bonds.
Expectation weighted. Excess cash 0%. The position of a stock depends on the expected one year price return: The relative position = min(0.2, max(0.02, Price.expected return). If the screen does not return enough stocks, the excess cash is considered to give no return.
Expectation weighted. Excess cash in the benchmark. The position of a stock depends on the expected one year price return: The relative position = min(0.2, max(0.02, Price.expected return)). If the screen does not return enough stocks, the excess cash is invested in the benchmark: the first quote under Compare to.

Currency

By default every stock earns its return in its own price currency. When a currency is chosen, each return is converted to that currency with the exchange rates at the start and the end of the period.

Compare to

It is also possible to compare your backtest result to a list of quotes (comma separated list of symbols), typically indexes or ETFs. indexes are written without ^. A subset of the available indexes can be selected using the assistant button and can be found here. Example: use GSPC,STOXX,IWRD.L,AW01.FGI for comparison with S&P 500, Europe Stoxx 600, iShares MSCI World ETF and FTSE All World Index.

Without a list, the backtest compares to the S&P 500 (total return). The first quote of the list is the benchmark: with excess cash in the benchmark, every open position earns what this quote earned over the same period. When a currency is chosen, that return is converted to it, like the returns of the stocks. If the benchmark has no price for a period, the excess cash of that period gives no return. The comparison figures themselves stay in the currency of the quote.

Backtest stats

Click the yearly return next to a screen to open its backtest report. Below the stats and the growth chart, the report shows the metrics per period and the stocks bought at each observation.

Backtest report in the new interface: return stats and the growth of the portfolio against the S&P 500
Period return The comprehensive gain or loss experienced by an investment over a specific period of the backtest. This encompasses both the capital appreciation (price change) and dividends.
Total return The comprehensive gain or loss experienced by an investment over the total period of the backtest. This encompasses both the capital appreciation (price change) and dividends.
Annualized return Represents the average annual compounded return on an investment, accounting for both price change and dividends. It is expressed as a geometric mean of the period returns to accurately reflect the compounding effect.
Period SD Reliability: Reflects the variability or dispersion of returns among the different components (stocks) of a portfolio within a single period. A higher value indicates a wide variation in performance amongst the individual assets in that period, suggesting a diverse range of returns within the portfolio components.
Avg standard deviation Reliability: The mean of all the standard deviations from each period. This gives a sense of the general variability of stock returns across all the considered periods.
Portfolio standard deviation Volatility: The standard deviation of returns across multiple periods, indicating the total risk or volatility of a portfolio over time. The Geometric Standard Deviation (GSD) is specifically used to measure the spread of yearly growth rates.
Sharpe ratio A metric that gauges risk-adjusted performance by dividing the excess return (return over the risk-free rate) by the total risk (portfolio's standard deviation). A higher Sharpe ratio is indicative of better performance on a risk-adjusted basis.
Sortino ratio Similar to the Sharpe ratio but only considers the downside or negative volatility. This differentiates between harmful volatility and total volatility. Higher values indicate better risk-adjusted performance, especially for those concerned with downside risk.
Top 12 Represents the cumulative return, considering both price appreciation and dividends, of the top 12 stocks selected based on specific screening criteria.
Bottom 12 Represents the cumulative return, considering both price appreciation and dividends, of the bottom 12 of selected stocks selected based on specific screening criteria.
Without outliers The total return after removing the extreme values (outliers) which can distort the average or general return. By excluding these values, one can get a better sense of the typical performance.
Worst year The lowest period return of the backtest.
Win rate The share of the investments with a positive period return.
Investments The number of stock positions taken over all completed periods: a stock bought in five periods counts five times. The current period is not counted, and neither is excess cash held in bonds, cash or the benchmark.
Holdings per buy year The stocks bought at each observation with their period return. Untick a period to leave it out of the totals; periods the backtest could not fill well enough in the first years are left out by default.
Monte Carlo variant 1, 2, 3, 4 (classic interface) Utilizes the Monte Carlo simulation technique, each variant representing a different random subset of stocks from the backtest results. These random subsets help gauge the potential variability and range of total returns due to different stock combinations, taking into account both price appreciation and dividends.