How It Works

Strategies, scoring & honest limitations

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.

StrategyBUY whenSELL when
SMA cross50-day SMA crosses above 200-day SMA (golden cross)crosses below (death cross)
RSI reversionRSI(14) exits oversold (<30) while price is above the 200-SMARSI exits overbought (>70) while below the 200-SMA
MACD crossMACD line crosses above its signal linecrosses below
SupertrendSupertrend(10, 3×ATR) flips upwardflips downward
BB breakoutclose breaks the upper Bollinger band after a 120-day squeeze lowbreaks the lower band after a squeeze
Trendline breakclose 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
Patternsbullish engulfing or hammer in a downtrendbearish 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:

StrategyExitCap
SMA crossopposite 50/200 cross100d
RSI reversionRSI hits opposite extreme50d
MACD crossopposite MACD cross50d
Supertrenddirection flip100d
BB breakoutclose back through mid-band50d
Trendline break2×ATR adverse move50d
Patterns2×ATR trailing stop50d

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.