Equipment breakdown

A boiler and machinery model rated by equipment type, occupancy, age and inspection status.

A default model in Ptally. Equipment Breakdown: Boiler & Machinery is one of the default models you can select when you start a new project in Ptally. It comes with its rate tables, rules and 6 tests, ready to adapt to your own product.
The line of business

Equipment breakdown

Equipment breakdown, also called boiler and machinery, covers sudden mechanical or electrical failure of equipment such as boilers, chillers and production machinery. Inspection and maintenance matter as much as the equipment itself.

Methodology

How the model rates

A rate per $1,000 of sum insured is looked up by equipment type, then adjusted for occupancy, an age load capped at 40% and a credit for a current jurisdictional inspection. A policy fee and minimum premium are applied.

Old boilers and pressure vessels without a current inspection are declined. Critical infrastructure and high-value equipment are referred for engineering review.

Three further factors adjust the premium: a planned maintenance contract, backup equipment and recent breakdown claims.

8inputs
11steps
5lookup tables
6tests

Inputs

8 fields
FieldLabelTypeDefaultAllowed values
equipment_typePrimary equipment typestringhvacboiler, pressure_vessel, hvac, electrical, production_machinery
occupancyOccupancystringofficeoffice, retail, manufacturing, hospital, data_center
sum_insuredSum insured ($)integer500000100000, 500000, 2500000, 10000000
age_yearsEquipment age (years)integer51, 5, 15, 30
inspection_currentJurisdictional inspection currentbooleantruetrue, false
maintenance_contractMaintenance contractbooleanfalsefalse, true
redundancyBackup equipmentstringnonenone, partial, full
claims_3yBreakdown claims in the last 3 yearsinteger00, 1, 2, 3
The model

Step by step

Steps run in order. Each one can use the inputs and the outputs of every step before it.

01Lookup table
Equipment type base rate

Rate per $1000 sum insured by equipment type. Boilers and production machinery carry the highest loads.

{
  "id": "equipment_rates",
  "key": "equipment_rates",
  "step": "collection",
  "name": "Equipment type base rate",
  "retain": true,
  "collection": [
    ["equipment_type", "equipment_rate_per_k"],
    ["boiler", 1.4],
    ["pressure_vessel", 1.2],
    ["hvac", 0.6],
    ["electrical", 0.8],
    ["production_machinery", 1.6]
  ],
  "format": {
    "equipment_rate_per_k": {
      "key": "equipment_rate_per_k",
      "label": "Equipment rate per $1000",
      "exp": "collection.filter(equipment_type=={{equipment_type}}).map(equipment_rate_per_k).first()",
      "type": "decimal",
      "def": 1
    }
  }
}
02Lookup table
Occupancy factor

Critical-infrastructure occupancies (hospitals, data centers) attract loads reflecting business-interruption downside.

{
  "id": "occupancy_rates",
  "key": "occupancy_rates",
  "step": "collection",
  "name": "Occupancy factor",
  "retain": true,
  "collection": [
    ["occupancy", "occupancy_factor", "critical_infrastructure"],
    ["office", 0.9, false],
    ["retail", 1, false],
    ["manufacturing", 1.25, false],
    ["hospital", 1.6, true],
    ["data_center", 1.8, true]
  ],
  "format": {
    "occupancy_factor": {
      "key": "occupancy_factor",
      "label": "Occupancy factor",
      "exp": "collection.filter(occupancy=={{occupancy}}).map(occupancy_factor).first()",
      "type": "decimal",
      "def": 1
    },
    "occupancy_critical": {
      "key": "occupancy_critical",
      "label": "Critical infrastructure flag",
      "exp": "collection.filter(occupancy=={{occupancy}}).map(critical_infrastructure).first()",
      "type": "boolean",
      "def": false
    }
  }
}
03Calculation
Equipment age load

1% load per year of age, capped at 40%.

{
  "id": "age_calc",
  "key": "age_calc",
  "step": "calculation",
  "name": "Equipment age load",
  "def": 1,
  "formula": "min(1 + ({{age_years}} * 0.01), 1.40)"
}
04Transform
Inspection credit

5% credit when jurisdictional inspection is current.

{
  "id": "inspection_factor",
  "key": "inspection_factor",
  "step": "transform",
  "name": "Inspection credit",
  "retain": true,
  "format": {
    "inspection_factor": {
      "key": "inspection_factor",
      "label": "Inspection factor",
      "exp": "{{inspection_current}} == true ? 0.95 : 1.00",
      "type": "decimal",
      "def": 1
    }
  }
}
05Lookup table
Maintenance contract factor

Planned maintenance by a specialist contractor reduces the chance of a breakdown.

{
  "id": "maintenance_rates",
  "key": "maintenance_rates",
  "step": "collection",
  "name": "Maintenance contract factor",
  "retain": true,
  "collection": [
    ["maintenance_contract_value", "maintenance_factor_rel"],
    [false, 1],
    [true, 0.93]
  ],
  "format": {
    "maintenance_factor": {
      "key": "maintenance_factor",
      "label": "Maintenance contract factor",
      "exp": "collection.filter(maintenance_contract_value=={{maintenance_contract}}).map(maintenance_factor_rel).first()",
      "type": "decimal",
      "def": 1
    }
  }
}
06Lookup table
Redundancy factor

Backup equipment reduces business interruption when a unit fails.

