Quorum

Methodology

Can a structured group of AI agents rank large-cap stocks better than the plain factors they're given, and does an adversarial debate improve the final call? Every decision is made before the outcome is known and graded after.

The question

Asking one model whether a stock is a buy invites anchoring and overconfidence. Quorum splits the job like an investment committee: specialists score independently, a portfolio manager trusts each by its track record, two advocates argue opposite sides blind, and a judge prices the result as a probability. Each layer is graded on its own, so the record shows where any edge comes from.

Daily pipeline

Fill and protect

Yesterday's orders fill at today's open. Stops are checked against today's low.

Grade

Scores whose 5- or 21-session horizon has closed are matched to the realized return over SPY.

Score

Five analysts each score all 50 names from −100 to +100 using only their own evidence.

Weigh

The portfolio manager combines them by trailing IC and queues exits for names the committee has turned against.

Debate

The top 8 names not already held, and not debated in the last 5 sessions, go to a bull, a bear and a judge. Conviction above 65 queues a buy.

Earnings

Up to 4 names that reported since the last close, largest day-one moves first, get the same debate on a five-session horizon.

Publish

The database is committed and this site is rebuilt from it.

Committee

Each analyst sees a table of every name, limited to its discipline, with each field's percentile in that day's universe. Separate evidence keeps the five opinions independent.

  • Value: earnings and free-cash-flow yield, EV/EBITDA, price to book, dividend yield, plus the 12-month trend as a value-trap check.
  • Momentum: 12-month return excluding the last month, 3- and 1-month returns, distance from the 50- and 200-day averages, strength against the sector.
  • Quality: returns on equity and assets, margins, leverage, liquidity, revenue and earnings growth.
  • Macro: rates, VIX, oil, the dollar and market trend, plus each stock's sector strength and its betas to rates, oil and the market.
  • Risk: volatility, downside volatility, drawdown, beta, ATR as a share of price, and the 200-day trend.

Every analyst is shadowed by a plain factor: the same evidence ranked by simple percentiles with no model. If an analyst's IC doesn't beat its factor's, the model adds cost and no information.

Portfolio manager

The composite is a weighted average of the five scores. Weights start equal and move toward each analyst's share of positive trailing IC (last 63 graded days), reaching full trust after 40. No analyst goes below 5% or above 40%, so one lucky stretch can't hand the committee to a single voice.

Debate and judge

The bull and the bear get the same dossier: the five scores and rationales, the full evidence, the macro dashboard and the week's headlines. They run in parallel, so neither can anchor on the other. Each returns a thesis, three arguments with evidence, catalysts, and what would change its mind.

The judge reads both in random order, to guard against position bias, and returns conviction: its probability that the stock beats the S&P 500 over the next 21 sessions. Because it's a probability, it can be tested: calls at 70 should beat the market about 70% of the time.

Earnings desk

A report before 9:30 ET trades that session; later reports trade the next. After the reaction day's close, the desk debates the next 5 sessions from the EPS surprise, the gap, the day-one move over SPY, volume and headlines. It has its own 3 slots, so a full core book never crowds it out.

Portfolio rules

Portfolio parameters
Starting capital$1,000,000
Universe50 large caps, 11 sectors
EntryConviction > 65, long only
FillsNext open, 5 bps each way
Risk per trade, core / earnings0.75% / 0.50% of equity
Initial / trailing stop2.5 ATR below entry / 3.0 ATR below the high
Slots, core / earnings8 / 3
Position cap, core / earnings10% / 6% of equity
Core exitsStop, 21 sessions, or composite in the bottom 35%
Earnings exitsStop or 5 sessions

shares = equity × risk / (2.5 × ATR), so volatile names get smaller positions and every result reads in units of risk.

Grading

  • Analysts: daily rank IC against 5- and 21-session excess returns; t-statistics use non-overlapping dates only.
  • Judge: conviction buckets against the realized beat rate, plus the Brier score.
  • Portfolio: return, Sharpe, drawdown and beta against SPY; win rate, profit factor and average R on closed trades.

