← Back

Dastan dataset datasheet

Documentation for the exact six-season release used to train and reproduce Dastan, SmartPlayFPL's open-source expected-points model. It follows the framework proposed by Gebru et al. (2021), covering motivation, composition, collection, preprocessing, intended uses, distribution, limitations, and maintenance.

163,072

player-fixtures

6

completed seasons

286

model features

MIT

code, data & weights

Current release: Dastan architecture v13 · data through 2025-26 · public contract verified 9 August 2026.

Motivation

For what purpose was the dataset created?

The dataset was created to train and evaluate machine learning models that predict Fantasy Premier League (FPL) player points per fixture. It combines official and archived FPL records, Understat's advanced football statistics, and provenance-checked pre-deadline snapshots into a model-ready frame with consistent player and club identities across seasons.

Who created the dataset and on behalf of which entity?

The dataset was created and is maintained by SmartPlayFPL, led by Qazybek Beken. It is an independent, self-funded project.

Who funded the creation of the dataset?

Self-funded. No grants or external funding were involved.

Any other comments?

The feature engineering builds on OpenFPL by Daniel Groos (Groos Analytics). Dastan reuses OpenFPL's rolling feature construction and adds deadline-safe availability, context, defensive-contribution, and pre-deadline signal features. The released model contract contains 286 features.

Composition

What do the instances represent?

Each instance is one player in one Premier League fixture — a single player-fixture pair. A player who appears in gameweek 10 of the 2023-24 season has one row regardless of whether they played 90 minutes or 0 minutes.

How many instances are there in total?

Exactly 163,072 player-fixture rows across six completed seasons, 2020-21 through 2025-26. The public release is immutable between reviewed model releases; live production data does not silently rewrite this training frame.

Does the dataset contain all possible instances?

The dataset aims to contain all FPL-registered players for every fixture in the covered seasons. It is not a sample — it is a census of every player-fixture combination where FPL recorded data.

What data does each instance consist of?

The model contract selects 286 deadline-safe features from the training frame. Identity and target columns sit beside those features. The release also includes the following supporting files:

features.parquet163,072 rows

Training frame · six seasons · 286 model features

pre_deadline_ep_next.parquet142,173 rows

Provenance-checked FPL projections

pre_deadline_signals.parquet137,982 rows

Availability and set-piece snapshots

openfpl_predictions.csv18,173 rows

Controlled OpenFPL head-to-head

players.csv4,717 rows

Season + stable FPL code to player name

mappings/fpl_understat_training_snapshot.csv1,564 rows

Frozen identities used by this release

Is there a label or target?

Yes. The primary target is target_points — the FPL points a player scored in that fixture. Secondary targets are target_minutes_ge60, minutes, and target_bucket for Dastan's conditional minutes and scoring-band heads.

Is any information missing from individual instances?

Yes. Missingness is explicit and documented:

  • Pre-deadline snapshot fields are unavailable where no snapshot passes the deadline-provenance checks
  • Understat fields can be absent for unmapped players and newly promoted clubs without a historical season
  • Defensive-contribution fields only exist from 2025-26 onward

Joined pre-deadline fields use -1 for missing values, never zero: 54,430 rows have a genuine FPL ep_next of zero.

Are there recommended data splits?

Use chronological walk-forward evaluation. The published clean evaluation has three non-overlapping blocks; every model is fitted only on data available before its test block and later seasons are excluded:

Test blockRowsProtocol
2024-25 GW15–225,610Train only on earlier data
2024-25 GW23–305,927Train only on earlier data
2024-25 GW31–386,085Train only on earlier data

Are there any errors, sources of noise, or redundancies?

  • The exact historical mapping snapshot intentionally preserves two identities later confirmed as wrong so the published release remains exactly reproducible; the audited map is used for new joins
  • Double gameweeks produce multiple player-fixture rows. All rolling features are anchored to the gameweek deadline so the later fixture cannot see the earlier fixture's result
  • Understat may revise historical values after publication. Release hashes are authoritative even when a later public-source rebuild is semantically equivalent rather than byte-identical
  • Newly promoted teams have no historical Understat season-level stats, causing NaN in early gameweeks

Is the dataset self-contained?

Yes. The public Dastan repository includes the training frame, pre-deadline inputs, mappings, feature order, trained weights, and evaluation artefacts. Retraining and verification require no API key or private SmartPlay database. Rebuilding from public sources is an optional, separately pinned workflow.

Does the dataset contain sensitive or confidential data?

No. All data is derived from publicly available APIs. Player names and statistics are public information published by the Premier League and Understat. No private individuals are included.

Collection Process

How was the data acquired?

Programmatically from public football-data sources:

  • Official FPL data and the Vaastav archive — identities, fixtures, points, price, ownership, transfers, expected statistics, and defensive contributions
  • Understat — player-level xG, xA, shot data, and team-level match statistics (xG, xGA, PPDA, deep completions)
  • Randdalf/fplcache — historical FPL bootstrap snapshots used only when captured before the relevant deadline

The sources provide structured records. The data was directly observable (actual match results, not survey responses or inferred values).

What mechanisms were used to collect the data?

