Live · — rows
CASE STUDY № 01 · LARGE CAP

The Company File

A single company, graded on Buffett-style criteria as of its vintage year, then asked: what does the engine predict for the next decade — and why?

BUILD A COMPANY · WHAT WOULD THE ENGINE EXPECT?

Company Lab

Build a profile from scratch — or start from a real company today: its grades pre-set the knobs, and you can argue with any of them. Disagree the leadership's a 4? Drop it to 2 and watch the forecast move. The engine predicts from whatever you give it: no required fields, no retraining.

FEATURE IMPORTANCE · THE MONEY CHART

Does the thesis hold?

Across — point-in-time company observations, which features most predict landing in the 'great' outcome bucket? An aito.relate query, ranked by lift.

Calibration
Predicted vs. realised frequency, by confidence decile
A well-calibrated engine: when it says 80%, it should be right ~80% of the time. This chart is in-sample (each row scored against a corpus that still contains it) — see Evaluation for the honest held-out numbers.
Predicted
Realised
EVENTS, NOT ATTRIBUTES · HOW THE TAPE REACTS

News Reaction

A real event feed: every 8-K a company files is material news, timestamped, tagged by the SEC with an item code that is the theme. We measure how the stock reacts at +1 day, +1 week, and +20 days — and whether the first move continues or reverts.

Read a release at t = 0 Paste an earnings press release. A model reads it; Aito predicts the day-1 reaction from the signals.
Try:
And across 60,000 events
News theme Events Day-1 winners → 1d · 20d · 1yr Day-1 losers → 1d · 20d · 1yr 1-yr gap Verdict
Reading the news at t = 0

The cohorts above split on the day-1 price — but a trader wants to anticipate that move from the content, the second the release hits. So we let an LLM read each earnings press release and extract the signals a human skims for — headline tone, beat/miss framing, guidance change, EPS direction — then ask which of them actually separate the reaction. Sorted by how much each signal moves the day-1 tape.

The honest result a quant will respect: a positive headline barely moves the tape — the market already prices the consensus the company is framing against. The signal that earns its keep is the genuinely new information the release reveals — above all a change in forward guidance, which the headline buries but the engine surfaces. Naive sentiment is priced; the structural surprise is not.
WHAT PREDICTS WINNERS · AND WHAT PREDICTS LOSERS

Factor Explorer

Every feature — LLM judgments, sector, valuation, growth, leverage, momentum — ranked by its lift toward the great bucket (upside) and toward poor / disaster (downside). A factor strong on one side and quiet on the other is a clean signal; one that lifts both is just volatility.

Feature N Lift → great (upside) Lift → poor/disaster (downside)
The two-directional read is where the interesting questions live. Airlines never reach great and tilt toward disaster. Utilities do neither — pure ballast. A wide moat lifts the upside without touching the downside. The features that move one side and not the other are the ones the market tends to misprice.
SIMILARITY SEARCH · HISTORY DOES NOT REPEAT, BUT IT RHYMES

Historical Analogues

Given a focal company, find historical observations with the closest feature profile. Then read what actually happened to them. A native Aito similarity query.

HELD-OUT PERFORMANCE · MASKED TEST SET

How good is it, honestly?

Every number here comes from Aito's _evaluate, which hides each test company from the model and scores its blind prediction — a random cross-year 5-fold split with no company in both train and test. No in-sample flattery.

Against the alternatives

Two bars to clear: guessing the most common outcome, and the naive "throw every feature at it." Accuracy is the easy one; information gain — do the predicted probabilities actually beat the base rate? — is the honest one.

Does adding features help?

Features added in order of individual usefulness (one held-out fold). Information gain peaks around — features, then erodes — extra features stop informing and start overfitting. The demo doing model selection in the open.

The figures above are the default-inference floor that _evaluate reports. The demo's live predictions use Aito's ai: high grouping mode, which collapses correlated features into single votes — on the full 16-feature set it lifts held-out information gain further (≈ +0.04 → +0.08 measured separately), i.e. "throw every feature at it," made calibrated.

