MSc thesis · University of Zielona Góra · 2026
Thesis in 5 minutes
A model that gives the chance of winning a round in Counter-Strike 2, second by second.
For every second of a round, the model returns the probability that the CT side wins. It sees only the game state: who is alive, how much equipment they have, whether the bomb is planted and how much time is left.
The bar only shows what an answer looks like.01The data
02Nine models
03Validation
Grouped by match. Rounds from one match look alike. Cross-validation (GroupKFold) keeps each match on one side, so the model is never scored on rounds it has nearly seen.
Walk-forward by quarter. The game and the map pool change over time. The model trains on every earlier quarter and is tested on the next one, as it would be after release.
2026 Q10.809–0.822
ROC-AUC of XGBoost (300 trees, fixed settings) on each test quarter. The bars start at 0.5, a coin toss. With little history the model is weak; from 2024 Q3 on it stays at 0.81–0.82. Logistic regression: 0.73–0.805.
On top of that: learning curves, bootstrap tests, feature-group ablations, calibration and SHAP.
04Results
Accuracy is about 0.71–0.72, but the model is meant to give a probability, not guess the winner, so accuracy is only a side metric.
05What came out
- Gradient boosting (LightGBM, XGBoost, CatBoost) gives the best probabilities. Plain logistic regression is close behind but clearly worse on log loss.
- The model needs history. After one quarter of data ROC-AUC is 0.650; from three quarters on it holds at 0.81–0.82.
- The probabilities can be trusted. With an ECE of 0.0086, the chance the model gives almost matches how often CT really wins in such situations.
- How you validate matters. Without grouping by match and testing on later quarters, the score would be inflated.
Predictions are served by FastAPI to a React and TypeScript app, all in Docker Compose.
One game state, model by modelInteractive: add feature groups and watch the answer change.MSc thesis "Predictive model of match outcomes", Data Engineering, University of Zielona Góra, defended 2026.