Why technical-only signals don't survive on their own

An honest look at what the backtests show — and what the signal workflow is actually for.

The short version

Chartlas screens 34,000+ securities for technical signals. I also backtest every signal, and I publish the results even where they are unflattering — this page explains how to read them.

The backtest covers the subset of the universe liquid enough to test honestly — roughly 24,000 names with market cap above $100M and price above $1 — with the figures below from the May 2026 run, except the two trend break signals, which I re-measured in August after finding their history had only been partly computed. Each signal page states its own run window and computes its tables from that run, so no page mixes vintages internally.

What that run shows, in plain terms: most signal-sides do not beat firing on random dates. More than half actually look worse than random at the 20-day horizon, and only about a third clear the permutation test — with 36 signal-sides tested at once, a few of those clearances are luck. The sides that do clear it earn well under 1% per 20-day hold before costs, and realistic costs consume most of that.

Two results deserve their own sentences. First, the bearish sides are not short signals: in this run the large majority of bearish-flagged stocks went on to outperform over the next 20 days — most likely one phenomenon, beaten-down names bouncing, showing up across many signals at once. Shorting those flags standalone would have lost money even before borrow fees, which I have not priced at all. Bearish fires are risk context on names you hold or follow, not trade entries.

Second, and more important: verdicts are fragile to test design. When I re-ran the same signals after widening the universe from US large-caps to global, several verdicts flipped outright — one signal went from an apparent standalone cost to one of the few sides clearing the permutation test. That same signal moved again in August, for a duller reason: its history had only been partly computed, so the run was measuring a fraction of the available years. With the missing history filled in, its measured edge roughly halved, and the era breakdown that had made it look regime-specific turned out to be a sampling artifact — the era it appeared to fail in barely existed in the sample. A second signal's sign flipped outright on the same correction. Same code, same filters, same universe rules; only more complete data. If a verdict can move that much on test design and coverage alone, the per-signal "winners" above are descriptions of one run, not edges to trade.

Why this is expected

  • Widely-known rules tend to fail out-of-sample and after costs. That is the sober reading of the academic record on simple technical trading rules, and these numbers are consistent with it. A signal computable in three lines of code, published in every introductory book, is not where durable edges live.
  • Signals fire in predictable conditions. A MACD bullish cross mechanically fires at pullback-ends; an oversold trigger fires after the damage is done. Each signal samples a particular population of stocks, and the forward returns reflect that selection at least as much as any predictive power.
  • A chart is incomplete information. A stock breaking out of a five-year base might be a real reversal (fundamentals improving) or a dead-cat bounce (fundamentals still deteriorating). The price pattern alone cannot tell you which.

What the signals are for

I built Chartlas as a fundamental investor, for fundamental investors. The signals' job is not to generate trades — it is to compress the time between "something moved" and "I've looked at it":

  1. Surface. Screen 34,000+ tickers for mechanical changes — new highs, breakouts, structure shifts — across markets no one can watch by hand.
  2. Narrow. Restrict to what you actually follow: a watchlist, an index, a country or sector, a market-cap range — and, since mid-2026, fundamentals directly in the report builder (revenue growth, margins, balance-sheet ratios).
  3. Research. For each name that survives, do your own fundamental work — the questions no chart answers.
  4. Monitor. Signals on names you already own or have researched — a breakdown in a holding, a breakout in a name you passed on — are prompts to revisit a thesis at the right moment.

How to read the signal pages

  • Every page shows the full statistical treatment — HAC-robust p-values and a permutation test against random-date firing — computed from the current run. A side that fails the permutation test did not beat random timing, whatever its raw alpha column says; a side at the very top of the p range did reliably worse than random dates in its own claimed direction — inverted, not absent.
  • The "How to use this" sections describe what each signal is mechanically biased to catch, and how it fails.
  • The "What would likely rescue this signal" blocks, where present, name the missing ingredient that could turn a trigger into a useful filter — almost always fundamentals and event context, not more technicals.
  • The backtest's own limits are listed with it: survivorship bias, today's-snapshot universe filters, zero transaction costs, and a null that treats each ticker's fires as independent when in reality signals cluster on the same market days. All of these flatter the signals, none flatter the benchmark — which makes the weak results above more credible, not less.

Why I show the numbers anyway

Because I use this tool myself. I would rather state plainly that most sides fail a fair test — and let the signals do the job they are good at: making a fundamental investor's screening, research, and monitoring faster.

The signals are useful. They're not useful on their own.