Premium · Regional insurer, 12 territories, accident years 2021 to 2025
Personal Auto Claims and Reserves
An insurer's book with its ultimate truth
357,438 rows in 6 linked tables: 240,000 policy terms, 24,106 claims and 93,298 claim transactions for a regional personal auto insurer, from the rating of each term through every reserve, payment and recovery on its claims, cut at the close of 31 December 2025. Beside it, the number no insurer has on that day: what each accident year will finally cost once the last injury claim settles.
Reserving actuaries estimate IBNR with the chain ladder and learn how good the estimate was years later. Here the answer is in the box, split into claims not yet reported and development on claims already open. The premium side is complete too: every term is rated by a filed plan (territory, driver, vehicle, limits, deductible, tenure and two rate changes), so loss ratios, on-level premium and the segments the plan prices wrong can all be worked out from the rows.
Uses
What it is built for
Loss reserving
build paid and incurred triangles from the transaction log, estimate IBNR with the chain ladder or Bornhuetter-Ferguson, and score the estimate against
ultimate_truth, accident year by accident year.Ratemaking
earned premium and car-years, frequency and severity by coverage, severity trend, on-level premium from the rate changes, and loss ratios by rating variable to find where the plan undercharges.
Catastrophe analysis
a hail storm in May 2024, its claims by territory and what it does to the accident year.
Claims analytics
report lag, settlement time, litigation, reserve adequacy over a claim's life, reopenings, salvage and subrogation.
Teaching and demos
a CAS or actuarial science course, an insurance analytics portfolio, a reserving tool or a claims dashboard demo, with no policyholder data anywhere.
Project kit
A portfolio project you can check yourself
A brief from the Chief Actuary of a regional personal auto insurer, 18 questions from warm-up to stretch, and an answer key to grade against. Every answer was worked out twice on these files, in DuckDB SQL and separately in pandas, and the kit was written only when the two agreed.
The brief
Year-end 2025 reserve review and the 2026 rate filing
From the Chief Actuary of a regional personal auto insurer · policies from 2020, accident years 2021 to 2025, as at 31 December 2025
- BRIEF.mdthe request, from the Chief Actuary of a regional personal auto insurer
- QUESTIONS.md18 questions, each asking for one value in a stated form
- load.sqlevery table into DuckDB with the right types
- check.pygrades your answers, names the misreading a wrong one matches
- solutions/the answer key and the SQL behind every answer
- WRITEUP_TEMPLATE.mdthe two pages a hiring manager reads
What the checker says
$ python kit/check.py kit/my_answers.csv
Q05 wrong that is the answer when you take the premium written in 2025 instead of what was earnedA wrong answer is named for the mistake it matches, such as the wrong rows in a denominator or a mean where a median is asked, without giving the answer away. --reveal shows one answer and its SQL when you want it.
- Warm-up
- 4
- Core
- 8
- Stretch
- 6
Read all 18 questions
Warm-up
- Q01. Terms written. How many policy terms were written (took effect) in 2025?
- Q02. Claims reported for 2025. How many claims with an accident in 2025 had been reported by the cut?
- Q03. Written premium. How much premium was written on terms that took effect in 2025, in dollars?
- Q04. Open claims. How many claims were open at the cut?
Core
- Q05. Earned premium. How much premium did the book earn in calendar 2025, in dollars? Earn each term's premium net of any return premium evenly by day from its start to its cancellation or expiry.
- Q06. Earned car-years. How many car-years did the book earn in calendar 2025 (days in force in 2025, over 365)?
- Q07. Collision frequency. For accident year 2023, how many collision claims were there per 100 car-years earned by policies with physical damage cover (full coverage)?
- Q08. Injury severity. What was the average paid on bodily injury claims from accident year 2022 that had closed with a payment by the cut?
- Q09. The storm. On which date did the most comprehensive claims happen? Give it as YYYY-MM-DD.
- Q10. Reported loss ratio, 2024. What was accident year 2024's reported loss ratio at the cut: incurred (paid, less recoveries, plus case reserves) on 2024 accidents over premium earned in 2024?
- Q11. Injury report lag. What is the median number of days from accident to report for bodily injury claims?
- Q12. Recoveries on collision. For accident year 2023 collision claims, what share of the amount paid came back as salvage and subrogation by the cut?
Stretch
- Q13. Paid development, first year. From the transaction log, build the paid triangle (net of recoveries) by accident year and calendar year of payment. What is the volume-weighted development factor from 12 to 24 months, over accident years 2021 to 2024?
- Q14. Chain-ladder IBNR. Build the incurred triangle (paid net of recoveries plus case reserves, at each year end) by accident year 2021 to 2025. Using volume-weighted factors and a tail factor of 1, what IBNR does the chain ladder estimate at the cut, in dollars?
- Q15. True IBNR. On the ultimate truth, how much more will bodily injury claims from 2021 to 2025 accidents cost than the incurred booked on them at the cut, in dollars?
- Q16. How far off the reserve is. By how much does the chain-ladder IBNR differ from the true IBNR, as a percentage of the truth (negative when too low)?
- Q17. On-level factor. Bring calendar 2023 earned premium to the current rate level: re-rate each term's earned premium from its own rate level (from rate_changes, by its effective date) to the level after every change. What is the ratio of on-level to actual 2023 earned premium?
- Q18. The undercharged drivers. On accident years 2021 to 2023, which driver age band has the highest reported loss ratio at the cut (incurred over premium earned in those years)?
In the data
What the full files show
Computed from every row of the full dataset when it was packaged, not drawn as a target. The free preview is a slice of the same data.
Paid by the cut as a share of the ultimate loss
- Injury claims
- Damage claims
Ultimate loss ratio by accident year
- 202166.3%
- 202271%
- 202370.8%
- 202493.1%
- 202577.8%
Animal strikes and weather claims by month of accident
- Animal strikes
- Weather
Loss ratio by insurance score tier, accident years 2021 to 2023
- A60.6%
- B67.2%
- C72.1%
- D80.5%
Answer key
The truth, in its own columns
What a model, a control chart or an analyst is trying to find ships next to the data, so you can score an answer instead of guessing at it. Each line is measured from the full files.
- ultimate_truth.ibnr_trueWhat each accident year and coverage will still cost beyond the incurred booked at the cut: the reserve's answer.-528,776 to 3.53M, mean 226,695
- ultimate_truth.ultimate_on_claims_not_reportedThe part of it on claims not yet reported at the cut, IBNR proper.0 to 1.82M, mean 124,365
- ultimate_truth.development_on_reportedThe rest: how claims already reported will develop, up for injuries, down for damage as recoveries arrive.-631,408 to 1.71M, mean 102,330
- ultimate_truth.ultimate_lossWhat the accident year and coverage finally cost, net of salvage and subrogation.945,488 to 11.4M, mean 6.71M
- policies.true_frequency_indexHow often the policy really claims against the book's average, beside the premium the plan charged it.0.034 to 17.17, mean 1
- claims.catastrophe_codeThe hail storm's code on each claim it caused.1 values: CAT-2405, 96.3% empty
How it behaves
Measured on the files you download
Each of these is computed from the delivered rows when the dataset is packaged, not written as a target.
- About 38,000 cars insured at any time; an annual term costs $929 on average. 79% of terms carry physical damage cover, and 8% are cancelled before they expire.
- Rate changes filed: +4.0% from 1 January 2023, +7.5% from 1 July 2024. Severity rises faster than the rates.
- The May 2024 hail storm brought 905 claims in the hail-belt territories, $5.4 million incurred and 17% of the accident year's.
- About 1,100 claims were open at the cut, 59% of them injuries. Accident year 2025 was 89% reported in dollars at the cut.
- Injury reserves develop up: the first reserve is set before treatment is known. Damage reserves develop down: salvage and subrogation, 12% of physical damage paid, arrive after a claim closes.
Audit
67 of 67 checks pass
Re-run on the delivered files by an independent script with plain pandas. The results ship in INTEGRITY.json.
- every key resolves and every primary key is unique;
- every premium recomputed from the filed rating plan: territory, driver, vehicle, injury limit, deductible, tenure and the rate level in force on the term's effective date; every term a year long, cancellations inside their term with the unearned premium returned pro rata;
- every claim inside its policy's term and on a coverage the policy carries; hail claims only in the hail belt, on the storm's day; injury payments inside the limit and damage inside the vehicle's value;
- the transaction log adds up: the case reserve after each transaction is the running sum, never negative, a payment takes exactly its amount off the reserve, a closed claim holds none, recoveries come only after close and only where they can (salvage on total losses, subrogation on collisions the other driver caused), and each claim's paid, recoveries, reserve and status at the cut equal its transactions;
- nothing is dated after the cut; the ultimate truth's reported column equals the files, accident year by coverage, and its unreported claims are mostly 2025 accidents.
All 67 checks
- ✓ territories.territory_id unique
- ✓ policies.policy_id unique
- ✓ claims.claim_id unique
- ✓ claim_transactions.transaction_id unique
- ✓ policies.territory_id -> territories: 0 orphans of 240,000
- ✓ claims.policy_id -> policies: 0 orphans of 24,106
- ✓ claims.territory_id -> territories: 0 orphans of 24,106
- ✓ claim_transactions.claim_id -> claims: 0 orphans of 93,298
- ✓ policies.policy_number unique
- ✓ claims.claim_number unique
- ✓ territories.territory_code unique
- ✓ territories.territory_name unique
- ✓ every claim has its transactions, opened first
- ✓ twelve territories, three in the hail zone
- ✓ rate changes: +4.0% from 1 January 2023, +7.5% from 1 July 2024
- ✓ the book is spread over territories as their population weights say
- ✓ written premium is the filed plan's rate at the level in force when the term was written: largest gap 0.0100
- ✓ terms are a year long
- ✓ terms written from 2020 to the cut
- ✓ a deductible exactly when there is physical damage cover
- ✓ older cars carry liability only more often
- ✓ age within its band
- ✓ new business is a tenure of zero
- ✓ a cancellation date and reason exactly on cancelled terms, inside the term and by the cut
- ✓ return premium is the unearned months of the written premium
- ✓ the true frequency index averages one over the book
- ✓ claim territory is its policy's
- ✓ every accident inside its policy's term, in 2021 to the cut
- ✓ collision and comprehensive claims only on policies with physical damage cover
- ✓ reported on or after the accident, by the cut
- ✓ report lag is the days from accident to report
- ✓ liability claims are the insured's fault; comprehensive never is
- ✓ only injury claims are litigated
- ✓ total losses only on collision and comprehensive
- ✓ deductible is the policy's on physical damage, none on liability
- ✓ hail claims are comprehensive, on 14 May 2024, in the hail zone, coded CAT-2405
- ✓ a cause of loss that fits the coverage
- ✓ no injury claim pays past the policy's per-person limit
- ✓ no physical damage claim pays more than the car was worth
- ✓ nothing is dated after the cut
- ✓ no transaction before the claim was reported
- ✓ case reserve after each transaction is the running sum of reserve changes: largest gap 0.0000
- ✓ a case reserve is never negative
- ✓ payments are positive, recoveries negative, other entries carry no money
- ✓ a payment draws the reserve down by exactly the payment
- ✓ a closed claim holds no reserve
- ✓ salvage only on total losses; subrogation only on collision claims the insured did not cause
- ✓ recoveries come after the claim closed
- ✓ a reopened claim had closed first
- ✓ paid, recovered and case reserve on each claim are its transactions'
- ✓ incurred is paid less recovered plus the case reserve
- ✓ open or closed at the cut as the log says, with a closing date when closed
- ✓ an open claim holds a reserve
- ✓ ultimate truth covers accident years 2021 to 2025 for every coverage
- ✓ claims reported at the cut are the claims in the files
- ✓ paid at the cut, net of recoveries, is the files'
- ✓ case reserves at the cut are the files'
- ✓ reported incurred is paid plus case reserves, and IBNR is ultimate less it
- ✓ claims still to be reported are almost all from the latest year: 2021 1, 2022 1, 2023 2, 2024 9, 2025 126
- ✓ the latest accident year is the least developed: 2021 99.3%, 2022 99.9%, 2023 98.9%, 2024 97.4%, 2025 89.1%
- ✓ injuries carry the reserve still to come; damage develops down as salvage and subrogation come in: injuries 107% of the true IBNR
- ✓ loss ratios in the range personal auto reports (60 to 80%), the storm year above
- ✓ claim frequency per 100 car-years near what US insurers report: collision 4.71, property damage 3.75, comprehensive 3.09, bodily injury 1.04
- ✓ collision and property damage severity rise year on year: collision $4,569 in 2021 to $5,718 in 2025
- ✓ injury claims are reported far later than damage: median 23 days against 2
- ✓ young drivers claim more often than drivers 35 to 49
- ✓ about one claim in eight closes with no payment
Tables
6 tables, 357,438 rows
Every table in the zip with what it holds, its rows and its columns. The bars are on a log scale, so the small reference tables still show.
- policiesEvery annual term written from 2020: driver (age, insurance score tier, prior claims, mileage, use), vehicle (type, age, value), cover (package, injury limit, collision deductible), tenure, the premium the plan charged, cancellation with its date, reason and return premium240,000 rows · 26 cols
- claim_transactionsThe claim system's log: reserve opened and revised, payments, closings and reopenings, salvage and subrogation received, each with the case reserve after it93,298 rows · 7 cols
- claimsEvery claim reported by the cut: coverage, cause of loss, catastrophe code, accident and report dates, fault, litigation, total loss, deductible, status, paid, recoveries, case reserve and incurred at the cut24,106 rows · 20 cols
- ultimate_truthThe hindsight table: each accident year and coverage as booked at the cut, and what it finally costs once every late claim is reported, every open claim settles and every recovery comes in20 rows · 11 cols
- territoriesThe twelve rating territories: area type, whether a territory lies in the hail belt, its share of the book and the factor the filed plan rates it at12 rows · 7 cols
- rate_changesThe rate changes the insurer filed, with their effective dates2 rows · 3 cols
Explore
Every table, profiled
Each column's type, spread, empties and most common values, measured from the full CSVs. Switch to the first rows to see the data as it sits in the file.
policies.csv
240,000 rows · 26 columns · 1 foreign keys
- “PA00000001”
- “PA00000002”
- “PA00000003”
- 35-4928%
- 50-6427%
- 25-3418%
- 65+18%
- 16-249.0%
- B35%
- A30%
- C23%
- D12%
- 080%
- 115%
- 2+4.9%
- 7,500 to 15,00050%
- over 15,00025%
- under 7,50025%
- commute55%
- pleasure35%
- business9.9%
- sedan38%
- SUV33%
- pickup16%
- minivan7.0%
- sports car6.0%
- 4-732%
- 0-330%
- 8-1225%
- 13+13%
- full coverage79%
- liability only21%
- 100/30040%
- 50/10030%
- 25/5018%
- 250/50012%
- non-payment55%
- insured request26%
- vehicle sold18%
Keys
Every join resolves
4 foreign keys, 381,510 references checked against the table each one points at. None points at a row that does not exist.
claim_transactions
- claim_idclaims.claim_id93,298 rows checked0 orphans
claims
- policy_idpolicies.policy_id24,106 rows checked0 orphans
- territory_idterritories.territory_id24,106 rows checked0 orphans
policies
- territory_idterritories.territory_id240,000 rows checked0 orphans
In the zip
What you get
- CSVs: one file per table, with a header row and ISO dates.
- README.md: what each table holds, how the data behaves (measured), what was checked and what to know.
- ANSWER_KEY.md: what happened at the plant, when, where it shows and the query that finds it.
- INTEGRITY.json: the 67 audit checks and their results.
- RECIPE.json: the Misata blueprint that made these exact rows, seed 20210101.
- kit/: the project kit: the brief, 18 questions, load.sql for DuckDB, check.py, the answer key with its SQL, and the write-up template.
All 20 files
- territories.csv526 B
- policies.csv37.1 MB
- claims.csv3.3 MB
- claim_transactions.csv4.9 MB
- rate_changes.csv174 B
- ultimate_truth.csv2 KB
- README.md8 KB
- INTEGRITY.json9 KB
- RECIPE.json36 KB
- kit/BRIEF.md2 KB
- kit/QUESTIONS.md4 KB
- kit/README.md1 KB
- kit/WRITEUP_TEMPLATE.md2 KB
- kit/check.py3 KB
- kit/load.sql784 B
- kit/my_answers.csv100 B
- kit/questions.json5 KB
- kit/solutions/ANSWER_KEY.md12 KB
- kit/solutions/key.json11 KB
- kit/solutions/solutions.sql7 KB
Before you use it
Things to know
- The files are the insurer's as at the close of 31 December 2025: terms written by then, claims reported by then and their transactions to that day. Claims reported later and payments after the cut are in
ultimate_truthonly, as counts and dollars. - Policies are written from January 2020, so 2021 is the first fully earned year; claims are accident years 2021 to 2025.
- Four coverages: bodily injury and property damage liability, collision and comprehensive. Uninsured motorist, personal injury protection, medical payments, rental and towing are not modelled. Losses are indemnity only, with no loss adjustment expense.
true_frequency_indexon a policy is hindsight, likeultimate_truth: how often that policy really claims against the book's average, which the rating plan can only guess at.- Amounts are illustrative: premium comes from this dataset's own rating plan, not any real filing. The insurer, its territories and policyholders are invented; no real organization or person is represented, and no record is derived from real data.
Questions
Before you buy
Is this real data?
What do I get?
Can I try it before buying?
How was it checked?
Is there a project to do with it?
Can I use it commercially?
What should I know before using it?
Can I get a bigger or different version?
Want it bigger, in another setting, or with your own columns? Have us build it.
More premium datasets
All 7How much of each month was paid by the cut
12,000 members, four products, calendar 2025
A payer's year with its incurred truth
Answer key
- unpaid_at_cut
- not_received_at_cut
- cause_no_prior_auth
- +4 more
- Rows
- 284,051
- Tables
- 7
- Checks
- 107 of 107
Free preview18-question projectProfile and previewWeekly sales, at regular price and on promotion
Grocery chain, 10 stores, fiscal 2024 and 2025
Two fiscal years of a grocery chain, from the shelf to the receipt
Answer key
- baseline_units
- price_effect
- promo_lift
- +7 more
- Rows
- 2,790,852
- Tables
- 14
- Checks
- 117 of 117
Free preview18-question projectProfile and previewAn X-bar chart with the truth underneath: flatness, characteristic 139
3 plants, 36 CNC machines, six months
Six months of control charts with the ground truth underneath
Answer key
- active_cause_id
- true_cause_shift_sigma
- true_tool_wear_sigma
- +6 more
- Rows
- 515,442
- Tables
- 15
- Checks
- 101 of 101
Free preview18-question projectProfile and preview