SELF-DIAGNOSIS · THE ENGINE ON ITS OWN ERRORS

Where does it fail?

Held-out predictions marked right or wrong, then loaded back into Aito. A single relate query asks: which input features go with the engine being wrong? Pick a bucket to scope it with $on. The same predictive database, pointed at itself.

■ lift > 1 — the engine errs more on these · ■ lift < 1 — more reliable here. n = held-out companies with that feature value.
THE ACID TEST · WOULD IT HAVE MADE MONEY

Does it beat the market?

Accuracy is a lab number. The honest question is a fund. Take every held-out company, rank it by the engine's predicted expected outcome, buy the top N, hold to today. No look-ahead: folds are grouped by ticker, so a company never scores its own other-vintage result. Here is what the picks actually returned.

—/yr
top-20 fund CAGR
—
The funds — ranked by the engine, measured on reality

▏ black line = the equal-weight market (every graded company). Bars are mean total return over the holding window; the number to the right is annualized (CAGR).

Same test, one vintage at a time
As a classifier, though — mediocre and optimistic

Read the asterisks
MID-TERM · MR. MARKET, OR A VALUE TRAP?

Cheap — or cheap for a reason?

A mid-term value trader buys low-P/E stocks and waits 6–12 months for the gap to close. Two kinds of company look cheap: ones a moody Mr. Market has mispriced, which re-rate — and value traps: cheap because the business is shrinking toward distress, so they keep sliding. The difference should show in growth, debt, moat and the market the company sells into. Here is what happened to every cheap S&P 500 name, and whether the engine could tell the two apart beforehand.

Cheap against what?

A low P/E means two different things. A utility or a bank can trade at 12× for a decade — that is its normal, and there is nothing to revert to. A company trading well below its own usual P/E is the case a mean-reversion trade bets on. Below: each company's P/E against its own median of the five years before the vintage (rebuilt point-in-time from its 10-Ks), compared with normally priced stocks.

Rows: absolute P/E band (cheap < 15, fair 15–30, expensive > 30). Columns: P/E against the company's own 5-year median (below < 0.8×, near 0.8–1.25×, above > 1.25×). Cells: mean 12-month return vs universe, long-run trap rate, n. Dashed cells: fewer than 8 companies.

Inside the cheap cohort — what separated the re-raters from the value traps

Bars: mean return over the next 6 / 12 months vs the equal-weight universe of the same vintage. Trap rate: share that ended poor or disaster over the full 6–12-year window. Faded rows have fewer than 8 companies.

Cheap for a reason — the market it sells into × its debt

A very low P/E on a highly indebted company in a declining market may be the market pricing it correctly. Each cell: mean 12-month return vs universe, and the long-run trap rate.

Could the engine tell them apart — before the fact?

Walk-forward, no peeking: 2017's cheap stocks are scored by a table that holds only 2014; 2020's by 2014 + 2017. Each company gets two Aito predictions — P(re-rates within 12 months) and P(long-run trap) — then the cohort is cut into thirds by each score and checked against what actually happened.

Every cheap stock, scored before the fact

Across: the engine's walk-forward P(long-run trap). Up: what the stock actually did over the next 12 months vs the universe. Hover for the company; click for the $why behind its trap score.

