AQAI QuantAI research lab for systematic strategies

Automated analysis

This analysis was drafted by our research engine and has not been checked by a human editor. It may contain errors. It separates the paper’s own results from our tests, and any figures called ours come from our own backtest.

Our automated analysisOur backtest

Johnstone's scheduled report takes 1.145 off a 77.5 price

Conservative reporting cuts price chiefly through conditional mean-variance covariance; the post-report mean has no expected direction.

2026-11-02 · 7 min read · Bayesian Earnings Event-Driven · US equities

Reviewing: How markets forecast and "front run" information: Bayesian market efficiency · David James Johnstone · Read it on openalex

Our backtest of this idea

Our automated quick test, not the paper's

Pre-Earnings Predictive Mean–Variance Ranking with Matched Mean-Only Control

Backtest period 2020-01-01 to 2024-07-01 · hypothetical, net of modelled costs

Why these figures are not the paper's (3)

The paper reports no results of its own

This is a theoretical paper — derivations and proofs, with no measurement on market data. The backtest below is a strategy we built from its idea, not a test of anything the authors claimed.

This is not a replication of the paper (3)

  • The theoretical model's subjective payoff priors and reporting likelihoods are not directly observed. The implementation would use estimated EPS and return distributions; forecast uncertainty is not an identified measure of accounting-reporting quality.
  • The resulting backtest would test an operational interpretation of the pricing mechanism, not reproduce the theoretical model exactly or establish that an efficient-market pricing effect generates alpha.
  • Pre-release entries require earnings dates demonstrably available at the decision time; retrospectively finalized calendar dates must not be treated as advance knowledge.

The figures below measure what we could run, not the paper's own method, so they are not evidence for or against its claim.

Our own audit found this run does not follow the paper faithfully

  • Both E[C|S] and var(C|S) are revised by the same signal. Holding the conditional variance fixed removes the paper's central mechanism.: The trading model estimates feature-dependent event-return location and scale from pre-release EPS forecasts; it does not identify or update a latent terminal-cash-payoff posterior. The original joint-update mechanism remains intact only in the isolated theoretical validation. (invalidates: Lemma 1 and Lemma 2 are not empirical predictions of the trading score; the paper's structural current-price and cost-of-capital comparative statics cannot be inferred from this backtest)

These are our findings about our own implementation, not criticisms of the paper. Read the figures below as a description of what we ran.

Jan 2020Total -4.5%Jul 2024
Sharpe
-1.03
Total Return
-4.5%
Max Drawdown
-7.0%
CAGR
-3.1%
Volatility
3.0%
Beta vs SPY
-0.02
Trades
1,376

Returns follow the annual profit surprise, mostly before its announcement, in Ball and Brown (1968). Johnstone interprets that finding as Bayesian investors doing their work. They use a cash-flow prior, f(C), and their view of reporting quality, f(S|C), to anticipate the report and re-price ahead of its arrival. Efficient markets, he writes, "forecast and "front run" information, rather than waiting inactively for its realization."

His claimed payoff is a priced risk premium linked to reporting quality. The premium can have either sign; the abstract says conservative accounting increases the cost of capital. The paper contains no data. Its evidence consists of two numerical illustrations, one with a binary payoff and binary signal, the other a beta-binomial simulation.

In Johnstone's model, a scheduled earnings report changes the stock's price before release. The post-report mean has no expected direction. Its two conditional values average back to the prior 85.

The binary example puts these claims together. Anticipating the report takes 1.145 off a price of 77.5, although the expected post-report cash-flow mean remains exactly at the prior 85. The paper describes efficient markets as able to "front run" information and labels the 1.145 a risk premium. Its abstract says the formula "includes a risk premium"; the appendix describes the gap as something that "in effect is a "risk premium"".

The appendix then makes the troublesome claim that the market tries to "move the current price towards where it will end up (à la Ball and Brown)". The example sends today's price in the opposite direction. E[P1] is 81.885, yet the current price drops from 77.5 to 76.355.

This is a theoretical paper throughout. It supplies neither returns data nor a backtest, and leaves untested the Ball and Brown (1968) pre-announcement drift used to open the argument. All figures below come from the author's illustrations or our arithmetic on them, except for our own backtest in the section marked as such.

Buying the next price

A single firm lives for two periods, and the risk-free rate is zero. At t=1, signal S arrives. Mean-variance pricing then uses the available information: P1 = E[C|S] − λ var(C|S). Johnstone departs from Christensen, de la Rosa and Feltham (2010) by allowing Bayes to update the variance as well as the mean after S.

