Full disclosure
Method
Everything the daily report does, in plain language, including the assumptions that favor neither side and the limitations that should keep you skeptical of the numbers (including ours).
Data
Daily bars (open, high, low, close, volume) from Yahoo Finance, two years of history per symbol, refreshed when the cached data is older than the most recent weekday. The universe is about 120 highly liquid US stocks and ETFs: mega caps, popular momentum names, and the SPY, QQQ, IWM and DIA index ETFs plus sector ETFs. Prices are raw and unadjusted.
Entry
Long only. A signal occurs when a symbol's close crosses above the highest high of the prior 20 trading days (a Donchian-20 breakout): today's close is above that level and yesterday's close was not above the equivalent level as of yesterday. Entry is at the next trading day's open. Signals are only taken within the most recent 150 trading days of available data, and only one position per symbol runs at a time. All three exit rules use the same entries: a new signal is not considered until every rule's position from the previous entry has closed.
The risk unit
1R equals 2 times the 14-day average true range (ATR), computed at the signal day as a simple average of true range over the 14 bars ending that day. The initial stop for every rule is entry minus 1R. Expressing every result in R puts a $20 stock and a $600 stock on the same scale: the question is always how many units of initial risk a trade returned.
The three exit rules
- Fixed 1:2. Take profit at entry + 2R. Stop at entry - 1R. If neither is hit, exit at the close on holding day 20 (the entry day counts as day 1).
- Fixed 1:3. The same, with the take profit at entry + 3R.
- Variable. No take profit. The stop starts at entry - 1R. After any close at or above entry + 2R, trailing activates: the stop becomes the higher of breakeven (the entry price) and the highest close since entry minus 2R, and it updates after each subsequent close as closes rise. If the trade is still open on holding day 20, exit at that close.
Intrabar sequencing: the adverse assumption
A daily bar does not say whether the high or the low came first. This simulation resolves the ambiguity against the trader: within each day, the stop is checked first using the day's low, and only if the stop survives is the take profit checked using the day's high. On a day that touches both, the trade is recorded as stopped out. For the variable rule, the trailing stop in force during a day is the one set by prior closes only; a new high close today cannot protect the trade until tomorrow. Stop exits fill at the stop price and target exits at the target price.
What the report shows
For each rule and each window (trades that exited in the last 90 calendar days, and the full window): number of trades, win rate, expectancy in R (average R per trade), total R, average win and average loss in R, maximum win in R, the percent of gross positive R contributed by the top 5 winners, and how many trades reached at least 5R and at least 10R (by realized R, for every rule). It also lists the trades that closed on the most recent trading day under each rule, and the positions still open under the variable rule with their unrealized R and current stop.
Limitations, stated plainly
- Daily bars, not ticks. The adverse sequencing assumption is a convention, not knowledge of what happened inside the day. Tight intraday paths are not visible in this data, and results for any single trade can differ in real trading.
- No costs. No commissions, spread, slippage, borrow, or market impact. Costs reduce every rule's expectancy; they do not change the structural point about capped versus uncapped distributions, but they lower all the numbers.
- Raw unadjusted prices. Splits and dividends are not adjusted for, so a split inside a holding window can distort that individual trade's prices and R. This affects a small minority of trades but it does happen.
- One position per symbol, equal R per trade. No portfolio sizing, no compounding, no correlation management. Total R is a sum of equal-risk units, not an account return.
- A chosen system, not the market. Donchian-20 entries with a 2 x ATR risk unit are one reasonable breakout recipe, picked so the exit rules can be compared on neutral ground. Different entries would produce different numbers.
- The window is short. Entries come from the most recent 150 trading days. That is a few hundred trades: enough to show the shape of each distribution, not enough to prove an expectancy. Ninety-day windows in particular can favor any rule by luck.
- Past simulation is not a promise. This is an educational comparison of exit rules on historical prices. It is not a recommendation to trade any system.