What does this report establish?
This report is the citable record of Quant Score v1.0: the exact component weights, normalization, recommendation bands, universe, data sources, and version policy behind every /quant-score/[ticker] page. Its purpose is reproducibility — an independent reader with the same bars and the documented weights should reproduce any ticker's score within rounding — and auditability: every design choice that could flatter scores is disclosed in one place.
The framework aggregates five contributions from a single 60-to-120-day daily-bar window scored by TechnicalEngine: trend (−25…+25 from MA5/MA10/MA20 alignment plus MA5-bias discipline), volume (−14…+12 across four regimes), MACD (−12…+12 across cross and histogram states), RSI (−10…+10 across overbought/oversold/strong-buy), and volatility (−2…+5 from Bollinger squeeze and ATR14 regime). Baseline 50, clamped to 5–98.
Recommendation bands are fixed cut points, not fitted: STRONG_BUY ≥80, BUY ≥68, HOLD ≥52, WAIT ≥40, SELL ≥25, otherwise STRONG_SELL. Fixed bands are a feature — fitted bands would be one more hidden trial.
What is the universe and how is it maintained?
The v1.0 universe is 100 large-cap US tickers (AAPL through ROP in src/lib/quant/tickers.ts), a stable S&P subset chosen for liquidity and data coverage. Stability is deliberate: a fixed universe makes scores comparable across time and denies any temptation to rotate constituents ex post.
Each ticker page fetches a rolling 120-day daily window (Finnhub candle, Alpaca bars fallback) and revalidates every 24 hours (ISR 86400). Sector comes from Finnhub profile2 where resolvable and is displayed, not scored — v1.0 has no cross-sectional risk adjustment, disclosed as a limitation below.
Indexability is gated by isQuantScoreIndexable: ≥20 bars and a non-empty unique interpretation (≥80 chars), otherwise noindex until enriched. Thin programmatic shells are never indexed — the §4C guardrail is code, not policy prose.
What are the honest limitations?
Single-window, single-asset, no beta or industry adjustment: two tickers with identical scores can carry very different systematic risk. No transaction-cost, capacity, or slippage modelling: scores describe signal state, not tradable expectancy. Indicators lag regime change by construction — the framework inherits every limit of trend/MACD/RSI systems.
Adapter dependence: scores exist only where Finnhub/Alpaca return ≥5 bars (≥20 for indexing). Coverage gaps surface as explicit pending states with the error shown, never as stale scores presented as fresh.
Version discipline: any weight, band, or universe change ships as v1.1+ with an updated report and a changelog entry. Scores are always displayed with their methodologyVersion and calculatedAt timestamp so no number floats free of its specification.
How should others cite and challenge this work?
Cite as: TheQuantHackers (2026). Quant Score Framework Report 2026-Q3, v1.0. thequanthackers.com/methodology/quant-score-framework-2026. Dataset: 100-ticker universe with per-ticker component tables at /quant-score/[ticker].
Challenges welcome via the contact page: weight justification, band calibration, universe bias, adapter coverage. Substantive corrections update the report with a new last-reviewed date per the editorial policy on /company/about.