FinTFM β€” binary classification checkpoint

PyPI Code Findings Claims License

An in-context tabular classifier for corporate credit risk, pretrained only on synthetic data. Predictions are a single forward pass with your table supplied as context: no gradient steps at fit time, no per-dataset tuning.

Code, measurement log and claims ledger: github.com/kabartay/fintfm β€” every number quoted below is traceable to a numbered entry there stating how it was produced.

What this checkpoint is

parameters 885,650
architecture d_cell=48, d_model=128, n_layers=4, n_col_layers=2, d_ff=512, two-way cell attention (n_cell_blocks=1, per-cell labels)
capacity binary only, up to 136 features
training 6,000 steps Γ— batch 8 = 48,000 synthetic tasks, financial prior only
training data synthetic; no real table was seen during pretraining

This is the checkpoint on which every published binary number in the repository was measured, so results quoted there are reproducible against this file rather than a variant of it.

Performance, stated honestly

On TabArena, 27 binary datasets, against 94 other methods:

mean ROC-AUC 0.7823
rank 93 of 95

On real corporate-default panels, calibration is consistently among the best measured and discrimination consistently loses to tuned gradient boosting β€” both, on every panel tried.

FinTFM is not a competitive general tabular model and it is not presented as one. It is published so that the numbers in the repository can be checked, and because a provenance claim nobody can verify is a slogan.

Usage

pip install fintfm
from huggingface_hub import hf_hub_download
from fintfm.inference import FinancialTFMClassifier

ckpt = hf_hub_download(
    "kabartay/fintfm-binary",
    "v4-cellattn-labels.pt",
    # Pin the commit. Weights behind a published number should not move underneath it.
    revision="f116bfd43a2b15c65ed3551ea8c38e3364629ddc",
)
clf = FinancialTFMClassifier(ckpt, device="cpu")
clf.fit(X_train, y_train)          # stores the table as context; no training happens
proba = clf.predict_proba(X_test)[:, 1]

The package is on PyPI as fintfm, Apache-2.0, Python 3.12+.

Categorical columns must be encoded before they reach the model β€” it reads every cell as an ordered scalar, and label encoding is measurably worse than no order at all. Use fintfm.inference.categorical.CategoricalTargetEncoder, which is out-of-fold on the context rows for reasons that are not optional.

Limitations

  • Binary only, ≀136 features. A task exceeding either raises rather than being silently truncated.
  • Slow at inference: median ~8.6 s per 1,000 rows, against a field norm near 0.1.
  • Loses to tuned gradient boosting on discrimination, everywhere it has been measured.
  • The multiclass and regression variants exist in the codebase, were scored on real data, and rank last β€” they are deliberately not published.

Licence

Apache-2.0, the same as the code β€” chosen deliberately rather than inherited. A weights licence is a separate question from a code licence, and four of the ten peer projects surveyed in the repository ship permissive code with non-commercial weights; one restricts commercial use of the model's output. This checkpoint has no such restriction: commercial use is permitted, subject to Apache-2.0's attribution and notice terms.

Citing

The repository carries a CITATION.cff; GitHub's "Cite this repository" button renders BibTeX and APA from it. Cite the repository for the method or any finding, and this checkpoint when the specific weights matter to what you report β€” they are different artifacts and a reader can only check the one you name.

Author: Mukharbek Organokov (ORCID 0000-0002-3093-3456).

Provenance

No code, weights, or training data from TabPFN, TabICL, TabDPT, LimiX, Nori, MITRA, or any other tabular foundation model was used. The prior that generated this checkpoint's training data is in the repository (src/fintfm/prior/) and can be inspected and re-run.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support