qea stock-ranking model
Portfolio demoOpen the SQL console →← Ben Meyer's portfolio

About this project · qe

A research question, tested with real discipline

Does a stock’s recent technical state tell you anything about its return tomorrow? Most searches for an answer find noise and call it signal. I built qe, with Claude Code writing the code, to ask the question in a way that could not fool me: a universe that cannot flatter itself, rules fixed before each experiment runs, checks designed to catch the machinery inventing results, and a live daily record that is the only evidence that counts. This site is a copy of the platform’s own research browser, exported from the live database.

The question

Plainly, and with what would make the answer wrong.

Take the 500 most-traded US stocks each month, going back to 2005, and compute a set of ordinary technical indicators from price and volume alone — no fundamentals, no news. Ask whether any combination of those states predicts a stock’s return the next day relative to its peers. The trap is that with thousands of possible patterns and twenty years of data, something will always look predictive by chance; the value of the answer depends entirely on how hard the process tries to disprove it.

How the research was run

The rules I set, and what each one prevents.

The process caught its own mistakes along the way — the scrambled-data flaw above, a random seed that silently changed between runs, transaction costs counted twice, a filter that kept patterns which had stopped working a decade earlier — each found by a check built to find it, and each recorded in the project’s findings log rather than quietly fixed.

What it found

The project’s own summary of its result, quoted rather than improved.

A modest cross-sectional effect — roughly 3.6 basis points per day of stock-selection alpha, t ≈ 2.1 — found through a long and heavily documented search, surviving a permutation null, four independent training cutoffs, the 2008 crisis, and factor attribution. It is not a large effect, its error bars are wide, several of the checks that support it were themselves corrected mid-project, and the live record needs about a year before it says anything.

In plain terms: the model appears to order stocks slightly better than chance, the effect is earned overnight rather than during the trading day, and it is small enough that one properly measured cost or one more risk factor could absorb it. At export the live record held 50 days stamped live, of which 20 were scored before the outcome existed; the rest were recovered after an outage and restamped by my decision, which the findings log records. The SQL console’s live record, day by day query separates the two.

The platform in numbers

Counts from the live database at export time; the demo ships a slice of it.

Market data18.3 GBone database file, refreshed every evening
Daily prices31.3Mrows, 1999 → 2026, 14,368 symbols
Indicator readings67.8M25 indicators computed from price and volume
Universe members1,879of which 528 later delisted — kept, not dropped
Experiments registered16pre-registration documents, each fixing its rules before running
Automated checks280tests, including the no-lookahead and frozen-model guards
Build104commits, July to September 2026, with Claude Code
Documentation6,521lines: the plan, the findings log with its corrections, the registrations

What is in this demo

Exported, not rewritten.

Every page here is the platform’s own research browser, crawled from the live system so the charts and tables are its real output. The front page tells the story for a newcomer, and Explore stocks holds a screener over the current 500-stock universe and ten years of history and patterns for each of 539 symbols. The working pages sit under “Under the hood”: the research notebook, the model’s paper record and the tests on it, the research ledger of registered experiments, and a data-health page. The Return explorer is there too, in part: its six example questions and the view with no conditions carry the platform’s own answers, computed at export, and any other question needs the live database. The SQL console runs a real database engine in your browser over slices of the same tables, so you can ask your own questions.

Not here: the data pipeline and the nightly job, history before 2016 on the symbol pages, most of the 25 indicators, and pages for stocks outside the current universe, apart from those in the model’s live record since July 2026 (the Return explorer still lists their stock-days, as plain tickers without links). Nothing on this site writes anything, and the live platform runs only on a single Mac.

Numbers on this page are read from the export manifest, so they match the snapshot you are looking at.