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

A 63-day news shock still trails the price-only case

The pre-1995 encoder matches LDA; the validation pick loses at every frequency.

2026-10-19 · 7 min read · News-based cross-sectional return prediction · US stocks

Reviewing: Reading the News Without Hindsight: NoLBERT Topics and the Cross-Section of Stock Returns · Kevin Foley, Jonathan Hartadi, Shivesh Prakash et al. · Read it on arxiv

Our backtest of this idea

Our automated quick test, not the paper's

Point-in-Time LDA Attention-Exposure Weekly Long–Short

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

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

This is not a replication of the paper (3)

  • News coverage begins around 2020, so the paper's 2012–2019 topic-fitting and return-model training periods cannot be reproduced; training and evaluation must be shifted forward.
  • The specified 1976–1995-pretrained NoLBERT encoder is not part of the available data or stated tooling. The proposed LDA reader tests a point-in-time news-attention strategy, not the paper's claim about NoLBERT relative to other readers.
  • The platform's news feeds are not the paper's FinMultiTime/FNSPID article corpus, so article coverage and resulting attention shocks will differ.

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 (6)

  • Paper price-plus-text feature set also includes a separate firm-news block.: Use narrative exposures and eight price characteristics; use firm articles for prospective coverage eligibility, not as forecast features. (invalidates: Table A7 all-reader price-plus-text gross Sharpe 1.02 and net decile Sharpe 0.30; Table 5 weekly all-reader versus price-only decile p = 0.408)
  • Paper LDA fits on an earlier fixed text sample and return models use fixed chronological training, validation, and held-out samples.: Fit and freeze LDA at the first eligible pre-forecast cutoff; subsequently refit fixed-penalty ridge weekly on expanding completed labels. (invalidates: Figure 7 and Table 4 paired weekly IC and return differences; Table A2 single-reader weekly IC; Table A7 all-reader Sharpe; Section 5.1 and Tables A7–A8 validation-selected-winner net Sharpe)
  • Paper market returns and market value come from CRSP and its factor data.: Use observed SPY ETF returns for the market proxy and PIT Sharadar market value for the log-value feature; select annual membership using the mandated screening table. (invalidates: Figure 7 and Table 4 paired weekly IC and return differences; Table A2 single-reader weekly IC; Table A7 all-reader Sharpe; Table 5 weekly comparison p = 0.408)
  • Paper news comprises its deduplicated Nasdaq-linked article collection.: Use deduplicated fmp_stock_news articles meeting the same specified text, sampling, coverage, and date-delay rules. (invalidates: Figure 7 and Table 4 paired weekly IC and return differences; Table A2 single-reader weekly IC; Table A7 all-reader Sharpe; Table 5 weekly comparison p = 0.408)

2 further finding(s) are described in the note.

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 -19.9%Jul 2024
Sharpe
-0.73
Total Return
-19.9%
Max Drawdown
-34.5%
CAGR
-8.6%
Volatility
11.1%
Beta vs SPY
-0.17
Trades
29,938

What the paper reports for its own strategy

  • Monthly, price+text combination across all readers and models, 63-day shocks, test 2022–2024, net of 10bp per dollar traded: - Decile long-short Sharpe 1.12 (t=2.36, p=0.045, DSR 0.04). - Buffered long-short Sharpe 1.19 (t=2.42, p=0.040, DSR 0.06).
  • Same monthly buffered portfolio: net return 12.4%/yr, volatility 10.4%, max drawdown 8%, turnover 60% per month, three-factor alpha t=2.21. Forecast IC 3.9 (t=2.91).
  • Monthly text-only combination, 63d, net: Sharpe 0.86 decile (p=0.157) and 0.84 buffered; buffered return 9.1%/yr, vol 10.8%.
  • Biweekly price+text combination, 63d, net: Sharpe 0.69 decile and 0.77 buffered; buffered return 11.0%/yr, vol 14.2%, alpha t=1.74. Text-only: 0.63 and 0.86.
  • Weekly price+text combination, 63d: gross Sharpe 1.02; net 0.30 decile and 0.39 buffered.
  • Validation-selected single best experiment (EBM), test net decile Sharpe: −0.23 monthly, −0.27 biweekly, −1.08 weekly.

A trader already running price signals has little reason to add this news portfolio. Its headline Sharpe is 1.12 against 0.66 for a price-only ensemble, with Ledoit-Wolf p=0.463 on the difference. The finding worth keeping lies earlier in the signal: comparing topic attention with its past 63 trading days, rather than 5, improves forecasts for every text reader. The authors acknowledge the portfolio comparison in their abstract. Their case for emphasizing the combined portfolio remains unconvincing for a desk that already trades price.

