982 trades, five verification gates, three rule revisions, and a verdict of do not trade it. The full falsification trail and the statistics behind it — including the version that turned positive and was then overturned by a change of universe.
982 — Trades, main spec (2015-01 – 2026-08)
−29.9 bp — Net expectancy per trade, after costs
32.3% — Win rate
0.74 — Profit factor
+27.3 bp — Gross expectancy at zero cost (the signal itself)
≈57 bp — Round-trip cost (commission + transaction tax + slippage)
A stock in an uptrend sells off through its Bollinger band, then closes higher the next day back inside the band. Almost every technical analysis book calls this a buy-the-dip setup. We wrote it out as a fully unambiguous rule set: new positions only when the TAIEX 50-day average sits above its 200-day average; the stock must close above a rising 60-day average; the prior session low must break the 5-day lower band; and entry requires an up close that recovers above the lower band while still closing below the 5-day average. Five exits: stop-loss, a close back below the lower band, a half exit on a break above the 5-day average, a full exit when the intraday high touches the upper band, and a time stop after three sessions without a new high. Universe: current 0050 constituents, adjusted daily bars from 2015-01 to 2026-08 (729 dividend events adjusted by hand), round-trip cost assumed at roughly 0.57%.
The first draft said close below the 5-day lower Bollinger band. That event can never occur. When the band is built from the mean and population standard deviation of the last five closes, the fifth close cannot mathematically fall outside its own ±2σ envelope — a direct consequence of Samuelson's inequality. We verified it across two million randomly generated bar series: zero violations. The rule was therefore restated in terms of the prior session's intraday low. This was the cheapest fix in the whole project: without it every subsequent backtest would have returned an empty set, and nothing would have told us why.
Splitting all 982 trades by exit reason localises the damage precisely. 64% end at the stop — 488 intraday stops averaging −158 bp, and 138 gap-down stops averaging −215 bp. Both of the exits that can only happen on a rally are profitable on average: 257 upper-band exits at +222 bp, and 99 three-day time stops at +206 bp. The problem is not that the winners win too little; it is that the stop fires far too often. That is what makes the stop, and not the profit target, the thing to change next.
We tested three stop candidates — the entry bar low, the lower band value fixed at entry, and a trailing lower band that only ratchets up. All three agreed that a looser stop is better, moving per-trade expectancy from −29.9 bp to roughly −22 bp, but none pushed it into positive territory. The single most effective improvement was a pullback-depth filter: requiring the piercing bar to be at least 5% below the 6-day high cut the sample from 982 to 515 trades and lifted expectancy to −9.1 bp (+48.2 bp at zero cost). The concrete failure it removes is real: without the filter the strategy repeatedly round-trips two-cent fake selloffs in illiquid names and pays nothing but costs. The direction is clear: trade less, trade deeper, hold longer.
Across 2015 to 2026, only 2019 (+8%), 2023 (+15%) and 2026 (+63%) finish positive; the worst are 2024 (−77%) and 2017 (−56%). The index regime filter screens out most of the bear phases, but its boundary periods — just turning bullish, about to turn bearish — are exactly when selloffs are most frequent and bounces weakest. 2026 is the best year so far (125 trades, 42% win rate), but a single year cannot overturn eleven years of evidence against it. Note the shape of that concentration: it reappears, unchanged, in the Minervini version below.
The distribution of per-trade returns explains the 0.74 profit factor. The median is −0.97% and the mass of the distribution sits on the small-loss side; the right tail reaches +20.8% but far too rarely to cover the volume of small losses plus roughly 57 bp of cost per round trip. It is a right-skewed distribution whose right tail is too short: winners average +2.6% and losers −1.7%, so the payoff ratio is fine — but at a 32.3% win rate the product lands just below the cost line.
Replacing the 60-day average filter with Minervini's eight trend-template criteria (relative strength proxied by 3/6/9/12-month weighted returns, ranked at the 70th percentile or above within the universe) produced the first version with positive expectancy after costs: 315 trades at +9.5 bp for the base version, and 235 trades at a 47.2% win rate, +42.8 bp per trade and a 1.30 profit factor once the depth filter and trailing stop were added. It looks like a finding. But the t-statistic is only 1.38, leaving a 7.8% probability that true expectancy is zero or worse, and the profits are extremely concentrated: 2026 alone contributed 79% of total P&L, and the top three names contributed 232%. Performance shaped like that is usually not an edge — it is noise plus survivorship bias.
We widened the universe from 0050 to 0050 plus the Mid-Cap 100, a total of 150 names, and re-ranked relative strength within that larger set. Same rules: per-trade expectancy fell from +42.8 bp to −1.9 bp (t = −0.11), and the Minervini base version fell from +9.5 bp to −20.4 bp. The decomposition is the point: within those 150 names, the large-cap 50 subset still shows +54.8 bp while the mid-cap 100 subset shows −32.7 bp. The edge exists only inside the outcome-selected sample of current 0050 members. Raising mid-cap slippage from 0.05% to 0.10% and 0.15% per side takes the numbers to −11.9 bp and −21.9 bp.
This strategy family — buying the reversal after a trend stock is flushed through its 5-day Bollinger band, holding one to three days — has not been shown to carry a tradable edge in Taiwanese large and mid caps once costs are deducted. We do not recommend trading these rules. Three takeaways. First, a signal with a gross edge in the 30 to 60 basis point range has no room to live under a Taiwanese round-trip cost of roughly 0.57%; the signal being real does not mean the strategy survives. Second, positive expectancy measured on a single universe should be assumed to be survivorship bias plus multiple testing until new data says otherwise. Third, changing the universe kills a strategy faster than tuning parameters does, which is exactly why it should come first. Only two routes remain open: rerun on point-in-time historical constituents, or move to a two-to-four week swing family — which is a different strategy, not a parameter change.