Skip to content

Quickstart

The whole pipeline on synthetic data, with the real commands: install, build a demo store, backtest, forecast, run a live private book and price a sportsbook's lines. About 5 minutes once Postgres is up.

Every command below is a normal racinglines command with --demo added. --demo switches the data source to a demo store (a separate database and data folder filled from a data pack) and changes nothing else. The default pack, kart, is a synthetic Formula 1 world with a Mario Kart grid: every pace, result and price is invented; play money, nothing is traded anywhere.

What you need

Python 3.11 or newer and a PostgreSQL 16+ server. No API key, no account and no network access are needed for the demo. The hosted way in needs only Python and a racinglines.bet account with MCP access (in testing).

Installing from PyPI?

pip install "racinglines[db]" is the shortest way in: the package README walks through the same demo from the installed package, with the database in one docker run. The package is F1, the downhill sim, the kart demo and the web app; [db] runs every command, pip install "racinglines[mcp]" adds the MCP server and the hosted way in (--remote, racinglines remote, data pull), and pip install "racinglines[web]" adds the web app. The NASCAR, MotoGP, road cycling and weather commands on this page are not in it.

Prefer to watch first? The same commands, recorded, play in the browser at racinglines.bet/docs/quickstart/term, no sign-in needed.

Which way in?

Everything runs on your machine. The demo store is built on first use (about a minute) and every command works on it.

Setup (5 min)

Step 1: Install

# LOCAL (Mac), or any machine with Python 3.11+ and Docker
python3 -m venv ~/rl && source ~/rl/bin/activate
pip install "racinglines[db]"                            # or, in a clone of racinglines-public: pip install -e ".[web]"

Step 2: Start Postgres

# LOCAL (Mac): PostgreSQL 17 on localhost:5433, data in the Docker volume racinglines-pgdata
docker run -d --name racinglines-db -p 5433:5432 -e POSTGRES_USER=racinglines -e POSTGRES_PASSWORD=racinglines \
  -e POSTGRES_DB=racinglines -v racinglines-pgdata:/var/lib/postgresql/data postgres:17

In a clone of the full development repository, docker compose up -d starts the same server (docker-compose.yml).

Without Docker, any Postgres 16+ works: point DATABASE_URL at it (Database). The demo database is created next to the configured one (racinglines_demo_kart on the same server), so the user in the URL needs the right to create databases (the container's user has it).

Step 3: Check the install

racinglines check runs the pipelines on synthetic data, probes every data source and checks the database (about 10 seconds). --offline skips the endpoint probes; --no-db skips the database.

Command
racinglines check --offline
Output
code (synthetic data)
  โœ“ f1 code                load + measurements                      0.3s  6 events, 7,485 laps, 360 practice rows
  โœ“ f1 code                as-of leakage guard                      0.0s  sessions only usable after they end
  โœ“ f1 code                training history                         0.6s  120 training rows
  โœ“ f1 code                race pricing                             1.2s  favourite Driver 01 36%
  โœ“ f1 code                backtest                                 0.6s  6 race x mode rows, mean win Brier 0.032
  โœ“ f1 code                season forecast                          0.3s  leader Driver 01 71%
  โœ“ markets code           maker replay                             0.0s  172 fills, P&L +72.56
  โœ“ markets code           weekend taker                            0.0s  46 trades, P&L +300.15
  โœ“ markets code           season strategy                          0.2s  39 trades, P&L -93.55
  โœ“ mtb_dh code            parse results tables                     0.1s  1920 rows, 60 riders, rounds ['final', 'practice', 'qual1']
  โœ“ mtb_dh code            season model                             0.2s  sigma 0.0096, 60 riders
  โœ“ mtb_dh code            season forecast                          0.2s  leader 69%
  โœ“ mtb_dh code            backtest                                 0.2s  1 held-out round(s) scored

database
  โœ“ database               Postgres                                 0.2s  localhost:5433/racinglines, schema up to date

14/14 checks passed

Step 4: Choose where the data comes from

The first command that needs a database, when none is configured (no DATABASE_URL, no db or source in ~/.config/racinglines/cli.toml), asks once and saves the answer as source in that file. Answer 1:

racinglines needs a database, and none is configured (no DATABASE_URL, no `db` or `source` in ~/.config/racinglines/cli.toml).
  1) local:  the Postgres of docker-compose.yml on localhost:5433; start it with one command, `docker compose up -d`
             (then every command works; add --demo for the synthetic demo store, docs/quickstart.md)
  2) remote: sign in to racinglines.bet (the browser opens on first use) and run `racinglines book map|price|settle`
             on the hosted server, like `racinglines remote ...` and `--remote` on a Lab-job command (in testing);
             other commands still need a local database
Choose 1 or 2 [1]:

With no terminal to ask on (a script, CI), it prints the same two options and exits with code 2: set DATABASE_URL, or run racinglines book config source local (or remote). The same command changes the answer later. One resolver makes this choice and the --demo one (racinglines/cli/source.py).

Now run the quickstart.

#aintcare mode

racinglines.bet remote access is in testing (#aintcare mode). A review of venue and data-feed terms is pending, so data served here is for testing only. Every command that connects to the hosted server prints this warning on stderr.

Sign up on racinglines.bet first

Every --remote command needs a racinglines.bet token, which comes from your sign-in on the site: sign up before Step 2. The hosted demo store (--demo --remote) may let you try a few calls without a token first, then asks you to sign up. The local tab needs no account.

From PyPI, these commands need the MCP extra: pip install "racinglines[mcp]".

Nothing to install but the CLI itself, no Postgres: --remote sends the commands the hosted server runs to racinglines.bet, and --demo --remote sends them to the pack's hosted demo store (racinglines mcp --http --demo on the VM, over its own database built from the pack: synthetic data only, never production's). The outputs below are not shown because these commands need the hosted server, which the docs build cannot reach.

Setup (2 min)

Step 1: Install the CLI

# LOCAL (Mac), or any machine with Python 3.11+: no Postgres needed
git clone https://github.com/racinglines/racinglines.git && cd racinglines    # the development repository
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt && pip install -e .

Step 2: Sign in

