Atelier
Browser-based GLM workbench for actuarial pricing
Build, fit, diagnose, and iterate on Generalized Linear Models - without leaving your browser.
Why Atelier?
Traditional actuarial pricing tools like Emblem are expensive, opaque, and tied to legacy platforms. Atelier is a modern, open-source alternative that wraps rustystats - a high-performance Rust-backed GLM engine - in a clean, interactive UI. It runs locally, stores everything on your machine, and follows the same explore-build-fit-iterate workflow actuaries already know.
Installation
uv add atel
# or
pip install atel
Installs everything - backend, frontend, engine. No separate build steps.
Quick start
atel # starts server, opens browser
atel --port 9000 # custom port
atel --no-browser # start server only
The atelier command works too - atel is just shorter.
How it works
Workflow
Atelier follows the standard actuarial modelling workflow:
- Upload - drag-and-drop a CSV or Parquet file, column types are auto-detected
- Configure - select the response variable, GLM family, link function, offset, weights, and train/test split
- Explore - pre-fit analysis runs automatically: response distribution, score tests ranking every candidate factor by expected deviance contribution, and a null (intercept-only) baseline model
- Build - add terms from the factor sidebar: right-click any factor to choose categorical, linear, spline, target encoding, or other term types
- Fit - hit fit, review the results: coefficient table, A/E charts, lift, calibration, VIF, and model diagnostics
- Iterate - modify terms and re-fit. Every fit is auto-versioned so you can compare metrics across iterations and restore any previous version
Architecture
┌─────────────────────────────────────────────┐
│ Browser (React 19 + Tailwind + shadcn/ui) │
└──────────────────┬──────────────────────────┘
│ HTTP/JSON
┌──────────────────▼──────────────────────────┐
│ FastAPI backend │
│ ├── /api/datasets upload, validate │
│ ├── /api/explore EDA + null model │
│ ├── /api/fit GLM fitting │
│ ├── /api/models save, history, restore │
│ └── /api/projects project CRUD │
├──────────────────────────────────────────────┤
│ rustystats Rust GLM engine │
├──────────────────────────────────────────────┤
│ SQLite (async) projects, models, specs │
└──────────────────────────────────────────────┘
All data stays local at ~/.atelier/ - the database, uploaded datasets, and serialized models.
Features
Model building
- 8 GLM families - Gaussian, Poisson, Binomial, Gamma, Tweedie, Quasi-Poisson, Quasi-Binomial, Negative Binomial
- Rich term types - categorical, linear, B-splines, natural splines, target encoding, frequency encoding, expressions
- Monotonic constraints - enforce increasing/decreasing effects on splines and linear terms
- Interactions - standard product terms, target-encoded interactions, frequency-encoded interactions
- Regularization - Ridge, Lasso, Elastic Net with cross-validated alpha selection
- Train/test split - holdout validation with stratified splitting
Diagnostics
- Factor-level A/E - actual vs expected charts for every factor, fitted or not
- Score tests - chi-squared significance for candidate factors before fitting
- Lift charts - Gini, AUC, KS statistics with decile breakdown
- Calibration - Hosmer-Lemeshow test, decile calibration with confidence intervals
- Residual analysis - deviance, Pearson, and working residuals
- VIF & multicollinearity - variance inflation factors with severity coloring
- Model comparison - side-by-side train/test metrics against a base model
Data exploration
- Pre-fit analysis - response distribution, zero inflation, overdispersion detection
- Correlation matrix - numeric correlations and Cramer's V for categoricals
- Interaction detection - greedy residual-based search for potential interactions
Version control
- Auto-versioning - every fit is saved as a new version with full spec, coefficients, and diagnostics
- Change tracking - history panel shows terms added, removed, or modified between versions
- Restore - click any version to restore its terms and results, then continue iterating
License
Release files for atel 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| atel-0.2.3.tar.gz | 684.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| atel-0.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 981.0 kB
Release files / atel-0.2.3.tar.gz
| Download URL | atel-0.2.3.tar.gz |
|---|---|
| Size | 684.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
642c5cb9b6af1f9e17f2d9273e12d02c60b28e69e7b9771284883fbf7098b0c0
|
|
BLAKE2b-256 checksum How to use checksums |
5b223bb336590618b55491ad525def7568e0d96e21c32162b4b4d9f1eb0edab7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / atel-0.2.3-py3-none-any.whl
| Download URL | atel-0.2.3-py3-none-any.whl |
|---|---|
| Size | 296.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d1a67e60af363efc0c7fffc337d97ff143340f7b528ae1fcb2d1e6660a1fdcd1
|
|
BLAKE2b-256 checksum How to use checksums |
d615b65f1bcd6aa0ec5eb61059a072ceaba8d0d03ed39a5346d0d6b66dfda175
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|