{
  "schemaVersion": 1,
  "slug": "car-insurance-estimate-calculator",
  "category": "automotive",
  "kind": "implementation",
  "independentValidation": false,
  "implementationHash": "5bc3729edabcdaffeaf5bf747a285e356a85a580c3ae90867adee9939b257cef",
  "provenance": "Generated from the calculation contract used by the published page. Publication is not external validation.",
  "sourceFiles": [
    "data/calculators/car-insurance-estimate-calculator.json",
    "src/engine.js"
  ],
  "runtimeSource": "/sources/engine.txt",
  "runtimeHash": "5c888d8898afbdee36267bb9977829e1e2ac568f6677c8ee87469c139864645c",
  "scope": "The compute function records implemented equations, constants, lookup tables and custom rules. Inputs record defaults and allowed values; outputs record precision and units. Defaults are examples, not recommendations. General background references are not evidence for this specific algorithm.",
  "publishedFormula": {
    "formula": "Premium = B·k_age·k_rec·k_mi·[0.65 + 0.7·500 ÷ (500 + D)]·(1 + V_c ÷ 400000)",
    "vars": [
      [
        "B",
        "Base premium rate"
      ],
      [
        "k_age",
        "Age factor"
      ],
      [
        "k_rec",
        "Driving-record factor"
      ],
      [
        "k_mi",
        "Mileage factor"
      ],
      [
        "D",
        "Deductible, $"
      ],
      [
        "V_c",
        "Vehicle value, $"
      ],
      [
        "Premium",
        "Estimated annual premium"
      ]
    ],
    "note": "Illustrative factors only. Age: 2.4 (<20), 1.6 (20–24), 1.15 (25–29), 1 (30–64), 1.12 (65–74), 1.3 (75+); record: 1–2.6; mileage: 0.92–1.22. Vehicle factor = 1 + value ÷ 400000. Deductible factor decreases continuously from 1.35 at USD 0 to 1.00 at USD 500. Monthly premium = Premium ÷ 12."
  },
  "externalEvidence": {
    "reviewedAt": "2026-10-18",
    "sources": [
      {
        "name": "NAIC — Consumer Auto Insurance",
        "url": "https://content.naic.org/consumer/auto-insurance.htm"
      }
    ],
    "implementationHash": "5bc3729edabcdaffeaf5bf747a285e356a85a580c3ae90867adee9939b257cef",
    "basis": "Start with your own annual base-premium scenario in USD, then multiply it by the fixed age, record, mileage, deductible and vehicle-value factors. These multipliers are illustrative assumptions, not an insurer rating system. With the defaults, 1400 × 1 × 1 × 1 × 1 × 1.0625 = USD 1487.50 per year. The annual display rounds to whole dollars; the monthly budget uses the unrounded annual amount divided by 12, giving USD 123.96. This division is not an installment quote and does not model payment fees, coverage limits, location, eligibility or insurer-specific discounts.",
    "limitations": "Scenario only: the age, driving-record, mileage, vehicle-value and deductible factors below are fixed illustrative assumptions, not insurer averages or a quote. Actual prices depend on your location, insurer, coverage and eligibility. Compare written quotes."
  },
  "contract": {
    "compute": "if(![baseRate,age,annualMiles,deductible,vehicleValue].every(Number.isFinite)||baseRate<100||baseRate>20000||!Number.isInteger(age)||age<16||age>99||annualMiles<0||annualMiles>100000||deductible<0||deductible>5000||vehicleValue<0||vehicleValue>3000000||!['clean','oneMinor','accident','twoAccidents','dui'].includes(record))return{ageFactor:null,mileageFactor:null,deductibleFactor:null,estimatedPremium:null,monthly:null,__error:'inputError'}; const ageFactor = age < 20 ? 2.4 : age < 25 ? 1.6 : age < 30 ? 1.15 : age < 65 ? 1 : age < 75 ? 1.12 : 1.3; const R = { clean:1, oneMinor:1.2, accident:1.45, twoAccidents:1.9, dui:2.6 }; const mileageFactor = annualMiles < 7500 ? 0.92 : annualMiles < 15000 ? 1 : annualMiles < 25000 ? 1.1 : 1.22; const deductibleFactor = 0.65 + 0.7*500/(500+deductible); const premium = baseRate*ageFactor*(R[record] || 1)*mileageFactor*deductibleFactor*(1+vehicleValue/400000); return { ageFactor, mileageFactor, deductibleFactor, estimatedPremium: premium, monthly: premium/12 };",
    "inputs": [
      {
        "name": "baseRate",
        "type": "number",
        "default": 1400,
        "min": 100,
        "max": 20000,
        "step": 10,
        "slider": true,
        "requiredValue": true,
        "strictRange": true
      },
      {
        "name": "age",
        "type": "number",
        "default": 35,
        "min": 16,
        "max": 99,
        "step": 1,
        "slider": true,
        "requiredValue": true,
        "strictRange": true
      },
      {
        "name": "record",
        "type": "select",
        "default": "clean",
        "options": [
          {
            "value": "clean"
          },
          {
            "value": "oneMinor"
          },
          {
            "value": "accident"
          },
          {
            "value": "twoAccidents"
          },
          {
            "value": "dui"
          }
        ]
      },
      {
        "name": "annualMiles",
        "type": "number",
        "default": 12000,
        "min": 0,
        "max": 100000,
        "step": 500,
        "slider": true,
        "requiredValue": true,
        "strictRange": true
      },
      {
        "name": "deductible",
        "type": "number",
        "default": 500,
        "min": 0,
        "max": 5000,
        "step": 100,
        "slider": true,
        "requiredValue": true,
        "strictRange": true
      },
      {
        "name": "vehicleValue",
        "type": "number",
        "default": 25000,
        "min": 0,
        "max": 3000000,
        "step": 500,
        "requiredValue": true,
        "strictRange": true
      }
    ],
    "outputs": [
      {
        "name": "estimatedPremium",
        "precision": 0,
        "unit": "$"
      },
      {
        "name": "ageFactor",
        "precision": 2,
        "unit": ""
      },
      {
        "name": "mileageFactor",
        "precision": 2,
        "unit": ""
      },
      {
        "name": "deductibleFactor",
        "precision": 2,
        "unit": ""
      },
      {
        "name": "monthly",
        "precision": 2,
        "unit": "$"
      }
    ],
    "interpret": null
  }
}