The first --remote command opens the browser to sign in with your racinglines.bet account (one with MCP access: Pro or admin, MCP: Hosted) and waits for Allow. The login is kept in ~/.config/racinglines/mcp-login.json and refreshed on its own; racinglines book logout forgets it. On a machine with no browser, an rl_ token from Settings > Connect Claude (MCP) in RACINGLINES_MCP_TOKEN skips the sign-in.

# LOCAL (Mac): the pack's book, priced on the hosted demo store (the browser opens once)
racinglines book price --demo --remote

Step 3: Run the model as a hosted job

On the hosted store the model commands run as the server's Lab jobs (run_job, followed with get_job), the log printed as it arrives, and the run is saved there. They take the job's options only (--races, --sims, --track, --half-life, --scenario; --half-life-days, --junior-weight for mtb_dh).

# LOCAL (Mac)
racinglines model backtest kart --demo --remote --races 10  # the backtest as a hosted job
racinglines model forecast kart --demo --remote             # a forecast scenario on the hosted demo store

db stats, live run and live report need a local store. The pack names its server ([remote] mcp_url in pack.toml; RACINGLINES_DEMO_MCP_URL overrides it); it answers once the owner has built it on the VM (scripts/vm/demo_store.sh, Demo data packs). With source = "remote" saved in ~/.config/racinglines/cli.toml, --demo alone goes to the hosted store too.

Step 4: Pull real data into your own database (optional)

The same sign-in reaches more of the hosted server (MCP: More commands on the hosted server): --remote on any command that has a Lab job, racinglines remote tools | call | job, and racinglines data pull SPORT, which copies one sport's shared data (race data, model runs, exchange prices, trades and books; never accounts or positions) into a local database:

# LOCAL (Mac), or any machine with Postgres: a fresh local database, then F1's data from racinglines.bet
racinglines db init
racinglines data pull f1
racinglines data pull f1 --since last          # later: a top-up

Run the quickstart (the kart pack)

The steps come from the pack's manifest (racinglines/demo/packs/kart/pack.toml, [[quickstart]], rendered by python3 scripts/build_quickstart.py), and every Output tab is what the command printed on the pack, captured by scripts/docs/capture_examples.py (never typed by hand). The browser replay records the same list. Run them in order.

Step 1: ๐Ÿ“ฆ Install racinglines

In a virtualenv with Python 3.11+: the package with its database extra (from a clone of racinglines-public, pip install -e ".[web]").

# LOCAL (Mac), or any machine with Postgres
pip install "racinglines[db]"

Step 2: ๐Ÿ„ Build and look at the demo store

The first --demo command builds the store (a few minutes, with a progress bar): the database, the synthetic files, the real ingest and the exchange links. Later commands reuse it.

Command
racinglines db stats --demo
Output
demo: building the kart pack's store (no database): database racinglines_demo_kart, folder
/home/user/racinglines-public/data/demo/kart. Synthetic data, made once (a few minutes).
๐Ÿ”ง demo store 0/7 creating the database
๐Ÿ”ง demo store 1/7 schema and reference data (alembic upgrade head, seed)
๐Ÿ”ง demo store 2/7 the pack's data files
๐Ÿ”ง demo store generating: 2024 R01 Mario Kart Stadium
๐Ÿ”ง demo store generating: 2025 R01 Mario Kart Stadium
๐Ÿ”ง demo store generating: 2026 R01 Mario Kart Stadium
๐Ÿ”ง demo store generating: files written
๐Ÿ”ง demo store generating: exchange odds 2026-09
๐Ÿ”ง demo store generating: exchange odds 2026-10
๐Ÿ”ง demo store generating: exchange odds 2026-11
๐Ÿ”ง demo store 3/7 racinglines data ingest f1 --years 2024-2026
๐Ÿ”ง demo store 4/7 racinglines model forecast f1 --save --sims 2000
๐Ÿ”ง demo store 5/7 racinglines data pm-links-import f1
๐Ÿ”ง demo store 6/7 racinglines data pm-links-import f1 --exchange kalshi
๐Ÿ”ง demo store 7/7 ready
demo: the kart store is ready (f1 data; `racinglines db stats --demo kart`) Let's-a go! ๐Ÿ„
โ•ญโ”€ ๐Ÿ“ฆ database racinglines_demo_kart โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ ๐Ÿ“… calendar          ๐Ÿ results                    ๐Ÿ”ฎ model                  โ”‚
โ”‚ sports          8    athletes                20    model runs              1 โ”‚
โ”‚ leagues         8    athlete identifiers     20    race predictions       60 โ”‚
โ”‚ competitions    8    results              3,300    standings predictions  20 โ”‚
โ”‚ categories     11    splits                   0                              โ”‚
โ”‚ venues         27    source files            33                              โ”‚
โ”‚ events         36                                                            โ”‚
โ”‚ races          36                                                            โ”‚
โ”‚ rounds        165                                                            โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
coverage

  competition   year   category   events   rounds   results
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  f1_wdc        2024   DRV            12       60     1,200
  f1_wdc        2025   DRV            12       60     1,200
  f1_wdc        2026   DRV             9       45       900

Step 3: ๐Ÿ“Š Backtest the model

Every past race priced as of before the weekend, before qualifying and before the race, with track features on and off, scored against the results and against uniform and grid baselines.

