
Price action patterns, quantified: still no edge
Adding price action filters to my algorithmic trading strategy resulted in a clear decline in performance.
Adding price action filters to my algorithmic trading strategy resulted in a clear decline in performance. I wanted to see if I could improve my existing strategy by quantifying common price action signals into hard code. I translated concepts like long wicks (indicating rejection) and engulfing patterns (signaling reversals) into mathematical rules. I then combined these with a previously verified, robust horizontal level filter (what I call level 20) to see if the combined system would perform better during out-of-sample testing.
Performance comparison
| Strategy | Performance |
|---|---|
| Level 20 only | +42.2% (5 of 6 years) |
| Level 20 + PA filter | +12.1% (3 of 6 years) |
| PA filter (lookback 2) | +14.3% (4 of 6 years) |
| PA filter only | +17.7% (4 of 6 years) |
| In other words, adding these price action rules significantly damaged the robustness of the system. The success rate dropped from 5 out of 6 years to just 3 out of 6. Much like my previous experiments with diagonal channel lines, the filter became too restrictive, stripping away the strategy’s consistency. I am rejecting the price action integration entirely. |
What I learned about manual trading
This experiment concludes my series on automating discretionary “Yosuga” trading methods. I set out to test the hypothesis that human intuition in trading is actually based on logic that can be quantified and automated. The results provide a definitive answer: some parts can be, but others cannot. My research shows that the structural core of discretionary trading (identifying trend direction and finding effective horizontal support or resistance levels) is perfectly suited for automation. In fact, the horizontal level filter achieved a profit factor of 1.63 and a Sharpe ratio of 1.16, proving that it is a genuine, robust edge. It is the first time I have managed to build a dip-buying strategy that survives out-of-sample testing. However, the “finer” discretionary elements, such as reading diagonal trend channels or interpreting specific candlestick patterns, failed to translate into profitable rules. When I reduced these high-level human judgments into simple, rigid code, the performance inevitably suffered. This mirrors my earlier failures with machine learning models, where over-optimization led to poor results. In short, the upper levels of discretionary trading are logical and automatable, while the lower levels rely on a high-dimensional judgment that simple rules cannot capture. I am keeping my current system at version 1.1.0. While the level-filtered strategy is high quality, it does not outperform my core system enough to justify a replacement. I have archived the code for these modules, as they remain useful frameworks for testing future discretionary ideas.
How this connects
This verification builds on earlier ones (what failed before and what I tried this time, comparisons between approaches).