What it is
Betman is Korea’s official sports-toto service. This is a command-line research tool that pulls public round data from it, trains models on past rounds, and prints a probability for each outcome of each match. It never places a bet.
The honest summary comes first: the best model picks the right outcome about 41% of the time where random guessing gets 33%, and nothing here shows it can beat the market.
The markets
The tool covers four products. Two of them are 14-match tickets:
- Soccer win/draw/loss: pick a home win, a draw, or an away win for each of 14 matches.
- Baseball win/1/loss: for each of 14 games, pick a home win by two or more runs, a one-run game, or an away win by two or more.
It also models exact-score tickets and single fixed-odds lines. The backtests below cover only the baseball ticket.
Data, and not cheating with it
Match lists, results, and the public’s vote share come from Betman. Starting pitchers and team statistics come from the public MLB statistics service. Korean league form comes from Naver Sports, and game-time temperature from Open-Meteo.
The main risk in a backtest is lookahead: scoring a past game using information that only existed afterwards. The tool guards against it in several ways.
- Features for a match are computed before that match’s result updates any rating.
- Training data is limited to rounds that came before the round being predicted.
- Pitcher statistics are taken as of the week of the game.
- The current injured list is shown for reference and never used as a feature.
The models
- Elo. Each team has a rating that moves after every result. The rating gap between two teams is turned into three probabilities using how past games with a similar gap ended.
- Machine learning. A logistic regression or gradient boosting model reads 47 features per match: ratings, recent form, rest days, the public vote share, and for baseball, starting pitcher and team run statistics.
- Ensemble. The two sets of probabilities are multiplied together with weights and rescaled.
- Run margin. For baseball, a separate model estimates how many runs each team will score, turns those into a distribution of the final score gap, and reads the three outcomes off that distribution.
What the backtest shows
The backtest covers 20 held-out baseball rounds from 2026, 272 settled matches. For each round the models train only on earlier rounds.
| Model | Accuracy | Log-loss |
|---|---|---|
| Random guess | 33.3% | |
| Ensemble (80% Elo, 20% machine learning) | 40.4% | 1.0899 |
| Ensemble plus run-margin model at weight 0.35 | 41.5% | 1.0788 |
| Ensemble plus run-margin model at weight 0.50 | 40.8% | 1.0753 |
Lower log-loss is better. It rewards a model for being confident when right and unsure when wrong.
Reading this fairly:
- The models beat random guessing by seven to eight points.
- Adding the run-margin model improves log-loss at both weights. The accuracy differences between the variants are about one point, and with 272 matches the uncertainty is three to four points. The variants cannot be told apart on accuracy.
- An earlier test, run before the pitcher-statistics fix described below, found the machine learning model alone (35.6% to 37.1%) did worse than Elo alone (39.6%), and the blend did better than either. With little more than a thousand past matches, a 47-feature model overfits where a simple rating does not.
What I changed
- Pitcher statistics. The first version used each pitcher’s season statistics as of the day I ran the tool, which leaks the future into past games. I changed it to statistics as of the game week. In the corrected backtest the same ensemble reads 40.4%, down from 42.5% in the earlier one.
- Modeling the score gap. The baseball outcomes are bands of the run difference, not three unrelated classes. Modeling the difference directly gave the better log-loss in the table.
- Choosing which matches to hedge. A ticket can cover two outcomes on some matches at double the cost. I first hedged the least certain matches. I replaced that with a rule that hedges where the second outcome adds the most probability for the same cost.
- A dead data source. The Korean baseball statistics site I planned to use stopped resolving. Naver Sports carries the same data in a cleaner form, so I switched.
What it does not show
There is no evidence in this project that the predictions beat the market, beat the public’s picks, or make money. The fixed-odds recommender has never been backtested.
Before testing that, I wrote down what would count as a pass: at least 120 settled lines, a log-loss below the market’s own implied probabilities, and a positive return. So far only the piece that settles past bets is built. Until that test passes, the right reading of this project is that it predicts somewhat better than chance in a market with a built-in house edge.
An interface for AI assistants
The tool also runs as an MCP server with five tools, such as listing open rounds and predicting a round. That lets an AI assistant like Claude query the predictor directly instead of reading terminal output.