Command
racinglines model backtest kart --demo
Output
progress 0/1 building history (track features on)
๐Ÿ“Š backtest, track features on
progress 10/33 2024 R10 rainbow-road
progress 20/33 2025 R08 mount-wario
progress 30/33 2026 R06 thwomp-ruins
progress 33/33 2026 R09 bowser-s-castle
๐Ÿ“Š Track features ON: mean over 32 races
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ market โ”‚ stage       โ”‚ model Brier โ”‚ uniform โ”‚   grid โ”‚ skill vs uniform โ”‚ log loss โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ win    โ”‚ pre weekend โ”‚      0.0431 โ”‚  0.0475 โ”‚      โ€“ โ”‚   โ–‰          +9% โ”‚   0.1518 โ”‚
โ”‚        โ”‚ pre quali   โ”‚      0.0405 โ”‚  0.0475 โ”‚      โ€“ โ”‚  โ–ˆโ–         +15% โ”‚   0.1388 โ”‚
โ”‚        โ”‚ pre race    โ”‚      0.0381 โ”‚  0.0475 โ”‚ 0.0410 โ”‚  โ–ˆโ–‰         +20% โ”‚   0.1266 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ podium โ”‚ pre weekend โ”‚      0.0988 โ”‚  0.1275 โ”‚      โ€“ โ”‚  โ–ˆโ–ˆโ–Ž        +23% โ”‚   0.3155 โ”‚
โ”‚        โ”‚ pre quali   โ”‚      0.0913 โ”‚  0.1275 โ”‚      โ€“ โ”‚  โ–ˆโ–ˆโ–Š        +28% โ”‚   0.3058 โ”‚
โ”‚        โ”‚ pre race    โ”‚      0.0772 โ”‚  0.1275 โ”‚ 0.0824 โ”‚  โ–ˆโ–ˆโ–ˆโ–‰       +39% โ”‚   0.2699 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ top10  โ”‚ pre weekend โ”‚      0.1662 โ”‚  0.2500 โ”‚      โ€“ โ”‚  โ–ˆโ–ˆโ–ˆโ–Ž       +34% โ”‚   0.5105 โ”‚
โ”‚        โ”‚ pre quali   โ”‚      0.1543 โ”‚  0.2500 โ”‚      โ€“ โ”‚  โ–ˆโ–ˆโ–ˆโ–Š       +38% โ”‚   0.4897 โ”‚
โ”‚        โ”‚ pre race    โ”‚      0.1295 โ”‚  0.2500 โ”‚ 0.1345 โ”‚  โ–ˆโ–ˆโ–ˆโ–ˆโ–Š      +48% โ”‚   0.4353 โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
๐Ÿ favourite won 34% of 32 races ยท rank correlation 0.83 ยท mean winner probability 22.7%
   best call  2024 R04 Royal Raceway: Donkey Kong won at 48.6%
   upset      2024 R08 Mount Wario: Donkey Kong won at 1.7% (favourite Peach)
progress 0/1 building history (track features off)
๐Ÿ“Š backtest, track features off
progress 10/33 2024 R10 rainbow-road
progress 20/33 2025 R08 mount-wario
progress 30/33 2026 R06 thwomp-ruins
progress 33/33 2026 R09 bowser-s-castle
๐Ÿ“Š Track features OFF: mean over 32 races
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ market โ”‚ stage       โ”‚ model Brier โ”‚ uniform โ”‚   grid โ”‚ skill vs uniform โ”‚ log loss โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ win    โ”‚ pre weekend โ”‚      0.0437 โ”‚  0.0475 โ”‚      โ€“ โ”‚   โ–Š          +8% โ”‚   0.1629 โ”‚
โ”‚        โ”‚ pre quali   โ”‚      0.0407 โ”‚  0.0475 โ”‚      โ€“ โ”‚  โ–ˆโ–         +14% โ”‚   0.1391 โ”‚
โ”‚        โ”‚ pre race    โ”‚      0.0377 โ”‚  0.0475 โ”‚ 0.0410 โ”‚  โ–ˆโ–ˆ         +21% โ”‚   0.1240 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ podium โ”‚ pre weekend โ”‚      0.1033 โ”‚  0.1275 โ”‚      โ€“ โ”‚  โ–ˆโ–‰         +19% โ”‚   0.3356 โ”‚
โ”‚        โ”‚ pre quali   โ”‚      0.0915 โ”‚  0.1275 โ”‚      โ€“ โ”‚  โ–ˆโ–ˆโ–Š        +28% โ”‚   0.3104 โ”‚
โ”‚        โ”‚ pre race    โ”‚      0.0768 โ”‚  0.1275 โ”‚ 0.0824 โ”‚  โ–ˆโ–ˆโ–ˆโ–‰       +40% โ”‚   0.2650 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ top10  โ”‚ pre weekend โ”‚      0.1879 โ”‚  0.2500 โ”‚      โ€“ โ”‚  โ–ˆโ–ˆโ–        +25% โ”‚   0.5659 โ”‚
โ”‚        โ”‚ pre quali   โ”‚      0.1573 โ”‚  0.2500 โ”‚      โ€“ โ”‚  โ–ˆโ–ˆโ–ˆโ–‹       +37% โ”‚   0.4944 โ”‚
โ”‚        โ”‚ pre race    โ”‚      0.1296 โ”‚  0.2500 โ”‚ 0.1345 โ”‚  โ–ˆโ–ˆโ–ˆโ–ˆโ–Š      +48% โ”‚   0.4326 โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
๐Ÿ favourite won 38% of 32 races ยท rank correlation 0.83 ยท mean winner probability 23.1%
   best call  2024 R04 Royal Raceway: Donkey Kong won at 52.3%
   upset      2024 R08 Mount Wario: Donkey Kong won at 1.6% (favourite Peach)

Per-race rows -> /home/user/racinglines-public/data/demo/kart/runs/f1/backtests/backtest_20261014_0506.csv

Step 4: ๐Ÿ”ฎ Forecast the rest of the season

The next races (Rainbow Road is a sprint weekend) and both championships; --save stores the run the book and the web app read.

