The compounders and the cigar butts - gross profitability against earnings yield in total returns, twenty sealed windows of the S&P 500
Novy-Marx called gross profitability the other side of value: a quality measure that predicts returns like a value measure while selecting the opposite stocks. Fama and French folded it into their five-factor model in 2015 and ranked its standing comparable to value itself. This study puts that claim on twenty sealed one-year windows of the point-in-time S&P 500, measured in total returns with real costs on both sides: thirty names ranked on gross profits over assets, against thirty ranked on earnings yield, equal weight, re-selected annually, both against an equal-weight index with its own dividends reinvested. Comparable standing is exactly what the record shows - ten windows each, a 48.5 percent bootstrap, a difference track with a Sharpe of 0.01: a coin flip. Everything else about the two books is opposite. They share a median of ONE name in thirty and in five windows share nothing at all. The profitability book collected 1.3 percent a year in dividends, the cheapness book 2.8. The profitability book won every crisis on the record - 2008 by ten points, 2018 by fourteen, 2020 by thirty-eight, the widest gap in this series - and cheapness has won all five windows since 2021. One more fact sits on this record - stated as a description of a single path, not a pre-registered claim: the profitability book compounded at 11.8 percent a year with less volatility than the index it beat (20.3 against 20.7 percent; Sharpe 0.649 against 0.545), the only one of this series' three books to beat the honest benchmark on return and risk at once. The verdict stands regardless: you were never choosing between two returns - twenty years cannot rank them. You were choosing between two experiences: quality compounds quietly and pays almost nothing in cash; cheap explodes, collapses, and pays you to wait. Which is, precisely, Fama-French's claim of comparable standing.
1 Methodology
Two sealed circuits, identical except the composite family weighting: BOTH arms compute the same two factor legs from the same SEC acceptance-dated filings - gross profitability (gross profits over total assets) and earnings yield - and Arm A weights profitability 100 with value 0 while Arm B weights value 100 with profitability 0. Symmetry of the two ranked pools is by construction and machine-checked per window. Thirty highest composite-ranked names, equal weight, long only, annual re-selection, twenty one-year out-of-sample windows anchored each January from 2006. Robust-minus-weak is deliberately not constructed - no shorting, no weak leg; the claim is tested long-only on the robust side.
The realism layer is identical in both arms: TOTAL returns with each held name's dividend credited on its ex-date (split-adjusted amounts matching the split-adjusted price series) and held as cash to the next rebalance; ten basis points of transaction cost per one-way traded dollar; the RSP benchmark rebuilt as a total-return index by the same ex-date rule (its dividends added 2.03 points a year on average). Sharpe ratios are raw daily-return Sharpes, no cash hurdle. Machine gates verified per window that the total-return basis, the cost charge and the dividend accounting were live in both arms.
Lineage, in plain words: this circuit was registered once, before running, and every window's report was frozen at execution. Its design is the preceding dividend study's frozen shape with one change - the composite weighting replaces the value-metric selection as the single difference - and no alternative specifications were explored or run before registration. The design history behind the inherited shape is that study's, disclosed there.
2 Results
2.1 Headline
2.2 Per-step results
| # | Out-of-sample window | Gross profitability SR | Earnings yield SR |
|---|---|---|---|
| 1 | 2006-01-03 → 2006-12-29 | 1.15 | 0.97 |
| 2 | 2007-01-03 → 2007-12-31 | 0.43 | 0.77 |
| 3 | 2008-01-02 → 2008-12-31 | -0.48 | -0.84 |
| 4 | 2009-01-02 → 2009-12-31 | 1.20 | 1.00 |
| 5 | 2010-01-04 → 2010-12-31 | 1.33 | 0.82 |
| 6 | 2011-01-03 → 2011-12-30 | 0.23 | -0.13 |
| 7 | 2012-01-03 → 2012-12-31 | 0.82 | 1.27 |
| 8 | 2013-01-02 → 2013-12-31 | 2.55 | 2.90 |
| 9 | 2014-01-02 → 2014-12-31 | 1.30 | 1.07 |
| 10 | 2015-01-02 → 2015-12-31 | -0.35 | -0.60 |
| 11 | 2016-01-04 → 2016-12-30 | 0.24 | 1.08 |
| 12 | 2017-01-03 → 2017-12-29 | 1.99 | 1.87 |
| 13 | 2018-01-02 → 2018-12-31 | 0.34 | -0.62 |
| 14 | 2019-01-02 → 2019-12-31 | 1.16 | 1.30 |
| 15 | 2020-01-02 → 2020-12-31 | 0.99 | 0.04 |
| 16 | 2021-01-04 → 2021-12-31 | 2.24 | 1.81 |
| 17 | 2022-01-03 → 2022-12-30 | -0.65 | -0.49 |
| 18 | 2023-01-03 → 2023-12-29 | 0.75 | 1.14 |
| 19 | 2024-01-02 → 2024-12-31 | 1.32 | 1.36 |
| 20 | 2025-01-02 → 2025-12-31 | 0.59 | 1.28 |
2.3 Search accounting
No search record exists for this design. It was not promoted from a recorded evolving search, so the number of alternatives tried before it, on paper, in another tool, or in the author's head, is unknown. Unknown is a different fact from one: a study with no lineage is not a strategy with one trial, it is a strategy with an unrecorded number of them. Accordingly no count of alternatives tried is claimed, and nothing in this paper is corrected for a search that was never recorded; the number that stands is the raw out-of-sample result plus this disclosure. The registered per-step record below (§4) still guarantees each window's hypothesis was hashed and registered before that window was scored.
2.4 The comparison
Both arms trade the same registered windows, so their returns can be PAIRED: inside each window the two return series are inner-joined date by date and the difference rGross profitability − rEarnings yield is the object under test. Because this is ONE pre-declared contrast, frozen at registration before any window was scored, the paired statistic needs no multiple-testing deflation, and the per-arm pooled numbers above are likewise uncorrected, this design has no recorded search to correct against (§2.3). The paired contrast is the one statistic here that a missing search record does not weaken: it was declared in advance, and it is scored on the difference rather than on either arm's level.
In the table: Arm A = Gross profitability · Arm B = Earnings yield.
| # | Window | Paired bars | Arm A | Arm B | Δ | Leader |
|---|---|---|---|---|---|---|
| 1 | 2006-01-04 → 2006-12-29 | 250 | +14.0% | +11.5% | +2.4 pp | Arm A |
| 2 | 2007-01-04 → 2007-12-31 | 250 | +6.3% | +13.9% | -7.5 pp | Arm B |
| 3 | 2008-01-03 → 2008-12-31 | 252 | -24.4% | -34.6% | +10.2 pp | Arm A |
| 4 | 2009-01-05 → 2009-12-31 | 251 | +39.1% | +32.4% | +6.7 pp | Arm A |
| 5 | 2010-01-05 → 2010-12-31 | 251 | +26.6% | +16.2% | +10.4 pp | Arm A |
| 6 | 2011-01-04 → 2011-12-30 | 251 | +2.7% | -7.0% | +9.7 pp | Arm A |
| 7 | 2012-01-04 → 2012-12-31 | 249 | +11.1% | +22.5% | -11.3 pp | Arm B |
| 8 | 2013-01-03 → 2013-12-31 | 251 | +38.7% | +50.8% | -12.1 pp | Arm B |
| 9 | 2014-01-03 → 2014-12-31 | 251 | +15.7% | +14.2% | +1.5 pp | Arm A |
| 10 | 2015-01-05 → 2015-12-31 | 251 | -6.4% | -11.4% | +5.0 pp | Arm A |
| 11 | 2016-01-05 → 2016-12-30 | 251 | +2.6% | +21.8% | -19.2 pp | Arm B |
| 12 | 2017-01-04 → 2017-12-29 | 250 | +26.7% | +22.0% | +4.7 pp | Arm A |
| 13 | 2018-01-03 → 2018-12-31 | 250 | +4.6% | -9.8% | +14.4 pp | Arm A |
| 14 | 2019-01-03 → 2019-12-31 | 251 | +17.8% | +21.7% | -3.8 pp | Arm B |
| 15 | 2020-01-03 → 2020-12-31 | 252 | +30.1% | -8.1% | +38.2 pp | Arm A |
| 16 | 2021-01-05 → 2021-12-31 | 251 | +35.2% | +42.0% | -6.8 pp | Arm B |
| 17 | 2022-01-04 → 2022-12-30 | 250 | -17.0% | -13.8% | -3.2 pp | Arm B |
| 18 | 2023-01-04 → 2023-12-29 | 249 | +10.0% | +20.4% | -10.4 pp | Arm B |
| 19 | 2024-01-03 → 2024-12-31 | 251 | +17.7% | +23.8% | -6.0 pp | Arm B |
| 20 | 2025-01-03 → 2025-12-31 | 249 | +8.4% | +30.0% | -21.6 pp | Arm B |
Paired Sharpe of the difference track: 0.01 · block bootstrap (2000 paths, block 10, seed 1234): P(Gross profitability beats Earnings yield) = 48.5%.
Window win-rate. Gross profitability led 10 of 20 windows (50.0%), Earnings yield led 10 , and the mean window gap of +0.05 pp points the same way. Widest single window: 2020 at +38.2 pp.
| Period | Windows | Gross profitability | Earnings yield | Mean gap | Gross profitability led |
|---|---|---|---|---|---|
| All windows | 20 | +12.97% | +12.93% | +0.05 pp | 10/20 |
| Before 2021 | 15 | +13.68% | +10.41% | +3.27 pp | 10/15 |
| 2021 onward | 5 | +10.86% | +20.48% | -9.62 pp | 0/5 |
The two eras disagree by 12.89 pp. The pooled figure is therefore not a standing property of either method, it is dominated by the later period. Read the two rows, not the average.
3 The circuit
The strategy is a circuit of platform primitives, frozen when the study is registered. Below is the circuit as wired on the canvas, the objective it encodes and how the search runs through it, followed by the mathematics each primitive actually computes, the same formulas the execution engine runs. The complete parameterisation is preserved in the study ledger (Appendix A).
A COMPARATIVE study, Gross profitability vs Earnings yield, walked on the same registered out-of-sample windows. Gross profitability: S&P 500, rebalanced annual across the selected basket, and run out-of-sample from the anchor, whatever the design estimates from history is re-estimated at each anchor from pre-anchor data only, and the walk advances through registered out-of-sample windows; its disposition is the realized forward path versus the benchmark. Earnings yield: S&P 500, rebalanced annual across the selected basket, and run out-of-sample from the anchor, whatever the design estimates from history is re-estimated at each anchor from pre-anchor data only, and the walk advances through registered out-of-sample windows; its disposition is the realized forward path versus the benchmark. The arms differ in: Factor Composite, quality_weight: 100 → 0; Factor Composite, value_weight: 0 → 100. The contrast under test: whether Gross profitability generates better risk-adjusted returns than Earnings yield over the identical out-of-sample windows.
Envelopes show counts, ratios, dates, and the parameters the author chose. Full price and per-name data series are not republished: the underlying market data is licensed to QuanterLab. Point figures quoted in the prose, a named holding's return over a stated span, are summary facts derived from public market prices, not redistributed series.
The objective and the search
Gross profitability
| Universe | S&P 500 index constituents. |
|---|---|
| Validation & out-of-sample | portfolio forward test (buy-and-hold book) (1y horizon from the anchor, annual rebalance); overlays: Transaction Cost. |
| Other components | Factor models: Factor Composite, Factor Select, Fundamentals Loader (PIT), Quality Factor, Value Factor. |
Earnings yield
| Universe | S&P 500 index constituents. |
|---|---|
| Validation & out-of-sample | portfolio forward test (buy-and-hold book) (1y horizon from the anchor, annual rebalance); overlays: Transaction Cost. |
| Other components | Factor models: Factor Composite, Factor Select, Fundamentals Loader (PIT), Quality Factor, Value Factor. |
What differs between the arms, one manipulated variable, expressed as 2 paired settings on one node:
- paramFactor Composite, quality_weight: 100 → 0
- paramFactor Composite, value_weight: 0 → 100
Everything else is held identical, so an out-of-sample gap between the arms is attributable to this one change.
Cost elements are wired into the circuit, the realised drag is reported per step in Appendix B.
Show the mathematics, 10 primitives, formulas and parity notes
3.1 Universe
The starting set of tickers, resolved point-in-time from the index change-log, so names delisted or removed later still compete on the dates they traded.
Before any math, you need a list of stocks. An index preset (S&P 500, Nasdaq-100, Dow 30) is reconstructed as it stood ON your anchor date by replaying the historical add/drop change-log backwards, so a 2018 backtest sees the 2018 membership, not today's winners.
Start from today's constituents and un-apply every membership change after the anchor t:
\mathcal{U}(t) = \mathcal{U}_{\text{now}} \;\ominus\; \{\text{adds after } t\} \;\oplus\; \{\text{drops after } t\}3.2 Price Loader
Bulk OHLCV fetch for the whole universe, point-in-time, no future bars.
Momentum, volatility, trend, every price-based metric needs history. This loads open/high/low/close/volume for all names in parallel, clipped so nothing after the anchor can leak in. The lookback window is derived automatically from the deepest metric you wired.
It loads exactly enough history for the hungriest downstream metric plus a warm-up buffer:
W = \max_k(\text{lookback}_k) + \text{buffer}, \qquad \text{bars} \le \text{anchor } t3.3 Factor Loader
Point-in-time fundamentals, never let the user see a number before the SEC did.
Loads ~23 fundamental metrics (valuation, quality, growth) per name, but with one inviolable rule: a financial statement becomes visible only on or after its SEC acceptedDate. A 2020 backtest sees only what was actually filed by 2020, no look-ahead, ever.
\text{visible}(f, t) \iff \text{acceptedDate}(f) \le t3.4 Factor Value
Value, how cheap is the stock, cross-sectionally?
Blends cheapness metrics, P/E, P/B, P/S, EV/EBITDA (lower is better) plus free-cash-flow and earnings yields (higher is better). Each metric is z-scored across the universe, winsorized against outliers, weighted by the importance you set (Off/Low/Med/High), and averaged.
z_{i,k} = \pm\,\frac{x_{i,k} - \bar x_k}{s_k}\text{Value}_i = \frac{\sum_k \omega_k\,z_{i,k}}{\sum_k \omega_k}, \quad \omega \in \{0,\,0.5,\,1,\,2\}3.5 Factor Quality
Quality, is this a strong, profitable, well-financed business?
Blends profitability (ROE, ROA, ROIC, margins) and balance-sheet strength (debt-to-equity inverted, current ratio, interest coverage). Same z-score, winsorize, importance-weight recipe as every factor family.
\text{Quality}_i = \frac{\sum_k \omega_k\,z_{i,k}}{\sum_k \omega_k}3.6 Factor Composite
The weighting console, blend Value, Quality, Momentum, Growth into one 0–100 score.
Where the four factor families become a single ranking. Each family score is standardized across the universe, blended with your slider weights (or the radar's suggested tilt), and min-max scaled to 0–100. Winsorizing tames outliers; z-score or percentile normalization is your choice.
z_{i,f} = \frac{x_{i,f} - \bar x_f}{s_f}\quad(\text{clipped at the 1st / 99th percentile})C_i = \sum_f W_f\,z_{i,f}, \qquad \text{score}_i = 100\cdot\frac{C_i - \min_j C_j}{\max_j C_j - \min_j C_j}3.7 Factor Top Tier
The cut out of the factor lane, keep the top-ranked names.
Takes the composite-ranked factor set and keeps the best N, carrying the composite score, the four family scores and the point-in-time market cap for each survivor. Feed 10–20 to a direct portfolio, or 30–100 as an optimizer pool.
\{\, i : \operatorname{rank}(C_i) \le N\,\}, \quad C_i = \text{composite score}3.8 Portfolio Backtest
Replay the portfolio forward, rebalanced, point-in-time, with costs.
Holds the basket and rebalances on schedule, re-selecting and re-optimizing point-in-time at each rebalance (so it only ever uses information available then), and reports the equity curve, Sharpe, drawdown and trade stats, optionally net of cost and risk overlays.
E_t = E_{t-1}\big(1 + \mathbf w_{t}^{\top}\mathbf r_t - \text{costs}_t\big)\text{DD}_t = \frac{E_t}{\max_{\tau\le t}E_\tau} - 1, \qquad \text{MaxDD} = \min_t \text{DD}_t\text{charge}_t \;=\; \text{loan}_t \cdot \frac{\text{spread}}{252}, \qquad \text{loan}_t = \begin{cases}\max(0,\,-\text{cash}_t) & \text{institutional (netted)}\\ \max(0,\,\text{long MV}_t - E_t) & \text{retail (no netting)}\end{cases}3.9 Portfolio Forward Autopsy
The post-mortem, where the forward test’s return actually came from.
Runs after the Portfolio Forward Test and dissects its realized path: per-rebalance contributions, winners and losers, exposure and cash periods, and how the realized route compares to what the risk cones projected. It computes nothing new about the future, it explains the past the book just lived.
Depth I–IV: headline attribution, per-segment breakdown, per-name contributions, and the calibration ledger (projected cone vs realized, segment by segment). In a study, this is the node that fills the appendices.
3.10 Transaction Cost
Charge for trading, slippage + commission on every turn.
Real trading isn't free. This deducts a cost proportional to how much you trade (turnover), in basis points, so the backtest reflects net, not gross, performance.
\text{cost}_t = \frac{\text{bps}}{10{,}000}\;\times\;\text{turnover}_t, \qquad \text{turnover}_t = \tfrac12\sum_i \lvert w_{i,t}-w_{i,t^-}\rvert4 Projection calibration, pooled across the walk
Every rebalance carried a Monte Carlo cone and a 95% VaR estimated before the segment it is scored against. Two questions, pooled over the whole study: did realized outcomes land inside the band as often as the band claims, and were VaR breaches as frequent as 5%?
This section is produced by the forward tester itself: every portfolio backtest fits the cone and the VaR estimate at each rebalance and scores them against the segment that followed. It does not require, and this circuit does not contain, a Monte Carlo primitive; that primitive is a separate, standalone analysis.
| Arm | Steps | Rebalances | In band | Coverage | Expected | VaR days | Breach rate | Expected |
|---|---|---|---|---|---|---|---|---|
| Gross profitability | 20 | 35 | 17 / 20 | 85.0% ±7.98 | 90.0% | 5011 | 6.27% ±0.342 | 5.0% |
| Earnings yield | 20 | 35 | 18 / 20 | 90.0% ±6.71 | 90.0% | 5011 | 5.81% ±0.33 | 5.0% |
± values are binomial standard errors on the estimate. A coverage figure below the expected band means the projection was over-confident; a breach rate above 5% means the same of the risk model. Both forecasts used only data prior to the segment scored.
5 Discussion
5.1 Findings
Pooled over 5,011 paired out-of-sample days, the gross-profitability book earned a Sharpe of 0.649 against 0.565 for earnings yield, compounding at 11.8 against 11.0 percent a year. The honest index - equal weight, dividends reinvested - compounded at 9.5 percent with a Sharpe of 0.545. Both books beat it; the profitability book beat it while running QUIETER than the index itself: 20.3 percent annualised volatility against the index's 20.7 and the cheapness book's 23.2, with the shallowest worst drawdown of the three (46.0 percent, against 49.0 for cheapness). On this single twenty-year path, profitability was the rare book that added return while subtracting risk.
Between the arms, the verdict is a coin flip stated three ways: ten windows each; a block bootstrap of the paired daily differences (2,000 resampled paths, ten-day blocks) finishing with profitability ahead in 48.5 percent of paths; a difference track whose Sharpe is 0.01. The 0.8-point annual lean toward profitability is noise on this record - these near-disjoint books diverge by ten to twenty points in ordinary years, and by thirty-eight in 2020.
The money arrives in opposite forms. The profitability book collected 1.29 percent a year in cash dividends - BELOW the index's 2.03 - while the cheapness book collected 2.80: the quality premium on this record is paid almost entirely in price, the value premium substantially in cash. Costs are identical and small at this cadence: one annual re-selection, ten basis points on the one-way flow, one dime per hundred dollars per year in each arm, every window.
Window returns quoted in this text are the paired-day ledger of Table 2 - each arm against the other on common trading days; the appendix's per-step cards print each arm's full-window return beside the INDEX, which differs by the unpaired sessions, so the same year can carry both sets of numbers honestly.
The windows sort by regime with almost no exceptions. Profitability won every crisis and every defensive year on the record: 2008 by 10.2 points (down 24.4 while the total-return index fell 39.1), the 2009 and 2010 recoveries by 6.7 and 10.4, 2011 by 9.7, 2015 by 5.0, 2018 by 14.4, and the 2020 window - COVID - by 38.2 points, up 30.1 percent while the cheap book, loaded with the cyclicals a low multiple selects into a shutdown, lost 8.1. Cheapness won the reflations: 2012 and 2013 (the cheap book made 50.8 percent in the 2013 window), 2016 by 19.2 - and then every single window from 2021 through 2025, by 6.8, 3.2, 10.4, 6.0 and 21.6 points, the rate-shock year of 2022 included. Whatever regime began in 2021, it has favoured the cigar butts for five straight windows.
Structurally the two books are the most disjoint pair in this series: a median of ONE shared name of the thirty selected, and in five windows none at all - on ranked pools identical for both arms in every window (348 names in 2006, 504 by 2024). A stock that earns a lot on its assets is almost never cheap on its earnings; the two screens read opposite ends of the same cross-section.
5.2 Interpretation
Novy-Marx's 2013 argument was that profitability is value's mirror: controlling for price, productive firms are undervalued the way cheap firms are, and the two strategies are natural complements precisely because they select against each other. Fama and French's 2015 five-factor model institutionalised the claim with RMW and ranked its premium comparable to value's. Twenty sealed years of large caps, in total returns with costs, deliver exactly that: no rankable difference in outcome, complete difference in everything else. The one-name overlap is the mirror made literal.
What the aggregate hides is that the two premiums are paid in different weather and different currency. Profitability's edge concentrated in every stress year on the record and arrived almost entirely as price appreciation from low-yield compounders; cheapness's edge concentrated in reflations and arrived with nearly three times the dividend stream. A holder did not choose between two returns; they chose between two experiences - and since 2021 the experience has favoured cheap five windows running, a reminder that fifteen years of one personality winning the stress tests guarantees nothing about the next five.
The vs-index result deserves its own sentence, carefully. On this path the profitability book beat the honest benchmark by 2.3 points a year while running less volatile than the benchmark - the only construction in this series that added return and subtracted risk at once. That is the shape Fama-French 2015 claims for the profitability premium, and this record is consistent with it; one path of twenty years cannot certify it, and the five windows since 2021 show the premium takes leave without notice. The practical sentence: the quality screen bought index-plus returns with index-minus turbulence and almost no income; the cheap screen bought the same destination with violence and cash. Twenty years cannot tell you which to prefer - only which ride you would rather be on when the next 2008 or the next 2021 arrives.
No search record exists for this study: the design was not promoted from a recorded evolving search, so the number of alternatives tried before it is UNKNOWN, which is a different fact from one. No count of alternatives tried is claimed, and nothing is corrected for a search that was never recorded; the number that stands is the raw out-of-sample result plus this disclosure. The out-of-sample windows are historical.
5.3 Limitations
The arm-versus-arm conclusion is a null: ten windows each, a 48.5 percent bootstrap, a difference-track Sharpe of 0.01 - every directional phrase about the two screens should be read under that ceiling. The vs-index observations (return above, volatility below) describe one twenty-year path and were not pre-registered as claims; the regime pattern - profitability in crises, cheapness in reflations and in all five windows since 2021 - is a description of this record stated after seeing it. Gross profitability here is a single metric, not Fama-French's operating-profitability RMW construction, and no size stratification is attempted; nothing here speaks to small caps, to composite quality screens, or to long-short implementations. Dividends are credited gross with no withholding or reinvestment between rebalances; costs are a flat ten basis points with no impact scaling; capital-gains tax is not modelled. The ranked pool is thinner early (348 of roughly 500 members with usable fundamentals in 2006, 504 listings by 2024), identically in both arms. The engine held twenty-eight to thirty of the thirty selected names per window, with counts disclosed per window.
References
- Gelman, A., & Loken, E. (2013). The garden of forking paths: Why multiple comparisons can be a problem, even when there is no “fishing expedition.” Working paper, Columbia University.
- Harvey, C. R., Liu, Y., & Zhu, H. (2016). … and the Cross-Section of Expected Returns. Review of Financial Studies, 29(1), 5–68. doi:10.1093/rfs/hhv059
- Lo, A. W. (2002). The Statistics of Sharpe Ratios. Financial Analysts Journal, 58(4), 36–52. doi:10.2469/faj.v58.n4.2453
- Novy-Marx, R. (2013). The Other Side of Value: The Gross Profitability Premium. Journal of Financial Economics 108(1).
- Fama, E. F. and French, K. R. (2015). A Five-Factor Asset Pricing Model. Journal of Financial Economics 116(1).
- Fama, E. F. and French, K. R. (2006). Profitability, Investment and Average Returns. Journal of Financial Economics 82(3).
Appendix A Reproducibility in QuanterLab
Each step is backed by a frozen run report. The study is re-derivable from the ledger below.
| # | Commit | Report | Anchor | OOS window |
|---|---|---|---|---|
| 1 | 349c87784363 | 1222 | 2006-01-01 | 2006-01-03 → 2006-12-29 |
| 2 | eeba7ebb6af1 | 1223 | 2007-01-01 | 2007-01-03 → 2007-12-31 |
| 3 | 9188388490e4 | 1224 | 2008-01-01 | 2008-01-02 → 2008-12-31 |
| 4 | 40dbb6655097 | 1225 | 2009-01-01 | 2009-01-02 → 2009-12-31 |
| 5 | 0911aaf1d186 | 1226 | 2010-01-01 | 2010-01-04 → 2010-12-31 |
| 6 | e793d7874461 | 1227 | 2011-01-01 | 2011-01-03 → 2011-12-30 |
| 7 | b843e0b273e2 | 1228 | 2012-01-01 | 2012-01-03 → 2012-12-31 |
| 8 | f41088b0ea20 | 1229 | 2013-01-01 | 2013-01-02 → 2013-12-31 |
| 9 | b4b723e24969 | 1230 | 2014-01-01 | 2014-01-02 → 2014-12-31 |
| 10 | b5b49539ee3f | 1231 | 2015-01-01 | 2015-01-02 → 2015-12-31 |
| 11 | 576b77e2cc99 | 1232 | 2016-01-01 | 2016-01-04 → 2016-12-30 |
| 12 | 976d2e2708d6 | 1233 | 2017-01-01 | 2017-01-03 → 2017-12-29 |
| 13 | 756dc4841edc | 1234 | 2018-01-01 | 2018-01-02 → 2018-12-31 |
| 14 | b57ceabeb263 | 1235 | 2019-01-01 | 2019-01-02 → 2019-12-31 |
| 15 | 7e5280c34ebb | 1236 | 2020-01-01 | 2020-01-02 → 2020-12-31 |
| 16 | 8ce77f263e27 | 1237 | 2021-01-01 | 2021-01-04 → 2021-12-31 |
| 17 | 32a4c428a073 | 1238 | 2022-01-01 | 2022-01-03 → 2022-12-30 |
| 18 | 0048f4f92d8a | 1239 | 2023-01-01 | 2023-01-03 → 2023-12-29 |
| 19 | 44d531eba4bf | 1240 | 2024-01-01 | 2024-01-02 → 2024-12-31 |
| 20 | 6870ce635bd4 | 1241 | 2025-01-01 | 2025-01-02 → 2025-12-31 |
Appendix A2 Registration record
What this record does and does not establish. Every window in this study is historical: the data existed before the study began, so this is sequential sealing on past windows, not pre-registration in the clinical-trial sense, and no procedure could make it so. What the platform does enforce is order, each step's specification was frozen and hashed before that step was scored, and the walk cannot advance past a step that was never run or close one with a result registered for a different window. The two timestamp columns below are the evidence: read them together and each seal precedes its own run, and each run precedes the next seal. A study whose seals all post-date its runs would show it here. Wall-clock spacing between seals varies with the author's schedule and queue latency; the ordering, not the tempo, is the claim.
“A COMPARATIVE study, Gross profitability vs Earnings yield, walked on the same registered out-of-sample windows. Gross profitability: S&P 500, rebalanced annual across the selected basket, and run out-of-sample from the anchor, whatever the design estimates from history is re-estimated at each anchor from pre-anchor data only, and the walk advances through registered out-of-sample windows; its disposition is the realized forward path versus the benchmark. Earnings yield: S&P 500, rebalanced annual across the selected basket, and run out-of-sample from the anchor, whatever the design estimates from history is re-estimated at each anchor from pre-anchor data only, and the walk advances through registered out-of-sample windows; its disposition is the realized forward path versus the benchmark. The arms differ in: Factor Composite, quality_weight: 100 → 0; Factor Composite, value_weight: 0 → 100. The contrast under test: whether Gross profitability generates better risk-adjusted returns than Earnings yield over the identical out-of-sample windows.”
The same hypothesis was registered independently at every step, hashed before each step's out-of-sample window was scored:
| # | Anchor | Registered at (UTC) | Run completed (UTC) |
|---|---|---|---|
| 1 | 2006-01-01 | 2026-08-15 21:08:32 | 2026-08-16 09:16:04 |
| 2 | 2007-01-01 | 2026-08-16 09:16:09 | 2026-08-16 09:23:50 |
| 3 | 2008-01-01 | 2026-08-16 09:23:55 | 2026-08-16 09:29:15 |
| 4 | 2009-01-01 | 2026-08-16 09:29:21 | 2026-08-16 09:37:41 |
| 5 | 2010-01-01 | 2026-08-16 09:37:47 | 2026-08-16 09:46:07 |
| 6 | 2011-01-01 | 2026-08-16 09:46:12 | 2026-08-16 09:54:55 |
| 7 | 2012-01-01 | 2026-08-16 09:55:00 | 2026-08-16 10:01:01 |
| 8 | 2013-01-01 | 2026-08-16 10:01:06 | 2026-08-16 10:10:27 |
| 9 | 2014-01-01 | 2026-08-16 10:10:32 | 2026-08-16 10:20:16 |
| 10 | 2015-01-01 | 2026-08-16 10:20:21 | 2026-08-16 10:30:02 |
| 11 | 2016-01-01 | 2026-08-16 10:30:08 | 2026-08-16 10:36:48 |
| 12 | 2017-01-01 | 2026-08-16 10:36:53 | 2026-08-16 10:47:14 |
| 13 | 2018-01-01 | 2026-08-16 10:47:20 | 2026-08-16 10:57:41 |
| 14 | 2019-01-01 | 2026-08-16 10:57:46 | 2026-08-16 11:08:07 |
| 15 | 2020-01-01 | 2026-08-16 11:08:12 | 2026-08-16 11:15:33 |
| 16 | 2021-01-01 | 2026-08-16 11:15:38 | 2026-08-16 11:26:19 |
| 17 | 2022-01-01 | 2026-08-16 11:26:24 | 2026-08-16 11:37:05 |
| 18 | 2023-01-01 | 2026-08-16 11:37:10 | 2026-08-16 11:47:31 |
| 19 | 2024-01-01 | 2026-08-16 11:47:36 | 2026-08-16 11:54:37 |
| 20 | 2025-01-01 | 2026-08-16 11:54:42 | 2026-08-16 12:05:23 |
Appendix B Per-step diagnostics
What each step's run actually did beyond its return: capital allocation across lanes and regimes, the portfolio book's rebalancing and cost drag, and how positions were sized. Harvested from the frozen run reports, present where the circuit produced them.
Step 1 · 2006-01-03 → 2006-12-29
Gross profitability
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 3.2% of 250 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2006-01-01 | -8.5716% | 13.1397% | 40.5411% | 14.1659% | yes | 1.3041% | 8 / 250 |
| 2007-01-01 | no segment follows this rebalance, not scored | ||||||
Earnings yield
Portfolio book, rebalanced annual · 2 constructions · 28 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1% · 2 names dropped at load (29 names actually held across the window), weights renormalised onto the rest
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 4.0% of 250 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2006-01-01 | -8.8454% | 14.5185% | 44.459% | 8.7529% | yes | 1.4596% | 10 / 250 |
| 2007-01-01 | no segment follows this rebalance, not scored | ||||||
Step 2 · 2007-01-03 → 2007-12-31
Gross profitability
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 12.0% of 250 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2007-01-01 | -3.6386% | 18.8417% | 47.1171% | 2.55% | yes | 1.3027% | 30 / 250 |
| 2008-01-01 | no segment follows this rebalance, not scored | ||||||
Earnings yield
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1% · 1 name dropped at load (29 names actually held across the window), weights renormalised onto the rest
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 10.0% of 250 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2007-01-01 | -2.3104% | 22.4512% | 54.1106% | 4.089% | yes | 1.4942% | 25 / 250 |
| 2008-01-01 | no segment follows this rebalance, not scored | ||||||
Step 3 · 2008-01-02 → 2008-12-31
Gross profitability
Portfolio book, rebalanced annual · 1 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 0.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 26.19% of 252 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2008-01-01 | -15.6454% | 9.3991% | 39.8966% | -22.7203% | no | 1.5653% | 66 / 252 |
Earnings yield
Portfolio book, rebalanced annual · 1 constructions · 29 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1% · 1 name dropped at load (29 names actually held across the window), weights renormalised onto the rest
Projection accuracy, realized outcome fell inside the P5–P95 cone in 0.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 26.59% of 252 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2008-01-01 | -10.8888% | 13.7295% | 43.245% | -39.5316% | no | 1.4405% | 67 / 252 |
Step 4 · 2009-01-02 → 2009-12-31
Gross profitability
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 5.18% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2009-01-01 | -46.5895% | -10.1709% | 52.2782% | 39.2616% | yes | 3.1312% | 13 / 251 |
| 2010-01-01 | no segment follows this rebalance, not scored | ||||||
Earnings yield
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 7.17% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2009-01-01 | -51.8194% | -13.36% | 57.194% | 33.3459% | yes | 3.1893% | 18 / 251 |
| 2010-01-01 | no segment follows this rebalance, not scored | ||||||
Step 5 · 2010-01-04 → 2010-12-31
Gross profitability
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 1.2% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2010-01-01 | -44.1996% | 0.5722% | 82.896% | 25.5762% | yes | 3.3609% | 3 / 251 |
| 2011-01-01 | no segment follows this rebalance, not scored | ||||||
Earnings yield
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 0.0% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2010-01-01 | -51.8662% | -2.8784% | 98.0672% | 15.3183% | yes | 4.2986% | 0 / 251 |
| 2011-01-01 | no segment follows this rebalance, not scored | ||||||
Step 6 · 2011-01-03 → 2011-12-30
Gross profitability
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 4.38% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2011-01-01 | -14.833% | 34.8882% | 115.1343% | 0.6773% | yes | 2.6887% | 11 / 251 |
| 2012-01-01 | no segment follows this rebalance, not scored | ||||||
Earnings yield
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 2.79% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2011-01-01 | -32.6382% | 21.8297% | 122.3317% | -9.2223% | yes | 3.6088% | 7 / 251 |
| 2012-01-01 | no segment follows this rebalance, not scored | ||||||
Step 7 · 2012-01-03 → 2012-12-31
Gross profitability
Portfolio book, rebalanced annual · 1 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 2.01% of 249 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2012-01-01 | -11.3972% | 22.401% | 66.565% | 10.816% | yes | 2.0037% | 5 / 249 |
Earnings yield
Portfolio book, rebalanced annual · 1 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 0.8% of 249 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2012-01-01 | -33.6603% | 3.1212% | 57.035% | 18.307% | yes | 2.8267% | 2 / 249 |
Step 8 · 2013-01-02 → 2013-12-31
Gross profitability
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 1.99% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2013-01-01 | -15.2895% | 15.4938% | 58.2067% | 36.5264% | yes | 1.8676% | 5 / 251 |
| 2014-01-01 | no segment follows this rebalance, not scored | ||||||
Earnings yield
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 1.59% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2013-01-01 | -28.4054% | 4.5478% | 53.549% | 50.415% | yes | 2.2436% | 4 / 251 |
| 2014-01-01 | no segment follows this rebalance, not scored | ||||||
Step 9 · 2014-01-02 → 2014-12-31
Gross profitability
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 5.18% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2014-01-01 | 4.6528% | 31.5638% | 65.9709% | 14.187% | yes | 1.3422% | 13 / 251 |
| 2015-01-01 | no segment follows this rebalance, not scored | ||||||
Earnings yield
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 3.98% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2014-01-01 | -4.6169% | 25.6151% | 66.1226% | 8.7087% | yes | 1.6803% | 10 / 251 |
| 2015-01-01 | no segment follows this rebalance, not scored | ||||||
Step 10 · 2015-01-02 → 2015-12-31
Gross profitability
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 0.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 8.76% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2015-01-01 | 0.2604% | 23.2157% | 51.9018% | -9.4718% | no | 1.2906% | 22 / 251 |
| 2016-01-01 | no segment follows this rebalance, not scored | ||||||
Earnings yield
Portfolio book, rebalanced annual · 2 constructions · 29 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1% · 1 name dropped at load (30 names actually held across the window), weights renormalised onto the rest
Projection accuracy, realized outcome fell inside the P5–P95 cone in 0.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 8.37% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2015-01-01 | -2.5236% | 22.9939% | 55.7405% | -15.9974% | no | 1.4804% | 21 / 251 |
| 2016-01-01 | no segment follows this rebalance, not scored | ||||||
Step 11 · 2016-01-04 → 2016-12-30
Gross profitability
Portfolio book, rebalanced annual · 1 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 5.58% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2016-01-01 | -18.5428% | 2.1749% | 28.6037% | 2.7206% | yes | 1.4964% | 14 / 251 |
Earnings yield
Portfolio book, rebalanced annual · 1 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 6.77% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2016-01-01 | -21.5092% | 4.4309% | 39.5478% | 19.3938% | yes | 1.7767% | 17 / 251 |
Step 12 · 2017-01-03 → 2017-12-29
Gross profitability
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 2.8% of 250 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2017-01-01 | -19.0202% | 3.2548% | 32.2303% | 23.6613% | yes | 1.4321% | 7 / 250 |
| 2018-01-01 | no segment follows this rebalance, not scored | ||||||
Earnings yield
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 0.4% of 250 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2017-01-01 | -24.4892% | 2.6751% | 40.381% | 16.8258% | yes | 2.0712% | 1 / 250 |
| 2018-01-01 | no segment follows this rebalance, not scored | ||||||
Step 13 · 2018-01-02 → 2018-12-31
Gross profitability
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 10.4% of 250 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2018-01-01 | -13.2673% | 7.4681% | 33.6722% | 3.8074% | yes | 1.3109% | 26 / 250 |
| 2019-01-01 | no segment follows this rebalance, not scored | ||||||
Earnings yield
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 7.2% of 250 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2018-01-01 | -13.6349% | 10.5659% | 42.1749% | -12.5919% | yes | 1.5372% | 18 / 250 |
| 2019-01-01 | no segment follows this rebalance, not scored | ||||||
Step 14 · 2019-01-02 → 2019-12-31
Gross profitability
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 5.98% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2019-01-01 | -9.4272% | 15.3559% | 47.461% | 15.8898% | yes | 1.4523% | 15 / 251 |
| 2020-01-01 | no segment follows this rebalance, not scored | ||||||
Earnings yield
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 6.77% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2019-01-01 | -18.6934% | 4.1052% | 33.7981% | 20.3214% | yes | 1.4974% | 17 / 251 |
| 2020-01-01 | no segment follows this rebalance, not scored | ||||||
Step 15 · 2020-01-02 → 2020-12-31
Gross profitability
Portfolio book, rebalanced annual · 1 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 10.71% of 252 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2020-01-01 | -9.1499% | 19.4298% | 54.6926% | 33.6122% | yes | 1.8021% | 27 / 252 |
Earnings yield
Portfolio book, rebalanced annual · 1 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 18.25% of 252 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2020-01-01 | -22.7896% | 2.707% | 34.5291% | -3.9169% | yes | 1.9869% | 46 / 252 |
Step 16 · 2021-01-04 → 2021-12-31
Gross profitability
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 0.8% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2021-01-01 | -12.4114% | 30.995% | 97.114% | 33.6546% | yes | 2.3159% | 2 / 251 |
| 2022-01-01 | no segment follows this rebalance, not scored | ||||||
Earnings yield
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 0.0% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2021-01-01 | -45.3846% | 3.1463% | 96.6917% | 40.0012% | yes | 3.5941% | 0 / 251 |
| 2022-01-01 | no segment follows this rebalance, not scored | ||||||
Step 17 · 2022-01-03 → 2022-12-30
Gross profitability
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 0.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 9.2% of 250 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2022-01-01 | -6.6489% | 39.2533% | 109.2172% | -17.1172% | no | 2.122% | 23 / 250 |
| 2023-01-01 | no segment follows this rebalance, not scored | ||||||
Earnings yield
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 3.2% of 250 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2022-01-01 | -33.5091% | 16.3395% | 105.6068% | -16.086% | yes | 2.9223% | 8 / 250 |
| 2023-01-01 | no segment follows this rebalance, not scored | ||||||
Step 18 · 2023-01-03 → 2023-12-29
Gross profitability
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 0.8% of 249 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2023-01-01 | -14.0887% | 21.5299% | 69.1599% | 8.9387% | yes | 2.1704% | 2 / 249 |
| 2024-01-01 | no segment follows this rebalance, not scored | ||||||
Earnings yield
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 0.4% of 249 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2023-01-01 | -10.662% | 36.7314% | 105.158% | 17.6869% | yes | 2.5853% | 1 / 249 |
| 2024-01-01 | no segment follows this rebalance, not scored | ||||||
Step 19 · 2024-01-02 → 2024-12-31
Gross profitability
Portfolio book, rebalanced annual · 1 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 0.8% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2024-01-01 | -25.7029% | 5.6479% | 51.0333% | 14.6109% | yes | 1.9797% | 2 / 251 |
Earnings yield
Portfolio book, rebalanced annual · 1 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 1.2% of 251 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2024-01-01 | -32.2943% | 3.1401% | 58.127% | 19.4736% | yes | 2.5699% | 3 / 251 |
Step 20 · 2025-01-02 → 2025-12-31
Gross profitability
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 8.03% of 249 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2025-01-01 | -1.6903% | 22.5372% | 51.1756% | 7.5798% | yes | 1.2679% | 20 / 249 |
| 2026-01-01 | no segment follows this rebalance, not scored | ||||||
Earnings yield
Portfolio book, rebalanced annual · 2 constructions · 30 names held · selection: reselect · 0.0% in cash · turnover 1.0× · cost drag 0.1%
Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 1 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 6.43% of 249 days (expected ~5.0%)
| Rebalance | P5 | Median | P95 | Realized | In band | VaR 95 (1d) | Breaches |
|---|---|---|---|---|---|---|---|
| 2025-01-01 | -8.4885% | 21.2555% | 58.5741% | 27.5348% | yes | 1.6818% | 16 / 249 |
| 2026-01-01 | no segment follows this rebalance, not scored | ||||||