A coverage-type rated inland marine model for contractors' equipment, fine art and cargo.
Inland marine covers property that moves or is unusual to insure, such as contractors' equipment, fine art and goods in transit. Each coverage type has its own risk profile, so it is the main rating driver.
A base rate per $1,000 of sum insured is looked up by coverage type, then adjusted for the state and the chosen deductible. A policy fee is added.
Fine art over $500,000 without a current appraisal is declined. Very large sums insured and high-theft cargo exposures are referred.
Three further factors adjust the premium: how the property is stored, how far it travels and recent claims.
| Field | Label | Type | Default | Allowed values |
|---|---|---|---|---|
coverage_type | Coverage type | string | contractor_equipment | contractor_equipment, fine_art, cargo, edp |
state | State | string | CA | CA, NY, TX, FL, IL |
sum_insured | Sum insured ($) | integer | 250000 | 50000, 250000, 1000000, 3000000 |
deductible | Deductible ($) | integer | 1000 | 500, 1000, 2500, 5000, 10000 |
has_appraisal | Fine-art appraisal on file | boolean | true | true, false |
storage_security | Storage security | string | standard | secure_yard, standard, unsecured |
transit_radius | Transit radius | string | local | local, regional, national |
claims_3y | Claims in the last 3 years | integer | 0 | 0, 1, 2, 3 |
Steps run in order. Each one can use the inputs and the outputs of every step before it.
Base rate per $1000 sum insured by IM coverage type.
{
"id": "coverage_rates",
"key": "coverage_rates",
"step": "collection",
"name": "Coverage type rate lookup",
"retain": true,
"collection": [
["coverage_type", "coverage_rate_per_k"],
["contractor_equipment", 6.2],
["fine_art", 4.8],
["cargo", 8.5],
["edp", 5.4]
],
"format": {
"coverage_rate_per_k": {
"key": "coverage_rate_per_k",
"label": "Coverage type rate per $1000",
"exp": "collection.filter(coverage_type=={{coverage_type}}).map(coverage_rate_per_k).first()",
"type": "decimal",
"def": 6
}
}
}Regional load: coastal / high-theft states carry a load.
{
"id": "state_im_rates",
"key": "state_im_rates",
"step": "collection",
"name": "State IM factor",
"retain": true,
"collection": [
["state", "state_im_factor"],
["CA", 1.1],
["NY", 1.15],
["TX", 1],
["FL", 1.2],
["IL", 1]
],
"format": {
"state_im_factor": {
"key": "state_im_factor",
"label": "State IM factor",
"exp": "collection.filter(state=={{state}}).map(state_im_factor).first()",
"type": "decimal",
"def": 1
}
}
}Larger deductibles get larger credits, floored at 0.75.
{
"id": "deductible_rates",
"key": "deductible_rates",
"step": "collection",
"name": "Deductible credit",
"retain": true,
"collection": [
["deductible_max", "deductible_factor"],
[500, 1.05],
[1000, 1],
[2500, 0.92],
[5000, 0.85],
[100000, 0.75]
],
"format": {
"deductible_factor": {
"key": "deductible_factor",
"label": "Deductible factor",
"exp": "collection.filter(deductible_max>={{deductible}}).map(deductible_factor).first()",
"type": "decimal",
"def": 1
}
}
}Property kept in a secure, monitored location is far less likely to be stolen.
{
"id": "storage_rates",
"key": "storage_rates",
"step": "collection",
"name": "Storage security factor",
"retain": true,
"collection": [
["storage_security_value", "storage_factor_rel"],
["secure_yard", 0.92],
["standard", 1],
["unsecured", 1.2]
],
"format": {
"storage_factor": {
"key": "storage_factor",
"label": "Storage security factor",
"exp": "collection.filter(storage_security_value=={{storage_security}}).map(storage_factor_rel).first()",
"type": "decimal",
"def": 1
}
}
}Property that travels further is exposed to more handling, accidents and theft.
{
"id": "transit_rates",
"key": "transit_rates",
"step": "collection",
"name": "Transit radius factor",
"retain": true,
"collection": [
["transit_radius_value", "transit_factor_rel"],
["local", 1],
["regional", 1.1],
["national", 1.25]
],
"format": {
"transit_factor": {
"key": "transit_factor",
"label": "Transit radius factor",
"exp": "collection.filter(transit_radius_value=={{transit_radius}}).map(transit_factor_rel).first()",
"type": "decimal",
"def": 1
}
}
}Load for claims in recent years. A clean record is neutral; each band of claims adds a larger load.
{
"id": "im_claims_rates",
"key": "im_claims_rates",
"step": "collection",
"name": "Claims history load",
"retain": true,
"collection": [
["claims_3y_min", "claims_3y_max", "im_claims_factor_rel"],
[0, 0, 1],
[1, 1, 1.15],
[2, 2, 1.3],
[3, 99, 1.5]
],
"format": {
"im_claims_factor": {
"key": "im_claims_factor",
"label": "Claims history load",
"exp": "collection.filter(claims_3y_min<={{claims_3y}}).filter(claims_3y_max>={{claims_3y}}).map(im_claims_factor_rel).first()",
"type": "decimal",
"def": 1
}
}
}Sum insured in thousands × coverage rate × state factor × deductible factor. Multiplied by the storage security factor, transit radius factor, claims history load.
{
"id": "gross_premium_calc",
"key": "gross_premium_calc",
"step": "calculation",
"name": "Gross premium",
"def": 0,
"formula": "round(({{sum_insured}} / 1000) * {{coverage_rate_per_k}} * {{state_im_factor}} * {{deductible_factor}} * {{storage_factor}} * {{transit_factor}} * {{im_claims_factor}}, 2)"
}Add $75 policy fee to gross premium.
{
"id": "policy_premium",
"key": "policy_premium",
"step": "calculation",
"name": "Policy premium",
"def": 0,
"formula": "round({{gross_premium_calc}} + 75, 2)"
}Decline fine art over $500k without a current appraisal on file.
{
"id": "im_exclusions",
"key": "im_exclusions",
"step": "exclusion",
"name": "Inland marine exclusions",
"def": false,
"items": [
{
"id": "fine_art_unappraised",
"name": "High-value fine art without appraisal",
"exp": "{{coverage_type}} == 'fine_art' && {{sum_insured}} > 500000 && {{has_appraisal}} == false",
"def": false
}
]
}Refer very large sum insured or high-theft cargo exposures for underwriter review.
{
"id": "im_refers",
"key": "im_refers",
"step": "refer",
"name": "Inland marine refers",
"def": false,
"items": [
{
"id": "large_sum_insured",
"name": "Sum insured over $2m",
"exp": "{{sum_insured}} > 2000000",
"def": false
},
{
"id": "large_cargo",
"name": "Cargo over $500k",
"exp": "{{coverage_type}} == 'cargo' && {{sum_insured}} > 500000",
"def": false
}
]
}This quote was priced by the Ptally rating engine. The trace below follows it through every step to the final result.
{
"coverage_type": "contractor_equipment",
"state": "CA",
"sum_insured": 100000,
"deductible": 1000,
"has_appraisal": true,
"storage_security": "secure_yard",
"transit_radius": "regional",
"claims_3y": 0
}coverage_rate_per_k = 6.2state_im_factor = 1.1deductible_factor = 1storage_factor = 0.92transit_factor = 1.1im_claims_factor = 1round((100,000 / 1000) * 6.2 * 1.1 * 1 * 0.92 * 1.1 * 1, 2) = 690.18round(690.18 + 75, 2) = 765.18High-value fine art without appraisal: not firedSum insured over $2m: not firedCargo over $500k: not firedSelect inland marine 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.