Command
racinglines model forecast kart --demo --save
Output
๐Ÿ”ฎ forecast 2026 ยท cutoff 2026-10-14 05:06 UTC ยท latest results 2026-10-04 14:00
๐Ÿ R10 Rainbow Road Grand Prix (18 Oct)
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ driver      โ”‚ team     โ”‚   win โ”‚              โ”‚ podium โ”‚              โ”‚ top 10 โ”‚   DNF โ”‚ exp pts โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Mario       โ”‚ mushroom โ”‚ 26.4% โ”‚ โ–ˆโ–ˆโ–ˆโ–‹         โ”‚  58.7% โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–    โ”‚  95.0% โ”‚  3.2% โ”‚    15.1 โ”‚
โ”‚ Luigi       โ”‚ mushroom โ”‚ 18.8% โ”‚ โ–ˆโ–ˆโ–‹          โ”‚  49.7% โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‰      โ”‚  93.8% โ”‚  3.1% โ”‚    13.4 โ”‚
โ”‚ Bowser      โ”‚ koopa    โ”‚ 14.4% โ”‚ โ–ˆโ–ˆ           โ”‚  40.2% โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‹       โ”‚  82.2% โ”‚ 13.9% โ”‚    11.2 โ”‚
โ”‚ Peach       โ”‚ royal    โ”‚  9.9% โ”‚ โ–ˆโ–           โ”‚  33.1% โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–‹        โ”‚  86.7% โ”‚  5.5% โ”‚    10.2 โ”‚
โ”‚ Daisy       โ”‚ royal    โ”‚  8.3% โ”‚ โ–ˆโ–           โ”‚  29.6% โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–        โ”‚  84.4% โ”‚  5.9% โ”‚     9.5 โ”‚
โ”‚ Donkey Kong โ”‚ kong     โ”‚  8.0% โ”‚ โ–ˆ            โ”‚  27.4% โ”‚ โ–ˆโ–ˆโ–ˆโ–Š         โ”‚  85.8% โ”‚  3.5% โ”‚     9.3 โ”‚
โ”‚ Bowser Jr.  โ”‚ koopa    โ”‚  6.7% โ”‚ โ–‰            โ”‚  23.6% โ”‚ โ–ˆโ–ˆโ–ˆโ–Ž         โ”‚  75.2% โ”‚ 13.7% โ”‚     8.1 โ”‚
โ”‚ Diddy Kong  โ”‚ kong     โ”‚  2.8% โ”‚ โ–            โ”‚  12.3% โ”‚ โ–ˆโ–‹           โ”‚  72.9% โ”‚  3.3% โ”‚     5.8 โ”‚
โ”‚ Yoshi       โ”‚ yoshi    โ”‚  1.6% โ”‚ โ–            โ”‚   7.7% โ”‚ โ–ˆ            โ”‚  60.1% โ”‚  7.3% โ”‚     4.2 โ”‚
โ”‚ Rosalina    โ”‚ comet    โ”‚  1.2% โ”‚ โ–            โ”‚   5.9% โ”‚ โ–Š            โ”‚  55.5% โ”‚  5.6% โ”‚     3.6 โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
๐Ÿ R11 Wario Stadium Grand Prix (01 Nov)
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ driver      โ”‚ team     โ”‚   win โ”‚              โ”‚ podium โ”‚              โ”‚ top 10 โ”‚   DNF โ”‚ exp pts โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Mario       โ”‚ mushroom โ”‚ 24.4% โ”‚ โ–ˆโ–ˆโ–ˆโ–         โ”‚  59.3% โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Ž    โ”‚  95.4% โ”‚  3.0% โ”‚    15.0 โ”‚
โ”‚ Luigi       โ”‚ mushroom โ”‚ 20.7% โ”‚ โ–ˆโ–ˆโ–‰          โ”‚  52.9% โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–     โ”‚  94.8% โ”‚  3.0% โ”‚    14.0 โ”‚
โ”‚ Peach       โ”‚ royal    โ”‚ 15.6% โ”‚ โ–ˆโ–ˆโ–          โ”‚  44.2% โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–      โ”‚  90.8% โ”‚  5.9% โ”‚    12.4 โ”‚
โ”‚ Bowser      โ”‚ koopa    โ”‚ 12.9% โ”‚ โ–ˆโ–Š           โ”‚  37.3% โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–       โ”‚  82.2% โ”‚ 14.0% โ”‚    10.8 โ”‚
โ”‚ Daisy       โ”‚ royal    โ”‚ 12.1% โ”‚ โ–ˆโ–‹           โ”‚  36.9% โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–       โ”‚  89.1% โ”‚  5.7% โ”‚    11.2 โ”‚
โ”‚ Bowser Jr.  โ”‚ koopa    โ”‚  4.6% โ”‚ โ–‹            โ”‚  19.1% โ”‚ โ–ˆโ–ˆโ–‹          โ”‚  75.1% โ”‚ 13.7% โ”‚     7.3 โ”‚
โ”‚ Donkey Kong โ”‚ kong     โ”‚  4.2% โ”‚ โ–Œ            โ”‚  18.4% โ”‚ โ–ˆโ–ˆโ–Œ          โ”‚  82.0% โ”‚  3.1% โ”‚     7.6 โ”‚
โ”‚ Yoshi       โ”‚ yoshi    โ”‚  2.1% โ”‚ โ–Ž            โ”‚  11.0% โ”‚ โ–ˆโ–Œ           โ”‚  69.3% โ”‚  7.4% โ”‚     5.4 โ”‚
โ”‚ Diddy Kong  โ”‚ kong     โ”‚  1.0% โ”‚ โ–            โ”‚   6.1% โ”‚ โ–Š            โ”‚  61.1% โ”‚  3.6% โ”‚     4.0 โ”‚
โ”‚ Birdo       โ”‚ yoshi    โ”‚  0.9% โ”‚ โ–            โ”‚   5.3% โ”‚ โ–‹            โ”‚  56.3% โ”‚  7.3% โ”‚     3.6 โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
๐Ÿ† 2026 drivers' championship
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ driver       โ”‚ points โ”‚ expected โ”‚ champion โ”‚                โ”‚  top 3 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Luigi        โ”‚    191 โ”‚      234 โ”‚    99.8% โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‰ โ”‚ 100.0% โ”‚
โ”‚ Mario        โ”‚    134 โ”‚      182 โ”‚     0.2% โ”‚                โ”‚  99.1% โ”‚
โ”‚ Peach        โ”‚    106 โ”‚      141 โ”‚     0.0% โ”‚                โ”‚  60.5% โ”‚
โ”‚ Bowser       โ”‚     99 โ”‚      135 โ”‚     0.0% โ”‚                โ”‚  39.9% โ”‚
โ”‚ Daisy        โ”‚     62 โ”‚       95 โ”‚     0.0% โ”‚                โ”‚   0.2% โ”‚
โ”‚ Donkey Kong  โ”‚     57 โ”‚       85 โ”‚     0.0% โ”‚                โ”‚   0.2% โ”‚
โ”‚ Bowser Jr.   โ”‚     60 โ”‚       85 โ”‚     0.0% โ”‚                โ”‚   0.1% โ”‚
โ”‚ Koopa Troopa โ”‚     55 โ”‚       58 โ”‚     0.0% โ”‚                โ”‚   0.0% โ”‚
โ”‚ Birdo        โ”‚     36 โ”‚       48 โ”‚     0.0% โ”‚                โ”‚   0.0% โ”‚
โ”‚ Diddy Kong   โ”‚     28 โ”‚       46 โ”‚     0.0% โ”‚                โ”‚   0.0% โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
constructors

  team                 points   expected   champion
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  Mushroom Racing         325        416     100.0%   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ
  Royal Racing            168        236       0.0%
  Koopa Kart Works        159        220       0.0%
  Kong Jungle Racing       85        132       0.0%
  Yoshi Island GP          62         91       0.0%

