2. What v1 got wrong
Before changing anything, we measured. The question was simple: when
classic SD says + or -, is it right?
We ran it over 125 symbols (index and sector ETFs, mega caps, laggards, meme-era names) with daily bars from 2001 to October 2026, about 680,000 bar-by-bar readings. Each reading was graded against what price actually did over the next 5, 10, 21 and 63 trading days. The full method is in chapter 4; this chapter is the story of the results.
#The direction calls are a coin flip
Here are classic SD's calls on 2019–2026, the years we held back for
grading (reports/indicator_study.txt):
| Horizon | Calls | Hit rate | "Always up" hit rate | Lift |
|---|---|---|---|---|
| 5 days | 153,296 | 50.5% | 54.6% | −4.1 pts |
| 21 days | 152,110 | 50.9% | 57.6% | −6.6 pts |
| 63 days | 148,915 | 51.2% | 60.8% | −9.6 pts |
Group A only (+/-), 21 days | 41,454 | 51.0% | 57.3% | −6.3 pts |
"Always up" is the dumbest possible forecast: stocks rise over time, so just say "up" every day. Classic SD loses to it at every horizon. Its own calls are right about as often as a coin.
Why compare with "always up" and not 50%? Because a forecast that says "up" more often than "down" gets credit for the market's upward drift without knowing anything. Any honest test of direction has to beat the drift, not just 50%.
That was the headline. Then we went looking for each of the three weaknesses we had suspected.
#Weakness 1: short squeezes are blurred
A 21-bar Bollinger band needs about 21 quiet bars before it can shrink. A squeeze that is short but deep, say six very quiet days, is averaged together with the fifteen noisy days before it and may never register as tier 3. The paper's machine then never sees a "higher squeeze", so θ and the fire are measured against the wrong tier.
v2's response: a second, 10-bar gauge that can raise the tier (chapter 3).
What the data said: the 10-bar gauge does see real squeezes. When it
raises the tier, the next 10 days move about as much as a genuine 21-bar
tier-2 squeeze (reports/indicator_anatomy.txt). But for predicting move
size, it adds almost nothing once the other squeeze measurements are in
the model. That is an honest "helps the clock, does not move the needle".
#Weakness 2: momentum is one-dimensional
AO alone decides direction, and one AO colour change ends a fire.
v2's response: a panel of eight momentum gauges, blended, and a flip that must hold for two bars.
What the data said: this is where we learned the most, and it is
humbling. Not one of the eight gauges, nor their blend, nor any learned
combination of them, predicts direction out of sample. The rank skill
(AUC) of every gauge on 2019–2026 is between 0.49 and 0.51, where 0.5 is
no skill. We then tried the setups the squeeze thesis says should work:
fresh fires, all eight gauges agreeing, high stored energy, alignment with
the 6-month trend, and alignment with the market. Every one lands between
49% and 53%, below its own base rate, in both the training era and the test
era (sd_backtest grid).
#Weakness 3: no sense of time
Active is a yes/no switch: full strength until ⌈θ⌉ bars, then nothing.
v2's response: a smooth time-decay curve, plus stored squeeze energy.
What the data said: time decay is real, but it arrives later than expected (10-day move size in units of normal volatility, both eras agree):
| Fire phase τ/θ | 2001–13 | 2019–26 |
|---|---|---|
| 0.25–0.5 | 0.851 | 0.903 |
| 0.5–1.0 | 0.827 | 0.890 |
| 1.0–1.5 | 0.816 | 0.890 |
| 2.0–3.0 | 0.812 | 0.842 |
| 3.0+ | 0.792 | 0.830 |
Moves stay large for about one and a half expected lifetimes, then fade. That is exactly the shape of the v2 decay curve. Its first draft faded at half a lifetime; the measurement corrected it.
#The plot twist: SD is good at size
While direction refused to cooperate, every measurement of size lined up, in both eras:
| Measurement | Small → big | 10-day move, 2019–26 |
|---|---|---|
| Squeeze tier | 1 → 2 → 3 | 0.897 → 0.936 → 0.978 |
| Stored energy quartile | Q1 → Q4 | 0.858 → 0.942 |
| Squeeze duration | 1–4 → 16–32 bars | 0.920 → 0.969 |
(1.0 means "an ordinary move for this stock".) Deeper, longer, more energetic squeezes are followed by bigger moves, exactly as the old saying promises. They just do not tell you which way.
There is one more honest caveat here. A squeeze is, almost by definition, a
time when recent volatility is low. Low volatility tends to rise back
toward normal ("volatility mean reversion"), and that alone explains most
of the effect. A model using only volatility ratios ranks future move size
with ρ = 0.211. Adding every squeeze measurement lifts it to 0.219
(reports/indicator_magnitude.txt). The squeeze adds a little information,
and a clean way to see the volatility setup. It is not magic.
#So we changed what the SD number means
Classic SD's number has almost no relationship with move size: the rank correlation between |SD − 0.5| and the size of the next month's move is +0.003. If SD is good at size and bad at direction, its number should say so. In v2:
- How far SD is from 0.5 is set by the expected move. A reading of 0.9 or 0.1 means "a big move is expected"; 0.52 means "expect little".
- Which side of 0.5 it is on is the momentum lean, and the reading carries an honest probability: whatever SD reads, about 58% of past readings like it rose.
That rank correlation is now +0.171. The next chapter shows how.