{
  "id": "redundancy_rates",
  "key": "redundancy_rates",
  "step": "collection",
  "name": "Redundancy factor",
  "retain": true,
  "collection": [
    ["redundancy_value", "redundancy_factor_rel"],
    ["none", 1],
    ["partial", 0.95],
    ["full", 0.88]
  ],
  "format": {
    "redundancy_factor": {
      "key": "redundancy_factor",
      "label": "Redundancy factor",
      "exp": "collection.filter(redundancy_value=={{redundancy}}).map(redundancy_factor_rel).first()",
      "type": "decimal",
      "def": 1
    }
  }
}
07Lookup table
Claims history load

Load for claims in recent years. A clean record is neutral; each band of claims adds a larger load.

{
  "id": "eb_claims_rates",
  "key": "eb_claims_rates",
  "step": "collection",
  "name": "Claims history load",
  "retain": true,
  "collection": [
    ["claims_3y_min", "claims_3y_max", "eb_claims_factor_rel"],
    [0, 0, 1],
    [1, 1, 1.15],
    [2, 2, 1.3],
    [3, 99, 1.5]
  ],
  "format": {
    "eb_claims_factor": {
      "key": "eb_claims_factor",
      "label": "Claims history load",
      "exp": "collection.filter(claims_3y_min<={{claims_3y}}).filter(claims_3y_max>={{claims_3y}}).map(eb_claims_factor_rel).first()",
      "type": "decimal",
      "def": 1
    }
  }
}
08Calculation
Base premium

Sum insured in thousands × equipment rate × occupancy × age × inspection. Multiplied by the maintenance contract factor, redundancy factor, claims history load.

{
  "id": "base_premium",
  "key": "base_premium",
  "step": "calculation",
  "name": "Base premium",
  "def": 0,
  "formula": "round(({{sum_insured}} / 1000) * {{equipment_rate_per_k}} * {{occupancy_factor}} * {{age_calc}} * {{inspection_factor}} * {{maintenance_factor}} * {{redundancy_factor}} * {{eb_claims_factor}}, 2)"
}
09Calculation
Policy premium

Add $150 policy fee. Minimum premium is $500.

{
  "id": "policy_premium",
  "key": "policy_premium",
  "step": "calculation",
  "name": "Policy premium",
  "def": 0,
  "formula": "round(max({{base_premium}} + 150, 500), 2)"
}
10Decline rules
Equipment breakdown exclusions

Decline old boilers/pressure vessels without a current jurisdictional inspection: regulatory and loss-control concerns.

{
  "id": "eb_exclusions",
  "key": "eb_exclusions",
  "step": "exclusion",
  "name": "Equipment breakdown exclusions",
  "def": false,
  "items": [
    {
      "id": "old_boiler_no_inspection",
      "name": "Old boiler/pressure vessel without inspection",
      "exp": "({{equipment_type}} == 'boiler' || {{equipment_type}} == 'pressure_vessel') && {{age_years}} > 20 && {{inspection_current}} == false",
      "def": false
    }
  ]
}
11Refer rules
Equipment breakdown refers

Refer critical infrastructure and high-value equipment for engineering review.

{
  "id": "eb_refers",
  "key": "eb_refers",
  "step": "refer",
  "name": "Equipment breakdown refers",
  "def": false,
  "items": [
    {
      "id": "critical_infra",
      "name": "Critical infrastructure occupancy",
      "exp": "{{occupancy_critical}} == true",
      "def": false
    },
    {
      "id": "high_value",
      "name": "Sum insured over $5m",
      "exp": "{{sum_insured}} > 5000000",
      "def": false
    }
  ]
}
Worked example

Worked example: maintained equipment with full backup and one claim

This quote was priced by the Ptally rating engine. The trace below follows it through every step to the final result.

Quote input
{
  "equipment_type": "hvac",
  "occupancy": "office",
  "sum_insured": 2500000,
  "age_years": 2,
  "inspection_current": true,
  "maintenance_contract": true,
  "redundancy": "full",
  "claims_3y": 1
}
Result1,381.18VALID
Calculation trace
  1. Equipment type base rateLookup table
    equipment_rate_per_k = 0.6
  2. Occupancy factorLookup table
    occupancy_factor = 0.9 · occupancy_critical = false
  3. Equipment age loadCalculation
    min(1 + (2 * 0.01), 1.40) = 1.02
  4. Inspection creditTransform
    true == true ? 0.95 : 1.00 → 0.95
  5. Maintenance contract factorLookup table
    maintenance_factor = 0.93
  6. Redundancy factorLookup table
    redundancy_factor = 0.88
  7. Claims history loadLookup table
    eb_claims_factor = 1.15
  8. Base premiumCalculation
    round((2,500,000 / 1000) * 0.6 * 0.9 * 1.02 * 0.95 * 0.93 * 0.88 * 1.15, 2) = 1,231.18
  9. Policy premiumCalculation
    round(max(1,231.18 + 150, 500), 2) = 1,381.18
  10. Equipment breakdown exclusionsDecline rules
    Old boiler/pressure vessel without inspection: not fired
  11. Equipment breakdown refersRefer rules
    Critical infrastructure occupancy: not firedSum insured over $5m: not fired
Start from this model

Select equipment breakdown as the default model for a new project, then change the rates, rules and tests to match your product. Our consultants can do this for you, with no implementation fee.

Talk to our team