finishing model coef {'g': 0.527, 'g_ease': -0.149, 'rp_rel': 0.041, 'rp_ease': 0.051, 'qp_rel':
0.08, 'street_g': 0.0} sigma 0.155; season drift (as-of) {'team_sd': 0.002652025069557153,
'driver_sd': 0.0005339299639313828}

Saved forecast run 2.

Step 5: ๐Ÿ Run a live private book

Bowser's Castle (round 9) replayed on a simulated clock: the maker's book opens before practice, reprices after each session from the model's stage runs, 100 simulated takers trade against it, the book closes at lights out and settles from the results.

Command
racinglines live run kart/demo-2026-09 --demo --simulate --no-fetch
Output
  pre-weekend: priced (run #3)
2026-10-02T10:30:00+00:00 2026-09 pre-weekend: 80 markets, 54 quoted, 0 crowd fills, maker P&L +24.73
โ•ญโ”€ ๐Ÿšฆ Bowser's Castle Grand Prix 2026 (synthetic) ยท pre-weekend (1 of 7 ยท 2026-10-02T10:30 UTC) โ”€โ•ฎ
โ”‚                                                                                                โ”‚
โ”‚  driver          fair                  move     bid     ask   Polymarket   Kalshi   inventory  โ”‚
โ”‚  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚
โ”‚  Mario          27.6%   โ–ˆโ–ˆโ–ˆโ–Ž                  24.0%   31.0%        32.5%    36.0%         -81  โ”‚
โ”‚  Luigi          21.4%   โ–ˆโ–ˆโ–Œ                   18.0%   25.0%        11.1%     8.0%           โ€“  โ”‚
โ”‚  Daisy          20.5%   โ–ˆโ–ˆโ–                   17.0%   24.0%         6.1%     5.7%           โ€“  โ”‚
โ”‚  Peach          18.2%   โ–ˆโ–ˆโ–                   15.0%   22.0%        10.4%    11.2%           โ€“  โ”‚
โ”‚  Bowser          3.6%   โ–                      1.0%    8.0%        10.2%    10.5%        -357  โ”‚
โ”‚  Bowser Jr.      2.1%   โ–Ž                         โ€“    6.0%         1.8%     2.1%           โ€“  โ”‚
โ”‚  Yoshi           1.6%   โ–                         โ€“    5.0%         1.6%     1.9%           โ€“  โ”‚
โ”‚  Koopa Troopa    1.2%   โ–                         โ€“    5.0%         7.2%    11.2%           โ€“  โ”‚
โ”‚                                                                                                โ”‚
โ”‚ ๐Ÿ‘ฅ crowd: 0 fills this update ยท 0 in all ยท $0 traded ยท 0 of 100 takers still betting           โ”‚
โ”‚ ๐Ÿ’ฐ maker P&L +24.73  (crowd +0.00, picks +24.73)                                               โ”‚
โ”‚ next: after FP1 at 2026-10-02T13:00 UTC                                                        โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
  after FP1: priced (run #4)
2026-10-02T13:00:00+00:00 2026-09 after FP1: 80 markets, 44 quoted, 4 crowd fills, maker P&L -75.09
โ•ญโ”€ ๐Ÿ”„ Bowser's Castle Grand Prix 2026 (synthetic) ยท after FP1 (2 of 7 ยท 2026-10-02T13:00 UTC) โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚                                                                                                  โ”‚
โ”‚  driver          fair                    move     bid     ask   Polymarket   Kalshi   inventory  โ”‚
โ”‚  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚
โ”‚  Mario          29.1%   โ–ˆโ–ˆโ–ˆโ–            โ–ฒ 1.5   26.0%   32.0%        32.5%    36.0%         -66  โ”‚
โ”‚  Bowser         20.1%   โ–ˆโ–ˆโ–            โ–ฒ 16.4   17.0%   23.0%        10.2%    10.5%        -357  โ”‚
โ”‚  Luigi          19.3%   โ–ˆโ–ˆโ–Ž             โ–ผ 2.1   16.0%   22.0%        11.1%     8.0%           โ€“  โ”‚
โ”‚  Peach          16.0%   โ–ˆโ–‰              โ–ผ 2.2   13.0%   19.0%        10.4%    11.2%           โ€“  โ”‚
โ”‚  Daisy          11.1%   โ–ˆโ–Ž              โ–ผ 9.5    8.0%   14.0%         6.1%     5.7%           โ€“  โ”‚
โ”‚  Koopa Troopa    1.9%   โ–               โ–ฒ 0.6       โ€“    5.0%         7.2%    11.2%           โ€“  โ”‚
โ”‚  Yoshi           0.7%                   โ–ผ 0.9       โ€“    4.0%         1.6%     1.9%           โ€“  โ”‚
โ”‚  King Boo        0.5%                   โ–ผ 0.6       โ€“    4.0%         2.3%     1.8%           โ€“  โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ ๐Ÿ‘ฅ crowd: 4 fills this update ยท 4 in all ยท $294 traded ยท 4 of 100 takers still betting           โ”‚
โ”‚ ๐Ÿ’ฐ maker P&L -75.09  (crowd -51.91, picks -23.17)                                                โ”‚
โ”‚ ๐Ÿ fp1: P1 Mario ยท P2 Bowser ยท P3 Luigi                                                          โ”‚
โ”‚ next: after FP2 at 2026-10-02T16:30 UTC                                                          โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ€ฆ 79 lines cut (showing the first 39 and last 28 of 146) โ€ฆ
2026-10-04T17:00:00+00:00 2026-09 results: 80 markets, 0 quoted, 0 crowd fills, maker P&L -222.25
โ•ญโ”€ ๐Ÿ Bowser's Castle Grand Prix 2026 (synthetic) ยท results (7 of 7 ยท 2026-10-04T17:00 UTC) โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚                                                                                                 โ”‚
โ”‚  driver             fair                    move   bid   ask   Polymarket   Kalshi   inventory  โ”‚
โ”‚  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚
โ”‚  Luigi โœ…          31.4%   โ–ˆโ–ˆโ–ˆโ–Š            โ–ฒ 4.5     โ€“     โ€“        11.1%     8.0%         -13  โ”‚
โ”‚  Daisy โŒ          20.5%   โ–ˆโ–ˆโ–             โ–ฒ 8.5     โ€“     โ€“         6.1%     5.7%         -66  โ”‚
โ”‚  Mario โŒ          20.4%   โ–ˆโ–ˆโ–             โ–ผ 2.2     โ€“     โ€“        32.5%    36.0%         -66  โ”‚
โ”‚  Bowser โŒ         20.0%   โ–ˆโ–ˆโ–             โ–ฒ 5.3     โ€“     โ€“        10.2%    10.5%      -1,058  โ”‚
โ”‚  Peach โŒ           6.5%   โ–Š              โ–ผ 12.8     โ€“     โ€“        10.4%    11.2%        -132  โ”‚
โ”‚  King Boo โŒ        0.5%                   โ–ผ 0.3     โ€“     โ€“         2.3%     1.8%      -2,338  โ”‚
โ”‚  Koopa Troopa โŒ    0.4%                   โ–ผ 1.4     โ€“     โ€“         7.2%    11.2%           โ€“  โ”‚
โ”‚  Donkey Kong โŒ     0.2%                       =     โ€“     โ€“         0.8%        โ€“           โ€“  โ”‚
โ”‚                                                                                                 โ”‚
โ”‚ ๐Ÿ‘ฅ crowd: 0 fills this update ยท 176 in all ยท $6,048 traded ยท 52 of 100 takers still betting     โ”‚
โ”‚ ๐Ÿ’ฐ maker P&L -222.25  (crowd -72.25, picks -150.00)                                             โ”‚
โ”‚ ๐Ÿ race: P1 Luigi ยท P2 Daisy ยท P3 Donkey Kong                                                   โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
simulated 2026-09 to 2026-10-04 17:00:00: 7 updates
โ•ญโ”€ ๐Ÿ Bowser's Castle Grand Prix 2026 (synthetic) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ opened             2026-10-02T10:30 UTC                              โ”‚
โ”‚ settled            2026-10-04T17:00 UTC                              โ”‚
โ”‚ ๐Ÿ’ฐ maker P&L       -222.25                                           โ”‚
โ”‚    from the crowd  -72.25                                            โ”‚
โ”‚    from the picks  -150.00                                           โ”‚
โ”‚ ๐Ÿ‘ฅ fills           176  ($6,048 traded)                              โ”‚
โ”‚    bettors         83: 31 up, 52 down, best +1,297.32, worst -184.03 โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

Rich output, or plain

db stats, model backtest, model forecast, live run, live report and book map|price|settle print Rich output (colour, tables, probability bars), also when piped. --plain on any command gives the plain text; NO_COLOR=1 keeps the layout and drops the colour codes, which is how these outputs were captured (CLI: Output).

Measured on a cloud container (one CPU, 2026-10-14, the capture's own timings): the store build 56 s, the backtest 45 s, the forecast 10 s, the live run 36 s, the book 2 s.

After the live run

The rehearsal left a settled event in the store. live status lists it, and live report writes the event report (Markdown, charts and, with --pdf, a PDF, which needs weasyprint or a headless Chrome) under data/demo/kart/runs/live/demo-2026-09/report/.

Command
racinglines live status --demo
Output
demo-2026-09             f1      settled  last 2026-10-04T17:00 (0.1 h ago)  Bowser's Castle Grand Prix 2026 (synthetic)

The report, with its own summary of the event and the files it wrote:

Command
racinglines live report kart/demo-2026-09 --demo
Output
โ•ญโ”€ ๐Ÿ Bowser's Castle Grand Prix 2026 (synthetic) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ opened             2026-10-02T10:30 UTC                              โ”‚
โ”‚ settled            2026-10-04T17:00 UTC                              โ”‚
โ”‚ ๐Ÿ’ฐ maker P&L       -222.25                                           โ”‚
โ”‚    from the crowd  -72.25                                            โ”‚
โ”‚    from the picks  -150.00                                           โ”‚
โ”‚ ๐Ÿ‘ฅ fills           176  ($6,048 traded)                              โ”‚
โ”‚    bettors         83: 31 up, 52 down, best +1,297.32, worst -184.03 โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
๐Ÿ“„ report files

  what            file
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  md              runs/live/demo-2026-09/report/report.md
  html            runs/live/demo-2026-09/report/report.html
  pnl.svg         runs/live/demo-2026-09/report/pnl.svg
  scorecard.svg   runs/live/demo-2026-09/report/scorecard.svg

Price a sportsbook's lines

The pack carries a generic sportsbook's lines on rounds 10 and 11 (racinglines/demo/packs/kart/book.toml), one per F1 pricing feature. book map resolves every leg to a race, athletes and a market kind by exact keys; book price adds the model's fair, the linked exchange price, the book's implied probability and the EV against each; book settle adds each leg's result and payout once the race is in. --json on any of them prints the same result as JSON (Sportsbook slips).

Command
racinglines book map --demo
Output
demo: the demo store's synthetic data (made-up names, results and prices); nothing is traded
                                              book map

  id            selection             kind                 status       race   reason
 โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
  win           Super Mario           race_win             mapped         34
  win-no        Luigi not to win      race_win             mapped         34
  podium        Peach                 race_podium          mapped         34
  top5          Daisy                 race_top5            mapped         34
  top10         Bowser                race_top10           mapped         34
  p2            Luigi                 race_p2              mapped         34
  pole          Mario                 race_pole            mapped         34
  fl            Luigi                 race_fastest_lap     mapped         34
  h2h           Daisy v Peach         race_h2h             mapped         34
  mover         Yoshi                 race_biggest_mover   mapped         34
  spr-win       Mario                 race_sprint_win      mapped         34
  spr-pole      Luigi                 race_sprint_pole     mapped         34
  red           No                    race_red_flag        mapped         34
  sgp-joint     Mario win + Luigi     combo                mapped         34
                podium
  โ”” 14.1        race_win Mario  (f1                        mapped         34
                2026-10)
  โ”” 14.2        race_podium Luigi                          mapped         34
                (f1 2026-10)
  sgp-product   Peach podium +        combo                mapped         34
                Daisy top 10
  โ”” 15.1        race_podium Peach                          mapped         34
                (f1 2026-10)
  โ”” 15.2        race_top10 Daisy                           mapped         34
                (f1 2026-10)
  parlay        Mario wins Rainbow    combo                mapped     34, 35
                Road and Wario
                Stadium
  โ”” 16.1        race_win Mario  (f1                        mapped         34
                2026-10)
  โ”” 16.2        race_win Mario  (f1                        mapped         35
                2026-11)
  typo          Maryo                 race_win             unmapped       34   leg 17: driver
                                                                               'Maryo' is not an
                                                                               exact name in race
                                                                               34's field
  โ”” 17          race_win  (f1                              unmapped       34   driver 'Maryo' is
                2026-10)                                                       not an exact name
                                                                               in race 34's field

          book_demo ยท event 2026-10 ยท f1 ยท captured 2026-10-15T09:00Z ยท odds decimal ยท USD
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ unmapped lines โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ typo                                                โ”‚
โ”‚ exact keys only: fix the book file or its [aliases] โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

Every leg mapped by its exact keys. Now the prices:

Command
racinglines book price --demo
Output
demo: the demo store's synthetic data (made-up names, results and prices); nothing is traded
                                             book price

                                                                                        model
  id            selection    odds    book   model       market   EV model   EV market   method
 โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
  win           Super        3.20   31.2%   26.4%        65.4%     -15.6%     +109.3%   single
                Mario
  win-no        Luigi not    1.30   76.9%   81.2%        87.2%      +5.6%      +13.4%   single
                to win
  podium        Peach        2.40   41.7%   33.1%        11.6%     -20.5%      -72.2%   single
  top5          Daisy        1.90   52.6%   50.2%            โ€“      -4.6%           โ€“   single
  top10         Bowser       1.25   80.0%   82.2%            โ€“      +2.7%           โ€“   single
  p2            Luigi        4.50   22.2%       โ€“        32.8%          โ€“      +47.6%   single
  pole          Mario        2.75   36.4%   35.0%        66.3%      -3.9%      +82.3%   single
  fl            Luigi        5.00   20.0%       โ€“            โ€“          โ€“           โ€“   single
  h2h           Daisy v      2.10   47.6%   47.0%        41.5%      -1.4%      -12.8%   single
                Peach
  mover         Yoshi        6.00   16.7%    8.6%            โ€“     -48.5%           โ€“   single
  spr-win       Mario        2.90   34.5%   24.8%            โ€“     -28.0%           โ€“   single
  spr-pole      Luigi        4.00   25.0%   16.1%            โ€“     -35.6%           โ€“   single
  red           No           1.45   69.0%       โ€“            โ€“          โ€“           โ€“   single
  sgp-joint     Mario win    4.20   23.8%   13.1%        40.0%     -44.9%      +68.1%   product
                + Luigi
                podium
  โ”” 14.1        race_win                โ€“   26.4%        65.4%
                Mario  (f1                          polymarket
                2026-10)
  โ”” 14.2        race_podiโ€ฆ              โ€“   49.7%        61.2%
                Luigi  (f1                          polymarket
                2026-10)
  sgp-product   Peach        2.50   40.0%   28.0%            โ€“     -30.1%           โ€“   product
                podium +
                Daisy top
                10
  โ”” 15.1        race_podiโ€ฆ              โ€“   33.1%        11.6%
                Peach  (f1                          polymarket
                2026-10)
  โ”” 15.2        race_top10              โ€“   84.4%            โ€“
                Daisy  (f1
                2026-10)
  parlay        Mario wins   9.60   10.4%    6.4%        35.9%     -38.2%     +244.7%   single x
                Rainbow                                                                 single
                Road and
                Wario
                Stadium
  โ”” 16.1        race_win      3.2   31.2%   26.4%        65.4%
                Mario  (f1                          polymarket
                2026-10)
  โ”” 16.2        race_win      3.0   33.3%   24.4%        54.9%
                Mario  (f1                          polymarket
                2026-11)
  typo          Maryo           โ€“       โ€“       โ€“            โ€“          โ€“           โ€“

          book_demo ยท event 2026-10 ยท f1 ยท captured 2026-10-15T09:00Z ยท odds decimal ยท USD
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ flags โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ sgp-joint: race 34: 2 legs on one race, correlated: EV approximate               โ”‚
โ”‚ sgp-joint: market: product of leg prices on one race, correlated: EV approximate โ”‚
โ”‚ sgp-product: race 34: 2 legs on one race, correlated: EV approximate             โ”‚
โ”‚ parlay: legs on 2 races: independent across races (product)                      โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ unmapped lines โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ typo                                                โ”‚
โ”‚ exact keys only: fix the book file or its [aliases] โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ assumptions โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โ€ข EV is per unit staked: probability x decimal payout - 1; decimal payout = 1 / the book's       โ”‚
โ”‚ implied probability.                                                                             โ”‚
โ”‚ โ€ข Legs on different races are independent: the slip probability is the product of their          โ”‚
โ”‚ probabilities.                                                                                   โ”‚
โ”‚ โ€ข Legs on the same race are priced jointly from simulations when they are available (passed in,  โ”‚
โ”‚ or a stored combo run with exactly these legs); otherwise the product of the marginals, flagged  โ”‚
โ”‚ 'correlated: EV approximate'.                                                                    โ”‚
โ”‚ โ€ข The market's slip probability is the product of its legs' prices: no exchange lists the slip   โ”‚
โ”‚ itself.                                                                                          โ”‚
โ”‚ โ€ข Model and market are shown side by side, never blended (owner, 2026-10-07).                    โ”‚
โ”‚ โ€ข The market price is the freshest linked exchange's mid (bid/ask midpoint, else its last price, โ”‚
โ”‚ else the tape's).                                                                                โ”‚
โ”‚ blend: none (owner, 2026-10-07; docs/sportsbook/slips.md)                                        โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

And the settlement:

Command
racinglines book settle --demo
Output
demo: the demo store's synthetic data (made-up names, results and prices); nothing is traded
                                         book settle

  id            selection                                   odds   result    payout   profit
 โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
  win           Super Mario                                 3.20   pending        โ€“        โ€“
  win-no        Luigi not to win                            1.30   pending        โ€“        โ€“
  podium        Peach                                       2.40   pending        โ€“        โ€“
  top5          Daisy                                       1.90   pending        โ€“        โ€“
  top10         Bowser                                      1.25   pending        โ€“        โ€“
  p2            Luigi                                       4.50   pending        โ€“        โ€“
  pole          Mario                                       2.75   pending        โ€“        โ€“
  fl            Luigi                                       5.00   manual         โ€“        โ€“
  h2h           Daisy v Peach                               2.10   pending        โ€“        โ€“
  mover         Yoshi                                       6.00   pending        โ€“        โ€“
  spr-win       Mario                                       2.90   pending        โ€“        โ€“
  spr-pole      Luigi                                       4.00   pending        โ€“        โ€“
  red           No                                          1.45   manual         โ€“        โ€“
  sgp-joint     Mario win + Luigi podium                    4.20   pending        โ€“        โ€“
  โ”” 14.1        race_win Mario  (f1 2026-10)                       pending
  โ”” 14.2        race_podium Luigi  (f1 2026-10)                    pending
  sgp-product   Peach podium + Daisy top 10                 2.50   pending        โ€“        โ€“
  โ”” 15.1        race_podium Peach  (f1 2026-10)                    pending
  โ”” 15.2        race_top10 Daisy  (f1 2026-10)                     pending
  parlay        Mario wins Rainbow Road and Wario Stadium   9.60   pending        โ€“        โ€“
  โ”” 16.1        race_win Mario  (f1 2026-10)                       pending
  โ”” 16.2        race_win Mario  (f1 2026-11)                       pending
  typo          Maryo                                          โ€“   โ€“              โ€“        โ€“

       book_demo ยท event 2026-10 ยท f1 ยท captured 2026-10-15T09:00Z ยท odds decimal ยท USD
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ unmapped lines โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ typo                                                โ”‚
โ”‚ exact keys only: fix the book file or its [aliases] โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

Rounds 10 and 11 have not been raced in the pack, so every line settles as pending.

Where things go

What Where Notes
The demo database racinglines_demo_kart, on the same server as DATABASE_URL RACINGLINES_DEMO_DATABASE_URL moves it
The demo data folder data/demo/kart/ (gitignored) the generated FastF1 files under raw/, the exchange links under archive/, run outputs under runs/, the live spec under live/; RACINGLINES_DEMO_DATA moves it
The build marker data/demo/kart/demo-store.json a fingerprint of the pack and its generator: both the database and the folder are rebuilt when the pack changes; delete the marker (or drop the database) to rebuild by hand

Not in the quickstart yet: strategy replay f1 (the maker replay needs a recorded exchange tape of price history and trades per market; the kart pack carries quotes only, not a tape).

Rebuild the data yourself

The demo is synthetic. To rebuild the real history locally, every source the code ingests is fetched with your own machine's network access, and with your own key where one is needed. Keys are never typed on the command line or committed: put them in your environment, or in a gitignored env file you fill with a hidden prompt, e.g.

# LOCAL (Mac): store a key without echoing it or leaving it in the shell history
read -rs -p "WUNDERGROUND_API_KEY: " k && printf 'export WUNDERGROUND_API_KEY=%s\n' "$k" >> .env.local && unset k
chmod 600 .env.local && source .env.local              # .env.local: add it to .git/info/exclude if it isn't ignored
Source What Your own key? Commands Code
F1 live-timing archive (via FastF1) F1 sessions: results, laps, schedule No racinglines data fetch f1 --years 2020-2026, then racinglines data ingest f1 racinglines/sources/fastf1/fetch.py, ingest.py
ChronoRace UCI downhill results No (the results key comes from ChronoRace's public page data) racinglines data download mtb_dh, then racinglines data ingest mtb_dh racinglines/sources/chronorace/download.py, ingest.py
NASCAR content feeds (cf.nascar.com) NASCAR Cup results and laps No racinglines data fetch nascar, then racinglines data ingest nascar racinglines/sources/nascar/fetch.py
MotoGP results API (api.motogp.pulselive.com) MotoGP classifications No racinglines data fetch motogp, then racinglines data ingest motogp racinglines/sources/motogp/fetch.py
ProCyclingStats road cycling results No key; needs pip install cloudscraper selectolax, and runs from a home connection racinglines data fetch cycling (see racinglines data fetch cycling -h) racinglines/sources/pcs.py, racinglines/cli/cycling.py
Polymarket (Gamma API) market links, prices, trades No (public market data) racinglines markets sync, racinglines markets history, racinglines markets trades racinglines/markets/polymarket/sync.py
Kalshi (Trade API v2, market data) market links, prices, trades No for market data; a key (KALSHI_API_KEY_ID, KALSHI_PRIVATE_KEY_PATH, from your Kalshi account's API keys page) only for the portfolio and order endpoints, which a rebuild doesn't use racinglines markets --exchange kalshi sync (then history, trades) racinglines/markets/kalshi/client.py, trade.py
Open-Meteo weather forecasts per event No racinglines weather fetch racinglines/weather/open_meteo.py
Weather Underground weather forecasts (optional source) Yes: WUNDERGROUND_API_KEY, the key a Weather Underground personal weather station owner gets; untested (no key has been probed) racinglines weather probe, racinglines weather fetch racinglines/weather/wunderground.py
IndyCar, WEC, SailGP results (sources present, not wired into an ingest) unknown none yet racinglines/sources/indycar/, wec/, sailgp/

Recorded exchange history older than what the exchanges still serve exists only on the VM: a rebuild has whatever the exchanges return today. Respect each source's terms of use (e.g. sports/motogp.toml [results].terms) and its rate limits; the fetchers pace themselves and are safe to re-run.

Next steps

  • CLI reference


    Every group and command, with its -h output and a real run where one is captured.

    CLI reference

  • Demo data packs


    What --demo does, what a pack is, the kart pack, and how to add one of your own.

    Demo data packs

  • Ask Claude instead


    The MCP server: the same data and simulations as typed tools for Claude Code, Claude Desktop or the CLI.

    MCP server

  • The web app


    Markets, Trade, History and Lab at racinglines.bet, and how to run the app yourself.

    Web app