Most retail traders see a stock up 8% and assume it's too late. GRIP scores the structure of the move — not just the magnitude — to find the ones that still have momentum.
Each dimension is scored 0–25. Combined, they produce the GRIP total.
G
Growth
0 – 25 points
How hard is it moving?
R
Range
0 – 25 points
Where did price close in its range?
I
Intensity
0 – 25 points
Is real money behind this?
P
Probability
0 – 25 points
Will it continue?
Every scored stock falls into one of five tiers.
WEAK
LOW
MODERATE
HIGH
ELITE
Squintz only texts you when a signal hits HIGH or ELITE with all 7 conviction gates aligned.
Here's how Squintz would score a real move.
Live Example Alert
82
GRIP Score
G=19: +5.7% move falls in the 4–6% band → 15 base points + momentum bonus
R=18: Price closed in the 70–85% range of its intraday high-low
I=23: Volume exceeded 2M shares — institutional participation confirmed
P=22: ML model gave 88% continuation probability → 22/25
Every single gate must pass. If one fails, no alert fires. No exceptions.
GRIP Total ≥ 75
The combined score must clear the HIGH tier minimum.
G Score ≥ 10
Momentum must be real — at least a 2% move.
I Score ≥ 10
Volume must confirm. Low-volume moves don't count.
Change % ≥ 4.0%
Minimum intraday move to qualify as significant.
Direction = Up
Squintz only signals longs. No short signals.
Time = 9:30 AM – 3:30 PM ET
Prime trading window only. No pre-market or after-hours noise.
Price ≤ $300
Keeps positions accessible with a small account.
When Squintz fires an alert, it doesn't forget about it. The outcome tracker automatically goes back and records what happened to that stock at 1 hour, 4 hours, and 24 hours after the alert.
Once 50 labeled outcomes exist, the ML model trains for the first time. After that, it retrains every Friday with all accumulated data.
The Probability score — the P in GRIP — switches from rule-based logic to ML-powered prediction. Every week the model gets a little sharper.
Alert fires → GRIP score recorded
Outcome tracker labels 1hr / 4hr / 24hr results
50+ labels → first ML model trains
Every Friday → automatic retrain
P score uses ML predict_proba() × 25