Before anyone observes S, investors can infer its distribution from their prior f(C) and subjective likelihood f(S|C). Johnstone uses that likelihood to represent the firm's reporting quality. Today's price therefore applies mean-variance pricing to P1 itself: P_B0 = E[P1] − λ var(P1). He describes this as buying the next price.

Across possible signals, E[C|S] varies with var(C|S). That relationship adds two terms to var(P1) which disappear in a known-variance model: λ² var(var(C|S)) and −2λ cov(E[C|S], var(C|S)). Relative to the conventional price P_A0 = E[C] − λ var(C), the gap equals λ times those two terms.

How does a 77.5 price lose 1.145?

The payoff takes the value 100 with probability 0.4 and 75 with probability 0.6. Its mean is 85 and its variance is 150. Set λ = 0.05 and the conventional price is P_A0 = 77.5.

The posteriors imply α = 0.025 and β = 0.25. With probability 0.315, a favourable report raises the mean to 98.810. The unfavourable report has probability 0.685 and lowers the mean to 78.650. From those posteriors, we recover a Type I error near 0.025 and a Type II error of 0.25. The paper calls this combination of low α and higher β conservative.

Good news all but settles the payoff, reducing var(C|s+) to 28.345. Bad news leaves ambiguity and a variance of 77.921. Higher variance accompanies the lower mean (77.921 against 28.345), producing a covariance of −215.657.

The next price can be 97.392 or 74.754. Those outcomes give E[P1] = 81.885 and var(P1) = 110.587. The variance decomposes into 87.696 from conditional means, 1.326 (0.05² × 530.335) from conditional variances, and 21.566 from the covariance term. The covariance accounts for almost all the premium. Apply λ to 22.892 and the discount is 1.145, leaving P_B0 = 76.355.

Ignoring the signal gives a two-period cost of capital of 9.7% under the paper's formula. Applying the same calculation to P_B0 (85 over 76.355) gives about 11.3%.

Both a perfect signal and pure noise leave today's price at 77.5. The paper calls that a paradox. A report guaranteed to reveal C matters as little for the current price as a report revealing nothing. Across the error-rate grid, conservative reporting reduces price; bold reporting increases it.

The abstract presents this as general. Only the conclusion qualifies it with "numerical results suggest", which is the accurate strength of claim. For a two-point payoff, var(C|S) equals 625p(1−p). Which posterior lies nearer one half determines the covariance's sign. The grid uses just one prior, 0.4. The paper leaves open whether conservatism carries a cost at other priors or with payoffs beyond the two-point case.

For the second illustration, a binomial sample supplies the signal about a success probability with a beta prior. The author simulates it 100,000 times and reports var(P1) of 0.090, 0.071 and 0.063 for n = 5, 50 and 500. We encountered two difficulties. Reading the printed terms as 0.06850 + 0.01²(0.00022) − 2(0.01)(0.33279) gives about 0.0618, rather than the stated 0.068. Our reading may differ in a sign or term. Also, the posterior mean's variance increases with n in a standard beta-binomial, whereas the reported var(P1) falls. We could not reconcile the terms as we read them.

The fixed-λ assumption carries the result

These calculations depend throughout on recursive mean-variance pricing with fixed λ, a single asset and no market portfolio. The premium scales with λ² and λ³. Choosing λ of 0.05 sets the scale of the illustrative 1.145.

The model directly prices firm-specific variance of 150.

Johnstone acknowledges the utility problem: "Its weakness is that it needs quadratic utility to be coherent." He also abandons the CARA-normal justification in Christensen et al. The following sentence argues that the existing literature has a greater weakness: it prevents Bayesian investors from updating payoff variance.

The defence overreaches. With normal priors and normal signals, Bayes' rule makes posterior variance independent of the signal's realized value. Johnstone quotes Christensen et al. as saying that investors know the variance "from the then information system," which is correct updating in their model. Signal-dependent variance arises with non-normal payoffs, here the two-point payoff. In the paper's own Lemma 5, both additional terms disappear when variance is known.

The departure from prior work thus changes the payoff distribution and the pricing rule. Across these two examples, the advance over Christensen et al. comes from the two-point payoff.

Where could a reporting-quality premium be traded?

The example offers compensation for release risk. Iterated expectations still hold: the conditional means average to 85, leaving no anticipated directional news move to trade ahead of. The 1.145 compensates investors for bearing price risk when the report arrives. From t=0 to t=1, the example's expected return is 81.885 over 76.355, about 7.2%.

