Thu Sep 17, 2026
Motley Fool
The archive, scraped. 2021 to now, roughly 45,000 calls. Prepared remarks and Q&A in full.
EarningsCall
Clean API, good SDK. The free tier is two companies: Apple and Microsoft.
SEC EDGAR
8-K Item 2.02 is the press release, not the call. Public domain, timestamped to the second.
The Fool archive paginates at 50 pages, about three weeks. The monthly sitemap has no cap and is how you reach 2021.
| EarningsCall | 9,000+ companies, speaker-segmented, MIT-licensed SDK |
| Financial Modeling Prep | transcripts on a paid tier; you may already hold a key |
| API Ninjas | one endpoint, history to 2000, premium below 2026 |
| Capital IQ via WRDS | the research standard, 2004 on, ~5,000 US firms |
Rice does not subscribe to Capital IQ Transcripts. ciq_transcripts returns permission denied; the sample is 20 calls from 2005.
Free and current
Yahoo for returns, Finnhub for consensus. Current to yesterday. Runs in your container.
Research grade, but stale
CRSP daily ends 2025-12-31. The market index file ends 2024-12-31. IBES ends 2026-05-14.
WRDS cannot label a call from last month. That is not a small detail; it decides which sample you can study.
A transcript is 43,000 characters of management telling you how the quarter went. Somewhere in there is information about what the stock is worth.
The question is not whether a model can summarize it. It obviously can. The question is whether anything it produces survives contact with a price.
The call is public the moment it ends. Our transcripts are not.
4 days median lag, call to Fool transcript
53% posted 3+ days after the call
5 min what the professionals allow themselves
Measured on 449 of our own transcripts. Anything that trades on the announcement itself is gone before we can read it.
So the announcement day is out of reach. Is that where the money was?
| mean absolute move | is it predictable? | |
|---|---|---|
| Announcement day | 8.1% | yes, partly. R-squared 0.05 on the surprise alone |
| Next 60 days | 17.3% | not from the surprise. R-squared 0.001 |
Two thirds of the movement happens after the day we cannot trade. None of it that we know how to forecast. Size and predictability are different things.
Fine-tune
Train a model on transcripts paired with the subsequent price move. End to end, no features.
Extract, then model
The LLM reads the call and emits numbers. A separate ML model turns those into a recommendation.
Embed
Turn the transcript into a vector. Use the vector as a feature list.
Just ask
One prompt, one answer. The thing all three of the above have to beat.
Show a model thousands of transcripts and what the stock did next, and let it find its own features.
For
Nobody has to guess which features matter. The model is optimized for the actual target.
Against
Expensive, hard to interpret, and easy to overfit. What did it learn? You cannot read it off.
The model scores the call on dimensions you define. A regression turns those scores into a position.
Guidance revision, margin durability, how much management hedges, whether the quarter leans on one-off items.
The appeal is that the middle layer is inspectable. When it works you can say which dimension carried it; when it fails you can see where.
Skip the judgment. Turn the whole transcript into a few hundred numbers and regress on those.
Cheap
Orders of magnitude less than generation. You can embed the whole corpus.
Opaque
Dimension 137 is not “margin pressure.” There is nothing to put on a slide.
Give the model the transcript and ask for a number. No features, no fitting, no training.
This is the control, and it is the one experiment nobody wants to run. If a one-line prompt does as well as a fine-tuned model, that is the result, and it is worth knowing before you spend a week on the alternative.
Remarks vs Q&A
The prepared remarks are scripted. The Q&A is not. Split the document and see which half carries the signal.
Change, not level
Some CEOs always sound confident. Compare a call to the same firm’s last call and score what moved.
Model as analyst
Ask it what to look for rather than what to conclude. Then test its hypotheses yourself.
Preliminary, one month, 181 to 198 events. Enough to steer you, not enough to believe.
| Announcement-day reaction | ten extracted features added R-squared 0.096 over the surprise, p = 0.007 |
| 60-day drift | nothing. Would need roughly 80x the sample to see a 2% effect |
| Volatility, level | 64% explained by its own past. No room |
| Volatility, change | benchmark only 0.058, and the obvious predictors are exhausted |
The infrastructure is in the repo: transcripts, extraction, labels, scoring. Take what helps and ignore the rest.
MGMT 638 · Gen AI and Quantitative Investments