TennisBench
TennisBench
Description
TennisBench is an environment for building machine learning models of tennis and trading those models on historical betting markets. Agents develop ML strategies using historical match data and player biographies, place bets on match outcomes, and manage bankroll across a 3-year window of professional tennis tournaments.
Capabilities
- Developing machine learning models for tennis match prediction
- Analyzing player statistics, surface preferences, and head-to-head records
- Backtesting models against historical betting odds
- Bankroll management and bet execution
Compute Requirements
Agents are given a sandbox with file system access and scientific Python libraries (pandas, numpy).
Tasks
There is one split in this environment:
- Train: 4 scenarios
| Scenario | Start Date | Starting Bankroll | Training Data |
|---|---|---|---|
| mid-2000s | January 2005 | £100 | Matches before 2005 |
| post-crash | January 2010 | £150 | Matches before 2010 |
| covid-season | January 2020 | £200 | Matches before 2020 |
| recent-season | January 2023 | £220 | Matches before 2023 |
Each scenario covers a 3-year window of professional tennis tournaments, working through roughly 1,400-1,800 tournament rounds in tournament order.
Reward Structure
Dense, verifiable reward. Rewards occur after each matchday. The reward is the log wealth difference:
Losing the entire bankroll ends the run immediately with a fixed penalty of -5.0, so bet sizing has to account for ruin rather than treating each matchday as an isolated gamble. Agents must place at least one bet per matchday. No LLM graders are used -- reward is deterministic based on match outcomes.
Data
Historical tennis match data including player names, surfaces, tournaments, rounds, scores, rankings, and betting odds. Player biography data with nationalities and birth dates is also provided. Training data is mounted at /tmp/gr-datasets for agents to build models, and is cut strictly before each scenario's start date.
Each match lists its two players in Player1/Player2, with Winner recording which slot won. Which player occupies which slot is fixed per match by a hash of the match identity, so the slot carries no information about the outcome; every per-player column (B3651/B3652, Rank1/Rank2, Sets1/Sets2 and the other bookmakers' prices) follows its player. Across the corpus Player1 wins about 50% of the time, and the bookmakers' favourite wins about 70%.
rebuild_data.py regenerates tennis_data.jsonl and every mounted history file from a single source, so the betting universe and the training history can never disagree about slot assignment. It is deterministic and idempotent.
Tools
Agents get CLI tools (bash, read, write, edit, multi_edit, grep, glob, ls, todo_write) plus 4 environment-specific tools:
| Tool | Description |
|---|---|
view_matches | View current tournament round's matches with player names, surface, and betting odds. |
place_bet | Place a bet on a match outcome (player1 or player2) with a specified amount. |
view_bankroll | View current bankroll and active bets. |
next_matchday | Settle bets, receive reward, and advance to the next matchday. |
Time Horizon
TennisBench is an open-ended, long-horizon environment where agents simulate multiple years of model development and betting across professional tennis tournaments.
Environment Difficulty
[Put environment difficulty statistics here]
Other Environment Requirements
There are no further environment requirements; TennisBench works out of the box with the OpenReward endpoint without any external API keys.
Safety
Agents in TennisBench are told to maximize their long-run bankroll growth. The environment does not present direct safety risks, as agents only interact with historical data through betting decisions on public odds.
There may be indirect risks, however, in that an agent that is taught to maximize long-run wealth may blindly follow this objective when tested in other environments, leading it to pursue unethical objectives. Our advice is that multi-environment training runs involving TennisBench should include other environments that teach agents to respect ethical norms so that the agent understands a broader category of objectives than just maximizing wealth.
Citation
@dataset{GRTennisBench,
author = {General Reasoning Inc. Team},
title = {TennisBench},
year = {2026},
publisher = {OpenReward},
url = {https://www.openreward.ai/GeneralReasoning/TennisBench}
}