Ball and Brown classify firms by the ex post sign of the surprise. Johnstone offers a Bayesian interpretation of Ball and Brown, yet his model cannot generate their pattern: a pre-release price move with the same sign as the subsequent surprise. The risk premium is its only predictable return.

A narrower trade follows from the model. Investors would hold firms whose reporting creates the greatest next-price risk and collect compensation for doing so. Implementing that trade requires a measured f(S|C) for actual firms. The paper supplies no proxy.

Our proxy and its limits

We could not reproduce the model's inputs. The subjective payoff priors and reporting likelihoods it requires are unobserved. We substituted estimated EPS-change and event-return distributions, and forecast uncertainty is not an identified accounting-quality measure. Entries also need earnings dates demonstrably on the calendar when the decision was made. Retrospectively finalized dates would introduce leakage.

Our run tests an operational interpretation of the mechanism. It does not reproduce the model or establish whether an efficient-market pricing effect produces alpha.

Our book lost 4.53% in total over 2020-01-01 to 2024-07-01, with annualized figures measured from 2023-01-17. Sharpe was -1.03; Sortino was -0.70. At 3.04% annualized volatility, maximum drawdown reached 6.96%, giving a Calmar of -0.45.

This was one automated pass using a proxy drawn from Johnstone's idea. Our construction lost money. The run says nothing about whether his pricing mechanism exists.

The trading universe comprises the top 500 non-ADR US stocks, traded from 2020-01-01 to 2024-07-01. Annualized figures begin at 2023-01-17, leaving roughly eighteen months of earnings seasons.

Five sessions ahead of each scheduled release, we rank events on predicted event-return mean minus 5 times predicted variance. We buy the top 20%, short the bottom 20%, and close at the first close following release. A new cohort receives 10% of NAV, divided equally between its long and short sides.

That variance penalty runs against Johnstone's premium. In his model, greater next-price risk earns greater expected return. Our ranking shorts high predicted variance. The test therefore asks whether variance forecasts improve a mean forecast.

The paper reports no performance of its own against which to compare our figures.

By construction, the book is half long and half short, so beta should be near zero. Weak or flat performance across eighteen months speaks first to our proxy and short observation window. It says little about Johnstone.

A firm-level estimate of reporting error rates would change my view of the paper. Without one from the paper, the 1.145 remains tied to λ = 0.05 and a two-point payoff.

Our backtest stops at 2024-07-01, and everything after that date is deliberately left untouched so the same strategy can be checked out of sample later.

How our backtest worked

The steps the code we ran actually executed, from its strategy card. Ours, not the paper's — it is one automated implementation of the idea, not the authors' own.

1. Audit historical calendar versions, release observations, fundamental vintages,
   issuer mappings and executable closing-auction timestamps. Stop if the
   requested timing-valid event backtest is not identifiable.
2. Each trading year, freeze the runtime top-500 non-ADR stock screen.
   Permit only one verified share class per issuer/event.
3. Monthly, using information available by the preceding month's final close:
   a. Fit expanding-window Bayesian ridge EPS-change forecasts.
   b. Archive chronological out-of-sample EPS forecasts for every eligible event.
   c. Fit a Bayesian location-scale Student-t event-return model using only
      completed, available labels and genuine archived EPS forecasts.
   Freeze fitted preprocessing and coefficients for the month.
4. At each session's closing decision, find events scheduled exactly five
   exchange sessions ahead in the then-available calendar. Require valid
   fundamentals, forecasts and no outstanding position in the same issuer.
5. If N < 10, open no cohort. Otherwise set k = floor(0.20*N).
   Rank S = predicted_mean(R_event) - 5*predicted_variance(R_event).
   Buy the highest k and short the lowest k; break ties by symbol_key.
6. Budget 10% of pre-entry NAV per new cohort, half per side and equal-weighted
   within each side. Shrink or skip new orders for commitment, issuer and
   leverage limits. Size using available actual adjusted prices.
7. Execute at actual adjusted daily close under the MOC convention. Skip
   missing-entry orders without replacing them with lower-ranked names.
   Keep original shares through rescheduling; do not duplicate events.
8. Exit at the first executable session close strictly after verified release
   observation. Retain and flag unresolved positions if the required fill is
   unavailable; do not manufacture exits or complete endpoint labels.
9. Run the matched book with penalty = 0 and otherwise shared forecasts,
   rules, allocation and execution conventions. Compare paired net session
   returns, allowing stock identities, holding periods and costs to differ.
10. For the reported card, use the platform's post-run charged commissions;
    distinguish these from the specification's separate cost-sensitivity design.