Relative Strength Command Center

Institutional Accumulation, Detected

A structured engine for identifying stocks and themes under sustained relative strength during market weakness, tracking leadership across timeframes, and isolating the spring-load moment before expansion.

Provider WORKER Universe 0 Last scan never Calls 0
Market Pulse
RS Leaderboard
Leadership Rankings
Themes
Rotation
Spring-Load
Benchmarks
Watchlist & Config
Methodology

Market Pulse

Regime detection across QQQ, SPY and SMH with watchlist breadth. RS scanning activates only under qualifying market conditions to ensure strength readings reflect true accumulation rather than market drift.

Market Regime
Awaiting Scan Run scan to detect regime
Watchlist breadth
% Positive
RS scanningInactive
Median return
Benchmarks
QQQ
SPY
SMH

Top Leaders at a Glance

The five strongest names in the universe by RS Score with persistence flag. Full table is in the Leaderboard tab.

TickerRS ScoreDaily %RS SpreadVol ZRSIPersist
Run a scan to populate

Daily RS Leaderboard

Stocks ranked by composite RS Score. Sortable by every metric. The score blends excess return over QQQ, RS line slope, volume confirmation and short-term momentum.

RS Score Ticker Daily % RS Spread Vol Z 5d ROC RS Slope RSI(14) Persist
Run a scan to populate

Multi-Timeframe Leadership Rankings

A Leadership Score combining average RS across 20 days, consistency of outperformance, trend slope, acceleration and volume confirmation. Tier 1 names are persistent institutional leaders. Tier 2 are emerging.

Tier Leadership Score Ticker Avg RS Score (20d) Consistency 20d Trend Slope Acceleration Vol Confirm 5d 60d
Run a scan to populate

Thematic Intelligence

Themes ranked by composite Theme Score. Low dispersion plus high median RS plus high participation indicates coordinated accumulation. High dispersion with mixed signal suggests rotation rather than thematic strength.

Define themes in the Watchlist tab, then run a scan.

Theme Detail

Full theme breakdown with all constituent metrics.

Theme Score Theme Members Median RS Avg Return Participation Dispersion Avg RS 5d Avg RS 20d
Define themes and run a scan

Rotation Detector

Day-over-day change in theme ranking, participation and trend. Themes with rapid rank improvements and rising participation are candidate emerging-leadership rotations.

Theme Current Rank Previous Rank Δ Rank Δ Participation Δ Trend Signal
Run two scans on different days to observe rotation

Spring-Load Detection

A three-phase model. Setup requires confirmed RS leadership. Compression requires ATR contraction (volatility in lowest 30th percentile of the last 60 days) and price held above its 10-day moving average. Trigger requires QQQ green, a 20-day high break or 5-day ROC acceleration, and volume expansion.

Run a scan to populate

Benchmark Comparison

QQQ, SPY and SMH compared across returns, volatility and short-term trend. Stock-vs-benchmark RS is computed against all three for each name in the leaderboard.

BenchmarkPriceDaily %5d Return20d ReturnVolatility 20dRSI
Run a scan to populate

Top vs Benchmarks

For each top-ranked stock, spread against each benchmark.

TickerStock Returnvs QQQvs SPYvs SMH
Run a scan to populate

Watchlist Editor

Universe of stocks the engine tracks. Benchmarks (QQQ, SPY, SMH) are always included automatically. Recommended 30-50 names for free-tier API limits.

Theme Builder

Data Provider

The engine talks to a Cloudflare Worker you deploy in 2 minutes. Full setup walkthrough is in the Methodology tab. Once you paste the URL here and click Save, the engine fetches Yahoo Finance OHLCV through your own Worker — no CORS, no rate limits, no third-party proxies.

Why this is the only path that works: in 2026, every browser-callable free OHLCV API either blocks CORS (Yahoo, Twelve Data), requires a paid plan (FMP, Finnhub), or has a useless free quota (Alpha Vantage at 25/day). Running a tiny Worker on your own Cloudflare account routes around all of this.

Worker free tier: 100,000 requests/day. A full scan uses ~40 of those.

