The 7 signal strategies
Every signal fires on a closed daily candle — no lookahead: a signal on a bar only uses data up to and including that bar. Signals are marked on the chart with arrows.
| Strategy | BUY when | SELL when |
|---|---|---|
| SMA cross | 50-day SMA crosses above 200-day SMA (golden cross) | crosses below (death cross) |
| RSI reversion | RSI(14) exits oversold (<30) while price is above the 200-SMA | RSI exits overbought (>70) while below the 200-SMA |
| MACD cross | MACD line crosses above its signal line | crosses below |
| Supertrend | Supertrend(10, 3×ATR) flips upward | flips downward |
| BB breakout | close breaks the upper Bollinger band after a 120-day squeeze low | breaks the lower band after a squeeze |
| Trendline break | close breaks decisively (0.4%) above the auto-fitted resistance line (fitted walk-forward on pivots visible at that bar) | breaks below the auto-fitted support line |
| Patterns | bullish engulfing or hammer in a downtrend | bearish engulfing or shooting star in an uptrend |
Auto trendlines & S/R zones
Pivot highs/lows are found with a 5-bar fractal window. Trendlines are least-squares fits through ≥3 recent pivots, discarded if price closed through them before their last touch. Horizontal support/resistance zones come from clustering pivots within 1.5% price bands over the last 180 days.
The 0–100 score
A weighted blend: trend vs 200-SMA (20), Supertrend direction (15), RSI zone (15), recent signals with 30-day decay (up to ~30), price vs SMA50 (10), and proximity to support (+10) or resistance (−10). 50 is neutral; ≥70 bullish; ≤30 bearish. It is not a probability of profit — it summarizes current technical posture.
P(win) model, RS rank & volume A/B (v3.1)
The P(win) shown next to recent signals is a logistic regression trained on all historical signals, labeled by whether the v3 exit-rule simulation of that signal was profitable (net of costs). It uses only features known at signal time: RSI, trend vs SMA200, 50-day momentum, Supertrend direction, volume ratio, ATR%, distance from the 52-week high, 3-month relative strength vs SPY, and the strategy/side itself.
Honest performance: walk-forward validation (train on the older 70% of history, test on the newest 30%) gives AUC ≈ 0.55 — a weak but real ranking edge, not a crystal ball. Use it to rank and filter signals (e.g. only act on P ≥ 60%), never as an absolute probability.
RS rank = 3-month return minus SPY's, converted to a 0–100 percentile across the universe. High RS stocks are market leaders; momentum research suggests they tend to keep leading for weeks to months.
Setups (top of the scanner) = symbols where the model probability, RS rank, and overall score all agree (P ≥ 60, RS ≥ 70, score ≥ 60). The status page also shows a volume-confirmation A/B test: historical win rate of signals with volume ≥ 1.5× their 20-day average vs without — so "does volume confirmation help?" is measured, not assumed.
Backtest methodology (v3)
Each historical signal is simulated as an actual trade with the strategy’s natural exit rule, not a fixed holding period:
| Strategy | Exit | Cap |
|---|---|---|
| SMA cross | opposite 50/200 cross | 100d |
| RSI reversion | RSI hits opposite extreme | 50d |
| MACD cross | opposite MACD cross | 50d |
| Supertrend | direction flip | 100d |
| BB breakout | close back through mid-band | 50d |
| Trendline break | 2×ATR adverse move | 50d |
| Patterns | 2×ATR trailing stop | 50d |
All returns are net of 0.1% round-trip costs. “vs SPY” shows the trade’s excess return over SPY over the same window — the number that answers “was this signal better than just holding the market?” Max drawdown is computed on the pooled chronological equity curve. The chart page also shows fixed-horizon win rates (5/10/25/50 days) as a decay diagnostic.
Survivorship caveat: the universe is today’s S&P 500 members. Companies that were removed from the index (often weak performers) are not in the history, so results are somewhat flattered vs a true point-in-time test. Treat stats as a rough sanity check on each strategy, not a forecast.
Data & limits
Daily candles from Yahoo Finance (via yfinance) with Stooq as fallback; universe from Wikipedia’s S&P 500 list. Free data = daily granularity with possible delays; no real-time quotes; no fundamentals. Signals are technical observations, not financial advice — past performance never guarantees future results.