Methodology

🔊 Listen to audio

Backtested Strategies (BTS) publishes backtests using a standardized methodology that is realistic, internally consistent, and reproducible. The goal is not to produce the most flattering curve. It is to produce results that hold up under scrutiny and reflect how an actual trading account behaves.

Our methodology makes key choices explicit: when signals are evaluated and when trades execute, how costs and slippage are modeled, how dividends and corporate actions are handled, how universes are defined on a point-in-time basis to avoid survivorship bias, and how constraints such as whole-share sizing and short-selling collateral are treated. Where a strategy’s published rules specify different settings (for example, trade-on-close execution), the strategy entry states that exception.

The result is a backtest framework that is intentionally conservative in the areas most likely to inflate results in casual backtests: execution assumptions, transaction frictions, and point-in-time data integrity. This page describes the default BTS settings used unless a strategy explicitly overrides them, so readers can understand exactly what a backtest represents and compare strategies on a consistent basis.

Each strategy specifies what it trades (tickers or universe), its rebalance schedule, and whether it executes at the next open or at the close (trade-on-close).

Data and definitions

Data is sourced from Norgate Data, platinum level, end-of-day daily bars (Open, High, Low, Close, Volume; OHLCV).

Adjustments and settings:

  • No date padding.
  • Adjusted OHLCV includes capital reconstructions and special distributions, and excludes ordinary cash dividends.
  • Ordinary cash dividends are added to portfolio cash on the ex-dividend date for long positions and subtracted for short positions, based on shares held at the prior close. Opening a position on the ex-dividend date does not receive or owe that dividend. Closing a position on the ex-dividend date still receives or owes it if the position was held at the prior close. Ordinary cash dividends are retained as cash and deployed only when the strategy trades (entry, exit, rebalance, or resize).
  • No synthetic “artificial future bar.”

Calendar conventions:

  • “Trading day” is any session with an end-of-day bar for the instrument.
  • “Trade day” is a trading day where the strategy executes one or more orders.
  • “Week-end” is the last trading day of the calendar week.
  • “Month-end” is the last trading day of the calendar month.
  • “Year-end” is the last trading day of the calendar year.

Indicators and eligibility:

  • Indicators are computed from the adjusted OHLCV series described above.
  • Signals are not generated until required inputs are defined. Cross-sectional ranks or filters require all necessary fields (price, volume, sector, etc.) to be defined on the rebalance date. For portfolio strategies, results begin on the first decision bar where all required traded instruments have valid data and all required indicators are defined for the full portfolio.

Universes and proxies

Tickers used for trading are stated in the strategy entry.

Strategies either specify their own universe, or explicitly select this standardized BTS definition of U.S. liquid common stocks (rule-based and not tied to a named index):

  • Listings include NYSE, Nasdaq, and NYSE American.
  • Instrument type is U.S. common stocks, excluding exchange-traded funds (ETFs), exchange-traded notes (ETNs), closed-end funds, preferred shares, rights, warrants, trust or partnership units, and other non-common equity types using Norgate metadata where available.
  • Filters at the rebalance date drop the lowest-priced decile by Close. Among the remaining names, the top 1,000 are selected by ADV$63 (63-trading-day average of Close × Volume, inclusive of the rebalance date). Cutoff ties are resolved alphabetically by ticker.

Rule-defined universes:

  • If a universe is defined by rules (rather than a constituent list), it is determined point-in-time at each rebalance date and held constant until the next rebalance unless a strategy requires more frequent updates. This includes the standardized BTS universe definition above.

Index membership universes and survivorship bias:

  • If a universe is defined by membership in a named index or list, point-in-time historical constituents are used to avoid survivorship bias. Entries require membership as of the rebalance date. Positions are not forced to exit between rebalances solely due to membership changes. Tradability filters are then applied at the rebalance date by excluding the lowest-priced decile within index members using the closing price and the least-liquid decile within index members using ADV$63. Cutoff ties are resolved alphabetically by ticker.
  • If index weights are required, point-in-time weights are used when available. Otherwise, a clearly labeled proxy approach is used, or results are not reported for that strategy.

Proxies:

  • When a strategy references an index or asset class, it is implemented using a liquid, tradable instrument (typically an ETF proxy). If the proxy has limited history, the backtest begins at the first available end-of-day bar for that proxy.

Execution and position lifecycle

Signals are evaluated at Close(t). By default, trades execute at Open(t+1). Some strategies explicitly execute at Close(t) (trade-on-close; market-on-close assumption).

Missing bars and price fallback:

  • If the planned execution bar does not exist (no end-of-day bar), the order executes on the next session with an end-of-day bar for that instrument, using the signal generated on the original decision bar.
  • If the execution bar exists but Open is undefined or non-positive, the prior bar’s Close is used as the execution price.
  • If no subsequent bar exists for the instrument (delisting or data termination), the position is liquidated at the last available Close.

End-of-range handling:

  • No new positions are opened on the last in-range trading day.
  • Regardless of a strategy’s normal execution convention, any remaining positions are liquidated at the last in-range trading day Close and are not held past the analysis range.

Costs, fills, sizing, and cash

Execution pricing:

  • Orders are modeled as marketable fills at the reference execution price (the day’s Open or Close), adjusted for spread-aware slippage and then adverse U.S. tick (minimum price increment) rounding. Commissions are applied separately as cash debits.
  • For price ≥ $1.00, tick is $0.01. For price < $1.00, tick is $0.0001.
  • Buy and cover orders round up to the next valid tick, and sell and short orders round down to the prior valid tick.
  • Modeled execution prices are not clamped to the day’s High–Low range to avoid artificially reducing modeled costs on narrow-range days and to apply costs consistently across trades.

