An R-multiple is a trade's profit or loss expressed as a multiple of the dollar amount originally risked on that trade, so a $600 gain on a $200 risk is a 3R result.
R-multiples exist to normalize outcomes across trades of different sizes and instruments. A $600 gain means nothing on its own until you know how much was risked to make it: $600 on $200 of risk (3R) is a far better trade than $600 on $3,000 of risk (0.2R), even though the dollar profit is identical.
The unit is fixed at entry. Dollar risk equals the distance from entry to stop, multiplied by position size, and every later price move is measured against that original number, not against the current price. A trade that runs to 5R and gets trimmed back to 2R before exit still books as a 2R result; the denominator never moves once the position is open.
Because the unit is fixed, R-multiples are the currency a trading journal should be kept in rather than dollars or percentages, since a journal in R lets every trade, regardless of account size or instrument, be compared and averaged on the same scale.
ExampleA trader buys 100 shares at $50 with a stop at $48, risking $200. The position is sold at $56 for a $600 gain, a +3R trade, regardless of the fact the entry itself tied up $5,000 of capital.
Common misconceptionPeople confuse R with percentage return on the capital deployed. A +3R trade risking 1% of an account is roughly a 3% account gain, not a 300% one; R measures multiples of risk taken, not multiples of capital committed.
Go deeperR-multiples and expectancy math
See alsoExpectancy, Position sizing, Stop loss
Expectancy is the average R-multiple a trading system produces per trade, calculated from its historical win rate and the average size of its wins versus its losses.
Expectancy answers the only question that ultimately matters for a trading system: run enough times, what does the average trade actually pay? It combines how often a system wins with how large the wins are relative to the losses, into one number in R.
Expectancy = (win rate x average win R) - (loss rate x average loss R)
The result is that win rate alone says almost nothing. A system winning 40% of the time with average winners at 2.5R and average losers at 1R has an expectancy of (0.40 x 2.5) - (0.60 x 1) = 1.0 - 0.6 = 0.4R per trade, positive despite losing on most trades.
Expectancy calculated from a small sample is close to meaningless; a handful of trades can produce any average by chance. It only becomes trustworthy over a large enough sample, ideally validated the way walk-forward testing validates it, out of sample rather than fit to the very data used to compute it.
ExampleA system with a 40% win rate, 2.5R average winners, and 1R average losers has an expectancy of +0.4R per trade: (0.4 x 2.5) minus (0.6 x 1).
Common misconceptionA high win rate gets mistaken for a good system. A strategy that wins 80% of the time but lets its losers run three times larger than its winners can still carry negative expectancy: (0.8 x 1) - (0.2 x 3) = 0.2R only if winners and losers are both 1R; the actual arithmetic depends entirely on the size ratio, not the win rate alone.
Go deeperR-multiples and expectancy math
See alsoR-multiple, Walk-forward testing, Kelly criterion
Drawdown is the percentage decline from an account's highest recorded value to its lowest point before a new peak is reached.
Drawdown is measured peak to trough, not start to trough. An account that runs from $50,000 to $120,000 and then falls to $90,000 has a 25% drawdown from its $120,000 peak, even though it is still well above where it started.
Recovery math is asymmetric, and this is the part intuition gets wrong. Losing 50% of an account requires a 100% gain just to get back to even, not a 50% gain, because the loss shrank the base the recovery has to be calculated from.
Gain needed to recover = drawdown / (1 - drawdown)
That formula is why deep drawdowns are so dangerous: a 20% drawdown needs 25% back, a 50% drawdown needs 100% back, and an 80% drawdown needs 400% back. The relationship is not linear, it accelerates, which is the entire argument for keeping position sizing conservative enough that a losing streak never reaches the steep part of that curve.
ExampleAn account falls from $100,000 to $70,000, a 30% drawdown. Recovering to $100,000 requires a 42.9% gain from $70,000 (30 / 70), not a 30% gain.
Common misconceptionPeople assume the recovery gain equals the drawdown percentage. It is always larger, and the gap widens fast enough that a drawdown deep enough to feel merely painful can require a gain most strategies never come close to producing.
Go deeperDrawdown recovery math
See alsoRisk of ruin, Position sizing, Expectancy
Position sizing is the method for deciding how many shares or contracts to trade on a setup, calculated from the dollar amount an account is willing to risk and the distance to the stop loss.
Position sizing and stop placement are the same decision expressed two ways. Once a stop distance is set, the dollar risk per share is fixed, and the size that keeps total risk within budget follows directly from it.
Shares = (account equity x risk % per trade) / (entry price - stop price)
Fixed-fractional sizing, risking a constant percentage of current equity on every trade rather than a fixed dollar amount, is the common approach because it compounds sizing down automatically during a drawdown and up during a winning stretch, without any manual adjustment.
The risk percentage chosen per trade interacts directly with risk of ruin: a positive-expectancy system sized to risk too large a fraction per trade can still carry meaningful ruin risk, because a losing streak, which will eventually happen even in a good system, removes an outsized share of capital at high risk percentages.
ExampleA $50,000 account risking 1% ($500) on a stock bought at $40 with a stop at $38 (a $2 per-share risk) can buy 250 shares: $500 divided by $2.
Common misconceptionPeople size a position by how much they want to make rather than how much they are willing to lose. Sizing should start from the stop distance and the risk budget; starting from a profit target produces a position size with no connection to the actual risk being taken.
Go deeperPosition sizing per trade
See alsoStop loss, Risk of ruin, R-multiple
A stop loss is a predetermined price at which a losing trade is closed, set before entry so the maximum loss on the position is known in advance.
A stop order sits resting on the broker's books and triggers when price trades through the level. A stop-market order guarantees execution but not the exact fill price, since a fast-moving or gapping market can fill it meaningfully worse than the stop level; a stop-limit order guarantees the price but can fail to fill at all if price gaps straight through it.
Stops are placed relative to market structure, typically just beyond a recent swing low, a base's low, or a moving average, rather than at an arbitrary percentage below entry. A level with no structural meaning gets triggered by ordinary noise as easily as by a genuine change in the trade's thesis.
Stop distance and position sizing are the same decision: the gap between entry and stop sets the dollar risk per share, which is the number the position-size calculation is built from.
ExampleA stock bought at $100 with structural support at $95 gets a stop at $94.50, just under support; that $5.50 per-share risk is the figure that then determines position size for a given dollar risk budget.
Common misconceptionMoving a stop further away once a trade is already losing, to 'give it room', is not stop management, it abandons the original risk plan; the eventual loss on the trade is no longer measured against a known, pre-committed R.
Go deeperStop-loss placement
See alsoPosition sizing, R-multiple, Bracket order
VCP (volatility contraction pattern)
#
A volatility contraction pattern (VCP) is a base-building chart pattern in which a stock's pullbacks get progressively smaller and lower-volume, indicating that sellers are being absorbed before a potential breakout.
The pattern was popularized by trader Mark Minervini, built on the base-pattern research of William O'Neil (cup-with-handle and similar structures). It describes a sequence of contractions within a longer base, for example a 25% pullback, followed by a 15% pullback, followed by an 8% pullback, each one shallower than the last.
The mechanism is supply drying up. Each successive pullback shrinking on falling volume means fewer sellers are willing to sell at each new dip, which tightens the trading range; a low-volume, tight final contraction sitting near the pattern's highs is the classic signature right before a breakout attempt.
Entries are typically taken on a breakout above the pattern's resistance accompanied by a volume increase, with the stop placed below the low of the final, tightest contraction, keeping the dollar risk small relative to the size of move a genuine breakout can produce.
ExampleA stock bases for eight weeks, pulling back 22%, then 12%, then 6%, with volume falling each time, before breaking to new highs on volume 50% above average, the textbook VCP entry signal.
Common misconceptionAny sideways chart gets called a VCP. The defining feature is the sequence of shrinking contractions on shrinking volume, not consolidation by itself; a base that is not tightening over time is just a base, not a VCP.
Go deeperVCP and base patterns
See alsoCANSLIM, Stop loss, Position sizing
CANSLIM is William O'Neil's seven-factor checklist for selecting growth stocks, combining current and annual earnings growth, a new catalyst, supply and demand, relative leadership, institutional backing, and overall market direction.
Each letter stands for one screening factor, meant to be read together rather than as independent pass/fail gates:
- C: Current quarterly earnings per share, typically screened for strong growth against the year-ago quarter.
- A: Annual earnings growth over recent years, showing a sustained trend rather than a single strong quarter.
- N: New: a new product, service, management team, or a stock making a new price high, something that gives the stock a fresh catalyst.
- S: Supply and demand: a relatively small float, heavy buying volume, or buybacks that let the same demand move price further.
- L: Leader or laggard: relative strength against other stocks in the market, favoring sector leaders over followers.
- I: Institutional sponsorship: rising ownership by mutual funds and other institutions, read as a proxy for professional demand.
- M: Market direction: the trend of the major indices, on the premise that most stocks move with the overall market rather than against it.
The framework blends fundamentals (earnings growth, institutional ownership) with technicals (new highs, relative strength, market trend) into a single stock-selection filter, rather than functioning as a standalone signal.
Passing all seven factors screens for a stock's profile, not its outcome, and the framework itself says nothing about position sizing or exit risk, which is why it is commonly paired with a base pattern like VCP to time the actual entry.
ExampleA stock with accelerating quarterly earnings, a new product launch, a thin float, and rising fund ownership, breaking to new highs while the S&P 500 is in an uptrend, is the profile a CANSLIM screen is built to surface.
Common misconceptionCANSLIM is sometimes treated as a rigid checklist where every letter must score perfectly. O'Neil's own framework weighs the factors together and still requires a chart-based entry and an exit discipline on top of it; it is a stock-selection filter, not a complete trading system.
Go deeperVCP and base patterns
See alsoVCP (volatility contraction pattern)
Anchored VWAP is a volume-weighted average price calculated starting from a specific chosen point in time, such as an earnings date or a swing high, rather than resetting at the start of each trading session.
VWAP is the running average price paid across all trades, weighted by how much volume traded at each price. A standard session VWAP resets every day; an anchored VWAP keeps accumulating from a chosen starting bar forward, so it represents the average cost basis of everyone who has traded since that specific point.
Anchored VWAP = sum(typical price x volume) / sum(volume), summed from the anchor bar forward
Anchor point choice is what makes it useful. Anchoring to a meaningful event, an earnings gap, a 52-week low, a major volume day, ties the line to the average price paid by participants since that event, a more relevant reference than a line that resets at midnight regardless of what happened on the chart.
The approach was popularized in retail trading by Brian Shannon, and it is generally used as dynamic support or resistance, and as a read on whether price is holding above or has lost the average cost basis of everyone who has traded since the anchor.
ExampleAnchoring VWAP to the day of an earnings gap up shows whether the stock is still holding above the average price paid by everyone who bought into that gap, a level that often acts as support on the first pullback afterward.
Common misconceptionStandard session VWAP and anchored VWAP get treated as interchangeable. Session VWAP resets daily and mainly serves intraday execution; an anchored VWAP persists across weeks or months and answers a swing-trading question, a different tool built for a different timeframe.
Go deeperAnchored VWAP
See alsoVolume profile, Opening range breakout (ORB)
A volume profile is a horizontal histogram showing how much trading volume occurred at each price level over a chosen period, revealing where the market spent the most and least activity.
A regular volume chart plots volume against time on the horizontal axis. A volume profile instead plots price on the vertical axis and volume traded at each price on the horizontal axis, redrawing an entire session or range as a distribution rather than a timeline.
Two features do most of the work reading one: the Point of Control (POC), the single price level with the most volume traded, and the Value Area, commonly the range around the POC containing about 70% of total volume. Prices the market passed through quickly, with little volume, are low-volume nodes.
High-volume nodes tend to act as support or resistance later, since many participants hold a cost basis there and are more inclined to defend or exit around it; low-volume nodes tend to see price move through them quickly on a revisit, since few positions are anchored there.
ExampleA profile showing heavy volume clustered between $48 and $50, and almost none between $51 and $54, suggests $48-50 is an area price may pause at again, while $51-54 could be crossed quickly if revisited.
Common misconceptionVolume profile is often confused with market profile because both render as price-based histograms. Volume profile weights each price by shares traded; market profile weights each price by time spent there, a genuinely different measurement that can disagree with the volume-based read.
Go deeperVolume profile
See alsoMarket profile, Anchored VWAP
Market profile is a charting method that organizes a trading session into half-hour time brackets and plots how much time price spent at each level, reading time spent as a signal of accepted value rather than measuring volume traded.
The method was developed by J. Peter Steidlmayer at the Chicago Board of Trade in the 1980s, on the premise that time spent at a price, not volume traded there, is what reveals where the market has found, or is finding, agreement on value.
Each half-hour period of the session is assigned a letter, and every price traded during that period gets that letter stacked next to it, called a TPO (time-price-opportunity). The resulting shape, typically wide in the middle and narrower toward the extremes, is read for its own Value Area, Point of Control, and any single-print price excursions where only one period ever traded.
| Volume profile | Market profile |
| Weights each price by shares traded | Weights each price by time spent there (TPO count) |
| Point of Control is the highest-volume price | Point of Control is the price with the most half-hour periods |
| Answers: where did the money actually trade | Answers: where did the market spend time and find value |
ExampleA price briefly touched during six separate half-hour periods builds a tall TPO count, a lot of time spent, even if the actual volume traded there was thin, the opposite of what a volume profile would highlight at that same level.
Common misconceptionMarket profile and volume profile get used as if they were the same chart under a different name. They measure different inputs, time versus volume, and are genuinely separate tools that happen to look visually similar as price-based histograms.
Go deeperVolume and market profile
See alsoVolume profile, Anchored VWAP
Opening range breakout (ORB)
#
An opening range breakout (ORB) is a day-trading setup that defines the high and low of the first few minutes of a session and treats a move beyond that range as a signal to trade in the breakout's direction.
The opening range is usually the first 5, 15, or 30 minutes of regular trading hours. Its high and low become the reference levels, and a trade triggers when price trades through, or closes beyond, one side of that range.
The rationale is that the open concentrates a disproportionate amount of volume and new information, overnight news, pre-market positioning, into a short window, so the range that window produces is thought to reflect a real supply and demand imbalance capable of extending through the rest of the day.
The opposite side of the opening range is the natural stop-loss location, which makes the setup easy to size mechanically once a direction triggers. Its main failure mode is the false breakout, where the range breaks and then reverses, which happens most often on choppy, low-volume sessions.
ExampleA stock's first 15 minutes trade between $49.80 and $50.20; a break above $50.20 on rising volume is a long ORB entry, with a stop back below $50.20 or below $49.80 depending on the exact variant used.
Common misconceptionAny move past the day's early high or low gets called an ORB signal. The setup specifically requires a defined, fixed opening window and a genuine breakout of that exact range, not just a stock making a new intraday high sometime after the open.
See alsoStop loss, Slippage
Slippage is the difference between the price a trader expected to be filled at and the price an order actually executed at, caused by the gap between order placement and execution.
Slippage comes from market orders during fast-moving or thin conditions, wide bid-ask spreads, and the delay, even milliseconds, between a signal firing and an order reaching the exchange. It can occasionally run in a trader's favor, but far more often runs against the expected price.
It matters most in backtesting. A backtest that fills every order at the exact signal price, with no spread or slippage assumption built in, systematically overstates real-world results, which is a large part of why live and paper trading routinely underperform a naive backtest of the same strategy.
Trading more liquid instruments, using limit orders where a guaranteed fill is not required, and avoiding the first and last minutes of the session, when spreads are typically widest, all reduce slippage, though none of them eliminate it entirely.
ExampleA strategy's backtest assumes every stop loss fills at exactly the stop price. In practice, a stock gapping through that stop overnight might fill 3% below it, a gap-driven slippage the backtest never modeled.
Common misconceptionSlippage gets treated as a rounding error to ignore. On a strategy with a small per-trade edge, a consistent few basis points of slippage per trade can erase the entire edge once compounded across hundreds of trades.
Go deeperPaper to live trading
See alsoWalk-forward testing, Bracket order
Pattern day trader rule (PDT)
#
The pattern day trader (PDT) rule is a FINRA requirement that a margin account executing four or more day trades within five business days must maintain at least $25,000 in equity to continue day trading.
A day trade is any position opened and closed within the same session. The count runs over a rolling five-business-day window, and a broker that flags an account as a pattern day trader can restrict further day trading in that account until it holds the required minimum equity.
The rule applies to margin accounts at U.S. broker-dealers. Cash accounts fall under separate settlement-time restrictions instead, which carry their own limitations, such as waiting for proceeds to settle before the same funds can be used again.
This is a real regulatory threshold as of when this page was written, but rules, broker interpretations, and account-type distinctions can change. Confirm the current version directly with your broker before assuming it applies to your account the way described here.
ExampleA trader with $10,000 in a margin account opens and closes four different positions on a Tuesday, having also day-traded on the prior Monday and Thursday within the same five-day window, and gets flagged, even though each individual trade was small.
Common misconceptionPeople assume the rule only counts trades in a single stock. Any same-day round trip in any security counts toward the four-trade threshold, and the count blends across different symbols within the same five-business-day window.
Go deeperPaper to live trading
See alsoBracket order, Slippage
A bracket order is a single order package that combines an entry with an attached take-profit and stop loss, so both exit levels are set automatically the moment the position opens.
A bracket order is typically structured as the entry plus two conditional exit orders linked as one-cancels-the-other: if the take-profit fills, the stop loss cancels automatically, and vice versa, so only one exit ever executes on the position.
It exists to remove the need to manually place a stop and target the instant a fill happens, which matters because the seconds right after an entry, especially on a fast-moving instrument, are exactly when a trader is least equipped to calmly enter risk-management orders.
It does not guarantee the fill price on the stop leg; a stop-market order inside a bracket can still slip during a gap or a fast move. It also locks in a fixed target unless the platform supports trailing adjustments, so it enforces a plan rather than replacing the need for an active exit decision on a discretionary trade.
ExampleA trader buys 100 shares at $50 with a bracket order set at a $53 target and a $48.50 stop; whichever level the stock reaches first fills, and the other order cancels automatically with no further action needed.
Common misconceptionPlacing a bracket order is sometimes treated as a substitute for having a written trading plan. The bracket only executes the stop and target that were already decided in advance; it enforces a plan, it does not create one.
Go deeperPaper to live trading
See alsoStop loss, Slippage
Walk-forward testing is a backtesting method that optimizes a strategy's parameters on one historical window, tests them unchanged on the next window forward in time, then rolls both windows ahead and repeats.
History is split into sequential in-sample and out-of-sample segments. Parameters are fit only on the in-sample segment, then that exact configuration runs, untouched, on the segment immediately after it; the whole window then advances forward and the process repeats across the full dataset.
This protects against the most common way a backtest lies: a strategy tuned on an entire dataset at once can look excellent purely because its parameters were reverse-engineered to fit that specific history. Walk-forward testing forces every out-of-sample segment to be judged on parameters it never had a chance to see.
It does not fix everything. Walk-forward testing does not remove survivorship bias or look-ahead bias baked into the underlying data, and a strategy can pass walk-forward validation cleanly and still degrade in live trading if real transaction costs or execution assumptions differ from the backtest.
ExampleA strategy optimized on 2015-2017 data, tested unchanged on 2018, then re-optimized on 2016-2018 and tested on 2019, and so on, is a walk-forward process. Each out-of-sample segment is real evidence; the in-sample segment used to fit it is not.
Common misconceptionA single train and test split, optimizing on the first 70% of history and testing on the last 30%, is often called walk-forward. That is only one window; true walk-forward testing rolls the window forward repeatedly, producing many independent out-of-sample segments rather than a single one.
Go deeperWalk-forward backtesting
See alsoSurvivorship bias, Look-ahead bias, Expectancy
The Sharpe ratio measures risk-adjusted return by dividing a portfolio's average return in excess of the risk-free rate by the standard deviation of those returns.
Sharpe ratio = (portfolio return - risk-free rate) / standard deviation of portfolio returns
It answers how much return a strategy generates per unit of volatility taken on. Two strategies with identical average returns but different amounts of variance produce different Sharpe ratios, rewarding whichever one gets there more smoothly.
Its real limitation is that standard deviation penalizes upside volatility exactly the same as downside volatility, so a strategy with occasional large winning months reads as 'riskier' by this measure even though nobody minds that kind of variance. The ratio also assumes returns are roughly normally distributed, which understates the true risk of strategies with fat-tailed or skewed return profiles, a common trait in options-selling or trend-following systems.
It is a comparison tool between strategies, not an absolute quality bar, and the risk-free rate and return period used both change the resulting number, so a Sharpe ratio is only meaningful next to the assumptions used to compute it.
ExampleTwo strategies both average 15% annual return. One gets there with steady 1-2% monthly moves; the other gets there with a mix of 8% up months and 5% down months. The steadier strategy scores a higher Sharpe ratio despite an identical average return.
Common misconceptionA high Sharpe ratio is sometimes read as proof a strategy is safe. It measures the consistency of past returns relative to their variance, not the probability of a future large loss, a tail event a short backtest period may simply never have contained.
Go deeperReading a backtest report
See alsoWalk-forward testing, Drawdown
The Kelly criterion is a formula for the fraction of capital to risk on a bet or trade that maximizes long-run compounded growth, calculated from the edge and payoff odds of that bet.
f* = W - (1 - W) / R
(W = win probability, R = average win size / average loss size)
Kelly answers 'what fraction of capital should be risked', not 'should this trade be taken', by weighing how often a bet wins against how large the win is relative to the loss when it does not.
The practical problem is that full Kelly sizing produces very large swings in account equity, because it is mathematically optimal only in the limit of an infinite series of bets with a known, stable edge, and a real trading edge is always an estimate rather than a known constant.
Most people who use Kelly at all run a fraction of it, commonly a quarter to a half of full Kelly, trading some theoretical growth rate for a large cut in drawdown volatility, because an edge estimated from a finite sample of trades is never known as precisely as the formula assumes.
ExampleA system wins 45% of the time with average wins twice the size of average losses (R = 2). Full Kelly: f* = 0.45 - 0.55/2 = 0.45 - 0.275 = 0.175, or 17.5% of capital per trade, a size most traders would scale down heavily rather than trade as-is.
Common misconceptionThe Kelly percentage gets treated as a recommended position size to actually trade at. It is a theoretical growth-maximizing upper bound built from inputs, win rate and payoff ratio, that are themselves estimates with real error bars, which is exactly why full Kelly is considered too aggressive for live trading.
Go deeperKelly criterion
See alsoPosition sizing, Risk of ruin, Expectancy
Risk of ruin is the probability that a trading strategy, given its edge, win rate, and position sizing, loses enough capital to force a trader to stop trading before its expected long-run result ever arrives.
Three inputs dominate it: the strategy's edge (win rate and payoff ratio), the size risked per trade as a fraction of capital, and the definition of ruin itself, whether that means a total wipeout or a smaller threshold like losing half the account.
Because drawdown recovery math is asymmetric, a 50% loss needs a 100% gain just to recover, risk of ruin rises much faster than linearly as risk per trade increases. A genuinely positive-expectancy system can still carry meaningful ruin risk if it is sized too aggressively relative to that edge.
A precise risk-of-ruin figure assumes a known, fixed win rate and payoff ratio. In live trading both drift over time and are only ever estimated from a finite sample of trades, so a risk-of-ruin number is best read as directional rather than as a guaranteed probability.
ExampleA system with a real edge but sized to risk 10% of the account per trade can carry meaningfully higher risk of ruin than the identical system sized at 1% per trade, even though both share the exact same underlying win rate and payoff ratio.
Common misconceptionPositive expectancy is sometimes assumed to guarantee eventual success regardless of size. Expectancy describes the long-run average outcome; risk of ruin describes the chance of being wiped out, or forced to quit, before that long run ever arrives, and oversizing can make that chance high even with a real edge.
Go deeperDrawdown recovery math
See alsoDrawdown, Position sizing, Kelly criterion
Survivorship bias is the distortion that occurs when a backtest or study only includes assets that still exist today, silently excluding the ones that were delisted, went bankrupt, or otherwise failed along the way.
A stock universe built from today's index constituents and tested across the past 20 years excludes every company that was in that index at some point but got removed for underperforming, going bankrupt, or being acquired, which mechanically inflates the average historical return of the tested universe.
It is easy to introduce by accident, since most free and even many paid historical datasets default to current constituents. Avoiding it requires a point-in-time dataset that includes delisted and removed securities as of each historical date actually tested, not just as of today.
The bias is largest over long backtest periods and in universes with high turnover, small caps and speculative sectors especially, and smallest over short periods on stable large-cap universes, though it never fully disappears.
ExampleA 20-year backtest of 'stocks currently in the Russell 2000' never includes any company that was in the Russell 2000 in 2010 and went bankrupt by 2015, quietly removing a chunk of the worst historical outcomes from the sample.
Common misconceptionSurvivorship bias is assumed to matter only for individual stock-picking backtests. It equally distorts a strategy backtest run over 'a universe of liquid stocks' or 'the current members of an index' if that universe was not reconstructed to match what actually existed on each historical date tested.
Go deeperBacktest overfitting and bias
See alsoLook-ahead bias, Walk-forward testing
Look-ahead bias is a backtesting error in which a strategy's simulated decisions use information that would not actually have been available at that point in historical time.
Common sources include using a company's final, restated fundamental data rather than the figure as originally reported before later revisions, using a day's closing price to trigger a decision that is then filled at that same day's open, or screening a universe by a classification, sector or index membership, as it stands today rather than as it stood on the historical date being tested.
It is more dangerous than an obvious bug because it usually makes a backtest look better rather than broken, so the results get accepted at face value right up until live trading cannot reproduce them. Without deliberately auditing exactly what was 'known at time T' for every input, the bias is invisible.
The fix is to confirm every input to a decision at time T actually existed and was public at time T, not merely that it exists in the dataset row labeled T, which is why point-in-time data, values as they looked on the day rather than as later revised, is the standard for a trustworthy backtest.
ExampleA backtest using a company's earnings-per-share figure exactly as originally reported is clean; using the value after a later restatement, even if the dataset stores it under the original report date, is look-ahead bias.
Common misconceptionLook-ahead bias is assumed to require an obvious mistake, like literally using tomorrow's price. The far more common form is subtler: data that was technically generated later, a restated number, a reclassified sector, a finalized index membership, but stored under an earlier date in the dataset.
Go deeperBacktest overfitting and bias
See alsoSurvivorship bias, Walk-forward testing