Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Insurance Policy Risk & Profitability Analysis

Zopper Data Analytics Internship – Business Intelligence Assignment

Python Pandas Power BI SQL


Project Objective

Simulate 1,000,000 realistic insurance policy records and corresponding claims data to analyze:

  • Premium revenue patterns across policy tenures
  • Claims behaviour and cost distribution
  • Profitability indicators using Loss Ratio analysis
  • Risk concentration across purchase days and months
  • Future liability estimation for active policies

Repository Structure

insurance-risk-analytics/
│
├── data/
│   ├── policy_sales_data.csv       ← 1M simulated policy records
│   └── claims_data.csv             ← 2025 & 2026 claims records
│
├── notebooks/
│   └── insurance_data_simulation.ipynb  ← Data generation notebook
│
├── powerbi/
│   └── insurance_dashboard.pbix    ← Interactive Power BI dashboard
│
├── report/
│   └── Insurance_BI_Assignment_Report.pdf
│
├── queries/
│   └── analysis_queries.sql        ← 10 analytical SQL queries
│
├── presentation/
│   └── Insurance_BI_Presentation.pptx  ← Professional presentation
│
└── README.md

Dataset Simulation

Policy Sales Data (policy_sales_data.csv)

Column Description
Customer_ID Unique customer identifier (1 to 1,000,000)
Vehicle_ID Unique vehicle identifier (1,000,001 onwards)
Policy_Purchase_Date Evenly distributed across 2024-01-01 to 2024-12-31
Policy_Tenure 1/2/3/4 years — distribution: 20%, 30%, 40%, 10%
Vehicle_Value Fixed at ₹1,00,000
Premium Policy_Tenure × ₹100
Policy_Start_Date Policy_Purchase_Date + 365 days
Policy_End_Date Policy_Start_Date + (Tenure × 365) days

Claims Data (claims_data.csv)

Column Description
Claim_ID Unique claim identifier
Vehicle_ID Foreign key → policy_sales_data
Customer_ID Customer reference
Policy_Tenure Tenure of the claimant's policy
Claim_Date Date claim was filed
Claim_Amount Fixed at ₹10,000 per claim
Claim_Year 2025 or 2026

Simulation Assumptions

  • 1,000,000 policies sold evenly throughout calendar year 2024
  • Tenure distribution: 1yr (20%) | 2yr (30%) | 3yr (40%) | 4yr (10%)
  • Vehicle value: ₹1,00,000 (fixed)
  • Premium calculation: ₹100 × Policy Tenure
  • 2025 Claims: 30% of vehicles purchased on 7th, 14th, 21st, 28th file a claim on their Policy Start Date
  • 2026 Claims: 10% of 4-year tenure vehicles file a claim between Jan 1 – Feb 28, 2026
  • Claim amount: ₹10,000 per claim (10% of vehicle value)

Power BI Dashboard

The interactive dashboard contains 3 pages:

Page 1 – Executive Overview

  • KPI Cards: Total Premium, Total Claims, Loss Ratio, Total Policies
  • Bar Chart: Claims by Policy Tenure
  • Line Chart: Monthly Claim Trend
  • Pie Chart: Policy Tenure Distribution

Page 2 – Risk Analytics

  • Claims by Purchase Month
  • Claim Frequency by Tenure
  • Claim Cost vs Premium
  • Claims Heatmap

Page 3 – Profitability Analysis

  • Claim Ratio by Tenure
  • Premium Earned vs Remaining
  • Future Liability Estimate

DAX Measures Used

Total Premium   = SUM(Policy_Sales_Data[Premium])
Total Claims    = SUM(Claims_Data[Claim_Amount])
Loss Ratio      = DIVIDE([Total Claims], [Total Premium])
Claims 2025     = CALCULATE([Total Claims], YEAR(Claims_Data[Claim_Date]) = 2025)
Claims 2026     = CALCULATE([Total Claims], YEAR(Claims_Data[Claim_Date]) = 2026)

Data Model: policy_sales_dataclaims_data joined on Vehicle_ID


Tools Used

Tool Purpose
Python 3.9 Dataset simulation
Pandas / NumPy Data manipulation
Jupyter Notebook Data engineering workflow
SQL Analytical queries
Power BI Desktop Interactive dashboard