Costs:

  • The cost model uses commission and spread-aware slippage.
  • Commission is 1 basis point per side on notional traded.
  • On trade days, slippage is applied as 0.5 × the Corwin–Schultz bid–ask spread estimate (as a fraction of price) per side. Slippage is applied adversely: buy and cover increase the modeled fill price, and sell and short decrease it.
  • The Corwin–Schultz spread estimate is smoothed using a 21-trading-day rolling median applied directly to the daily Corwin–Schultz spread series and lagged by one trading day. After smoothing, undefined values are treated as 0, negative values are floored to 0, and the spread used for pricing is capped at 0.20.
  • For spread alignment, execution on bar t uses the smoothed spread estimate from bar t−1. If Open on bar t is missing and the prior Close supplies the execution price, the spread aligns to the price-supplying bar and uses bar t−2. If the aligned spread estimate is missing, the most recent prior valid aligned spread for that instrument is used, and 0 is used only before the first valid aligned spread exists.

Sizing and cash:

  • Strategy positions are sized in whole shares, and any residual cash remains in cash.
  • Target notionals are computed using portfolio equity measured immediately before the modeled fills on the execution bar. For trade-on-close execution, equity is measured at Close(t) before applying Close(t) fills.
  • For target-notional sizing, shares are rounded down to the largest whole-share position whose notional at the modeled fill price does not exceed the target. The long or short direction is applied after rounding.
  • Cash earns 0% by default. If a strategy explicitly allocates to a cash or Treasury instrument, results begin when that instrument’s data begins.

Taxes, regulatory or clearing fees, and margin interest are not modeled.

Portfolio constraints and short selling

Portfolio equity is marked to market at each day’s close as cash plus open positions, with long market value positive and short market value negative.

For short-selling portfolio backtests, a simplified U.S. Regulation T collateral rule is applied. Short sale proceeds are sequestered as collateral, and an additional 50% of short market value must be supported by equity. If targets exceed this constraint on a trade day, long and short targets are scaled proportionally using a single common factor.

A borrow fee of 1.0% per annum is accrued on remaining absolute short market value from Close(t) to Close(t+1), using calendar-day gaps on a 365-day basis. Variable borrow rates and hard-to-borrow constraints are not modeled, and borrow is assumed available under this simplified model.

Backtest window, reporting, and benchmark

Backtests are run on all available history for the instrument(s) under the stated data constraints. Reported performance metrics are computed over the subrange from the first full calendar year through the last full calendar year, excluding partial first and last years. Trade-level win rate is computed per closed position using total-return P&L, including ordinary dividends and, when applicable, borrow fees.

The standard benchmark is buy-and-hold, typically SPY. It buys at the open of the first in-range trading day and sells at the close of the last in-range trading day. Benchmark results are reported as total return with dividends reinvested. Dividend reinvestment is an accounting convention (fractional-share-equivalent) with no additional trading costs, while all other benchmark executions use the same default costs and execution conventions.

Some strategies use a portfolio benchmark, such as an equal-weight ETF basket, with a stated rebalance schedule. Those scheduled rebalance executions use the same benchmark cost and execution conventions. A portfolio benchmark begins on the first date when all required benchmark instruments have valid data and the benchmark can be constructed according to its stated rules. A mechanics-matched buy-and-hold benchmark may also be reported in parallel for comparison, using whole-share sizing with dividends retained as cash.

Clarifying notes

  • Execution timing: By default, strategies execute at the next open after a Close(t) signal. Some strategies explicitly execute at Close(t) (trade-on-close; market-on-close assumption). The strategy entry states which applies.
  • Missing executions: If the planned execution day has no end-of-day bar for the instrument, execution occurs on the next session with an end-of-day bar. If the required execution price is missing, the prior Close is used as the execution price.
  • Adjusted prices: Prices are adjusted for capital reconstructions and special distributions to keep the price series continuous. Ordinary cash dividends are handled separately as cashflows, as described above.
  • Ordinary dividends: Ordinary cash dividends are credited to long positions and debited to short positions on the ex-dividend date, based on shares held at the prior close. Opening a position on the ex-dividend date does not receive or owe that dividend; closing a position on the ex-dividend date still receives or owes it if the position was held at the prior close. Ordinary cash dividends are retained as cash and deployed only when the strategy trades.
  • Win rate: Trade-level win rate is computed per closed position using total-return P&L, including ordinary dividend cashflows (and, for short positions, borrow fees) while the position is held.
  • Benchmark total return vs whole-share trading: Benchmarks are reported using the standard total return convention (dividends reinvested) for comparability. Strategy trades are modeled in whole shares, and any residual cash remains in cash.
  • Capacity and position sizing: Strategies may include position limits, such as a maximum number of holdings. Existing holdings are not forced out solely to admit new signals; new positions are opened only when capacity is available. When more candidates qualify than available slots on a trade day, the strategy’s stated selection rule is applied. If the strategy doesn’t define one, candidates are selected deterministically.
  • Index membership changes: For index-membership universes, entries require membership as of the rebalance date, but positions are not forced to exit between rebalances solely due to membership changes.
  • Backtest start dates: Backtests begin only when the strategy or benchmark can be constructed and traded under its stated rules, including valid data for all required instruments and defined indicators. When a strategy trades a proxy instrument (typically an ETF) with limited history, the backtest begins at the first available end-of-day bar for that instrument.
  • Cash return: Cash earns 0% by default to preserve maximum history and avoid proxy start-date limits. If a strategy explicitly allocates to a cash or Treasury instrument, results begin when that instrument’s data begins.
  • How to interpret results: BTS does not model market impact or partial fills. Results are most applicable at modest capital levels where trading at the modeled prices and liquidity assumptions is feasible. Short-selling results assume borrow is available and use the stated borrow fee model.