Skip to main content

vibe-trading-livetennis

A custom Vibe-Trading data loader for tennis event-market price series, with optional live match-state enrichment. Observe-only, MIT-licensed.

Disclosure: this package is maintained by the Live Tennis API team (https://livetennisapi.com). It is vendor-authored — judge accordingly. The price series it loads comes from Polymarket's own public, keyless API; the optional enrichment uses our free tier.

Why this is a separate package (not a PR into Vibe-Trading)

We first proposed a live-tennis tool for the Vibe-Trading repo in HKUDS/Vibe-Trading#1133. The maintainer declined bundling it — correctly, because a tool bundled into the package must run on free public sources, and a keyed API is a dependency the project can't own for its users. In the same breath they pointed at the honest path:

"a skill plus a custom loader. The project supports registering your own data source and writing a skill that documents its interface, so anyone who wants live tennis state alongside event contracts can wire yours up without it being part of the package."

This repo is exactly that: a standalone loader + SKILL.md you register into your own install. Nothing is added to the Vibe-Trading tree.

What it does

  • Registers one data source, polymarket_tennis, implementing Vibe-Trading's DataLoaderProtocol. fetch(...) returns {symbol: DataFrame(trade_date index; open/high/low/close/volume)}.
  • The OHLC series is built from Polymarket's public keyless CLOB price history — the recorded implied-probability series for a tennis event-market outcome (each share settles $1/$0, so the price is the market's implied probability). This mirrors Vibe-Trading's own prediction_market tool, exposed through the loader interface.
  • Optional live match-state enrichment from the Live Tennis API free tier — live score, which player is serving, and a derived break-point flag — gated on LIVETENNIS_API_KEY. No key → enrichment off, loader still works.
  • A conservative market↔match player-name matcher (reusing the ideas in livetennisapi/polymarket-tennis) that returns None rather than guessing when names are ambiguous.

Quickstart

pip install vibe-trading-livetennis
import vibe_trading_livetennis
from vibe_trading_livetennis import DataLoader

vibe_trading_livetennis.register()   # wire `polymarket_tennis` into your install

loader = DataLoader()
frames = loader.fetch(
    ["will-jannik-sinner-win-the-2026-mens-us-open#Yes"],
    "2026-02-01", "2026-02-13", interval="1D",
)
print(frames["will-jannik-sinner-win-the-2026-mens-us-open#Yes"].tail())

A symbol is a Polymarket market slug, numeric market id, 0x condition id, or raw CLOB token id, optionally suffixed #<outcome> (default: first outcome). See SKILL.md for the full interface and registration notes.

Honest coverage (read before backtesting)

  • The series is a genuine recorded history of implied probability from CLOB /prices-history — not fabricated, not a live snapshot relabelled as history.
  • It is implied probability in [0, 1], not a conventional asset price.
  • CLOB history has no per-bar volume, so volume is 0.0 on every bar.
  • Coverage is only as deep as the market's own lifetime (a tennis market lives days to weeks). There is no multi-year OHLC; deep historical backtests need your own recorded series. The loader serves the market's real recorded window, live/recent included.
  • A market must exist on Polymarket and resolve to one outcome token; otherwise that symbol is omitted (one bad symbol never aborts the batch).

Tiers (enrichment only)

The price loader needs no key. The optional live-state enrichment uses the Live Tennis API free keyed tier: 30 req/min, 100 req/day — live scores (score / server / break-point), players (including current ranking), fixtures, usage. 100/day is a develop-and-test or ~15-minute-cadence budget, not continuous fast polling. Completed-match history and point-by-point are Basic; the market-prices feed is Pro; model win-probability and in-play stats are Ultra. This package requires none of them — market prices come from Polymarket's public API and enrichment uses only free-tier endpoints. Free keys: https://livetennisapi.com/subscribe/free

Observe-only

Every request this package makes is a GET to a public data endpoint. It has no order, position, wallet or account surface, and it computes no trading signal — it is a data source, not a strategy or an executor.

Development

pip install -e ".[dev]"
ruff check .
pytest

License

MIT — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vibe_trading_livetennis-0.1.0.tar.gz (21.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vibe_trading_livetennis-0.1.0-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

Details for the file vibe_trading_livetennis-0.1.0.tar.gz.

File metadata

  • Download URL: vibe_trading_livetennis-0.1.0.tar.gz
  • Upload date:
  • Size: 21.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for vibe_trading_livetennis-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cdf00e043398b79610f9f4847a33296fb4f1a313bf7b3bcf4792b0c6c17f7f61
MD5 342a8c612a62014fad820ee669aed00e
BLAKE2b-256 595749c6030fc07f7c5d63f38e8f0252e141a64260a73fa87587f712b3233ad5

See more details on using hashes here.

Provenance

The following attestation bundles were made for vibe_trading_livetennis-0.1.0.tar.gz:

Publisher: publish.yml on livetennisapi/vibe-trading-livetennis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vibe_trading_livetennis-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for vibe_trading_livetennis-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 582351e7d582af1785198168a6efa5f1f3022b06b15a998d2e94ab45baec5e80
MD5 fe3be3a7aee8f5cf6cd246b2541daba2
BLAKE2b-256 6c787a46066b7902c31d42d1f1944f8d48f944e43f767e2340f226613007de74

See more details on using hashes here.

Provenance

The following attestation bundles were made for vibe_trading_livetennis-0.1.0-py3-none-any.whl:

Publisher: publish.yml on livetennisapi/vibe-trading-livetennis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page