factor · Value

Value factor — explained

Value bets that stocks trading cheaply relative to their fundamentals (book value, earnings, cash flow) outperform expensive ones over multi-year horizons. The mechanism is investor over-extrapolation: people pay a premium for recent winners and discount recent losers further than the fundamentals warrant.

Where this comes from

Academic anchor

Fama-French 1992 — The Cross-Section of Expected Stock Returns
Established that book-to-market ratio explains cross-sectional return variation independently of beta and size. Top-decile-cheap stocks beat top-decile-expensive by ~5% annually over 1963-1990. Lakonishok-Shleifer-Vishny 1994 sharpened the result by combining multiple value multiples (P/E, P/B, P/CF) and showed the premium comes specifically from glamour-stock disappointment, not value-stock surprise.
Plain English

What it actually measures

Imagine you're shown two companies: one earned $1 per share last year and trades at $10; another earned $1 and trades at $30. The market is telling you the second company will grow earnings faster than the first. Sometimes that's true — sometimes the cheap one is dying for a reason. But statistically, over decades and across countries, the market is too optimistic about the expensive cohort and too pessimistic about the cheap cohort. The difference between expectations and reality is the value premium. It plays out over years, not weeks.

No calibration constants

Math sketch

inputs   · book-to-market
         · earnings yield (trailing twelve months)
         · cash-flow yield (trailing twelve months)
ideas    · log-transform each ratio so a stock at P/B 0.5 is as far from
           the median as one at P/B 4 in log-space
         · weighted blend of the three multiples
output   · cross-sectional standardised score

Three value anchors — book-to-market, earnings yield, cash-flow yield — composited and standardised across the universe. Composite weights are calibrated and proprietary. Public: the three multiples we use, the log transform, and the academic anchor (Lakonishok-Shleifer-Vishny 1994, Fama-French 1992).

Pipeline

How Framler implements it

Book value, EPS, and cash-flow figures come from SEC EDGAR XBRL filings — quarterly cadence, refreshed within hours of 10-Q / 10-K. Market cap is end-of-day. The composite refreshes daily at 06:00 UTC. We z-score within each sector cohort as well as across the full universe — sector-neutral value protects against the factor accidentally picking up an energy / financials tilt during sector rotations.

One coherent posterior

How it composes with Framler

Value pairs structurally with Quality (Novy-Marx 2013 explicitly argues quality + value works better than either alone) and with Momentum (Asness-Moskowitz-Pedersen 2013's value-and-momentum-everywhere). When all three fire bullish on the same ticker, the QUALITY COMPOUNDER pattern triggers. When value is high but quality is low and accruals are weak, the VALUE TRAP pattern fires bearish — Lakonishok-Shleifer-Vishny 1994's exact warning. Regime amplifier favours value in late-cycle and risk-off.

Honest limitations

When it fails

Value traps: a stock trading cheaply because its business model is permanently broken. We mitigate via the cross-product with Quality and Accruals — VALUE TRAP fires when value is high but quality is low. Second failure: long droughts. Value underperformed for ~12 years (2008-2020) before reverting. The reason isn't a broken factor; it's that growth stocks during ZIRP got priced for perfection. The 2022-2023 reversal showed value rebounded sharply once rates normalised. Position-sizing via the conformal prediction interval helps — we never go all-in on value, we size to the model's confidence.

Pro depth

Engineering integration

How Value flows through the production engine
Sign convention
Bullish-when-high. Universal across all 13 factor families — a high Value score reads as a bullish lean, low as bearish, 50 as neutral. The composite inherits the convention unchanged.
Standardisation
Cross-sectional z-score per scoring day across the 1,000+-ticker universe, then mapped to 0-100. Tickers without sufficient input data surface as null and the composite skip-and-renormalise path takes over (Asness-Frazzini-Pedersen 2014).
Refresh cadence
Recomputed daily via the universe-scoring cron (production runs 06:00 UTC on weekdays via Vercel + GitHub Actions). Factor-specific upstream data refresh is described in the implementation section above.
Composite entry
Enters the Bayesian composite with a regime-conditional weight calibrated weekly by the calibrate-weights cron against accumulated forward-return data. Per-regime weight vectors are proprietary; the architecture is in the math sketch above.
Diagnostic surface
Live structural invariants on /coherence exercise the math stack on every request (factor correlation matrix, BOCPD posterior, Mondrian bin coverage). Coverage and IC accumulate weekly via the accuracy-check cron; the sector-honesty panel on /track-record publishes per-cohort calibration tiers.
Hidden by design
The exact factor weight, regime-conditional multipliers, and any constant inside the math sketch marked «calibrated and proprietary» stay private — that's the engineering moat. Everything above architecture-level is published; everything below stays in the engine.
Read next

Related factors

QualityMomentum

See Value score on a real ticker

Every ticker page shows the per-factor decomposition. The Value score is one of thirteen composing the 0–100 the composite score.

Try NVDA →Full methodologyMath coherence live
Value factor explained | Framler