Animated Visuals

All charts are generated from the actual simulated data. Open the GIFs in any browser or GitHub README to see the animations.

GIF 1 — Monthly Claim Cost Trend (2025 & 2026)

Monthly Claims Trend

GIF 2 — Loss Ratio by Policy Tenure

Loss Ratio by Tenure

GIF 3 — Premium Revenue vs Claims Cost

Premium vs Claims

GIF 4 — Policy Tenure Distribution

Tenure Distribution

GIF 5 — Purchase Day Claim Anomaly (7/14/21/28 spike)

Purchase Day Anomaly

GIF 6 — Cumulative 2025 Claims (Month-by-Month)

Cumulative 2025 Claims

Insights Dashboard (Static)

Business Insights


Key Business Insights (Verified from Data)

Portfolio KPIs (Actual Simulated Numbers)

Metric Value
Total Policies 1,000,000
Total Premium (₹) 24,01,10,800
Total Claims (₹) 49,45,80,000
Overall Loss Ratio 205.98%
2025 Claims 39,456 claims (₹394.6M)
2026 Claims 10,002 claims (₹100.0M)

Note on Loss Ratio: The high loss ratio (>100%) is intentional — it reflects the simulation design where 30% of vehicles on anomaly days file claims worth ₹10,000 against a premium of ₹100–₹400. This is the risk-insight the analysis is meant to expose.


Insight 1 — Claims Spike Across All Months Driven by Anomaly Days

  • Finding: Days 7, 14, 21, 28 each generate ~10,100–10,330 claims vs an average of ~1,594 claims on normal days
  • Multiplier: 6.3× to 6.5× higher claim frequency on anomaly days
  • Business Action: Flag these purchase dates for additional underwriting scrutiny and adjust pricing upward for risk concentration

Insight 2 — Tenure Does Not Reduce Individual Loss Ratio

  • 1-year tenure: Loss Ratio = 10,000% (₹100 premium vs potential ₹10,000 claim)
  • 4-year tenure: Loss Ratio = 2,500% (₹400 premium vs potential ₹10,000 claim)
  • Finding: Longer tenure buffers the loss ratio — a 4-year policy is 4× less exposed than a 1-year policy per-rupee of premium collected
  • Business Action: Aggressively promote multi-year tenure products; consider premium recalibration toward ₹2,000–₹5,000 per year

Insight 3 — Purchase Day 28 Shows Highest Anomaly

  • Day 28 generates 10,330 claims6.5× the average of ~1,594
  • Days 7, 14, 21 follow closely: 6.3–6.4× above average
  • Combined, the four anomaly days account for ~82% of all 2025 claims despite representing only ~13% of purchase days

Insight 4 — Future Liability is Significant

  • 10,002 claims already filed in Jan–Feb 2026 from 4-year policies (₹100.0M exposure)
  • Active 2-year (purchased 2024) and 3-year policies will continue generating claims into 2026–2027
  • Estimated remaining liability: ₹100M–₹200M based on claim rate trajectory
  • Business Action: Increase IBNR reserves; flag 4-year portfolio for enhanced monitoring

Insight 5 — Top 3 Claim Months in 2025

Month Claims Cost
March 2025 ₹33.58M
August 2025 ₹33.39M
May 2025 ₹33.01M

Distribution is relatively uniform because the anomaly day pattern repeats every month — reinforcing that the issue is structural (which days people buy), not seasonal.


How to Run

# 1. Install dependencies
pip install pandas numpy

# 2. Run the notebook to generate CSVs
cd notebooks/
jupyter notebook insurance_data_simulation.ipynb

# 3. Load CSVs into Power BI Desktop
#    Home → Get Data → Text/CSV → Select policy_sales_data.csv and claims_data.csv
#    Create relationship on Vehicle_ID

# 4. Run SQL queries against your preferred database engine

Author

Sathvik
Data Analytics Intern project – Zopper
Tools: Python | SQL | Power BI
Date: March 2026

About

Insurance policy risk & profitability analysis with simulated data, SQL queries, and Power BI storytelling

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages