Downloads · 30 days
0
silly-kicks/xshot-occurrence-position-only-v1
xshot-occurrence-position-only-v1 is a tabular classification model from silly-kicks. Use it for the tabular classification task on the model card, and read the license before you ship it in a product. It is set up for silly-kicks. The card lists the license as mit.
Read this first. This repo serves the scextendedpositiononly (owner-tier, position-only) variant — the owner-tier xShot model with velocity features dropped, for scoring velocity-less snapshots such as StatsBomb-360 f…
Downloads · 30 days
0
Access
Public
Updated Oct 18, 2026
Repo size
—
Likes
0
Public
Click a slice to open those files.
.json1.7 MB · 100%
From the Hugging Face model README
sc_extended_position_only) — Shot Propensity for Velocity-less FramesRead this first. This repo serves the
sc_extended_position_only(owner-tier, position-only) variant — the owner-tier xShot model with velocity features dropped, for scoring velocity-less snapshots such as StatsBomb-360 freeze-frames. It is NOT bundled with the wheel (restricted owner-tier training data — a licensing constraint). If you do not have owner-tier access, use the bundledposition_onlyvariant. Reachable ONLY viafrom_variant("sc_extended_position_only"); asking forsc_extendedreturns the faithful (velocity-bearing) model (ADR-070).
XShotOccurrenceModel (position-only) estimates P(a shot is attempted by the in-possession team
within ~1 s of a tracking frame) using position-only features — the 5 velocity-derived features
are dropped (not NaN-filled), so the model scores frames that carry no per-player velocity at all
(e.g. a single freeze-frame).
position_only), goal-relative coordinates via the shared _geometry helpersc_extended variantRe-fit 2026-10-18 (ADR-126 + ADR-120). The prior artifact (
1ce63ef, 18.9%, PR-AUC 0.528) was defective — a bypassedtype_nameguard counted any action as a shot. Re-fit on the correctedtype_idlabel (1.34%) + corrected velocities; PR-AUC 0.528 → 0.115 because the old number measured the wrong label.
position_only| Variant | Corpus | Where it lives | Use it? |
|---|---|---|---|
position_only (bundled) | public corpus | bundled in the wheel | Default for velocity-less frames without owner-tier access |
sc_extended_position_only | 115 matches — 7 IDSSE + 108 SkillCorner (incl. 98 owner-tier) | this repo (HF-only) | A stronger velocity-less model, if you have owner-tier access and can accept a Hub download |
Use this when your frames genuinely lack velocity. For velocity-bearing tracking, prefer the faithful
sc_extended model (silly-kicks/xshot-occurrence-v1) — velocity features carry real signal.
HF-only for licensing, not quality: trained on restricted owner-tier SkillCorner data that
cannot be redistributed in the wheel (ADR-038). Only learned parameters are published — no raw
provider tracking data. Produced by a two-provider (IDSSE + SkillCorner) single-candidate run; the corpus is the
owner-tier tier. training_commit: 4095251.
| Metric | Value | Baseline |
|---|---|---|
| PR-AUC | 0.1146 (± 0.0063) | base rate 0.0134 |
| Brier | 0.01240 | base-rate Brier 0.01318 |
| Log loss | 0.0555 | — |
All four acceptance gates pass. Estimates are CV, not the shipped fit. As expected, dropping velocity costs some discrimination vs the faithful model (PR-AUC 0.124 → 0.115) — the trade is that this model runs at all on velocity-less frames.
from silly_kicks.tracking import XShotOccurrenceModel
model = XShotOccurrenceModel.from_variant("sc_extended_position_only") # this repo, Hub download
Requires pip install silly-kicks[xshot] and silly-kicks >= 4.94.0 (the release that introduced
this variant key — ADR-070). The >= 4.74.0 geometry floor (goal-relative-2) also applies; load()
is fail-closed on the feature contract + chirality fingerprint (ADR-040). from_hub() takes no
revision argument yet — treat the library version as the pin.
load() is fail-closed on SHA256SUMS and the chirality fingerprint (ADR-040), plus a
base_score guard for xgboost 3.x serialization. The position-only feature contract raises on a
non-finite (NaN-filled) velocity feature — this model expects those columns absent, not imputed.
sc_extended by construction (velocity dropped) — use only when frames
lack velocity.See the NOTICE file in the silly-kicks repository for full bibliographic citations.
| File | Purpose |
|---|---|
model.json | XGBoost booster (pickle-free) |
metadata.json | features, hyperparameters, chirality fingerprint, provenance |
metrics.json | CV metrics and acceptance record |
SHA256SUMS | integrity manifest, verified by load() |
https://github.com/karsten-s-nielsen/silly-kicks
In silly-kicks 4.138.0 the wheel's bundled position_only was re-fit on the corrected type_id shot label (ADR-126, training_commit=4095251). This Hub owner-tier sc_extended_position_only artifact is re-fit this cycle as well — the same type_id label fix (18.9% → 1.34% positive rate) plus the ADR-120 floor-velocity correction. The re-fit weights are pushed by the ADR-088 model-publish step; that re-publish is the point at which the Hub artifact state changes.