Skip to main content

Browser-based GLM workbench for actuarial pricing

Project description

Atelier

Browser-based GLM workbench for actuarial pricing

Build, fit, diagnose, and iterate on Generalized Linear Models - without leaving your browser.

Python 3.13+ License: EPL-2.0 Powered by rustystats

Atelier Screenshot


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:

  1. Upload - drag-and-drop a CSV or Parquet file, column types are auto-detected
  2. Configure - select the response variable, GLM family, link function, offset, weights, and train/test split
  3. 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
  4. Build - add terms from the factor sidebar: right-click any factor to choose categorical, linear, spline, target encoding, or other term types
  5. Fit - hit fit, review the results: coefficient table, A/E charts, lift, calibration, VIF, and model diagnostics
  6. 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

Eclipse Public License 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

atel-0.2.1.tar.gz (683.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

atel-0.2.1-py3-none-any.whl (296.7 kB view details)

Uploaded Python 3

File details

Details for the file atel-0.2.1.tar.gz.

File metadata

  • Download URL: atel-0.2.1.tar.gz
  • Upload date:
  • Size: 683.7 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for atel-0.2.1.tar.gz
Algorithm Hash digest
SHA256 c0f33e14a53e1e3ae4ecaf7d779539aa6928dcd32e49bd7d7447c20597bde511
MD5 17d6a981cad0ee231350c21b0041d33f
BLAKE2b-256 064fbf51f4bb468f001ba50dceb10d016b87a8d3666fd6533cd3a86fd111b121

See more details on using hashes here.

File details

Details for the file atel-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: atel-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 296.7 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for atel-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bca1ceed60ed9cfe570f2d145ed9e04b8556e9137eda4adc419b649d623e30e8
MD5 b43f330c8efb3ff6c55eb08e7c2f2701
BLAKE2b-256 5410f59b80bd3a12b27fe8da318bddd6f5ef24534aa3d5eba6b1225e3a911dbc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page