How the forecasts work
Our forecasts come from fitting a statistical model signal by signal to its quarterly market-hedged long–short returns. The model lets a strategy's expected return drift slowly over the years instead of treating it as a constant, and it learns from the data how much it drifts.
Full specification in Altı, Johnson, and Titman (2026), Section 1.
The idea
Each quarter's return is today's expected return plus noise:
Today's expected return is unknown and must be estimated from past returns. It moves slowly around the long-run expected return as shocks to it fade away with a half-life :
We can therefore build forecasts by combining two parts: an estimate of the long-run mean , and an estimate of today's deviation . We estimate both with a Bayesian approach that combines economic priors with the information in past returns.
Evolving expected returns vs past returns
BM, Book-to-Market (Fiscal Year-End), Stattman (1980): VW quintiles, hedged each month with a rolling 5-year market beta from prior months only, 1954Q3 to 2024Q4, 282 quarters. The model's estimate of uses only returns up to the quarter before. It moves far less than realized returns, and at the end of the data it stands at −0.9%, against a long-run mean of 2.2%. Beyond the data it decays toward that mean with a median half-life of 5.1 years; the 1-year forecast, 0.1%, is its average over the first shaded window.
- expected return, model estimate
- projected after the data end
- running full-sample average return
- trailing 1-year return
Posterior means, % per year. The model estimate line uses parameters fitted on the whole sample but conditions only on returns before each date. The shaded bands are the 1-year and 5-year forecast windows, which begin 2027Q1, 8 quarters after the last observation; the gap is integrated out.
A sceptical prior on the long-run mean, and what the data do to it
Before any returns are seen, the model takes the signal's long-run Sharpe ratio to be zero on average with a standard deviation of 0.4 a year, so a Sharpe ratio of 0.8 is a two-sigma surprise. At BM's volatility that is a standard deviation of 5.8% a year on the long-run expected return. The half-life of a shock to expected return is taken to be equally likely anywhere between 0 and 10 years.
After the data, the posterior sits between the sample average and zero: that is the prior at work. It stays wide, because when expected return drifts, 282 quarters carry less information than 282 independent draws would. The posterior probability that the long-run mean is negative is 20%. The 5-year average is marked for comparison; it speaks to where expected return is now, not to its long-run level, which is the next step.
- prior
- posterior
Prior and posterior density of BM's long-run expected return μ, % per year. The prior is N(0, 0.4²) on the Sharpe ratio in return units; not quite normal, because the volatility it multiplies is itself uncertain. Posterior from 250,000 MCMC draws, 95% interval −3.9% to 7.6%. Averages are over the same series (1954Q3 to 2024Q4).
Which past quarters say where expected return is now?
Today's deviation from the long-run mean is estimated by a Kalman filter: a weighted sum of past return surprises, each quarter's return minus the long-run mean. The weights depend on the model's parameters and the sample length, not on the returns, so they can be drawn under the prior before any data are seen. Recent quarters count most, because a shock to expected return has had less time to fade.
Under the prior the weights sum to 0.33; under the posterior, to 0.40. The returns show more autocorrelation than the prior assumed, so the filter trusts recent quarters more. The half-life itself stays loosely pinned down: even long samples say little about how long shocks last, which is why its prior matters. Applied to BM's history, the weights put today's expected return 3.1% a year below its long-run mean.
- prior
- posterior
Left: weight on each past quarter's return surprise in the estimate of today's deviation μT − μ, for a sample of 282 quarters, averaged over draws from the prior and over 600 posterior draws of the persistence parameters. The last observed quarter is at the right edge. Right: prior and posterior of the half-life of a shock to expected return, years; 90% of the posterior lies between 0.8 and 9.5 years.
Put it together: the forecast as a weighted average of the past
Both parts are weighted averages of the same return history, so the forecast is one too. The chart shows the two parts quarter by quarter: the first 2 years of the sample on the left, the last 15 on the right. The grey bars are the long-run-mean part, spread almost evenly over all 282 quarters and a little heavier at the two ends of the sample, so no single quarter gets much; they sum to 0.76. The blue bars are the deviation part. A deviation is measured against the long-run mean, so this part adds weight to recent quarters and takes a little from every quarter older than about 13 years, which is why the blue bars turn negative on the left. Over the last 15 years it adds 0.23; over the rest of the sample it subtracts 0.14; net, 0.09.
Three things follow. Shrinkage: the weights sum to 0.85, not 1, so the forecast sits 15% of the way toward the prior's zero. Recency, in moderation: 10% of the total weight falls on the past year and 30% on the past five, against the 100% a one-year or five-year average would put there. Decay: the window starts 8 quarters after the data end, so only 69% of today's deviation is expected to be left across 2027Q1–2027Q4.
- long-run-mean part
- deviation part
Weight on each past quarter's return in the 1-year forecast, averaged over posterior draws; the forecast's weight is the sum of the two bars. Quarters between the two segments are omitted. Applied to BM's history the weights reproduce the posterior-mean forecast to within Monte Carlo error (0.1% against 0.1%). For comparison, a simple average over the last N quarters would weight each of them 1/N and everything older zero.
Across all 212 signals
The forecast is built from the same return history as the simple averages, and across the library it moves with each of them. It tracks the full-sample average most closely, in level and in rank. The slopes measure how much of each average carries into the forecast: a signal that averaged one more percentage point a year over its whole history is forecast to earn about 1.00 more; over the last five years, about 0.34 more; over the last year, 0.15 more.
This is steps 1 to 3 in the cross-section. The full-sample average is close to the long-run mean, less shrinkage. Recent averages carry information about today's deviation, but a year of returns is mostly noise, and what signal it carries decays before the forecast window arrives.
Full-sample average
corr. 0.90 rank corr. 0.88 slope 1.00
Last 5 years
corr. 0.86 rank corr. 0.76 slope 0.34
Last year
corr. 0.65 rank corr. 0.56 slope 0.15
One dot per signal, on the portfolio its page opens on (value-weighted quintiles, or the original paper's portfolio for a signal without a usable quintile sort). The diagonal is forecast = history; hover a dot for the signal, click it for its page. Correlation is Pearson, rank correlation Spearman, slope the OLS coefficient of the forecast on the average.
Specification
- Portfolios
- Built from Open Source Asset Pricing's firm-level signals and CRSP. Quintile and decile long–short portfolios are sorted each month over common stocks on the NYSE, AMEX and Nasdaq whose market value is above the NYSE 20th percentile, with breakpoints over those same stocks, weighted by the previous month's market value or equally. The original paper's portfolio is Open Source Asset Pricing's replication, kept with the paper's own sort, weighting and stock screens; it is the only portfolio for discrete signals.
- Data
- Monthly long–short returns, each month hedged against the market with a beta estimated from the 36 to 60 months before it, then compounded to quarters and de-levered where full-sample volatility exceeds the site's cap. Returns in percent. Signal pages also offer a full-sample hedge, which looks ahead, and no hedge; the model is the same under each, only the series it is fitted to changes.
- Prior
-
Sharpe ratio N(0, 0.4²) per year; half-life uniform on
0 to 10 years;
volatility of the conditional Sharpe ratio uniform on 0 to
1 per year; correlation of the two shocks uniform on
-0.5 to 0; total volatility within
15% of the sample standard deviation.
The paper's agnostic prior (its Table 5, prior 4 of the grid in
main.m). - Posterior
- Metropolis–Hastings MCMC, 250,000 draws over 5 chains per signal and portfolio, re-run with each OAP release.
- Forecast
- Posterior distribution of the average quarterly return over each window, the windows starting at the first full calendar quarter after the forecast date (1 Oct 2026, so 2027Q1). Quarters between the last observation and the window are integrated out under the model. Displayed annualized: returns ×4, Sharpe ratios ×2.
- Reference
- Altı, Johnson, and Titman (2026), “The Performance of Characteristic-Sorted Portfolios: Evaluating the Past and Predicting the Future”, JFQA. Section 4 has the Bayesian analysis; Table 6 the out-of-sample comparison with past averages.