This repository contains the code to replicate the numerical illustrations in the paper
When Indemnity Insurance Fails: Parametric Coverage under Binding Budget and Risk Constraints
Benjamin Avanzi, Debbie Kusch Falden, and Mogens Steffensen
Journal of Risk and Insurance (2026), 1–32. https://dx.doi.org/10.1111/jori.70070
In high-risk environments, traditional indemnity insurance is often unaffordable or ineffective, despite its well-known optimality under expected utility. We compare excess-of-loss indemnity insurance with parametric insurance within a common mean-variance framework, allowing for fixed costs, heterogeneous premium loadings, and binding budget constraints. Motivated by the disaster insurance and risk-sharing literature, we show that, once these realistic frictions are introduced, parametric insurance can yield higher welfare for risk-averse individuals, even under the same utility objective and without relying on behavioral assumptions. The welfare advantage arises precisely when indemnity insurance becomes impractical (particularly when households face binding premium budgets), and disappears once both contracts are unconstrained. Our results help reconcile classical insurance theory with the growing use of parametric risk transfer in high-risk settings, and rationalize the interest in hybrid designs that combine both indemnity and parametric elements.
An rendered html version of the Rmd can be seen by clicking this link:
👉 https://agi-lab.github.io/parametric/{.uri}
Note: Clicking
.htmlfiles directly inside GitHub will only show the source code. Use the link above to view the rendered code.
One number reported in Section 4 of the paper is inconsistent with the figure it annotates. The error is in the replication code, is confined to a single quantity, and does not affect any conclusion. It has been corrected in AvFaSt25-numerics.Rmd; this note records what it was, why it happened, and what changes.
Section 4 states that the indemnity loading at which the agent becomes indifferent between the two covers is
$\theta_d = 1.29$ without premium matching, and$1.57$ with premium matching,
in a passage that also specifies
The two do not go together. At
The consequence is visible in the published Figure 2(a) (fig_theta_1d): the green
An ordering problem between chunks, not an error in the mathematics.
theta_p is set to 0.3 in the premiumpara chunk, which is the default used by Figure 1. The thetaindif chunk then computes both thresholds. Only afterwards did the new theta chunk set theta_p <- 0.2 for Figure 2. The plot draws its vertical markers from the roots computed in the earlier chunk, so the markers carried
The premium-matched threshold escaped almost unchanged because it is nearly insensitive to
At
| Quantity | Published | Corrected |
|---|---|---|
|
|
1.29 | 1.161 |
|
|
1.57 | 1.573 |
At
It does not affect any conclusion, and the corrected number strengthens the result. The threshold moves down, so the region of the parameter space in which parametric insurance dominates is larger than the paper reports, not smaller. The empirical comparison in the same passage is unchanged: the median loss ratio of 0.28 reported by Jung and Jung (2026) for US homeowner's insurance corresponds to
Nothing else in the paper is touched. In particular the following were re-derived independently and reproduce the published values exactly:
-
$\mathbb{E}[Y_i] = 266{,}122$ ,$\Pr[Y_i = L] = 24%$ -
$d^{\ast} = 22{,}500$ ,$k^{\ast} = 243{,}622$ , and the duality$d^{\ast} + k^{\ast} = \mathbb{E}[Y_i]$ - premiums at the optima,
$6{,}353$ and$6{,}334$ - the no-insurance benchmark
$\mathrm{MV}^{(0)} = 131{,}023$ - the fixed-cost thresholds
$\gamma_{\mathrm{indif}} = 3{,}239$ and$\gamma'_{\mathrm{indif}} = 9{,}980$ - the budget-constrained results underlying Figure 3
- the premium-matched loading threshold,
$1.57$
Figures 1 and 3 are unaffected: both are produced with theta_p <- 0.2 and does not use the thresholds.
theta_p <- 0.2 is now set at the top of the thetaindif chunk, so the thresholds and the figure they annotate share the same
Re-running the notebook regenerates Figure 2(a) with the marker at 1.161, on the crossing.