Expand description
§Features: what SD v2 looks at
Classic SD looked at the market through three keyholes: one compression measurement (21 bars), one momentum gauge (the Awesome Oscillator), and a stopwatch that either said “active” or “expired”. Each keyhole is where one of the known weaknesses came from:
| Weakness | Keyhole | What v2 adds |
|---|---|---|
| Short squeezes are missed | A 21-bar Bollinger band needs ~21 quiet bars before it can shrink | A second, 10-bar compression gauge, plus a continuous squeeze depth q |
| Momentum is one-dimensional | AO only, and a single AO colour change ends the trade | A panel of seven momentum gauges, blended, and a flip that must persist |
| No time decay | Active is a yes/no switch | A smooth strength curve over the life of the fire, and stored squeeze energy |
This module only measures. It does not decide anything; model.rs
learns how much each measurement is worth, and engine.rs turns that
into the SD number.
§Squeeze depth q
The classic tiers compare SMA + 2σ with SMA + k·ATR. The SMAs cancel,
so the test is really 2σ ≤ k·ATR, i.e. q = 2σ/ATR ≤ k. Writing it this
way gives one continuous number: q < 1 is a high squeeze, q < 1.5 mid,
q < 2 low, and how far below 2 tells you how tightly coiled price is.
Structs§
- Feature
Config - Knobs that change how features are measured (not how they are weighted).
- Feature
Frame - All measurements for one symbol, one entry per bar.
Enums§
- Compression
Mode - Which compression gauge drives the squeeze clock.
- Flip
Mode - How the clock decides “momentum flipped”.
Constants§
- DEFAULT_
BLEND - Equal default weights for the momentum blend, before any learning.
- FEATURE_
NAMES - Names of the model inputs, in column order. Keep in sync with
FeatureFrame::row.
Functions§
- decay_
kernel - The time-decay kernel.
- tier
- Classic tier from a continuous depth.