Skip to main content
This guide takes three accident years of synthetic collision experience to an indicated overall rate change. Every amount stays an exact Decimal from the paid losses to the indication.

Develop losses to ultimate

Build a triangle from one row per accident year and age. Ages are months of development, and values are cumulative paid losses and loss adjustment expenses (LAE):
factors averages each column of link ratios with one of the averages from Werner and Modlin’s development exhibits. volume divides the sum of later values by the sum of earlier values, and simple averages the ratios. medial averages them after excluding the highest and lowest, and geometric takes the nth root of their product. periods=3 keeps the latest three origins for each pair of ages. The last row is the tail factor from 36 months to ultimate. The factors table is your selection. To select a factor yourself, edit its factor cell in pandas. develop reads age and factor, and recalculates each cumulative factor:
unreported holds ultimate less latest: unpaid losses for a paid triangle, IBNR for a reported one.

Bring premium to current rates

Record each overall rate change by its effective date. on_level gives the parallelogram factor for each calendar year of earned premium, for annual policies written evenly through the year:
A date counts months as twelfths of a year, as in the textbook: 1 July is 0.5 and 1 April is 0.25, and a day within a month adds its share of that month. basis="written" gives policy-year factors: the average rate level of the policies written in each year. term_months sets another policy term. To rate each historical policy again at current rates, use Program.rate with the current program; that gives exact on-level premium policy by policy.

Fit a trend

Fit an annual exponential trend to quarterly average severity. Each period is a number of years, or a date:
trend.observations holds each quarter with its fitted value. For a selected trend, write Trend(D("0.04")). trend.factor(start, end) projects from one point in time to another.

Calculate the indication

Trend each year’s ultimate losses from its average accident date to the average accident date of the future policy period. Divide by on-level earned premium:
Give the expense and profit provisions as shares of premium:
The experience indicates a 3.34% increase: (loss_ratio + fixed_expense) / (1 - variable_expense - profit) - 1.

Weight the indication by credibility

Blend the indication with a complement, such as the trended change since the last review. credibility gives limited fluctuation credibility from a claim count, with 1,082 claims for full credibility:
860 claims give 89% credibility, and the credibility-weighted change is 3.31%. full_credibility(probability=..., tolerance=...) gives the standard for other choices. To spread the change across rating factors, fit relativities from experience.