APEX score (composite)
Engine conceptsA 0-100 number that summarises how attractive a stock looks across 12 different academic angles.
Each of the 12 factor families (quality, value, momentum, etc.) scores the stock 0-100. We z-score them across the universe, weight each by its prior reliability, and combine into one composite. 50 = neutral / average. 65+ = strong-buy region (top decile). Below 35 = strong-sell region. The number does not say "this stock will go up by X%" — it says "this stock currently looks more attractive than this percent of comparable names".
Where:Hero number on every /stocks/[ticker] page. Coloured circle in SignalFeed. Right column on /compare.
Verdict (BUY/MIXED/SELL)
Engine conceptsPlain-English bucket of the score: BUY, MIXED or SELL.
BUY = score ≥ 60 (factor stack agrees stock is attractive). MIXED = 40-60 (factors disagree, no clear edge). SELL = ≤ 40. We deliberately use 3 buckets, not 5 or 10 — finer granularity gives false precision when forward returns aren't calibrated yet.
Where:Pill next to ticker on every page. Filter tabs on /dashboard.
Forward return (expected)
Engine conceptsThe engine's best guess for how much the stock will return over the next N days, with a confidence band.
Computed by APEX v10 Forward-Return Engine as μ_h = drift + α × regime × pattern × tail, where α is the alpha contribution of the composite signal at horizon h, and the multipliers compose every other engine layer. We show 4 horizons (1d, 7d, 30d, 90d) with mean, 90% CI, and P(positive return). Prior-mode until 2026-05-16 — read it as "engine's theoretical projection from published factor literature", not "guaranteed outcome".
Where:Forward Return Projection panel on /stocks/[ticker], below the score breakdown.
Market regime (BOCPD)
Engine conceptsA label for what mood the overall market is in: risk-on (bullish), risk-off (bearish), or transition.
Adams-MacKay 2007 Bayesian Online Changepoint Detection — we maintain a posterior distribution over which regime the market is currently in, updated daily on SPY log-returns. Each factor has different efficacy in each regime (e.g. momentum works great in risk-on, gets crushed in risk-off). The regime modulates how we weight factors and how we amplify the alpha contribution.
Where:Regime pill (RISK-ON / TRANSITION / RISK-OFF) on every ticker page. Regime stripe at top of /dashboard layout.Source:Adams-MacKay 2007, Bayesian Online Changepoint Detection
Conformal prediction interval
Engine conceptsA 90% confidence band around the score — accounts for how uncertain the engine is about this specific ticker.
Vovk-Gammerman-Shafer 2005 conformal prediction provides finite-sample, distribution-free coverage guarantees: if the model says [56, 82] is a 90% interval, then 90% of similar future predictions WILL contain the realised value. We use Mondrian conformal (different intervals per regime + verdict bin). Wider interval = more uncertainty about this name.
Where:[lower – upper] band shown next to the score, and as the CI bar in the Forward Return Panel.Source:Vovk-Gammerman-Shafer 2005 / Romano-Patterson-Candès 2019
Tail-dependence (copula)
Engine conceptsHow often a pattern's factors actually move together in extreme conditions, not just on average.
Schmidt-Stadtmüller 2006: an empirical estimator for whether two factors co-move in their tails (extreme upper or lower decile). λ ≥ 0.25 means the factors historically co-move when the market is stressed — structural pattern, not coincidence. λ < 0.10 means they're independent in tails — the apparent setup is probably random alignment. We use this to dampen pattern confidence when tail-alignment is weak.
Where:Tail badge on confluence pattern banners (e.g. "✓ tail 0.32" green, "◇ tail 0.05" grey).Source:Schmidt-Stadtmüller 2006, Non-parametric tail-dependence estimator
Kalman DLM (dynamic factor weights)
Engine conceptsA way to update factor weights smoothly over time as their informational content drifts, rather than re-fitting from scratch.
Kalman 1960 / West-Harrison 1997 dynamic linear model: each factor's coefficient on forward returns is treated as a slowly-evolving random walk. We update the posterior on each new observation. This avoids the choice between "use the prior forever" (rigid) and "re-fit on a rolling window" (jumpy). Activates as forward returns accumulate post-2026-05-16.
Where:Status page layer "Kalman DLM exposures". Behind the scenes in factor weighting.Source:Kalman 1960 / West-Harrison 1997
Shapley attribution
Engine conceptsA fair way to split the credit/blame for the score among the 12 factors — each factor gets exactly its marginal contribution.
Shapley 1953 game-theoretic value: across all permutations of factor inclusion, what's factor X's average marginal contribution to the final composite? This gives a cleaner attribution than simple "factor i has weight w_i × score" because it accounts for factor interactions. The Score Composition waterfall on every ticker page shows Shapley contributions.
Where:Score Composition waterfall on /stocks/[ticker]. The +X.X numbers are Shapley contributions.Source:Shapley 1953, Value of an n-person game
Confluence pattern
Engine conceptsA named setup the engine recognises when multiple factors align — like "Quality Compounder" or "Short Squeeze".
When a specific combination of factor scores fires, we label it with one of 18 academic-style patterns (Quality Compounder, Value Trap, Short Squeeze Setup, Earnings Quality Crack, etc.). Each pattern has a published source effect size. The pattern overrides part of the raw composite — that's the +δ shown on the banner. Tail-dependence determines whether the override is full-weight (structural co-movement) or half-weight (coincidence).
Where:Confluence banner above the score on /stocks/[ticker]. Full library at /patterns.