Methodology & Formulas

Every metric the engine computes, exactly as it computes it.

Relative Strength Line (Normalized)
RS line is the ratio of stock price to benchmark, normalized to the start of the lookback window so all stocks are directly comparable. A rising RS line means the stock is outperforming the benchmark regardless of absolute price.
RS(t) = (Stock(t) / Stock(0)) / (QQQ(t) / QQQ(0))
RS Score (Composite)
Weighted blend of excess return, RS line slope, volume confirmation and short momentum. Volume Z-score is capped at +4 to prevent earnings-day outliers from dominating the score.
RS_Score = 0.40 × (StockRet − QQQRet) + 0.25 × RS_Slope (10-day linreg, normalized) + 0.20 × min(VolumeZ, 4) + 0.15 × ROC(5)
Persistence Filter (Refined)
Original spec required red-day persistence. We extended it: a name qualifies as persistent if RS Score was above threshold on at least 2 of the last 3 red days OR remained above threshold for 5 of the last 10 days regardless of market color. This avoids signal starvation during steady uptrends.
Leadership Score
Multi-timeframe composite. Weights shifted toward slope and acceleration vs the draft to catch emerging leaders earlier (matching O'Neil/Minervini-style institutional-leadership detection).
Leadership = 0.30 × Avg_RS_Score(20d) + 0.25 × Consistency(20d) + 0.20 × RS_Trend_Slope + 0.15 × RS_Acceleration + 0.10 × Volume_Confirmation Tier 1: top 20% — Institutional Leaders Tier 2: 20-50% — Emerging Tier 3: 50-100% — Weak / Noise
Theme Score
Original spec mixed scales. We percentile-rank each component across all themes before combining so they are unit-comparable.
Theme_Score = 0.45 × pct_rank(Median_RS) + 0.35 × pct_rank(Participation) − 0.20 × pct_rank(Dispersion)
Spring-Load Phases (Refined)
Phase 1 — Setup: RS Score above threshold AND positive RS trend.
Phase 2 — Compression: ATR(14) in lowest 30th percentile of last 60 days AND price > 10-day MA.
Phase 3 — Trigger: QQQ daily > 0 AND (price > 20-day high OR 5d ROC accelerating) AND volume > 1.3× 20-day average.
Live Data & Refresh
The engine pulls fresh daily OHLCV every time you click Run Scan. There is no continuous polling — by design, since intraday RS noise is unhelpful for this signal. For end-of-day refresh, run once after US market close (~22:00 Lisbon time).

Provider options:
Why a Cloudflare Worker: every free OHLCV API in 2026 either blocks browser requests (CORS), requires a paid plan, or has a too-small free quota. A Worker runs server-side on Cloudflare's network, so it can call Yahoo Finance freely and return data to your browser with CORS headers attached. Free tier: 100,000 requests/day, never expires, takes 2 minutes to set up.

One-time setup (2 minutes):
1. Sign in to dash.cloudflare.com (same account you use for Pages).
2. Left sidebar: Workers & PagesCreateWorkers: Get startedHello World template → name it lai-yahoo-proxy → Deploy.
3. After deploy, click Edit code. Delete everything. Paste the file lai-yahoo-proxy.js (delivered alongside this engine).
4. Click Deploy (top right).
5. Copy the URL shown — it ends in .workers.dev.
6. Open this engine → Watchlist & Config → paste that URL into the field → click Save.
7. Click Test next to Save to verify connectivity. You should see "Worker OK".
8. Click Run Scan. Done forever.

What the Worker does: the code (about 90 lines) handles Yahoo's cookie+crumb authentication, caches the cookie per-isolate for 25 minutes, and serves OHLCV data with CORS headers. The endpoint accepts ?symbol=QQQ. Range defaults to 4 months (about 84 trading days, enough for all engine calculations).

Settings persist in browser localStorage. Re-enter your key on a new device.
Architecture Notes
The data provider is a swappable module. Calculations live in pure functions that take normalized arrays. To move to Python/Polygon later, only the data-fetch layer needs replacing — the scoring engine logic is portable as-is.