Pre-registration

With enough metrics, something always looks significant. To rule that out, the tests that count were written down on Oct 7, 2026, before the first live run, each with a pass mark and a minimum sample. They're in the repository's history, so any later change would be visible.

H1
The PM composite ranks stocks: mean 5-day IC above zero with t-stat of at least 2.
Pending
0 / 120 graded days
H2
The agents add information: the composite's 5-day IC beats the equal-weight factor blend, t-stat of at least 2.
Pending
0 / 120 graded days
H3
The judge is calibrated: Brier score below 0.25, beating a judge that always says 50.
Pending
0 / 150 graded calls
H4
Names that clear 65 beat the S&P 500 over the next 21 sessions on average.
Pending
0 / 60 graded calls
H5
The earnings desk calls the 5-day direction correctly more than half the time.
Pending
0 / 80 graded reports
H6
The paper portfolio has a higher Sharpe ratio than the S&P 500 over the record.
Pending
0 / 250 sessions

No look-ahead

  • Runs use prices through the close and fill at the next open. Today's bar only counts after 4:15 pm New York time.
  • Outcomes are written only once their horizon closes, and weights read only outcomes dated before the decision.
  • Headlines are limited to the week before the decision; anything stamped later is dropped.
  • There is no backfilled AI history. Past fundamentals and headlines can't be recovered as of their date, and a model may have read about the period in training, so the record is built forward, live.

Record integrity

  • Hash chain: after each run, that day's signals, debates, orders, exits and equity mark are hashed (SHA-256) and chained to the previous day. Editing any past record breaks every link after it. The chain is re-verified on every build, and the result is on the audit trail.
  • Timestamps: the database is committed to the repository after every run, so Git history independently dates each day's record.
  • Data checks: before any new position, the run confirms price coverage, the benchmark close, enough history, and no suspect prints. A failure halts new entries for the day and is logged.
  • Versioning: each run records its model, a fingerprint of every prompt, and the code commit, so a change in behavior can be traced to a change in the system.

Limitations

  • Fifty names and a short record make every statistic noisy. Read t-statistics, not single days.
  • Today's large caps carry survivorship bias over long horizons.
  • Open-price fills and exact stop fills are idealized; real execution adds slippage.
  • Model outputs vary between runs. Each run's model and cost are logged.

Stack and cost

Python, pandas and SQLite. Agents run on Claude () with JSON-schema structured outputs. Prices and fundamentals from Yahoo Finance, headlines from Google News. GitHub Actions runs the pipeline each weekday and publishes this site to GitHub Pages. A typical day is 5 analyst calls and up to 24 debate calls, plus 3 per earnings report. The run is unattended, so its requests go through the Message Batches API at half price; prompts are compact JSON; and a daily cap of $6 stops spending outright.

Glossary

Hash chain
Each day's records are hashed together with the previous day's hash, so changing any past day breaks every link after it.
IC
Information coefficient: the rank correlation between an agent's scores and the returns that followed, across all 50 names on one date. 0 is no skill; 0.05 held steadily is useful.
t-stat
How many standard errors the mean IC sits from zero, using non-overlapping dates. Above 2 is unlikely to be luck.
Value added
The analyst's IC minus the IC of the plain factor built from the same evidence. Positive means the model added information.
Conviction
The judge's probability, in percent, that the stock beats the S&P 500 over the horizon. 50 means no edge.
Brier score
Mean squared error of the judge's probabilities. Lower is better; always saying 50 scores 0.25.
Excess return
Return minus the S&P 500's return over the same period.
ATR
Average true range: the stock's typical daily price range over 14 days, used to size positions and set stops.
R multiple
A trade's profit or loss as a multiple of the amount it risked at entry. -1R is a full stop-out.
Profit factor
Gross profit on winning trades divided by gross loss on losing trades. Above 1 makes money.
Sharpe ratio
Annualized return divided by annualized volatility, a measure of return per unit of risk.