Skip to content

Releases: OpenActuarial/projectionmodels

v0.8.2

Choose a tag to compare

@github-actions github-actions released this 13 Jul 14:07

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

Choose a tag to compare

@github-actions github-actions released this 13 Jul 01:45

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

Choose a tag to compare

@github-actions github-actions released this 12 Jul 19:35

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

Choose a tag to compare

@github-actions github-actions released this 12 Jul 14:42

[0.7.0] - 2026-07-11

Project from the canonical Experience (breaking).

  • Remove ClaimExperience; the projection pipeline consumes
    actuarialpy.Experience directly.
  • 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 bound dimensions,
    and the claim-type dimension is inferred as the grain column absent from
    the exposure frame (pass claim_type= when ambiguous).
  • Add base_rates(exp, ...) and prepare_experience(exp, ...) as public
    steps of the same pipeline; ClaimProjection is unchanged as the engine
    and ClaimProjection.from_experience is removed in favor of project.
  • 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 wide from_tables Experiences directly: the recorded
    pivot melts itself into the claim-type dimension, non-pivot expense columns
    are announced as excluded, and ambiguity asks for claim_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

Choose a tag to compare

@github-actions github-actions released this 11 Jul 19:16

[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); the claims/premium inputs 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 by active_fraction.
  • examples/expenses.py now 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

Choose a tag to compare

@github-actions github-actions released this 11 Jul 16:02

[0.6.4] - 2026-07-10

Changed

  • The actuarialpy dependency is now an open floor (>=0.41) instead of a
    capped range (>=0.41.0,<0.45.0). The cap made every actuarialpy minor
    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.