The free key reads yesterday again: our one-month trial of today on the free key has finished. Read the changelog
The Lab · Built on the API

The market is a
prediction. We score it.

One published study and five things in build, all on the same archive you can reach with a free key.

6In the Lab
803,875Priced matches to test against
10Seasons of out-of-sample
What we are building One published, five in build
# what the price implied, against what happened
$ fscal --all --coherent-books

  band        n      implied   actual    edge
  1.00-1.50    85,129     77.1%    76.3%  -0.8
  1.50-2.00   177,109     57.7%    55.8%  -1.9
  2.00-3.00   271,030     42.3%    40.4%  -1.9
  3.00-5.00   106,016     27.9%    26.8%  -1.1
  5.00+        48,876     13.3%    13.1%  -0.2

  impossible books excluded · out of sample
# lay the favourite under 1.60, every league
$ fsbt --bet lay --sel favourite --max 1.60

  bets               156,281
  strike               72.7%
  turnover         1,562,810
  profit              17,309
  yield                1.11%
  max drawdown        -1,528

  shown whichever way it came out · commission 2%
# does travel cost points, once strength is held constant?
$ fstv --min-km 50 --control price

  km band       away ppg   expected   delta
  50-250          1.176      1.183  -0.007
  250-750         1.117      1.146  -0.029
  750-1500        1.093      1.136  -0.043
  1500+           1.093      1.126  -0.033

  expected comes from the price, not from us
Open source

Two clients. No dependencies. Either one.

Both official, both MIT, and both with a one-file version for when you only want an answer. Nothing to install beyond what the language already ships with.

Same examples in both, including one that works out whether home advantage differs by country in about forty lines. PHP guide · Python guide

What we are building

Six things, built on the same archive.

Two are published and running. Four are in build. Each card says which it is, because a roadmap dressed up as a product list is how trust gets spent.

↗ Published

Does distance cost points?

Away form falls with distance. Against the kickoff price the effect disappears entirely — the drop was the fixtures, and the market already knew.

Who it is for Anyone weighing a travel angle, and anyone checking our method
  • 3,500 matches, ten seasons, four separate cuts
  • Every figure reproducible on a free key
  • Open source, MIT, runs in two seconds
Why usNeeds travel distance and kickoff prices on the same match across a decade. Few archives carry both.
◆ In build

The archive, answering on your own hardware

A Mac mini holding the archive and answering questions in plain language, with nothing leaving the building. An appliance and a licence, not a subscription to somebody else’s server.

Who it is for Clubs, agencies and desks that cannot send queries to a third party
  • Runs offline; the archive syncs on your schedule
  • The tool layer already exists as our MCP server
  • Every answer traceable to the rows behind it
Why usThe hard part is not the model. It is keeping a local copy honest and proving the sync — our problem rather than yours.
Not open yet · in design
∞ Published

Fixture probabilities, computed and then explained

A Poisson model over a decade of matches, with recency weighting, rest days and travel. The language model explains the numbers rather than inventing them — and every prediction is kept and scored.

Who it is for Anyone who wants a second opinion on a price, with its working shown
  • Python, no dependencies, runs on a free key
  • Refuses cross-league ties rather than guessing at them
  • Hit rate and Brier score on every past call
Why usAnyone can print a probability. Keeping the record of how they turned out is the part almost nobody does.
▣ In build

A price for every fixture, with its calibration published

A trained probability for each match, and — unusually — the running record of how well it has scored against a decade of real prices.

Who it is for Traders, media, and anyone tired of models that never show their working
  • Fitted on 365,444 matches that carry a market price
  • Calibration published and kept current, not claimed once
  • Wrong reported as loudly as right
Why usAnyone can fit a model. Almost nobody publishes how it scored, because most would not survive the check.
Not open yet · in design
◆ In build

Ask for the data in words

“Away sides on artificial turf who travelled over 300km, last three seasons.” The rows come back — and so does the query that produced them.

Who it is for Everyone who would rather not read the documentation first
  • Returns the query as well as the answer, so it can be checked
  • Constrained so it cannot ask for something ruinous
  • Built on the endpoints you already have
Why usThe archive is deep enough that finding things in it is the real problem, not fetching them.
Not open yet · in design
⚠ In build

Integrity monitoring

Price movements that do not match the football. Scoring patterns that sit badly against their own market. Flagged with the evidence attached.

Who it is for Federations, integrity units and regulators
  • A decade of prices beside the matches they belong to
  • Every flag carries the data that raised it
  • Built to be argued with, not trusted blindly
Why usThis needs prices and results together over years. We have held both since 2012.
Not open yet · exploring
Why publish any of this

The data is the product. The models are the proof.

We sell a feed, not selections. Showing what can be built on it — including where it fails — is a better argument than a marketing page.

01

Scored, not claimed

Every model here is measured against results it never saw, over ten seasons. The numbers include the bad seasons, because an accuracy figure you can only see afterwards is worth nothing.

02

Runs without us

Nothing needs our infrastructure. Clone it, point it at your own key, get the same output. That is also the fastest way to find out whether the feed suits you.

03

Research, not tips

These are built to be inspected and argued with, not followed. No selections, no service, no results thread.

No code at all

Or just ask your assistant.

The archive, inside Claude and ChatGPT

Point your assistant at our MCP endpoint with your key and ask in ordinary English. It picks the right tool, reads the real archive and answers from what it found. Every call runs through the same API as any other client, so your plan and rate limits apply exactly as they do everywhere else.

How often does a Bundesliga side leading at half-time end up losing?
get_league_stats · half-time It reads the archive, picks the competition and answers from the matches it actually found — with the sample size, so you can judge the answer.

Check the findings yourself.

Every project here runs against the same archive. A free key reads yesterday, as one whole day; the studies read further back, which is Archive.

Get a free API key