Reproducible Python builders use reviewed source commits, parse the source records, and join them through versioned player and club identity maps. Every candidate writes source and output SHA-256 manifests. A pre-deadline snapshot is accepted only when it names the target gameweek, agrees with its deadline, and predates it.

Who was involved in the data collection process?

Collection and feature construction are automated. Player and club identity mappings receive evidence-based human review; no crowdworkers or subjective performance annotators were used.

Over what timeframe was the data collected?

Six Premier League seasons: 2020-21 through the completed 2025-26 season. The active 2026-27 season is not part of this published training frame yet. It will enter only through a reviewed mid-season or annual release.

Were any ethical review processes conducted?

No formal ethical review was conducted. The dataset uses only publicly available sports statistics from official APIs. No private or sensitive data is collected.

Were the individuals notified about or did they consent to the data collection?

The individuals are professional footballers whose performance statistics are published by the Premier League as part of their public-facing Fantasy Premier League game. The data is inherently public. No additional notification or consent was sought.

Preprocessing

Was any preprocessing/cleaning/labelling done?

Yes:

  1. Stable identity — joins use FPL's cross-season fpl_code, not the season-local element ID; 1,130 of 1,959 players changed element ID between seasons
  2. Club name normalisation — e.g., "Man City" to "Manchester City"
  3. Position mapping — FPL's "GKP" mapped to "GK"
  4. Deduplication — keyed on (season, fixture, fpl_code)
  5. Deadline anchoring — all fixtures in a gameweek use only information available when that gameweek locked
  6. Per-90 derivation — Understat stats normalised to per-90-minute rates
  7. Team season aggregates — rolling team-level averages from Understat match data
  8. Derived metrics — points_per_million, goals_vs_xG, assists_vs_xA

Was the raw data saved?

The exact processed release, source pins, mapping snapshots, and cryptographic manifests are published. Temporary raw downloads and candidate builds are not committed, but every rebuild records their hashes. Understat can revise history, so exact release verification and public-source reconstruction are intentionally separate checks.

Is the preprocessing software available?

Yes. All preprocessing code is included in the public Dastan repository, with a detailed data contract.

Uses

Has the dataset been used for any tasks already?

Yes. It trains and evaluates Dastan and its controlled baseline:

  • Dastan (v13) — a calibrated multibucket base with per-position direct-points blending and 286 deadline-safe features. Across 24 clean walk-forward gameweeks it averages 0.746 Spearman, 0.472 NDCG@10, and 0.918 MAE.
  • v12 feature-recipe baseline — retrained on the identical rows, folds, and seeds. It averages 0.721 Spearman, 0.466 NDCG@10, and 0.952 MAE.
  • External benchmarks — on identical eligible rows, Dastan's decision score is 0.6097 versus 0.5321 for FPL's official `ep_next`. A separate 18,173-row controlled test compares Dastan with OpenFPL.

Dastan's code, weights, data contract, and evaluation are included in the public repository with pre-trained weights and evaluation scripts.

What other tasks could the dataset be used for?

  • Player valuation modelling (predicting FPL price changes)
  • Starting XI prediction
  • Team strength estimation via Understat metrics
  • Fixture difficulty modelling
  • Academic benchmarking of time-series prediction methods

Are there tasks for which the dataset should not be used?

  • Gambling or betting — this dataset should not be used to build systems optimised for sports betting markets. See our Ethics page.
  • Real-world player evaluation — FPL points are an imperfect proxy for actual football performance.
  • Demographic inference — player names are included but should not be used to infer demographic attributes.

Distribution

How is the dataset distributed?

The main training frame is a 37 MB Parquet file in the public Dastan data release. Supporting pre-deadline snapshots, frozen mappings, trained weights, feature order, evaluation predictions, and manifests are distributed alongside it.

When was the dataset first distributed?

August 2026, with the public Dastan v13 release.

What licence is it distributed under?

MIT licence, including the repository's code, derived data, and weights.

Have any third parties imposed restrictions on the data?

The MIT licence covers SmartPlayFPL's repository and derived artefacts, not ownership of the underlying providers' source data. OpenFPL and the Vaastav archive are MIT; fplcache is Unlicense; FPL and Understat remain subject to their respective terms. The release is aggregated and transformed, not a raw-feed mirror.

Maintenance

Who is maintaining the dataset?

Qazybek Beken. Contact: [email protected].

Will the dataset be updated?

Yes, through explicit releases rather than silent in-place updates. The next planned cuts are after 2026-27 GW19 for a mid-season model and after GW38 for the annual rollover. The public season registry determines later windows without hard-coding a new season throughout the training code.

How is a new release accepted?

The maintained workflow is prepare → review → accept → train → evaluate → promote. Candidates stay outside the published data directory; mappings, source commits, row coverage, and every file hash are reviewed before training. Training refuses to start if an accepted input changes. The complete mid-season and annual checklist is in the public retraining runbook.

Can others extend or contribute to the dataset?

Yes. The repository includes public-source builders, mapping checks, release planning, isolated candidate training, and verification. Contributions can be submitted through the documented experiment and pull-request workflow.

Framework: Gebru, T., Morgenstern, J., Vecchione, B., Vaughan, J.W., Wallach, H., Daumé III, H., & Crawford, K. (2021). Datasheets for Datasets. Communications of the ACM, 64(12), 86–92.