Price Path Analysis operates at two levels: index-level (SPY, QQQ, SMH, IGV) for market regime context, and company-level for individual ticker flags. It answers the question: is the current price move driven by earnings growth or multiple expansion?
Computed daily for four index ETFs that represent the platform's sector coverage:
| Index | Coverage |
|---|---|
| SPY | Broad market (S&P 500) |
| QQQ | Large-cap tech (Nasdaq-100) |
| SMH | Semiconductors |
| IGV | Software |
| Indicator | Parameters | Purpose |
|---|---|---|
| RSI-14 | 14-day, Wilder-smoothed | Overbought (>70) / oversold (<30) detection |
| Bollinger Bands | 20-day SMA, 2 std | Volatility envelope; price above upper band = stretched |
| Moving Averages | 3M (63d), 6M (126d), 2Y (504d) | Trend context; deviation from SMA = mean reversion signal |
| Price Deviation | % from each SMA | Distance from trend indicates stretch or compression |
Decomposes 6-month total return into earnings growth vs multiple expansion:
| Label | Condition | Interpretation |
|---|---|---|
| Multiple-Driven | Expansion > 60% of return | Rally is P/E expansion, not earnings — fragile |
| Balanced | 40–60% | Healthy mix of growth and re-rating |
| Earnings-Driven | Expansion < 40% | Rally backed by fundamentals |
| Contracting | Negative total return | Both components declining |
Composite measure of how extended the index is from fair value. 0 = oversold, 50 = neutral, 100 = stretched.
| Component | Weight | Scoring |
|---|---|---|
| Deviation from 6M SMA | 30% | >10% above = 80+, at SMA = 50, >10% below = 20 |
| RSI-14 | 25% | Mapped directly (0–100) |
| Bollinger Band Position | 15% | Above upper = 85, within = 50, below lower = 15 |
| PE Decomposition | 15% | Multiple-driven = 75, balanced = 50, earnings-driven = 30 |
| Price Acceleration | 15% | Positive acceleration = higher score (more stretch risk) |
| Label | Score Range |
|---|---|
| Technically Stretched | ≥75 |
| Elevated | 60–74 |
| Neutral | 40–59 |
| Mean-Reverting | 25–39 |
| Oversold | <25 |
Flags individual tickers where price has run ahead of fundamentals:
The valuation drift signal was updated to use the system's 1-year analyst consensus target (scaled from the 2-year thesis target) instead of the raw 2-year thesis target. This gives a more grounded comparison: if the stock is already 5% above where analysts think it should be in 12 months, and the move is multiple-driven, that's a concrete flag.
Daily comparison of two competing price targets against the current price:
| Target | Source | Field |
|---|---|---|
| Our 12M Target | investment_theses.target_12m | Scaled from 2-year thesis bull/base/bear framework |
| Analyst Consensus | analyst_ratings.target_consensus | Mean of sell-side 12-month price targets |
Stored in target_accuracy_snapshots table. Over time, this builds a track record of whose price targets more accurately anticipate where the stock ends up.
The Predictive Analysis page shows a Target Scorecard grouped by custom sector taxonomy:
| Metric | Description |
|---|---|
| Our Target Closer % | Percentage of tickers where our target is nearer to current price than consensus |
| Avg Our Gap | Average absolute distance of our target from current price |
| Avg Consensus Gap | Average absolute distance of consensus target from current price |
| Win Rate by Sector | Our closer % broken down by sector group |
| Task | Cadence | Time (ET) |
|---|---|---|
| Index price path (SPY/QQQ/SMH/IGV) | Daily (Mon–Fri) | 8:35 AM |
| Company price path flags | Daily (Mon–Fri) | 8:35 AM |
| Target accuracy snapshot | Sunday | 4:50 AM (alongside conviction snapshot) |