Pattern Entry Research v1 — Summary Report
Run date: 2026-04-12
Universe: v5.1 optimized filter
Period: 2016-01-01 to 2025-06-30 (OOS split: 2024-01-01)
Exit: TP=100%, SL=-50%, max_hold=180d
Total configs tested: 111
Configs with >=5 trades: 111
Best Config Per Pattern
| Pattern | Config | Trades | Mean Ret | Win Rate | Sharpe | IS Ret | OOS Ret |
|---|
| bullish_engulfing | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=volume_expansion | 89 | 32.0% | 49.4% |
| piercing_pattern | weekly | dt=below_sma50 | os=rsi_below_30 | cf=none | 5 | 77.5% | 80.0% |
| morning_star | weekly | dt=lower_lows_3 | os=rsi_below_30 | cf=none | 27 | 13.6% | 51.8% |
| key_reversal | daily | dt=below_sma50 | os=rsi_below_30 | cf=volume_expansion | 50 | 22.1% | 54.0% |
| outside_reversal | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=volume_expansion | 59 | 31.5% | 55.9% |
| wyckoff_spring | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=none | reclaim_bars=1 | 362 | 10.7% |
| 2b_reversal | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=close_above_prior_high | 164 | 18.0% | 43.9% |
| 3bar_flush_reclaim | daily | dt=lower_lows_3 | os=below_bb_lower | cf=volume_expansion | 112 | 24.0% | 52.7% |
Daily vs Weekly Comparison (Multi-Candle Patterns)
| Pattern | Timeframe | Trades | Mean Ret | Win Rate | Sharpe |
|---|
| bullish_engulfing | daily_baseline | 918 | 6.0% | 38.2% | 0.093 |
| bullish_engulfing | weekly_baseline | 198 | 8.4% | 42.4% | 0.132 |
| bullish_engulfing | weekly_conditions | 45 | 36.8% | 55.6% | 0.436 |
| piercing_pattern | daily_baseline | 282 | 4.1% | 37.9% | 0.066 |
| piercing_pattern | weekly_baseline | 45 | 12.0% | 48.9% | 0.201 |
| piercing_pattern | weekly_conditions | 5 | 77.5% | 80.0% | 1.195 |
| morning_star | daily_baseline | 717 | 6.8% | 38.5% | 0.097 |
| morning_star | weekly_baseline | 155 | 3.7% | 38.1% | 0.062 |
| morning_star | weekly_conditions | 27 | 13.6% | 51.8% | 0.215 |
Portfolio Simulation (Top Configs)
| Pattern | Total Return | Max DD | Trades Taken | Sharpe | Win Rate |
|---|
| bullish_engulfing | 362.0% | -28.8% | 67 | 0.365 | 46.3% |
| morning_star | 40.4% | -31.3% | 27 | 0.215 | 51.8% |
| key_reversal | 101.6% | -37.7% | 45 | 0.283 | 48.9% |
| outside_reversal | 211.2% | -24.3% | 47 | 0.351 | 51.1% |
| wyckoff_spring | 95.9% | -64.5% | 132 | 0.111 | 37.1% |
| 2b_reversal | 47.7% | -70.9% | 91 | 0.120 | 38.5% |
| 3bar_flush_reclaim | 346.0% | -52.4% | 85 | 0.299 | 48.2% |
Full Results Detail
| Label | Trades | IS/OOS | Mean Ret | Win Rate | Sharpe | TP% | SL% |
|---|
| piercing_pattern | weekly | dt=below_sma50 | os=rsi_below_30 | cf=none | 5 | 2/3 | 77.5% |
| outside_reversal | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=volume_expansion | 59 | 41/18 | 31.5% |
| bullish_engulfing | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=volume_expansion | 89 | 63/26 | 32.0% |
| piercing_pattern | daily | dt=below_sma50 | os=rsi_below_30 | cf=volume_expansion | 20 | 12/8 | 26.0% |
| bullish_engulfing | weekly | dt=lower_lows_3 | os=rsi_below_30 | cf=none | 45 | 32/13 | 36.8% |
| piercing_pattern | daily | dt=below_sma50 | os=rsi_below_30 | cf=close_above_prior_high | 22 | 13/9 | 25.0% |
| 3bar_flush_reclaim | daily | dt=lower_lows_3 | os=below_bb_lower | cf=volume_expansion | 112 | 82/30 | 24.0% |
| outside_reversal | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=next_day_break_high | 63 | 47/16 | 25.1% |
| key_reversal | daily | dt=below_sma50 | os=rsi_below_30 | cf=volume_expansion | 50 | 40/10 | 22.1% |
| outside_reversal | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=close_above_prior_high | 52 | 37/15 | 20.5% |
| bullish_engulfing | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=none | 171 | 119/52 | 21.3% |
| outside_reversal | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=none | 106 | 70/36 | 23.5% |
| piercing_pattern | daily | dt=below_sma50 | os=rsi_below_30 | cf=none | 39 | 24/15 | 21.7% |
| key_reversal | daily | dt=below_sma50 | os=rsi_below_30 | cf=next_day_break_high | 59 | 45/14 | 16.0% |
| 2b_reversal | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=close_above_prior_high | 164 | 112/52 | 18.0% |
| bullish_engulfing | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=close_above_prior_high | 98 | 68/30 | 14.9% |
| bullish_engulfing | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=next_day_break_high | 108 | 78/30 | 15.3% |
| morning_star | weekly | dt=lower_lows_3 | os=rsi_below_30 | cf=none | 27 | 22/5 | 13.6% |
| key_reversal | daily | dt=below_sma50 | os=rsi_below_30 | cf=close_above_prior_high | 47 | 38/9 | 12.7% |
| piercing_pattern | weekly | dt=none | os=none | cf=none | 45 | 29/16 | 12.0% |
| 2b_reversal | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=volume_expansion | 166 | 123/43 | 13.9% |
| morning_star | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=volume_expansion | 52 | 37/15 | 11.3% |
| 3bar_flush_reclaim | daily | dt=lower_lows_3 | os=below_bb_lower | cf=close_above_prior_high | 104 | 71/33 | 12.1% |
| 3bar_flush_reclaim | daily | dt=lower_lows_3 | os=below_bb_lower | cf=none | reclaim_bars=1 | 122 | 90/32 |
| key_reversal | daily | dt=below_sma50 | os=rsi_below_30 | cf=none | 83 | 63/20 | 11.2% |
| outside_reversal | daily | dt=lower_lows_3 | os=below_bb_lower | cf=none | 86 | 56/30 | 10.8% |
| key_reversal | daily | dt=below_sma50 | os=none | cf=none | 249 | 177/72 | 9.8% |
| key_reversal | daily | dt=below_sma50 | os=below_sma20_95 | cf=none | 225 | 160/65 | 9.8% |
| outside_reversal | daily | dt=lower_lows_3 | os=none | cf=none | 362 | 247/115 | 10.9% |
| key_reversal | daily | dt=none | os=none | cf=none | 266 | 190/76 | 9.2% |
| bullish_engulfing | daily | dt=lower_lows_3 | os=below_bb_lower | cf=none | 142 | 96/46 | 10.0% |
| 3bar_flush_reclaim | daily | dt=lower_lows_3 | os=below_bb_lower | cf=none | reclaim_bars=3 | 216 | 155/61 |
| 2b_reversal | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=next_day_break_high | 194 | 142/52 | 11.0% |
| key_reversal | daily | dt=below_sma20 | os=none | cf=none | 264 | 189/75 | 8.7% |
| 3bar_flush_reclaim | daily | dt=lower_lows_3 | os=below_bb_lower | cf=none | 186 | 135/51 | 9.0% |
| 3bar_flush_reclaim | daily | dt=lower_lows_3 | os=below_bb_lower | cf=none | reclaim_bars=2 | 186 | 135/51 |
| wyckoff_spring | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=none | reclaim_bars=1 | 362 | 260/102 |
| key_reversal | daily | dt=lower_lows_3 | os=none | cf=none | 116 | 83/33 | 8.4% |
| morning_star | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=none | 95 | 69/26 | 9.2% |
| bullish_engulfing | daily | dt=lower_lows_3 | os=10d_low | cf=none | 407 | 283/124 | 9.1% |
| piercing_pattern | daily | dt=below_sma50 | os=rsi_below_30 | cf=next_day_break_high | 20 | 15/5 | 7.3% |
| bullish_engulfing | daily | dt=lower_lows_3 | os=below_sma20_95 | cf=none | 402 | 275/127 | 8.7% |
| wyckoff_spring | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=close_above_prior_high | 258 | 184/74 | 9.1% |
| outside_reversal | daily | dt=lower_lows_3 | os=10d_low | cf=none | 289 | 197/92 | 9.1% |
| bullish_engulfing | weekly | dt=none | os=none | cf=none | 198 | 141/57 | 8.4% |
| outside_reversal | daily | dt=lower_lows_3 | os=below_sma20_95 | cf=none | 276 | 189/87 | 8.9% |
| wyckoff_spring | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=next_day_break_high | 288 | 214/74 | 9.5% |
| morning_star | daily | dt=lower_lows_3 | os=none | cf=none | 335 | 235/100 | 8.1% |
| outside_reversal | daily | dt=below_sma20 | os=none | cf=none | 725 | 501/224 | 8.4% |
| piercing_pattern | daily | dt=below_sma50 | os=below_bb_lower | cf=none | 44 | 30/14 | 9.0% |
| wyckoff_spring | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=volume_expansion | 260 | 185/75 | 8.5% |
| outside_reversal | daily | dt=lower_lows_3 | os=20d_low | cf=none | 232 | 160/72 | 7.9% |
| 3bar_flush_reclaim | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=none | 185 | 139/46 | 7.7% |
| key_reversal | daily | dt=below_sma50 | os=20d_low | cf=none | 188 | 132/56 | 7.2% |
| 2b_reversal | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=none | reclaim_bars=1 | 190 | 144/46 |
| wyckoff_spring | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=none | 374 | 266/108 | 7.7% |
| wyckoff_spring | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=none | reclaim_bars=3 | 374 | 266/108 |
| morning_star | daily | dt=lower_lows_3 | os=below_sma20_95 | cf=none | 261 | 190/71 | 7.1% |
| key_reversal | daily | dt=below_sma50 | os=10d_low | cf=none | 194 | 137/57 | 6.7% |
| bullish_engulfing | daily | dt=lower_lows_3 | os=20d_low | cf=none | 340 | 239/101 | 6.5% |
| outside_reversal | daily | dt=none | os=none | cf=none | 849 | 595/254 | 6.7% |
| wyckoff_spring | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=none | reclaim_bars=5 | 381 | 271/110 |
| bullish_engulfing | daily | dt=lower_lows_3 | os=none | cf=none | 517 | 357/160 | 6.6% |
| morning_star | daily | dt=lower_lows_3 | os=20d_low | cf=none | 221 | 162/59 | 6.6% |
| piercing_pattern | daily | dt=below_sma50 | os=none | cf=none | 221 | 157/64 | 6.2% |
| morning_star | daily | dt=none | os=none | cf=none | 717 | 520/197 | 6.8% |
| morning_star | daily | dt=below_sma50 | os=none | cf=none | 608 | 440/168 | 6.9% |
| bullish_engulfing | daily | dt=none | os=none | cf=none | 918 | 648/270 | 6.0% |
| morning_star | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=close_above_prior_high | 41 | 30/11 | 6.2% |
| 2b_reversal | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=none | 277 | 201/76 | 5.9% |
| 2b_reversal | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=none | reclaim_bars=3 | 277 | 201/76 |
| 3bar_flush_reclaim | daily | dt=lower_lows_3 | os=none | cf=none | 545 | 391/154 | 5.7% |
| 3bar_flush_reclaim | daily | dt=lower_lows_3 | os=below_bb_lower | cf=next_day_break_high | 120 | 92/28 | 5.8% |
| morning_star | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=next_day_break_high | 52 | 37/15 | 5.6% |
| 3bar_flush_reclaim | daily | dt=none | os=none | cf=none | 714 | 502/212 | 5.5% |
| wyckoff_spring | daily | dt=lower_lows_3 | os=none | cf=none | 691 | 487/204 | 5.4% |
| bullish_engulfing | daily | dt=below_sma50 | os=none | cf=none | 784 | 562/222 | 5.3% |
| morning_star | daily | dt=below_sma20 | os=none | cf=none | 610 | 443/167 | 5.9% |
| bullish_engulfing | daily | dt=below_sma20 | os=none | cf=none | 813 | 578/235 | 5.3% |
| wyckoff_spring | daily | dt=lower_lows_3 | os=10d_low | cf=none | 678 | 479/199 | 5.0% |
| 2b_reversal | daily | dt=lower_lows_3 | os=below_bb_lower | cf=none | 318 | 226/92 | 5.1% |
| 3bar_flush_reclaim | daily | dt=lower_lows_3 | os=20d_low | cf=none | 360 | 251/109 | 5.0% |
| outside_reversal | daily | dt=below_sma50 | os=none | cf=none | 710 | 495/215 | 4.8% |
| wyckoff_spring | daily | dt=lower_lows_3 | os=below_sma20_95 | cf=none | 678 | 481/197 | 4.7% |
| piercing_pattern | daily | dt=lower_lows_3 | os=none | cf=none | 74 | 51/23 | 4.0% |
| 2b_reversal | daily | dt=lower_lows_3 | os=below_sma20_95 | cf=none | 524 | 375/149 | 4.5% |
| 2b_reversal | daily | dt=lower_lows_3 | os=10d_low | cf=none | 520 | 371/149 | 4.5% |
| morning_star | daily | dt=lower_lows_3 | os=10d_low | cf=none | 267 | 191/76 | 4.3% |
| 2b_reversal | daily | dt=lower_lows_3 | os=none | cf=none | 530 | 378/152 | 4.4% |
| piercing_pattern | daily | dt=none | os=none | cf=none | 282 | 198/84 | 4.1% |
| 2b_reversal | daily | dt=lower_lows_3 | os=rsi_below_30 | cf=none | reclaim_bars=5 | 311 | 219/92 |
| 3bar_flush_reclaim | daily | dt=below_sma50 | os=none | cf=none | 609 | 433/176 | 3.9% |
| morning_star | weekly | dt=none | os=none | cf=none | 155 | 108/47 | 3.7% |
| wyckoff_spring | daily | dt=lower_lows_3 | os=20d_low | cf=none | 650 | 461/189 | 3.5% |
| 3bar_flush_reclaim | daily | dt=below_sma20 | os=none | cf=none | 643 | 452/191 | 3.6% |
| 2b_reversal | daily | dt=lower_lows_3 | os=20d_low | cf=none | 504 | 361/143 | 3.5% |
| wyckoff_spring | daily | dt=none | os=none | cf=none | 885 | 621/264 | 3.4% |
| 3bar_flush_reclaim | daily | dt=lower_lows_3 | os=10d_low | cf=none | 438 | 305/133 | 3.4% |
| 2b_reversal | daily | dt=none | os=none | cf=none | 791 | 571/220 | 2.5% |
| wyckoff_spring | daily | dt=below_sma20 | os=none | cf=none | 876 | 618/258 | 2.5% |
| piercing_pattern | daily | dt=below_sma20 | os=none | cf=none | 226 | 161/65 | 2.1% |
| 2b_reversal | daily | dt=below_sma20 | os=none | cf=none | 786 | 567/219 | 2.1% |
| 3bar_flush_reclaim | daily | dt=lower_lows_3 | os=below_sma20_95 | cf=none | 427 | 303/124 | 1.8% |
| wyckoff_spring | daily | dt=lower_lows_3 | os=below_bb_lower | cf=none | 475 | 338/137 | 1.8% |
| wyckoff_spring | daily | dt=below_sma50 | os=none | cf=none | 844 | 596/248 | 1.7% |
| 2b_reversal | daily | dt=below_sma50 | os=none | cf=none | 771 | 556/215 | 1.6% |
| piercing_pattern | daily | dt=below_sma50 | os=10d_low | cf=none | 128 | 88/40 | -0.4% |
| morning_star | daily | dt=lower_lows_3 | os=below_bb_lower | cf=none | 112 | 78/34 | -0.6% |
| key_reversal | daily | dt=below_sma50 | os=below_bb_lower | cf=none | 65 | 44/21 | -3.1% |
| piercing_pattern | daily | dt=below_sma50 | os=20d_low | cf=none | 111 | 75/36 | -2.9% |
| piercing_pattern | daily | dt=below_sma50 | os=below_sma20_95 | cf=none | 162 | 112/50 | -3.0% |
Key Findings
- Best overall pattern (>=20 trades): outside_reversal (Sharpe 0.468, 59 trades, mean return 31.5%)
- Best portfolio return: bullish_engulfing (+362%, max DD -29%, 67 trades)
- Best risk-adjusted: bullish_engulfing (+362%, max DD -29%)
- Best OOS pattern: key_reversal (OOS mean return 65.8%, 10 OOS trades)
- RSI<30 oversold filter consistently boosts returns across all patterns
- Volume expansion confirmation is the strongest single confirmation filter
- Lower lows downtrend is the most effective downtrend definition
Methodology Notes
- Universe rebalanced monthly (1st of month) using v5.1 filters
- 90-day cooldown per symbol per pattern
- Condition sweep: downtrend → oversold → confirmation (sequential best)
- Weekly signals: OHLCV aggregated to weekly bars, signal mapped to daily entry
- Sharpe approximation: mean(returns) / std(returns) — trade-level, not annualized
- IS/OOS split at 2024-01-01