Insurance
Predict claims and policy lapses, estimate claim severity, and flag repeat claims for review.
Data mapping
- Entity
- policy
- Group
- agency
- Profile
- generic; configure time windows with verticals.register
Supported analyses
- Will this policy record a claim within 90 days?
predict_event(target="", window_days=90)
Each row is a claim and no event-type column is mapped, so target "" refers to any claim. - What is the expected severity of the next claim?
predict_value(target="", window_days=365)
Reference implementation
from datetime import datetime, timedelta
from vertiq import plugins, rules
from vertiq.mapping import Mapping, apply, repair
from vertiq.tasks import predict_event, predict_value
# rows: the source export as a list of dicts, e.g. list(csv.DictReader(open("export.csv")))
mapping = Mapping.parse({"entity": "Police Nr", "time": "Loss Date", "type": None, "value": "Claim Amount", "group": "Agence", "attrs": ["Cover", "Channel"], "date_format": "%d/%m/%Y"})
m, notes = repair(mapping, rows) # validates column names, value types and date format against the rows
ds, problems = apply(m, rows) # rows that fail to load are reported, not imputed
@plugins.feature("insurance")
def claims_365(entity, before, cut): # receives only events recorded before the cutoff
return {"claims_365": sum(1 for e in before if e.at >= cut - timedelta(days=365))}
task = predict_event(ds, target="", window_days=90, pack="insurance")
print(task.status, task.report()) # "trained" only if the model outperformed the baseline on held-out entities
if task.status == "trained":
print(task.score("POL482910")) # probability with contributing factors
size = predict_value(ds, target="", window_days=365, pack="insurance")
print(size.status, size.report())
flags = rules.run(ds, [
rules.repeat(14, key="Cover"), # a second claim under the same cover within 14 days, for review
])
print(flags["summary"])
This code is executed by the test suite (tests/test_guides.py) against generated records with these column names.
Recommended plugin
claims_365: Recent claim frequency is a strong predictor of further claims.
Validation rules
rules.repeat(14, key="Cover"): a second claim under the same cover within 14 days, for review
Implementation notes
- Flags support human review and are not used for automated denial.
- Exclude protected attributes such as age, gender and religion from features.
Validation
- Insurance tables, a domain excluded from Vertiq LM training
- Every deployment: the evaluation gate measures each model on the organisation's own held-out records before promotion.