ended a long-run trap (poor / disaster)did not
What Aito's relate says, inside the cohort
Read the asterisks
    NOTES ON THE METHOD · WHAT THIS IS, AND IS NOT

    On Methodology

    Every line in this demo is reproducible. Every concession to imperfection is documented. The demo is the methodology; the numbers are the consequence.

    № i

    Point-in-time universe

    Constituents reconstructed from Wikipedia's historical S&P 500 edits as of January 1, 2014 / 2017 / 2020 — what an investor could actually have bought, not today's index. Each constituent is then tracked to its terminal state: still trading, acquired, or delisted.

    № i·b

    The survivorship trap — and where we still half-fall in

    The unit of analysis is a snapshot: grade a company from its filing at the vintage date, then observe what the position returned years later. A bankruptcy isn't a new data point — it's the outcome of a snapshot that already existed. The naïve study screens today's index and silently inherits the winners; we start from the point-in-time roster, so the Chesapeakes and Frontiers are present at vintage and graded from their pre-bankruptcy 10-K like any other name.

    The leak is on the outcome side: our return source (yfinance) has no price history after a stock is cancelled, so a Chapter 11 that wipes out common holders returns null and would drop from every statistic — re-introducing the bias through the back door, this time hiding the losers. "Can't find the ticker → mark it gone" is the right instinct but unsafe alone: acquisitions vanish from the feed too, usually at a premium. So we resolve the reason a stock disappeared from its SEC record (Chapter 11 filing → common cancelled → booked at −100% from vintage to the filing date) and leave premium buyouts and take-unders to the price source. Scope is deliberately narrow — only confirmed equity-zeroing Chapter 11s (Frontier, Chesapeake, Windstream, Denbury, Diamond Offshore, Noble, Valaris, Rowan, Peabody). The disaster bucket now holds real −100% outcomes — but treat the absolute bankruptcy rate as a floor, not a census.

    № ii

    LLM grading discipline

    Qualitative features extracted from contemporary 10-K and proxy excerpts only. Every prompt instructs the model to grade from the documents alone and not to use post-vintage knowledge. All four features are graded in a single structured-output call per company; rationale strings are preserved as explainability columns.

    № iii

    Lookahead stress test

    The 2020 vintage is held out as a future-leakage probe. If feature lift is comparable across all three vintages, LLM lookahead bias is bounded. Reported in the calibration plot.

    № iv

    Outcome bucketing

    Five buckets, not regression on returns. Aligned with how investors actually think (disaster / poor / market / good / great). Yields calibrated probabilities rather than meaningless point forecasts.

    № v

    Why this is not a trading signal

    Twelve-year horizon, ~800 observations, no microstructure features, no transaction cost model, no consideration of capacity. This is a hypothesis test about long-horizon business quality — not an alpha generation system. The demo's value is architectural, not financial.

    № vi

    The transferable lesson

    The architecture — LLM-extracted qualitative features feeding a predictive database — generalises to any domain where unstructured judgment meets structured outcomes. Credit underwriting, M&A diligence, talent assessment, supplier risk. Equity research is the vehicle, not the destination.

    Stack
    Data Sources
    • · SEC EDGAR (10-Ks, proxies, point-in-time)
    • · Wikipedia historical S&P 500 constituent edits
    • · yfinance (prices, returns, survival)
    • · SimFin free tier (fundamentals)
    Engine
    • · OpenAI gpt-5-mini for LLM feature extraction
    • · aito.ai predictive database
    • · Single endpoint, no training pipeline
    • · Open repository: aito-equity-demo
    Leakage diagnostic
    THE API · UNVARNISHED

    Live Query

    The same engine, the same endpoint, the same wire format you'd hit from your own code. Edit the body, hit Run, see the response and timing. Copy the curl and walk away with it.

    —
    Tip. Ctrl-Enter (or Cmd-Enter) to run. The body is a literal Aito query — anything you'd POST to /api/v2/_predict directly works here (v1 bodies too — v2 accepts them), as long as from = "companies".
    // run a query to see the response
    THE FULL TABLE · WHAT THE ENGINE SEES

    The Universe

    Every (ticker, vintage) row the predictive database holds. Filter by sector, vintage, or outcome bucket; sort by any column. Companies graded by the LLM show their qualitative grades; those without grades show the realised outcome only.

    —
    The table is a leveling tool. It shows every constituent that was in the index at vintage, including the ones the engine got wrong, the ones that delisted, and the ones the LLM hasn't graded yet. The visual editorial register applies to the curated views — this view is the receipts.