MyEzAI
ModelOps Demo
Public showcase
No login · private visitor sandbox · synthetic data
Model repo
Reset
Repository
insurance/life-reserve-projection/src
life_reserve.py
Azure DevOps Demo Models · main
life_reserve.py
insurance/life-reserve-projection/src/life_reserve.py · 1,398 bytes · read-only public source view
Back to folder
insurance/life-reserve-projection/src/life_reserve.py
python
from __future__ import annotations import argparse import csv import json from pathlib import Path parser=argparse.ArgumentParser() parser.add_argument('--config',required=True) parser.add_argument('--output',required=True) args=parser.parse_args() config=json.loads(Path(args.config).read_text(encoding='utf-8'))['parameters'] policies=int(config['policies']) premium=float(config['averagePremium']) claim_rate=float(config['claimRate']) average_claim=float(config['averageClaim']) expense_ratio=float(config['expenseRatio']) discount=float(config['discountRate']) years=int(config['projectionYears']) output=Path(args.output) output.mkdir(parents=True,exist_ok=True) reserve=0.0 with (output/'reserve_projection.csv').open('w',newline='',encoding='utf-8') as handle: writer=csv.writer(handle) writer.writerow(['year','active_policies','premiums','claims','expenses','reserve']) for year in range(1,years+1): active=round(policies*(0.985**(year-1))) premiums=active*premium claims=active*claim_rate*average_claim expenses=premiums*expense_ratio reserve=max(0,reserve*(1+discount)-(premiums-claims-expenses)) writer.writerow([year,active,round(premiums,2),round(claims,2),round(expenses,2),round(reserve,2)]) (output/'summary.json').write_text(json.dumps({'endingReserve':round(reserve,2),'years':years},indent=2)+'\n',encoding='utf-8')
Confirm action