Logbook · 2 of 3. Written 1 November 2026; the numbers are as of that date and will age.
The first entry was about prediction markets themselves. This one is about Faro: why it exists, how it is built, and what its first experiment found. The third, written when paper trading starts, is about what live data should reveal that history cannot.
Why build it
Prediction markets make two promises that are easy to state and hard to check.
The first is that prices add up. If exactly one of five candidates will win, the five "Yes" prices should sum to about $1. When they sum to less, you can buy all five and collect $1 whatever happens. That is arbitrage: a payoff known in advance, with no view on the outcome.
The second is that prices are good probabilities. If outside forecasters (Metaculus, Manifold, forecasting benchmarks) are better calibrated than the market on some kind of question, their disagreement with the price is a signal.
Both claims are all over social media, usually with a screenshot of a big number. Almost none of those numbers survive three questions: after fees? at the depth actually on offer? by the time you could act? Faro exists to answer those three questions properly, and to say plainly when the answer is "not worth it".
What Faro is
Faro is a research tool, not a trading desk. It has no trading accounts and cannot place an order. Its output is a decision with its evidence: what the opportunity is, how sure we are, what it costs and what could go wrong.
It asks four questions:
| Question | Kind | |
|---|---|---|
| Q1 | Do one venue's prices add up? (Polymarket multi-outcome events) | Arbitrage, deterministic |
| Q2 | Do outside forecasters know something prices don't? | Statistical |
| Q3 | Do Kalshi and Polymarket disagree about the same event? | Cross-venue; the rules can differ |
| Q4 | Q1 again, on Kalshi | Arbitrage, deterministic |
Each question gets a gate: thresholds written down before the data is looked at. Pass, and we build a strategy. Land in the middle, and the rules say what to do. Fail, and we stop. Writing the bar down first is what keeps a research project from talking itself into a result.
A few rules shape everything else:
- No trade is the default. A signal needs a condition fixed beforehand. Days without one are normal.
- Every number has a pedigree. Any figure can be rebuilt from a data snapshot, a configuration and a code commit, and it is reported three ways: optimistic, base and conservative.
- Data is evidence, not truth. Other people's data is cross-checked before we rely on it.
How it runs
All of it runs on one rented server with 4 GB of memory and a 150 GB disk. That is deliberately small, and it shaped the method more than any design document did. An import has to stream rather than load everything at once, a week-long query has to be split by day, and a long job runs one day per process so a crash costs a day, not a week.
The first filter is the most important. About 98 % of the markets on both venues are automated, short-lived contracts: 15-minute crypto windows, daily weather ladders, single games, parlays. They are created and settled by the thousand every day, and they are not what this research is about. Excluding them by rule shrinks the catalogue to roughly 136,000 Polymarket and 140,000 Kalshi markets, and makes the problem fit the machine.
The first experiment: a week of order books
For Q1 we took one full week, 1–7 June 2026, and replayed every change to every order book of every Polymarket multi-outcome event. The data comes from PMXT, a third party that recorded Polymarket's live feed.
Two early lessons narrowed the search:
- The textbook trade cannot happen on Polymarket. Buying "Yes" and "No" of one market for under $1 is impossible because Polymarket's "No" book is the mirror image of its "Yes" book. Every real candidate is a basket across the outcomes of one event.
- The archive has holes, so we built a referee. Some order removals never reached the archive. Left alone, the stale orders look exactly like cheap prices, which is to say like phantom opportunities. Before scoring any moment, Faro now checks its rebuilt book against the best price the venue itself reported, drops anything better, and refuses to score a moment it cannot confirm. We did not plan this layer; the data forced it.
Then the census. A fast scan found 690 candidate moments across the week. Each one was replayed from the full book: every settlement outcome enumerated to prove the payoff, Polymarket's 2026 fees applied, real depth walked, and the result scored in three scenarios (an instant fill, a fill two seconds later, and a fill ten seconds later at the confirmed best prices only).
What it found
| Scenario | Profit over the week | Opportunities large enough to matter |
|---|---|---|
| Base (2 s delay, full depth) | $154 (about $22 a day) | 16 (2.3 a day) |
| Conservative (10 s delay, best prices only) | $120 (about $17 a day) | 12 (1.7 a day) |
"Large enough to matter" was the gate's bar, fixed in advance: at least $100 of baskets at a profit of at least 0.5¢ per dollar. The gate wanted five of those a day.
Three things stood out:
- The mispricings are real. There were profitable, verified baskets on every day of the week, in every scenario.
- Speed is not the issue. Waiting two seconds cost 1–2 % of the profit, and most gaps were still there ten seconds later. These are slow mispricings, not a race between bots.
- Size is the issue. A typical opportunity was worth 10–50¢. The ones that cleared the bar came from a handful of events (an earnings question, a diplomatic meeting, an IPO valuation) and were worth $1–8 each.
One moment was thrown out: a Bitcoin price ladder that showed $82 of profit at depth and nothing at the confirmed prices, in the middle of a burst of impossible prices across unrelated markets in the same minute. That was the recorder glitching, not the market. The referee is what caught it.
What we decided
The result landed in the gate's middle band: easily past the money bar, short on frequency, and far from the "stop" line. The rules for that band would have allowed building a trading strategy with a small allocation.
We chose not to. Roughly $20 a day across the whole venue, before running costs and before the risk of one leg of a four-to-thirty-leg basket failing, does not pay for a strategy layer, paper trading and live execution risk. Building it anyway would have been activity for its own sake. This matches the published evidence: the one large study of Polymarket arbitrage found about $40 million earned in 2024–2025, almost all from this kind of basket, but in a fee-free period and concentrated in a few bots. With 2026 fees, the typical gap is about the size of the fee.
What we kept is the measurement and the tool. The detector stays on as a monitor, and the census can be re-run on any week in about a day. If a busier news week, or our own recordings, move the numbers, the question reopens with the evidence to answer it.
What comes next
- Q2, forecasts against prices. The data is in, and the hard part turned out to be matching each outside forecast to the market that asks the same thing. Our first matcher was confident about only 51 pairs out of nearly 4,000 questions. Improving it, and pulling in far more Manifold data, comes before any scoring. Q2 may well end "inconclusive: too few questions", and that would be an honest result too.
- Recording the venues ourselves. There is no public archive of Kalshi's order books, and the one we used for Polymarket has gaps. A lean recorder for both venues starts our own history and feeds paper trading.
- Q3, cross-venue. Two venues with different users should disagree more than one venue disagrees with itself. It shares its hardest problem, matching questions, with Q2, so it may move up the list.
The next entry starts when paper trading does: what a live feed, our own recordings and a ledger that settles real outcomes should show that a replayed week could not.
Sources
- Faro's PoC-1 census of 1–7 June 2026 and its gate decision (ADR-035, ADR-041 in the repository).
- Faro's market catalogue for the 98 % and catalogue-size figures (ADR-021/023/024/026).
- PMXT archive, the third-party record of Polymarket's order-book feed used for the June week.
- Saguillo, Ghafouri, Kiffer and Suarez-Tangil, Unravelling the Probabilistic Forest: Arbitrage in Prediction Markets (AFT 2025): about $39.6 million realised on markets resolving between April 2024 and April 2025.