Nori-30M is the ~29.2M-parameter variant of Nori, a tabular foundation model for regression via in-context learning (ICL). Given a few labeled rows as context, it predicts on new query rows in a single forward pass, with no task-specific training or fine-tuning. The model is trained entirely on synthetic data. Mean and median R² across 96 regression tasks from three public benchmark suites, on the same protocol as the base Nori: Stronger than the ~6M base on every suite. Evaluated with the bundled default inference config and the large-GPU protocol (up to 50k context rows per dataset). Paste this into Claude Code, Cursor, or any AI coding assistant and it will wire python from synthefynori…
Open-weight model · Tabular classification
xshot-occurrence-v1
by (Ministry of) Silly Kicks silly-kicks/xshot-occurrence-v1
xshot-occurrence-v1 is an open-weight model for tabular classification from (Ministry of) Silly Kicks, released under MIT License. Its published files total 1.3 MB.
XShotOccurrenceModel is a deterministic-XGBoost classifier estimating P(a shot is attempted by the in-possession team within ~1 s of a tracking frame) — the xS surface of the GKDV research arc (TF-16).
Model Card
By (Ministry of) Silly Kicks, published under mit, revision 87aee2d5172b.
XShotOccurrenceModel is a deterministic-XGBoost classifier estimating P(a shot is attempted by the in-possession team within ~1 s of a tracking frame) — the xS surface of the GKDV research arc (TF-16). Paper-faithful 27-feature extractor in goal-relative coordinates via the shared geometry helper: ball r/θ/z/speed, an openGoal goal-mouth obstruction term, GK distance/bearing, and the 5 nearest defenders + 5 nearest attackers. - Trained on 964,263 rows / 182,517 positives (18.9% positive rate) scextended is HF-only for licensing, not quality: it is trained on restricted owner-tier SkillCorner data that cannot be redistributed inside the PyPI wheel (ADR-038). Only learned parameters are…
Read (Ministry of) Silly Kicks's full model card
xShotOccurrence v1 (sc_extended) — Shot-Occurrence Propensity from Tracking State
Read this first. This repo serves the
sc_extended(owner-tier) variant. It is NOT bundled with thesilly-kickswheel because it is trained on restricted owner-tier data that cannot be redistributed inside a PyPI package — a licensing constraint. Only the learned parameters are published here. If you do not have owner-tier access, use the bundleddefaultvariant instead — see Which variant should I use?.
Model Description
XShotOccurrenceModel is a deterministic-XGBoost classifier estimating P(a shot is attempted by
the in-possession team within ~1 s of a tracking frame) — the xS surface of the GKDV research
arc (TF-16).
Paper-faithful 27-feature extractor in goal-relative coordinates via the shared _geometry
helper: ball r/θ/z/speed, an openGoal goal-mouth obstruction term, GK distance/bearing, and the 5
nearest defenders + 5 nearest attackers.
- Domain filter: alive-ball, attacking third
- Feature set:
faithful(velocity-bearing, 27 features) - Trained on 964,263 rows / 182,517 positives (18.9% positive rate)
Which variant should I use?
| Variant | Corpus | Where it lives | Use it? |
|---|---|---|---|
default (public) |
17 matches — SkillCorner + IDSSE, redistributable | bundled in the wheel | Default choice — offline, fully reproducible, no restricted data |
sc_extended |
115 matches — 7 IDSSE + 108 SkillCorner (incl. 98 owner-tier) | this repo (HF-only) | Yes, if you have owner-tier access and can accept a Hub download + the corpus caveats below |
sc_extended_position_only |
same 115-match corpus, velocity features dropped (26-feature) | separate repo silly-kicks/xshot-occurrence-position-only-v1 (HF-only) |
Yes, if scoring velocity-less frames (StatsBomb-360 freeze frames) with owner-tier access — a stronger position-only model than the bundled position_only. Reachable ONLY via from_variant("sc_extended_position_only"); asking for sc_extended still returns this faithful model (ADR-070). |
Why this variant is HF-only
sc_extended is HF-only for licensing, not quality: it is trained on restricted owner-tier
SkillCorner data that cannot be redistributed inside the PyPI wheel (ADR-038). Only learned
parameters are published here — no raw provider tracking data (only split thresholds, feature indices and leaf values are stored — no per-sample training data).
This artifact was produced by a two-provider (IDSSE + SkillCorner) single-candidate run: the
corpus is the owner-tier sc_extended tier, so there is no paired comparison against public
(that comparison governs the wheel bundle selection, not this archive; ADR-071). The bundled
default/public model remains the reproducible offline choice.
Held-out CV (5 folds, out-of-fold)
| Metric | Value | Baseline |
|---|---|---|
| PR-AUC | 0.5851 (± 0.0436) | base rate 0.1893 |
| Brier | 0.1131 | base-rate Brier 0.1534 |
| Log loss | 0.3671 | — |
All four acceptance gates pass (enough_usable_folds, pr_auc_gt_base_rate,
brier_lt_base_rate_brier, log_loss_lt_uniform). Estimates are CV, not the shipped fit.
training_commit: 1ce63ef.
TF-19 status: the shot arm has never been measured
Unlike its xCross sibling, this model carries no GK-substitution probe in metrics.json. That is
blocked, not missing: xs_substitution_probe consumes ghost-substituted targets from the GKDV
engine, and the registered xS probe has not been run against this arm. A TF-19 spec must not assume
the shot arm is healthy — it is unmeasured, not validated.
Usage
from silly_kicks.tracking import XShotOccurrenceModel
model = XShotOccurrenceModel.from_variant("default") # recommended, bundled, offline
model = XShotOccurrenceModel.from_variant("sc_extended") # this repo, downloads from the Hub
Requires pip install silly-kicks[xshot] and silly-kicks >= 4.74.0 (the sc_extended_position_only
sibling repo requires >= 4.94.0, which introduced its variant key — ADR-070).
The
>= 4.74.0floor is a hard requirement. These weights are on the corrected goal-relative transform (geometry_version: goal-relative-2); ADR-051 found the previous transform was chiral (an x-only mirror at one goal end, identity at the other), so one physical scene scored differently depending which end the attacking team attacked.load()'s feature-contract prong is fail-closed, so an older silly-kicks refuses these weights withIntegrityErrorrather than serve them against the geometry they were not fit on.from_hub()takes norevisionargument yet, so treat the library version as the pin; prior revisions are addressable by commit SHA in this repo's git history.
Integrity and load-time guards
load() is fail-closed on two independent checks: (1) SHA256SUMS verified before anything is
parsed; (2) chirality fingerprint (ADR-040) — the model re-runs its own outputs on a fixed
y-asymmetric probe frame and compares to the recorded fingerprint, raising on a mismatch and on a
missing one. A base_score guard handles the xgboost 3.x bracketed-string serialization that 2.x
silently drops to 0.5.
Limitations
- Not the bundled model (restricted corpus). This is a redistribution limit, not a performance one.
- No GK measurement exists for this arm at all — see the TF-19 section.
- Trained on 115 matches, heavily one-club — the 98 owner-tier additions are a single club, so club/style confounding is real and unquantified here.
- SkillCorner keepers are detected in only ~19.6% of frames (~80% interpolated), which is why GKDV measurement is registered to Gradient Sports frames only (ADR-038 §5).
- Estimates are cross-validated, not a held-out test of the shipped fit.
References
See the NOTICE file in the silly-kicks repository for full bibliographic citations.
- Attribution: arXiv:2512.00203.
- Decisions: ADR-011 (trained-model lifecycle), ADR-037 (TF-19 re-gate), ADR-038 (corpus + visibility), ADR-040 (chirality enforcement), ADR-070 (position-only Hub variant), ADR-071 (owner-tier archive).
Model Files
| 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() |
More Information
https://github.com/karsten-s-nielsen/silly-kicks
Wheel sibling (4.134.0)
In silly-kicks 4.134.0 the wheel's bundled default was re-fit on the corrected floor velocities (TF-65 / ADR-120, training_commit=a34e992). This Hub owner-tier artifact is unchanged this cycle: the velocity-gap re-fit touched only the wheel-bundled public variant; re-fitting this restricted sc_extended model on the corrected velocities is a tracked owner-run follow-up.
Identity and Version
- Repository
- silly-kicks/xshot-occurrence-v1
- Publisher
- (Ministry of) Silly Kicks
- Task
- Tabular classification
- Modality
- Tabular
- Library
- silly-kicks
- Parameters
- Not stated by the source
- Languages
- en
- Revision
- 87aee2d5172b7f841986c357e1cb26096acc115e
- First published
- 2026-08-26
- Last updated
- 2026-10-13
Files and Weights
6 files, 1.3 MB in total.
Every file
| File | Type | Size | SHA-256 |
|---|---|---|---|
| metadata.json | Configuration | 2.3 KB | — |
| metrics.json | Configuration | 1.2 KB | — |
| model.json | Configuration | 1.3 MB | — |
| README.md | Documentation | 7.4 KB | — |
| SHA256SUMS | Other | 157 B | — |
| .gitattributes | Repository | 1.5 KB | — |
License and Download
- License
- mit
- Access
- Open weights, no gate
Released by (Ministry of) Silly Kicks through its official repository on Hugging Face. Read the license.
Built From
- Described by arXiv:2512.00203
Questions About xshot-occurrence-v1
Can I use xshot-occurrence-v1 commercially?
Yes. xshot-occurrence-v1 is released under MIT License. The MIT License is a short permissive license. It permits commercial use, modification and redistribution, provided the copyright notice and permission notice are included.
Similar Models
Go to SAP-RPT Playground ↗ Note: This model and repository were formerly known as ConTextTab. While the code and repository have now been updated in line with the new name sap-rpt-1-oss, the model checkpoint and functionality remain identical. Implementation of the deep learning model with the inference pipeline described in the paper "ConTextTab: A Semantics-Aware Tabular In-Context Learner". Tabular in-context learning (ICL) has recently achieved state-of-the-art (SOTA) performance on several tabular prediction tasks. Previously restricted to classification problems on small tables, recent advances such as TabPFN and TabICL have extended its use to larger datasets. While being…
Nori is a tabular foundation model for regression via in-context learning (ICL). Given a few labeled rows as context, it predicts on new query rows in a single forward pass, with no task-specific training or fine-tuning. The model is trained entirely on synthetic data. Mean and median R² of the base model across 96 regression tasks from three public benchmark suites (single H200, up to 50K context rows per dataset): Large-N / long-context tables (common in TabArena) are the current focus of the large-table training stages. These numbers are reproducible end-to-end with one command — see Reproducing these numbers. Paste this into Claude Code, Cursor, or any AI coding assistant and it will…
EXAONE Tabular is a transformer-based foundation model for tabular data that solves classification and regression through in-context learning: you pass the labeled rows to fit and the model predicts new rows in a single forward pass — no gradient updates and no per-dataset training. This repository is the exaonetabular inference runtime — a self-contained package that loads a released checkpoint and serves predictions through a small, scikit-learn-style API. The code here is permissively licensed; the released weights are non-commercial — see Both checkpoints are released: EXAONETabularClassifier and EXAONETabularRegressor each fetch their own weights with a single frompretrained() call.…
TabPFN is a transformer-based foundation model for tabular data that leverages prior-data based learning to achieve strong performance on small tabular datasets without requiring task-specific training. For detailed usage examples and best practices, check out: - Python ≥ 3.9 - PyTorch ≥ 2.1 - scikit-learn ≥ 1.0 This repository hosts the production TabPFN-v2 base checkpoints. Files matching the pattern tabpfn-v2-classifier-finetuned-.ckpt are content-identical aliases of the corresponding base checkpoints (e.g. tabpfn-v2-classifier-finetuned-gn2p4bpt-xp6f0iqb.ckpt is identical to tabpfn-v2-classifier-gn2p4bpt.ckpt; tabpfn-v2-classifier-finetuned-zk73skhh.ckpt is identical to…
TabFM is a zero-shot tabular foundation model from Google Research. It supports classification and regression on structured/tabular data with mixed numerical and categorical columns, requiring no fine-tuning or hyperparameter search - training examples are passed as context and predictions are made in a single forward pass. This repository contains the PyTorch weights. For the JAX/Flax weights see You can also load directly using the HuggingFace Hub API: Developed by the Google Research team. - Tabular data with numerical and/or categorical columns - Binary and multiclass classification (up to 10 classes) TabFM uses alternating row and column attention to capture both feature interactions…