Reading news without hindsight

Hindsight enters through the text features. An encoder trained on material from within a backtest has seen information from later in the period. A held-out test set for the return model cannot undo that exposure. The authors' proposed remedy is to read the news without hindsight.

Their trade ranks stocks across the top-1,000 cross-section and takes long-short positions. It rests on a relative-return bet: a stock whose returns co-move with a topic gaining news share may behave differently next period from stocks with less exposure. The topic signal follows the narrative asset pricing of Bybee, Kelly and Su. Each article receives weights across topics; their daily averages measure each topic's share of attention. Subtract the trailing mean from today's share, then orthogonalize the resulting attention shock to the market. A stock's narrative exposure is its exponentially weighted covariance with that shock over 252 days (half-life 60). Those exposures go into the return forecast alongside eight price features.

Foley, Hartadi, Prakash, Takkallapalli and Vatsal take the encoder's training date seriously. One released in 2021 has already read years that the backtest will score. They begin instead with NoLBERT, a 109M-parameter DeBERTa-v3 pretrained by Kakhbod and Li (2025) on text from 1976 to 1995 only. Contrastive training on passage pairs from the same pre-2020 article turns it into a sentence encoder, without labels or returns. The run used 230,931 pairs and completed about 0.87 of one pass in 150 minutes on one RTX 3060. Held-out passage matching climbed from 0.08 to 0.89.

Six readers label the same daily sample: two LDA variants, MiniLM, a FinBERT headline classifier, and NoLBERT at 60 and 20 clusters. The sample contains 529,657 articles drawn from 1,255,289 Nasdaq.com articles spanning 2012 to 2024. Eight models forecast relative returns for about 984 of the 1,000 largest US stocks. They rebalance monthly, biweekly or weekly and charge 10bp per dollar traded. Training covers 2013-2019, all choices use 2020-2021, and 2022-2024 remains held out.

The readers finish close together on the question the authors set out to answer. With 63-day shocks, NoLBERT's average monthly test IC is 2.59 against 2.85 for LDA. The biweekly comparison is 1.34 against 2.01; weekly, it is 1.01 against 0.94. No pairwise reader difference in the text-only sets is significant. Topic assignments are steadier for the two NoLBERT readers: 69% and 80% of articles retain their topic across seeds, versus 58% for LDA. The authors call the point-in-time restriction "affordable here" and add that this "is not evidence that it improves forecasts." That reading seems right.

Why does the longer baseline help?

The paper compares 46 to 48 experiment pairs that change only the shock window. Moving from 5 to 63 days lifts test IC by 1.28 monthly, 0.87 biweekly and 0.49 weekly. Annual net long-short return rises by 5.8, 4.7 and 3.9 percentage points, respectively. Sharpe improves in 91%, 80% and 85% of the pairs. Yet the IC gains have t statistics of 1.8, 2.0 and 1.7, below the paper's fixed-b critical values of 2.29, 2.11 and 2.06.

Text alone gives the clearest portfolio comparison. The monthly net decile Sharpe moves from -0.45 with 5-day shocks to 0.86 with 63-day shocks; Ledoit-Wolf p=0.028 for the gap. Adding price features makes the window change worth 0.74 of Sharpe, with p=0.149. The longer window also holds up across the news-source change in 2024. Monthly narrative IC for the 5-day version drops to -2.7 that year. For the 63-day version, it is 1.7 in 2022-2023 and 1.8 in 2024. Differences between the halves are insignificant. Only four windows were tried, the authors note, and the validation advantage was small.

Weekly timing gives me pause. Move LDA shocks back 126 days for a placebo, and weekly test IC is still +0.6, equal to the 63-day narrative exposures. At the monthly horizon the placebo is -0.0 against +1.8. That pattern suggests narrative timing carries more information monthly than weekly. The comparison also uses different sets of experiments: LDA alone for the placebo (8 experiments), all six readers for the narrative average (48). At a weekly horizon, these exposures look much like generic return covariance.

The price-only rival remains

The monthly equal-weight combination uses six readers and eight models on price plus text, with 63-day shocks. It reaches IC 3.9 (t=2.91), then posts net Sharpe of 1.12 in the decile book and 1.19 in the buffered book. The buffered version earns 12.4% a year net at 10.4% volatility, with an 8% maximum drawdown and 60% monthly turnover. The authors describe its result against zero as significant before adjusting for the search (decile p=0.045). That comparison holds. A desk with existing price signals needs the comparison with price instead.

