Skip to main content

ratingmodels

Manual and experience rating, credibility blending, and rate indication with an audit trail.

CI PyPI Python

Overview

ratingmodels implements the pieces of a pricing exercise as small, inspectable objects: an experience rate with pooling and trend, a manual rate with factor application, credibility blending, a rate indication that decomposes exactly into its drivers, renewal capping, and rate build-up with a line-by-line audit trail.

It also covers the modeling side of pricing — GLM relativities, a frequency–severity model with prediction intervals, on-leveling, dislocation, and scenario evaluation — all against tidy inputs.

Installation

pip install ratingmodels

Requires Python 3.10 or newer.

Quick start

import ratingmodels as rm

# experience side: pool large claims, trend, and target loss ratio
capped, excess = rm.pool_claims([612_000, 340_000, 128_000, 96_500],
                                pooling_point=250_000)
exp = rm.ExperienceRate(
    incurred_claims=4_200_000, exposure=9_600,
    trend_annual=0.075, trend_years=1.5,
    pooled_excess=excess, pooling_charge=38.00,
    target_loss_ratio=0.85,
)

# manual side, then blend by limited-fluctuation credibility
man = rm.ManualRate(base_loss_cost=480,
                    factors={"area": 1.05, "industry": 0.97, "tier": 1.10},
                    target_loss_ratio=0.85)
z = rm.limited_fluctuation_credibility(n=9_600, n_full=12_000)

ind = rm.RateIndication(
    experience_loss_cost=exp.loss_cost(), manual_loss_cost=man.loss_cost(),
    credibility=z, current_rate=520, target_loss_ratio=0.85,
    trend_total_factor=exp.trend_factor(),
    benefit_factor=1.00, demographic_factor=1.01,
)
print(f"indicated rate   : {ind.indicated_rate():.2f}")
print(f"indicated change : {ind.indicated_rate_change():+.2%}")

# why did the rate move, and what does a 5% cap do to it?
print(ind.rate_change_decomposition().to_frame())
action = rm.renew(current_rate=520, indicated_rate=ind.indicated_rate(), cap=0.05)
print(f"proposed (capped): {action.proposed_rate:.2f} ({action.proposed_change:+.2%})")

What's inside

  • Experience ratingExperienceRate with pooling, trend, and target-loss-ratio gross-up.
  • Manual ratingManualRate with multiplicative factor application.
  • Credibility and blending — limited-fluctuation credibility and experience/manual blends.
  • IndicationRateIndication with an exact rate-change decomposition; renewal capping via renew.
  • Rate build-up — layered build-up with a line-by-line audit trail; base rates and retention by the off-balance method.
  • ModelingGLMRelativities, a frequency–severity model with prediction intervals, on-leveling, dislocation, scenarios, and evaluation utilities.

The full API reference and end-to-end worked examples live at openactuarial.org/ratingmodels.html.

The OpenActuarial ecosystem

ratingmodels is one of seven packages that share conventions — tidy tables, explicit distribution parameterizations, reproducible random-number handling — and compose across package seams:

Package Role
actuarialpy Calculation primitives the workflow packages build on
experiencestudies Experience reporting, actual-vs-expected, claimant and concentration analysis
projectionmodels Claim, premium, and expense projection over a renewal horizon
ratingmodels Manual and experience rating, credibility, indication, GLM relativities
lossmodels Severity and frequency fitting, aggregate loss distributions
extremeloss Extreme-value tails: POT/GPD, GEV, return levels, splicing
risksim Portfolio Monte Carlo, dependence, reinsurance contracts, risk measures

Install everything at once with pip install openactuarial.

Development

git clone https://github.com/OpenActuarial/ratingmodels
cd ratingmodels
python -m pip install -e ".[dev]"
pytest
ruff check src tests

CI runs the same gate on Python 3.10–3.14 across Linux and Windows.

Versioning and stability

All ecosystem packages are pre-1.0: minor releases may change APIs, and every release is documented in CHANGELOG.md. Current per-package API stability is tracked at openactuarial.org/stability.html.

License

MIT — see LICENSE.

Download files

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

Source Distribution

ratingmodels-0.9.2.tar.gz (135.6 kB view details)

Uploaded Source

Built Distribution

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

ratingmodels-0.9.2-py3-none-any.whl (86.9 kB view details)

Uploaded Python 3

File details

Details for the file ratingmodels-0.9.2.tar.gz.

File metadata

  • Download URL: ratingmodels-0.9.2.tar.gz
  • Upload date:
  • Size: 135.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ratingmodels-0.9.2.tar.gz
Algorithm Hash digest
SHA256 0e8b09a1ddc2f9aa01094f1bfc629996fbaec6ae907fe882e369c82b74f48f72
MD5 9bfb1fcebabea0917286cb7ed9516e0f
BLAKE2b-256 ecd5d4b1d7c9996b2263a1d748d76ccd3ffde714b9cd9bc79b38a37878e4149b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ratingmodels-0.9.2.tar.gz:

Publisher: release.yml on OpenActuarial/ratingmodels

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ratingmodels-0.9.2-py3-none-any.whl.

File metadata

  • Download URL: ratingmodels-0.9.2-py3-none-any.whl
  • Upload date:
  • Size: 86.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ratingmodels-0.9.2-py3-none-any.whl
Algorithm Hash digest
SHA256 21c901448be3184675d2f05470554b534ae2d5894a8a6641741a8c7d627736c4
MD5 24a668c9291947843f39d908ee2fac67
BLAKE2b-256 14d3054d56badf00f6f1aa7caf6be0ea0fde748896b7c08665a8049e323ac92b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ratingmodels-0.9.2-py3-none-any.whl:

Publisher: release.yml on OpenActuarial/ratingmodels

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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