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.
- Rules before results. Every experiment is written up with its decision rule, and the write-up is recorded, before it runs. When a sweep later showed that a 40% threshold beat the 30% I had committed to, I kept the 30%: changing the rule after seeing the answer is exactly the mistake the process exists to prevent.
- A test of the machinery itself. Before any result was trusted, the whole pipeline was run on scrambled data that contains no signal at all. It should have found nothing. The first time, it found two thousand “significant” patterns — a flaw in how returns were measured — and that check is the single most valuable thing the project did.
- A universe that cannot flatter itself. The 500-stock universe is rebuilt month by month as it stood at the time, including the 528 companies that later delisted. Leaving them out would quietly improve every historical number.
- One frozen model, and a live record. The model was fitted once, through 2015, and never refit. Since July 2026 it has scored the market every evening and its picks are recorded before the next day’s prices exist. Only those days are evidence; the record needs roughly a year of them before it says anything, and the site says so on every page.
- Report the honest number. Every figure on these pages carries its standard error, and the summary is written to make a reader appropriately skeptical rather than impressed.
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.
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.