Price alone delivers IC 3.3, decile Sharpe 0.66 and buffered Sharpe 0.53. Against that ensemble, the combination's Sharpe gap has Ledoit-Wolf p=0.463 for deciles and 0.267 for buffered positions. Its deflated Sharpe ratios are 0.04 and 0.06. The authors disclose that they formed the combinations after the main experiments, which makes even p=0.045 an overstatement of the evidence. The test period has limited power: with a Sharpe standard error around 0.58, reaching 80% power requires a true Sharpe near 1.7.

Capacity makes the result harder to use. Market-value weighting cuts the monthly combination's Sharpe from 1.12 to 0.03. The only reported alpha I found has a three-factor t of 2.21, while momentum and reversal are already among the features. Costs bite at higher frequency as well: weekly, the same combination falls from gross Sharpe 1.02 to 0.30 net.

What validation selected

At every rebalancing frequency, the experiment with the best validation IC uses an explainable boosting machine (EBM). Averaged across feature sets, EBM also leads validation IC among models at 2.4, 2.0 and 1.7. Its test IC is close to zero. The validation pick records net test decile Sharpes of -0.23, -0.27 and -1.08.

The authors inspect the price-and-LDA-text EBM, the overall pick at the monthly and weekly frequencies. Its ten pairwise terms account for 98%, 58% and 79% of the model. Most involve a firm's news share in a topic. For 40% to 50% of firms, that feature is imputed from a random stock. Removing the pairs without refitting changes Sharpe from -0.23 to 0.00 monthly and from -1.08 to -0.41 weekly.

Even the seed matters as much as sampling error over three years of returns. Across ten seeds, monthly XGBoost on price and LDA text ranges from -1.00 to 1.47. An earlier return extract omitted returns for stocks nearing their exit from the universe. On price alone, that omission generated a spurious weekly net Sharpe of 1.56. The authors identified and fixed it. Their diagnostic work is the paper's most transferable section.

Our weekly LDA run

We could not rebuild the paper's experiment. Our coverage begins around 2020, leaving its 2012-2019 topic fitting and return training beyond what we can reproduce. NoLBERT is unavailable in our tooling, and our news feed differs from FinMultiTime/FNSPID. We ran a forward-shifted, point-in-time LDA attention strategy. This run says nothing about NoLBERT relative to other readers.

We used:

We charged commissions of $0.004 a share on every fill and used closing-auction fills. Short borrow and market impact were unmodeled. From 2022-01-07 to 2024-07-01, the run returned -19.91% in total, with a 34.50% maximum drawdown and net Sharpe -0.73.

The paper's 1.12 headline comes from a monthly, 48-model combination on different data and with a different method. The gap therefore cannot serve as a failed replication. Closer paper comparisons are the weekly price-plus-text combination at 0.30 net Sharpe and the median weekly decile Sharpe across base experiments at -0.34. Weekly ridge is also -0.34. Our -0.73 is lower still, for reasons we cannot fully explain.

Three confirmed differences each reduce results in the paper's own figures: our trading is weekly, we use one model, and our price features leave out 12-1 momentum and 5-day reversal. Two further differences likely matter. Our coverage gate excludes names the paper retains by imputation, while our LDA and ridge were trained on about a year of COVID-era news and labels. Ending in mid-2024 may also have hurt, given the paper's stronger price signals in 2024. The placebo result makes weekly trading a particularly unpromising place to look for narrative timing. Our -0.73 speaks first to this implementation, a single automated pass rather than a verdict on the authors' work.

A longer test would change my view if the 63-day combination beat the price ensemble and its legs survived cap-weighting. Over 36 months, the paper shows the longer window lifting IC for every reader without clearing its own fixed-b threshold. It leaves the case for news paying beyond price unproved.

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.

Deduplicate qualifying news; fit and freeze a 60-topic LDA reader using only pre-cutoff articles.
Assign non-trading-day articles to the next session; make each article available one further trading close later.
Each trading day, average sampled article topic proportions; subtract the preceding 63-day average to obtain each topic shock.
At each weekly formation close, estimate each stock's topic exposures from the preceding 252 sessions: residualize shocks against SPY returns, then use exponentially weighted stock-return covariances with a 60-session half-life and at least 120 paired returns.
Select year-matched top-1,000 stocks with available firm-news coverage in the preceding 126 sessions and complete required features. Cross-sectionally rank exposures and price features to [-1, 1].
Fit expanding ridge forecasts using only completed next-week return labels; fit the matched price-only forecast on the same eligible cross-section.
Trade the LDA forecast's equal-weighted top and bottom deciles at the weekly formation close; close or resize at the next rebalance. Execute only where an actual daily close fill exists.