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.8.0.tar.gz (131.8 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.8.0-py3-none-any.whl (85.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for ratingmodels-0.8.0.tar.gz
Algorithm Hash digest
SHA256 38181eff58f5b5596c28f8bbf151ad13362a99a0c18202a142463c21091179a4
MD5 e8ac2250ff73b01324f6ec281aa2f4f6
BLAKE2b-256 2d9eff5ed15bf3027a331de4cb0f1a79841f0e89ff117e0132aa8e75dc8c663f

See more details on using hashes here.

Provenance

The following attestation bundles were made for ratingmodels-0.8.0.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.8.0-py3-none-any.whl.

File metadata

  • Download URL: ratingmodels-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 85.4 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.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ff1245ec9111672cdae2618c9e51d0cd37206987d5b8ef4f38ffb18e750441a6
MD5 2a5235173dabed08d8ccdd8dd0aca8e8
BLAKE2b-256 b61f2c8541c82ea0698355674cf22a47b6083d97cf71265a6079ba772356f893

See more details on using hashes here.

Provenance

The following attestation bundles were made for ratingmodels-0.8.0-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