Releases: OpenActuarial/projectionmodels
Releases · OpenActuarial/projectionmodels
Release list
v0.8.2
0.8.1
Compatibility patch; no library-code changes.
- Cap the actuarialpy requirement at the next minor:
>=0.46,<0.47. - Declare Python 3.14 support in the classifiers.
- Fix one test fixture that used
freq="ME"(pandas>=2.2 only) to literal
month-end dates, so the suite runs at the declared pandas floor. Found by
the new minimum-dependency CI job.
v0.8.1
0.8.1
Compatibility patch; no library-code changes.
- Cap the actuarialpy requirement at the next minor:
>=0.46,<0.47. - Declare Python 3.14 support in the classifiers.
- Fix one test fixture that used
freq="ME"(pandas>=2.2 only) to literal
month-end dates, so the suite runs at the declared pandas floor. Found by
the new minimum-dependency CI job.
v0.8.0
0.8.0
project() accepts an ExperienceSet (routes to tab). Test fixtures
updated for the Measures -> Source rename in actuarialpy 0.46.
v0.7.0
[0.7.0] - 2026-07-11
Project from the canonical Experience (breaking).
- Remove
ClaimExperience; the projection pipeline consumes
actuarialpy.Experiencedirectly. - Add
project(exp, ...): the single projection entrypoint. Named parameters
are the pipeline phases (completion, seasonality, trend, credibility,
complement); record grain defaults to the Experience's bounddimensions,
and the claim-type dimension is inferred as the grain column absent from
the exposure frame (passclaim_type=when ambiguous). - Add
base_rates(exp, ...)andprepare_experience(exp, ...)as public
steps of the same pipeline;ClaimProjectionis unchanged as the engine
andClaimProjection.from_experienceis removed in favor ofproject. - Requires
actuarialpy>=0.45. project()coerces raw assumption values (scalar trend and credibility,
Series/mapping completion and seasonality) into assumption objects, and
resolves the exposure frame's column from the bound exposure role name.project()consumes widefrom_tablesExperiences directly: the recorded
pivot melts itself into the claim-type dimension, non-pivot expense columns
are announced as excluded, and ambiguity asks forclaim_type=.seasonality="estimate"fits factors from the bound history via
estimate_seasonality;completion="estimate"explains what development
columns estimation needs instead of guessing.
v0.6.5
[0.6.5] - 2026-07-11
Changed
ExpenseProjection's docstring now states three behaviours that were
always true but only discoverable by reading the validation code:trend
may be keyed by expense type (a zero-trend type is a contractually flat
fee); theclaims/premiuminputs are keyed value streams, so a
percentage of a claims subset or of another expense run's output is the
same mechanism fed a different table; and percentage bases are not
re-prorated byactive_fraction.examples/expenses.pynow exercises the keyed expense trend: a
contractually flat per-exposure network fee projects at its base value
while its neighbours trend, and the percent bases hold level.
Added
- Regression test pinning the projectionmodels segments of docs Example 10
(worked-example-contract.md): contract-year loss costs, the
premium-independent dollar-expense levels (flat fee, trended fee,
percent-of-claims surcharge), and both contract pins booking to their
ratio given the page's solved rates.
v0.6.4
[0.6.4] - 2026-07-10
Changed
- The
actuarialpydependency is now an open floor (>=0.41) instead of a
capped range (>=0.41.0,<0.45.0). The cap made everyactuarialpyminor
release a resolver conflict until a coordinated re-release here; the
ecosystem policy is now open floors, with the nightly ecosystem smoke
workflow catching runtime drift. CI keeps a pinned lane at the 0.41.0
floor edge.