Kjell Runar Horvli
← All projects

Counter-Strike Fantasy Optimiser

Recommending five-player lineups under budget, team and tournament constraints.

Status: Live demo available.

Try the live optimizer →

Explore the FISSURE Playground 3 dataset. The app may take a moment to start when idle.

Overview

Picking a Counter-Strike fantasy lineup means balancing player performance, price and tournament constraints. This Python project searches for five-player lineups within a given budget and ranks them using a configurable scoring model.

How it works

1. Prepare the player data

A CSV file provides player names, prices, ratings and team ranks. Optional fields add recent form, tournament seeding, market probabilities and bracket information.

2. Set the rules

Choose a budget, lock specific players and set team requirements. Additional options control bracket balance and whether players from opposing teams in an opening match can appear together. The current implementation allows up to two players per team.

3. Score and search

The optimiser combines player ratings with configurable weights for team rank and optional factors such as recent form and market probabilities. It uses dynamic programming to build candidate lineups while tracking their cost and constraints.

4. Compare lineups

Results include the selected players, total price and model score. Multiple suggested lineups can be returned for comparison. The score is a ranking measure, not a prediction of fantasy points.

Results and evaluation

I used the third-ranked lineup from this run for FISSURE Playground 3 and finished in the top 15% of the overall worldwide event leaderboard.

Lineup #3 — selected for FISSURE Playground 3
Player Price Model score
yuurih 210,000 1.9820
FalleN 198,000 1.8729
NertZ 208,000 1.8266
huNter 200,000 1.7545
venomzera 184,000 1.3703

Total price: 1,000,000 / 1,000,000

Total model score: 8.906337, including 0.10 in bonuses for two team stacks.

Settings used for this run
  • Team-rank weight: 0.55; market-probability weight: 0.28.
  • Recent-form weight: 0.35; form adjustment cap: 0.08.
  • Stack bonus: 0.05 per two-player team stack.
  • At least two players from each bracket side, A and B.
  • Maximum two players per bracket group and per team.
  • Maximum one distinct team from each opening matchup.
  • Requested output: 40 lineups.

Player scores are rounded for display. These scores express the model's ranking preferences, not predicted fantasy points. This example demonstrates the output; it does not establish predictive accuracy on completed tournaments.

Limitations and next steps