# Standalone program pricing

> How to price a reinsurance contract: SunCoast's three-layer program, from subject loss to ceded loss to a technical premium for each layer.

Source: https://reinsurance.dev/applications/standalone-pricing/

## The business problem

With the [post-model report](https://reinsurance.dev/applications/risk-profiling/) read, the underwriter
at **Caldera Re** knows what SunCoast's book looks like before any contract
is applied (a \$275.6M expected annual loss, a hurricane tail made up of
many-storm trials, most of the expected loss in Texas and Louisiana rather than Florida).
The report's scope ends there. The next question is the one the underwriter is paid to answer:

> The broker has proposed a structure and a price. Is SunCoast's renewal
> **adequately priced**?

The proposed structure is the three-layer [program](https://reinsurance.dev/financial-modelling/programs/)
SunCoast renews every year: Florida hurricane cover, an earthquake aggregate, and a
whole-book backstop. The proposed premium is \$32M across the three layers. To answer
whether that is enough, the underwriter runs the program through the pricing pipeline:
transform the subject loss into [ceded loss](https://reinsurance.dev/glossary/#ceded-loss), measure the ceded
distribution, and convert those metrics into a **[technical premium](https://reinsurance.dev/glossary/#technical-premium)**.
That price covers expected loss, expenses, and the cost of the capital held against the
program. Under the site's assumptions the proposed premium either clears the technical premium
or falls short of it, and that result is one input to the underwriter's decision.

:::note[In Practice]
The "standalone" in *standalone pricing* is the operative word: we price the program **as if
it were Caldera Re's only business**, quoted (like every standalone result on this site) at
the full **100% layer**, before participation. We ignore the rest of Caldera Re's portfolio: the Japanese
earthquake layer, the European windstorm quota share, every other contract on the portfolio.
That is deliberate. Standalone pricing is the baseline. In the [portfolio analytics story](https://reinsurance.dev/applications/portfolio-analytics/) the
rest of the portfolio is added back and the change in the answer is measured; pricing one new contract against that portfolio is the marginal-pricing story *(planned)*. Standalone pricing is marginal pricing with an
empty base portfolio, as the [chapter overview](https://reinsurance.dev/applications/) defines it.
:::

The technical premium is the last of [five stages that start from SunCoast's subject loss](https://reinsurance.dev/applications/standalone-pricing/#the-pipeline).

## The pipeline

The standalone program-pricing pipeline has the same five stages as pricing a
single contract, with one difference: the "transform" stage is now a whole
[program](https://reinsurance.dev/financial-modelling/programs/), whose net-of-inuring backstop depends on the two layers
that inure to it.

```mermaid
flowchart LR
    A[Subject loss<br/>SunCoast YELT]:::Losses --> B[Program<br/>C1, C2, C3 + inuring]:::Contract
    B --> C[Ceded distribution<br/>per layer + program]:::Losses
    C --> D[Metrics<br/>EL, TVaR, capital]:::Metric
    D --> E[Technical<br/>premium]:::Process

    classDef Losses fill:#F5CEBC,stroke:#B16C4B,stroke-width:1.5px,color:#2B2620
    classDef Contract fill:#BFDBF8,stroke:#4F84BA,stroke-width:1.5px,color:#2B2620
    classDef Process fill:#F7CBCB,stroke:#B46669,stroke-width:1.5px,color:#2B2620
    classDef Metric fill:#BDE2CB,stroke:#459269,stroke-width:1.5px,color:#2B2620
```

Every stage is a component from an earlier chapter, applied to one task:

| Stage | What happens | Built in |
| --- | --- | --- |
| 1. Subject loss | SunCoast's year event loss table (YELT), validated and profiled | [Risk profiling](https://reinsurance.dev/applications/risk-profiling/) |
| 2. Program | Three layers composed from [filter](https://reinsurance.dev/financial-modelling/terms/filter/), [occurrence excess](https://reinsurance.dev/financial-modelling/terms/occurrence-excess/), [aggregate excess](https://reinsurance.dev/financial-modelling/terms/aggregate-excess/), connected by [inuring](https://reinsurance.dev/glossary/#inuring) | [Programs](https://reinsurance.dev/financial-modelling/programs/) |
| 3. Ceded distribution | Per-trial gross loss, by layer and for the program | [Financial perspectives](https://reinsurance.dev/financial-modelling/perspectives/) |
| 4. Metrics | EL, TVaR, capital on the ceded distribution | [Metrics](https://reinsurance.dev/toolkit/metrics/) |
| 5. Technical premium | EL + expenses + cost of capital, with and without C1's reinstatement premium | this page and [Reinstatement premium](https://reinsurance.dev/financial-modelling/beyond-loss/reinstatement-premium/) |

Every input to the premium enters at one of these steps, starting with [the structure](https://reinsurance.dev/applications/standalone-pricing/#step-1-the-structure-to-price); the [interactive pricer](https://reinsurance.dev/applications/standalone-pricing/#how-the-answer-moves-with-the-assumptions) varies the structure and the pricing policy together.

## Step 1: the structure to price

SunCoast's program is defined in full on the [Programs](https://reinsurance.dev/financial-modelling/programs/) page; the price depends on its structure:

*[Table: Portfolio table. See the web page: https://reinsurance.dev/applications/standalone-pricing/]*

C3's "net of C1 and C2" is the [inuring](https://reinsurance.dev/glossary/#inuring) edge: its subject loss is the book's loss less
what C1 and C2 paid, so the same loss is not recovered twice. Running
the program across the [20-trial demo tier](https://reinsurance.dev/toolkit/trials/#demo-scale) gives each layer's ceded loss:

*[Interactive figure: Program ceded chart. See the web page: https://reinsurance.dev/applications/standalone-pricing/]*

C1 pays out heavily in Florida hurricane trials and is capped at \$60M by its one reinstatement, for which SunCoast pays a reinstatement premium. C2 pays on the earthquake aggregate in most trials, never more than its \$10M limit. C3 (the backstop, net of C1 and C2) exhausts its \$50M limit only
in the four heaviest whole-book trials (plus a small payment in trial 8), and pays nothing in trial 4 even though the gross loss exceeded its attachment, because netting out C1 and C2
left the subject loss below \$300M.
The three layers' ceded losses rarely peak in the same trial. That fact is quantified as the program's capital number in
[Step 5](https://reinsurance.dev/applications/standalone-pricing/#step-5-the-program-view-who-gets-the-diversification), from the
[layer and program metrics](https://reinsurance.dev/applications/standalone-pricing/#step-2-measure-the-ceded-distribution) computed on these ceded losses.

## Step 2: measure the ceded distribution

With the ceded losses computed, the [Toolkit metrics](https://reinsurance.dev/toolkit/metrics/) apply unchanged:
the ceded distribution is a loss distribution like any other.
For [Expected loss (EL)](https://reinsurance.dev/glossary/#el-expected-loss) and the tail, the [loss-set reconciliation in the risk-profiling story](https://reinsurance.dev/applications/risk-profiling/#step-1-validate-and-reconcile-the-loss-sets)
already showed the pattern: **EL adds across layers, the tail does not.**

| Distribution | EL | VaR(90%) | TVaR(90%) |
| --- | ---: | ---: | ---: |
| C1, FL hurricane | \$17.39M | \$60.00M | \$60.00M |
| C2, CA/AZ earthquake | \$5.03M | \$10.00M | \$10.00M |
| C3, All-US backstop | \$10.16M | \$50.00M | \$50.00M |
| **Sum of layers** | **\$32.58M** | — | \$120.00M |
| **Program** | **\$32.58M** | \$82.26M | \$87.28M |

The expected losses add exactly: \$17.39M + \$5.03M + \$10.16M = \$32.58M, the program EL,
because expectation is linear. Trial by trial the program ceded is the sum of the layer
ceded, so the means add. The tail is different. Measured by
[Tail Value at Risk (TVaR)](https://reinsurance.dev/glossary/#tvar-tail-value-at-risk), the layers' standalone
TVaR(90%)s sum to \$120M (each layer exhausts its limit in its own worst trials), but the
program's TVaR(90%) is \$87.28M, \$32.72M lower. That difference is the same diversification
the risk profiling measured between perils, now between layers: their
worst losses occur in different trials, so the program's tail is well below the sum of the
layers' tails. This is [TVaR's sub-additivity](https://reinsurance.dev/toolkit/metrics/var-vs-tvar/#sub-additivity) in
numbers.

:::tip[Key Insight]
Expected loss is additive under rearrangement: it sums the same whether the program is divided into layers, split by peril, or
restructured, because a mean weights every trial equally and does not isolate the tail.
The tail does not add because of how it is defined. The tail metrics select the worst
trials, and the program's worst trials are not the same trials as each layer's worst. Each
layer's TVaR averages its own peak trials, while the program's TVaR averages the trials where the total loss is worst: different trials, different rows of the data. Price on EL alone and you would charge the same for three correlated
layers as for three independent ones. Only the tail distinguishes them.
:::

Each distribution's EL, and the difference between that EL and its TVaR(90%), are the inputs to
[the technical premium](https://reinsurance.dev/applications/standalone-pricing/#step-3-from-metrics-to-premium).

## Step 3: from metrics to premium

The [technical premium](https://reinsurance.dev/glossary/#technical-premium) is the price computed from the metrics. The
decomposition used here has three parts: the expected loss the reinsurer pays out on average, an
expense load for running the business, and the cost of the capital held against the layer:

$$
\mathcal{P} = \underbrace{\text{EL}}_{\text{average payout}} + \underbrace{\epsilon \cdot \text{EL}}_{\text{expenses}} + \underbrace{K \cdot r_c}_{\text{cost of capital}}
$$

**This site's convention:** the [capital requirement](https://reinsurance.dev/glossary/#capital-requirement) $K$ is the **unexpected loss**,
how far the tail extends beyond the expected loss, the part that capital (not premium) has to
cover:

$$
K = \text{TVaR}_\alpha - \text{EL}
$$

The expected loss is already paid for by the EL term, so capital is held only against
the excess. The formula applies to a layer whose only income is its premium; on C1 the reinsurer also receives
[reinstatement premium](https://reinsurance.dev/applications/standalone-pricing/#step-4-reinstatement-premium-in-the-price), added in Step 4.

:::note[In Practice]
This decomposition is one illustrative framework: this site's choice, not the industry's pricing
formula. We use it because each part is a metric the pipeline has already computed, so the
price stays a pure function of the ceded distribution. A production rate sheet adds components
deliberately left out here: brokerage and ceding commission on the revenue side, premium
taxes, loads for parameter and model uncertainty (the modelled EL is an estimate, not a fact),
and the underwriter's rate-adequacy judgment against the [market cycle](https://reinsurance.dev/glossary/#market-cycle). Clark's study note is
the standard reference for the full decomposition[^clark]; Mata, Fannin, and Verheyen price the
loss-sensitive premium features, such as reinstatement premiums and profit commissions, that
this formula omits[^mata]. Of those features, only the reinstatement premium is added, in
[Step 4](https://reinsurance.dev/applications/standalone-pricing/#step-4-reinstatement-premium-in-the-price); the others, and the economics of the capital
charge, are not covered here.
:::

[^clark]: David R. Clark, ["Basics of Reinsurance Pricing"](https://www.casact.org/sites/default/files/old/studynotes_clark_2014.pdf),
    Casualty Actuarial Society study note, 1996, revised 2014. The standard study-note
    treatment of reinsurance pricing in full: loss costs, ceding commissions, expenses, and
    profit loads, plus the judgment the basic tools require. On reinstatements (p. 43): they are
    available "pro-rata as to amount" and less often "pro-rata as to time", and "relatively few
    contracts include reinstatements pro-rata as to time" because of the seasonal nature of
    catastrophes such as hurricanes.

[^mata]: Ana J. Mata, Brian Fannin, and Mark A. Verheyen, ["Pricing Excess of Loss Treaty with Loss Sensitive Features: An Exposure Rating Approach"](https://www.actuaries.org.uk/system/files/documents/pdf/mata_0.pdf),
    GIRO Convention, Institute and Faculty of Actuaries, 2002. When a treaty has loss-sensitive features, the
    premium and expenses become random variables that depend on the aggregate loss, and
    profitability is assessed in expectation across them.

With the site's assumptions ($\alpha = 90\%$ confidence, a cost of capital rate
$r_c = 10\%$, and an expense load $\epsilon = 5\%$), each layer's technical premium before
reinstatement premium is:

| Layer | Expected loss (EL) | TVaR(90%) | Required capital ($K$) | **Technical premium** | Proposed |
| --- | ---: | ---: | ---: | ---: | ---: |
| C1 | \$17.39M | \$60.00M | \$42.61M | \$22.52M | \$14M |
| C2 | \$5.03M | \$10.00M | \$4.97M | \$5.78M | \$5M |
| C3 | \$10.16M | \$50.00M | \$39.84M | \$14.65M | \$13M |
| **Sum** | \$32.58M | — | \$87.42M | **\$42.95M** | **\$32M** |

Python (`python/caldera_re/program_pricing.py`, runnable on the web page):

```python
"""Standalone pricing of SunCoast's program: ceded distribution -> premium.

Pricing reuses the Toolkit metrics (expected_loss, tvar) read off an AEP
curve -- the same helpers used everywhere on the site -- so nothing here is
re-derived. The technical premium of a layer is

    P = EL + epsilon * EL + K * r_c,   with   K = TVaR_alpha - EL

i.e. expected loss, an expense load, and the cost of the capital the layer
ties up (its unexpected loss). The interesting part is the program view: the
capital a reinsurer holding all three layers must carry is the TVaR of the
*program* distribution, which is smaller than the sum of the layers' capital
because the layers do not reach their worst trials together. That gap is
diversification -- the same effect the portfolio roll-up story scales up.
"""

import numpy as np
import pandas as pd

from caldera_re.aep import aep
from caldera_re.expected_loss import expected_loss
from caldera_re.program_ceded import suncoast_program
from caldera_re.report import fields, heading, table
from caldera_re.tvar import tvar
from caldera_re.var import var

N = 20
ALPHA = 0.90   # confidence level for the tail / capital metric
R_C = 0.10     # cost of capital rate
EPSILON = 0.05  # expense load as a fraction of EL

# Market premiums the broker proposed for each layer (Caldera Re Bible).
MARKET = {'C1': 14.0, 'C2': 5.0, 'C3': 13.0}

def _curve(ceded: np.ndarray) -> pd.DataFrame:
    """Wrap a per-trial ceded array as an AEP curve for the metric helpers."""
    return aep(pd.DataFrame({'trial_id': range(1, N + 1), 'loss': ceded}), n_trials=N)

def price(ceded: np.ndarray) -> dict:
    """Technical premium and its components for one ceded distribution."""
    curve = _curve(ceded)
    el = expected_loss(curve)
    tv = tvar(curve, ALPHA)
    k = tv - el                       # capital = unexpected loss
    expense = EPSILON * el
    capital_cost = k * R_C
    return {
        'el': el, 'tvar': tv, 'var': var(curve, ALPHA), 'k': k,
        'expense': expense, 'capital_cost': capital_cost,
        'technical': el + expense + capital_cost,
    }

if __name__ == '__main__':
    p = suncoast_program()
    layers = ['C1', 'C2', 'C3']

    # --- Per-layer standalone pricing ------------------------------------
    heading(f"Per-layer standalone pricing "
            f"(alpha={ALPHA:.0%}, r_c={R_C:.0%}, eps={EPSILON:.0%})")
    priced = {}
    rows = []
    for name in layers:
        r = priced[name] = price(p[name])
        verdict = 'adequate' if MARKET[name] >= r['technical'] else 'underpriced'
        rows.append((name, r['el'], r['tvar'], r['k'], r['technical'],
                     MARKET[name], verdict))
    sum_k = sum(r['k'] for r in priced.values())
    sum_tech = sum(r['technical'] for r in priced.values())
    sum_market = sum(MARKET.values())
    table(['Layer', 'EL', 'TVaR', 'K', 'Tech prem', 'Market', 'Verdict'], rows,
          fmt=['{}', '{:.2f}M', '{:.1f}M', '{:.2f}M', '{:.2f}M', '{:.1f}M', '{}'],
          footer=[('Sum', None, None, sum_k, sum_tech, sum_market, None)])

    # --- Program view: capital is diversified ----------------------------
    prog = price(p['program'])
    div_capital = sum_k - prog['k']
    print()
    heading("Program view (Caldera Re holds all three layers)")
    fields([
        ('Program EL', prog['el']),
        ('Program TVaR(90%)', prog['tvar']),
        ('Program capital K', prog['k']),
        ('Sum of layer capital', sum_k),
        ('Diversification in capital', div_capital,
         f"{div_capital / sum_k:.1%} of the standalone sum"),
    ], fmt='{:.2f}M')
    print()
    verdict = 'adequate' if sum_market >= prog['technical'] else 'INADEQUATE'
    fields([
        ('Program technical premium', prog['technical'],
         'prices the program as one held book'),
        ('Sum of layer tech premiums', sum_tech, 'no diversification credit'),
        ('Total market premium', sum_market),
        ('Program adequacy', verdict,
         f"{sum_market:.1f}M vs {prog['technical']:.2f}M technical, "
         "before reinstatement premium"),
    ], fmt='{:.2f}M')

    # --- Pricing ratios on the program -----------------------------------
    program_limit = 30.0 + 10.0 + 50.0   # sum of layer limits placed
    rol = sum_market / program_limit
    loss_ratio = prog['el'] / sum_market
    raroc = (sum_market - prog['el'] - EPSILON * prog['el']) / prog['k']
    print()
    heading("Program ratios")
    fields([
        ('Rate on line (premium / placed limit)', rol),
        ('Loss ratio (EL / premium)', loss_ratio),
        ('RAROC ((premium - EL - exp) / K)', raroc),
    ], fmt='{:.1%}')
```

Without reinstatement premium every proposed premium is below its layer's technical premium,
and C1's \$14M does not even cover its \$17.39M expected loss. The comparison is incomplete for
C1: its proposed premium is set on the assumption that SunCoast will pay again for the limit it
restores, and that income is not in this table. C1's
[reinstatement premium](https://reinsurance.dev/applications/standalone-pricing/#step-4-reinstatement-premium-in-the-price) belongs in its price.

## Step 4: reinstatement premium in the price

C1 has one [reinstatement](https://reinsurance.dev/glossary/#reinstatement) at 100%, pro rata to the amount
reinstated: when a storm erodes part of the \$30M limit, the limit is restored and SunCoast pays
that share of C1's premium again. The reinstatement premium is computed from C1's claims-order output on the
[reinstatement premium](https://reinsurance.dev/financial-modelling/beyond-loss/reinstatement-premium/) page. It is income in exactly the trials where C1 pays, and the
full reinstatement premium in the trials where C1's original limit is exhausted, so it lowers the
required capital as well as the expected cost.

With a paid reinstatement, the contract's income in trial $j$ is the premium plus the reinstatement premium, $\mathcal{P} + \mathcal{P} u_j$, with $u_j$ the [reinstatement premium per dollar of premium](https://reinsurance.dev/financial-modelling/beyond-loss/reinstatement-premium/#the-formal-definition). The premium is the same in every trial of an annual contract; the reinstatement premium is the part that varies. Write $L_j^{\text{gross}}$ for the layer's ceded loss in trial $j$ ($C_1(L_j)$ for C1) and $\beta_m$ for the premium rate of reinstatement $m$ (1 for C1's first reinstatement at 100%). The reinsurer's outcome, $X_j = L_j^{\text{gross}} - \mathcal{P} u_j$, is the gross net of reinstatement premium, and the capital is measured on it. The premium and the expected reinstatement premium together must cover the same three costs:

$$
\mathcal{P}\,(1 + \bar u) = (1 + \epsilon)\,\text{EL} + r_c \cdot K(X), \qquad K(X) = \text{TVaR}_\alpha(X) - \text{EL}(X)
$$

with $\bar u$ the mean of $u_j$ over the trials. $\mathcal{P}$ is on both sides: the capital depends on the premium, because the reinstatement premium in the tail is proportional to the premium. For one layer with $\mathcal{P}\beta_m < \ell$ for every $m$, the trials rank the same by $X$ as by $L^{\text{gross}}$ (a larger loss always gives a larger $X$), so the set of tail trials does not change and the equation has a closed-form solution:

$$
\mathcal{P} = \frac{(1 + \epsilon)\,\text{EL} + r_c \cdot K}{1 + \bar u + r_c \left(\text{Co-TVaR}_\alpha^{\text{gross}}(u) - \bar u\right)}
$$

The numerator is the technical premium before reinstatement premium. The denominator discounts it twice: by $\bar u$, the expected reinstatement premium per dollar of premium, and by $r_c$ times how much more of that premium is received in the tail than on average. $\text{Co-TVaR}_\alpha^{\text{gross}}(u)$ is the mean of $u_j$ over the trials that set $\text{TVaR}_\alpha(L^{\text{gross}})$, the [co-measure](https://reinsurance.dev/glossary/#co-tvar-contribution-to-tvar) used for tail attribution on the [perspectives page](https://reinsurance.dev/financial-modelling/perspectives/).

For Contract 1 at the site's $\alpha = 90\%$, $r_c = 10\%$ and $\epsilon = 5\%$: $\bar u = 0.463$, and the full limit is restored in each of the two 90% tail trials, so $\text{Co-TVaR}_{90\%}^{\text{gross}}(u) = 1$. The technical premium decreases from \$22.52M to

$$
\mathcal{P} = \frac{22.52}{1 + 0.463 + 0.1 \cdot (1 - 0.463)} = \$14.85\text{M}
$$

| Contract 1 | Without reinstatement premium | With reinstatement premium |
| --- | ---: | ---: |
| Expected loss (EL) | \$17.39M | \$17.39M |
| Expected reinstatement premium | | \$6.87M |
| Capital $K$ (at each column's technical premium) | \$42.61M | \$34.62M |
| **Technical premium** | **\$22.52M** | **\$14.85M** |

The reinstatement clause lowers C1's upfront premium by \$7.67M, 34% of it. The
expected reinstatement premium offsets most of that reduction: \$6.87M, paid in the trials where
the layer pays. Expected income, premium plus expected reinstatement premium, decreases from \$22.52M
to \$21.73M. The difference is the lower capital charge, 10% of the \$7.98M by which the required capital
decreases. The \$34.62M differs from the \$35.08M on the [reinstatement premium page](https://reinsurance.dev/financial-modelling/beyond-loss/reinstatement-premium/#across-the-demo-tier) because it is measured at the technical premium, \$14.85M, rather than at C1's \$14M. Compared with the \$14.85M, C1's proposed \$14M is \$0.85M short, a much smaller gap than the
\$8.52M without reinstatement premium.

Python (`python/caldera_re/reinstatement_pricing.py`, runnable on the web page):

```python
"""Pricing with reinstatement premium: income that arrives in the loss trials.

Without reinstatement premium the technical premium is

    P = EL + epsilon * EL + r_c * K,        K = TVaR_alpha(L) - EL(L)

A paid reinstatement adds income P * u_j in trial j (u_j from
reinstatement_premium.reinstatement_factor), so the reinsurer's outcome per
trial is the ceded loss net of that income, X_j = L_j - P * u_j. The premium
and the expected reinstatement premium together cover the expected loss, the
expense load and the cost of the capital X ties up:

    P + P * mean(u) = (1 + epsilon) * EL + r_c * K(X),    K(X) = TVaR(X) - EL(X)

P appears on both sides, since the capital depends on the premium through X.
The fixed-point loop starts from the premium before reinstatement premium and
recomputes. Each step changes P by at most
r_c * max(mean(u), sum(beta) - mean(u)) / (1 + mean(u)) of the previous change,
which is below r_c / (1 + mean(u)) for one reinstatement at 100%; for Contract 1
the loop converges in under ten iterations. For one layer with
premium * rate < limit for every reinstatement, X ranks the trials as L does
and the fixed point has a closed form, which the script checks:

    P = ((1 + epsilon) * EL + r_c * K) / (1 + mean(u) + r_c * (tail(u) - mean(u)))

with tail(u) the mean of u over the trials that set TVaR (Co-TVaR of u).

A program prices the same way. Only C1 carries a reinstatement, so the
program's reinstatement premium is C1's premium times u_j. Holding the
proposal's split between the layers, C1's premium is the share w of the
program premium P, and the program's income per trial is P * (1 + w * u_j):
the same equation with w * u_j in place of u_j. Its solution is the program
technical premium with reinstatement premium, the premium at the proposal's
split at which the program earns its cost of capital.
"""

import numpy as np
import pandas as pd

from caldera_re.aep import aep
from caldera_re.program_ceded import suncoast_program
from caldera_re.program_pricing import ALPHA, EPSILON, MARKET, R_C
from caldera_re.reinstatement_premium import LIMIT, reinstatement_factor
from caldera_re.report import fields, heading, table
from caldera_re.tvar import tvar
from caldera_re.utils import ep_index

def capital(x: np.ndarray, alpha: float = ALPHA) -> float:
    """K = TVaR - EL of a per-trial outcome (loss net of reinstatement premium).

    N is the length of the array: one outcome per simulated trial.
    """
    curve = aep(pd.DataFrame({'trial_id': range(1, len(x) + 1), 'loss': x}),
                n_trials=len(x))
    return tvar(curve, alpha) - x.mean()

def price_with_reinstatement(ceded: np.ndarray, u: np.ndarray,
                             alpha: float = ALPHA, r_c: float = R_C,
                             tol: float = 1e-10) -> dict:
    """Technical premium of a layer whose premium earns reinstatement premium.

    With u = 0 this is the technical premium before reinstatement premium.
    """
    el = ceded.mean()
    p = (1 + EPSILON) * el + r_c * capital(ceded, alpha)   # before reinstatement premium
    for _ in range(100):
        k = capital(ceded - p * u, alpha)
        p_next = ((1 + EPSILON) * el + r_c * k) / (1 + u.mean())
        if abs(p_next - p) < tol:
            break
        p = p_next
    else:
        raise RuntimeError('technical premium did not converge in 100 iterations')
    return {'technical': p_next, 'k': capital(ceded - p_next * u, alpha),
            'reinstatement_premium': p_next * u.mean()}

def tail_mean(values: np.ndarray, by: np.ndarray) -> float:
    """Mean of values over the trials that set TVaR of `by` (a Co-TVaR)."""
    worst = np.argsort(-by, kind='stable')[:ep_index(len(by), ALPHA)]
    return float(values[worst].mean())

def program_view(p: dict, with_reinstatement: bool, alpha: float = ALPHA,
                 r_c: float = R_C) -> dict:
    """The SunCoast program at its proposed premiums, and its technical
    premium at the proposal's split, with or without C1's reinstatement
    premium."""
    prog = p['program']
    offered = sum(MARKET.values())
    u1 = reinstatement_factor(p['C1'], LIMIT, 1) if with_reinstatement else 0 * prog
    w1 = MARKET['C1'] / offered
    rip = MARKET['C1'] * u1
    k = capital(prog - rip, alpha)
    margin = offered + rip.mean() - (1 + EPSILON) * prog.mean()
    tech = price_with_reinstatement(prog, w1 * u1, alpha, r_c)
    return {'offered': offered, 'reinstatement_premium': rip.mean(),
            'income': offered + rip.mean(), 'k': k, 'raroc': margin / k,
            'technical': tech['technical'],
            'shortfall': tech['technical'] - offered}

if __name__ == '__main__':
    p = suncoast_program()
    c1 = p['C1']
    u = reinstatement_factor(c1, LIMIT, 1)

    before = price_with_reinstatement(c1, 0 * u)
    after = price_with_reinstatement(c1, u)
    closed = (((1 + EPSILON) * c1.mean() + R_C * capital(c1))
              / (1 + u.mean() + R_C * (tail_mean(u, c1) - u.mean())))
    assert abs(closed - after['technical']) < 1e-8

    heading("Contract 1 standalone: technical premium")
    table(['', 'Without', 'With reinstatement premium'], [
        ('Expected loss', c1.mean(), c1.mean()),
        ('Expected reinstatement premium', 0.0, after['reinstatement_premium']),
        ('Capital K', before['k'], after['k']),
        ('Technical premium', before['technical'], after['technical']),
    ], fmt=['{}', '{:.2f}M', '{:.2f}M'])
    print(f"\nmean(u) = {u.mean():.3f}, tail(u) = {tail_mean(u, c1):.3f}: "
          "in both tail trials C1 restores its whole limit")

    without, with_ = program_view(p, False), program_view(p, True)
    print()
    heading(f"SunCoast program at the proposed ${without['offered']:.0f}M")
    table(['', 'Without', 'With reinstatement premium'], [
        ('Expected reinstatement premium', without['reinstatement_premium'],
         with_['reinstatement_premium']),
        ('Expected premium income', without['income'], with_['income']),
        ('Program capital K', without['k'], with_['k']),
        ('Program technical premium', without['technical'], with_['technical']),
        ('Shortfall (technical - proposed)', without['shortfall'], with_['shortfall']),
    ], fmt=['{}', '{:.2f}M', '{:.2f}M'])
    fields([('RAROC without', without['raroc'], f'vs {R_C:.0%} cost of capital'),
            ('RAROC with', with_['raroc'])], fmt='{:.1%}')
```

The script does not use the closed form. It iterates: start from the premium without
reinstatement premium, compute the capital on $L^{\text{gross}} - \mathcal{P} u$, solve the
equation for a new $\mathcal{P}$ with that capital held fixed, and repeat. Each iteration changes
$\mathcal{P}$ by at most $r_c \max(\bar u, \sum_m \beta_m - \bar u)/(1+\bar u)$ of the previous
step, less than $r_c/(1+\bar u)$ for one reinstatement at 100%, so the loop converges (in under
ten iterations for C1), and it needs no assumption about which trials form the tail. That
matters for a program, where one layer's reinstatement premium can change the ranking of the
whole program's trials: the script prices SunCoast's program the same way, [in Step 5](https://reinsurance.dev/applications/standalone-pricing/#step-5-the-program-view-who-gets-the-diversification).

:::note[In Practice]
Anderson and Dong price catastrophe layers from a catastrophe model's event loss table with the reinstatement premium in the pricing equation, pro rata to amount and optionally to time. They solve for the upfront premium at which it, plus the expected reinstatement premium, equals the layer's expected loss, and leave risk loads for further study.[^pricing-rip] The actuarial literature on reinstatements, following Sundt, sets the risk load on the loss net of reinstatement income: Sundt's standard-deviation loading, as Mata sets it out, charges for the standard deviation of that difference.[^loaded-rip] This site takes the same basis with a different risk measure: the cost of capital on the outcome $X$, so the reinstatement premium reduces the capital charge as well as the expected cost.
:::

C2 and C3 have no paid reinstatement, so their technical premiums are the same in both views.
With C1's at \$14.85M, the three layers' technical premiums sum to \$35.28M, compared with the \$32M
proposed, and the benchmark in [the program view](https://reinsurance.dev/applications/standalone-pricing/#step-5-the-program-view-who-gets-the-diversification) is lower still.

## Step 5: the program view (who gets the diversification)

The sum-of-layers technical premium is computed as if three different reinsurers each held one
layer alone, with its own standalone capital. But the program is placed as one structure. A reinsurer holding all three layers at
100% (the basis every figure in this story is quoted on) would hold the capital of the
**program distribution**, not the sum of the layers', and because the layers' losses rarely peak
together, that is a much smaller number. Caldera Re's own position is different again: it
holds unequal participations (14.5%, 20%, and 10%), and a mixed-weight position is not a
uniform scaling of the program distribution. Capital for the portfolio Caldera Re actually holds
is the subject of the [portfolio analytics story](https://reinsurance.dev/applications/portfolio-analytics/); this page
prices the placement itself.

*[Interactive figure: Program capital chart. See the web page: https://reinsurance.dev/applications/standalone-pricing/]*

The three layers' standalone capital sums to \$87.42M. The program, held as one portfolio,
requires \$54.71M. The \$32.72M gap,[^rounding] 37% of the undiversified sum, is the
[diversification benefit](https://reinsurance.dev/glossary/#diversification-benefit), and it accrues only to whoever holds the whole program. Split the layers
across three reinsurers and it is zero; each holds its full standalone capital.

With reinstatement premium the program is priced by the Step 4 equation. Only C1 has a
reinstatement, so the program's reinstatement premium is C1's premium times C1's $u_j$. At
the proposal's split between the layers, C1's premium is 14/32 of the program premium, and the
program's income per trial is $\mathcal{P}\,(1 + \tfrac{14}{32} u_j)$: the same equation with
$\tfrac{14}{32} u_j$ in place of $u_j$. Its solution is the premium at the proposal's split at
which the program earns its cost of capital. Fixing the split is a choice: reinstatement premium
is paid only on C1's share, so the benchmark changes with the split. The same \$32M divided as
\$16M, \$5M and \$11M has a technical premium of \$31.54M and clears; at the split of the layers'
own technical premiums the technical premium is \$32.59M. The verdict below is for the split the
broker proposed.

| | Required capital ($K$), without | **Technical premium, without** | Required capital ($K$) at the technical premium, with | **Technical premium, with** |
| --- | ---: | ---: | ---: | ---: |
| Sum of layers (no diversification credit) | \$87.42M | \$42.95M | \$79.44M[^rounding-with] | \$35.28M |
| **Program (held together)** | \$54.71M | **\$39.68M** | \$47.09M | **\$32.37M** |

In both views the diversification is worth about \$3M of premium: \$3.27M without reinstatement
premium, and \$2.69M with it when the program is priced at the same split as the layers' own
technical premiums (\$2.91M at the proposal's split). That is the capital value of holding the layers together rather than
apart, which the reinsurer can keep as margin or give up to reduce the quote; either way, a system
that prices each layer in isolation does not account for it, and systematically overcharges for programs
whose layers diversify.

:::tip[Key Insight]
Diversification is not an averaging effect that lowers expected loss: EL is identical
(\$32.58M) in both rows. It lowers the capital required to cover the risk: the tail of the whole is smaller than the sum
of the tails, so less capital is held against it and the cost-of-capital term is smaller. The
same mechanism, applied to a whole portfolio rather than three layers in one program, is the
subject of a marginal-pricing story *(planned)*. The portfolio calculation
uses the same method as the program calculation, with more bookkeeping.
:::

The program technical premium, not the layer sum, is the benchmark for
[the \$32M proposal](https://reinsurance.dev/applications/standalone-pricing/#step-6-the-verdict), and it is \$32.37M with reinstatement premium and \$39.68M without.

## Step 6: the verdict

Whether the proposal clears depends on counting C1's reinstatement premium.

| Ratio | Without reinstatement premium | With reinstatement premium | What it says |
| --- | ---: | ---: | --- |
| Rate on line (premium / limit) | 35.6% | 35.6% | \$32M proposed premium on \$90M of placed limit |
| [Loss ratio](https://reinsurance.dev/glossary/#loss-ratio) (EL / premium income) | 101.8% | 84.7% | Expected loss per dollar of premium, and of premium plus expected reinstatement premium |
| [Risk-adjusted return on capital (RAROC)](https://reinsurance.dev/glossary/#raroc-risk-adjusted-return-on-capital) | −4.0% | 9.0% | Profit after expected loss and expenses, per dollar of capital; below the 10% that capital costs |
| Technical premium | \$39.68M | \$32.37M | The premium at which the program earns 10% |
| Shortfall against \$32M | \$7.68M | \$0.37M | |

Two of these values are artifacts of the demo portfolio. A 36% program rate on line is far
above the roughly 18% (low-attaching) to 3% (remote) schedule of a real layered catastrophe
program, and an 85% expected loss ratio inverts the market pattern, where premium
is a multiple of expected loss. Both are inherited from Caldera Re's
[arithmetic-convenience premiums](https://reinsurance.dev/caldera-re/#why-this-portfolio).[^rol-realism] The ratios'
definitions (what each one computes from the distribution and the quote) apply to real placements;
their values here do not.

[^rounding]: Unrounded, the standalone sum is 87.42083 and the program 54.70538, a gap of 32.71545,
    displayed as \$32.72M; the displayed pair differs by \$32.71M. The rounding convention is stated
    in the [Caldera Re appendix](https://reinsurance.dev/caldera-re/#portfolio).

[^rounding-with]: Unrounded, the three layers' capital at their own technical premiums with
    reinstatement premium sums to 79.437, displayed as \$79.44M; the displayed parts,
    34.62 + 4.97 + 39.84, add to 79.43. The rounding convention is stated in the
    [Caldera Re appendix](https://reinsurance.dev/caldera-re/#portfolio).

[^rol-realism]: Luyang Fu and C. K. Khury, ["Optimal Layers for Catastrophe Reinsurance"](https://variancejournal.org/article/141998-optimal-layers-for-catastrophe-reinsurance),
    *Variance* 4(2), 2010. Prices a layered catastrophe program from roughly 18% rate on
    line at the lowest attachment down to about 3% at the most remote, with premium a large
    multiple of each layer's expected loss. Kenneth A. Froot, ["The Market for Catastrophe Risk: A Clinical Examination"](https://www.nber.org/system/files/working_papers/w7286/w7286.pdf),
    *Journal of Financial Economics* 60(2–3), 2001. Documents that premium multiple
    market-wide.

Without reinstatement premium the program has a negative expected underwriting result: \$32M of premium and
\$32.58M of expected loss, a loss ratio above 100% and a negative return on capital. That view
excludes \$6.48M of expected income. With that income counted, the program is narrowly short. It returns 9.0% on
its capital, compared with Caldera Re's **[cost of capital](https://reinsurance.dev/glossary/#cost-of-capital)** of 10%, and
the proposed \$32M is \$0.37M below the \$32.37M at which it would earn exactly that. A program
that earns 9.0% on capital that costs 10% returns less than that capital costs on every dollar
held against it, even though it does not "lose money" on a claims basis. The reinstatement premium
also reduces the capital held against the proposal ($K$ at the proposed \$32M), from \$54.71M to \$47.18M; a model that added the
income and left the capital on the gross loss would count one of its two effects.

The method produces these figures, but they are not a quote. At 20 trials the program TVaR (and with it the
capital charge and the \$0.37M gap) is based on the worst two trials, so this walkthrough
demonstrates how an underwriting team computes its answer; a real team would compute the same figure from
a production-scale run before treating the margin as a negotiating position.

:::note[Consider]
The single 10% [cost of capital](https://reinsurance.dev/glossary/#cost-of-capital) is a deliberate simplification, and
the charge is contested on two points. The first is what kind of cost it is. The **frictional-cost** view (Merton–Perold) holds that a cedent should be
charged only for the deadweight costs of holding capital (double taxation of investment income,
agency costs, financial distress costs), not the full opportunity cost.[^frictional] Diversified shareholders
are already compensated for systematic risk through market prices.[^systematic] The second is that the capital is invested. Held against the contract, it earns an investment yield, so the net charge applies $r_c$
less that yield to $K$. Allocating capital by line makes both the investment income and
the return on capital computable per contract.[^allocated-capital] Both refinements change the value of $r_c$, not the structure of the
pricing. Capital economics in its own right (frictional versus opportunity cost, investment
income, basis risk, the hurdle rate) is a separate subject, not covered here. For scale, AM Best's estimates of reinsurers' cost of equity run from 7.5% (the capital asset pricing model, CAPM) to 16.0% (a market-derived capital pricing model), and the industry's weighted average cost of debt and equity was 7.66% in 2024; the 10% used here is inside the equity range.[^wacc] The rate's effect on the comparison is worked through in [How the answer moves with the assumptions](https://reinsurance.dev/applications/standalone-pricing/#how-the-answer-moves-with-the-assumptions).
:::

[^wacc]: Carrier Management, ["Global Reinsurers Meet Cost of Capital for Second Consecutive Year"](https://www.carriermanagement.com/features/2025/09/05/279159.htm), September 2025. Reporting AM Best's *Reinsurers Meet Cost of Capital for Second Consecutive Year* (August 2025): the median CAPM cost of equity for the reinsurers studied was 7.5% against 16.0% under the market-derived capital pricing model (MCPM); the weighted average cost of capital, which covers debt and equity, was 7.66% in 2024, 8.1% in 2023 and 6.66% in the first quarter of 2025.

:::note[Remember]
A standalone result, short or clear, is a baseline, not a decision. The technical-premium calculation makes the
assumptions explicit (change the cost of capital or the confidence level and the number
changes), but by design it excludes the rest of Caldera Re's portfolio. The capital this program
requires on its own is more than the **[marginal](https://reinsurance.dev/glossary/#marginal-impact)** capital it requires as part of an
already-diversified portfolio. A US-hurricane program held alongside Japanese earthquake and
European windstorm business adds far less to the portfolio's required capital than it requires alone.
That effect is measured across the whole portfolio in the
[portfolio analytics](https://reinsurance.dev/applications/portfolio-analytics/) story, and pricing a new contract
against it is a marginal-pricing application *(planned)*. Standalone pricing gives the standalone result, not whether to sign.
:::

With reinstatement premium the \$0.37M shortfall depends on the 10% cost of capital:
[at 8% the proposal clears](https://reinsurance.dev/applications/standalone-pricing/#how-the-answer-moves-with-the-assumptions).

## How the answer moves with the assumptions

The price in Steps 1 to 6 is for one structure and one set of assumptions. But the technical premium is conditional on a
cost of capital rate and a confidence level, both policy choices rather than facts about the risk.
It depends equally on the structure: the limit placed, which layers are in the program,
and whether the capital is held as a diversified portfolio or layer by layer. The explorer below
reprices the program with every one of those as an input, with or without C1's reinstatement
premium. It starts on the as-placed structure (all three layers, the diversified capital basis,
the site's $\alpha = 90\%$ and $r_c = 10\%$, reinstatement premium counted), so its initial display is the
\$32.37M technical premium from Step 5, with the \$32M proposal as the dashed line.

*[Interactive figure: Program pricing explorer. See the web page: https://reinsurance.dev/applications/standalone-pricing/]*

With reinstatement premium, whether the \$32M proposal clears depends mostly on the cost of capital. The C3 limit changes the structure: reduce it from \$50M and
the backstop's expected loss and TVaR both decrease, and the technical premium with them. The proposed
\$32M is unchanged, since it is the broker's quote for the placed structure, so this is a sensitivity, not a re-quote. The capital basis determines the diversification benefit: held layer by layer rather than as one portfolio,
the capital held against the program increases from \$54.71M to \$87.42M without reinstatement premium, and the \$32.72M
[diversification benefit](https://reinsurance.dev/glossary/#diversification-benefit) is zero when the layers are held apart.
At the placed structure, no cost of capital or confidence level the explorer offers makes the
proposal clear without reinstatement premium: it does not cover the program's expected loss.

The explorer shows one setting of the sliders at a time; to record the answer across a
range of settings, the sweep below fixes the two policy parameters, cost of capital and
confidence, to a grid and reprices the program at each point, in both views:

Python (`python/caldera_re/program_sensitivity.py`, runnable on the web page):

```python
"""How SunCoast's program technical premium moves with the pricing policy.

The technical premium is not a single number — it is a number *given* a cost of
capital rate and a tail confidence level, both of which are policy choices, not
facts about the risk. This sweep prices the program (held as one book) across a
grid of those two parameters and compares each result to the broker's proposed
$32M, so the assumptions are visible rather than buried. Each point is priced
twice: without C1's reinstatement premium, and with it (the program technical
premium at the proposal's split, reinstatement_pricing.program_view).

Capital is read off the program's own ceded distribution (the diversified view),
so these are the premiums the reinsurer holding all three layers would require.
"""

import pandas as pd

from caldera_re.aep import aep
from caldera_re.expected_loss import expected_loss
from caldera_re.program_ceded import suncoast_program
from caldera_re.program_pricing import MARKET
from caldera_re.reinstatement_pricing import program_view
from caldera_re.report import heading, table
from caldera_re.tvar import tvar
from caldera_re.utils import ep_index

N = 20
EPSILON = 0.05            # expense load as a fraction of EL
PROPOSED = sum(MARKET.values())   # total premium the broker proposed (C1 + C2 + C3)

def technical_premium(curve, alpha, r_c):
    """P = EL + epsilon*EL + (TVaR_alpha - EL) * r_c from an AEP curve."""
    el = expected_loss(curve)
    tv = tvar(curve, alpha)
    capital = tv - el
    return el + EPSILON * el + capital * r_c

if __name__ == '__main__':
    p = suncoast_program()

    heading("Program technical premium vs cost of capital (alpha = 90%)")
    rows = []
    for r_c in [0.06, 0.08, 0.10, 0.12]:
        without = program_view(p, False, 0.90, r_c)['technical']
        with_ = program_view(p, True, 0.90, r_c)['technical']
        rows.append((r_c, without, with_, with_ - PROPOSED))
    table(['r_c', 'Without', 'With reinstatement premium', 'Shortfall (with)'], rows,
          fmt=['{:.0%}', '{:.2f}M', '{:.2f}M', '{:+.2f}M'])

    print()
    heading("Program technical premium vs confidence level (r_c = 10%)")
    rows = []
    for alpha in [0.80, 0.90, 0.95]:
        without = program_view(p, False, alpha, 0.10)['technical']
        with_ = program_view(p, True, alpha, 0.10)['technical']
        rows.append((alpha, ep_index(N, alpha), without, with_, with_ - PROPOSED))
    table(['alpha', 'k', 'Without', 'With reinstatement premium', 'Shortfall (with)'],
          rows, fmt=['{:.0%}', '{}', '{:.2f}M', '{:.2f}M', '{:+.2f}M'])

    print("\nWithout C1's reinstatement premium the proposed $32M is short at every")
    print("point: it does not cover the program's expected loss. With it, the")
    print("shortfall is a few hundred thousand dollars at the site's 10% and turns")
    print("into a margin below it. At alpha = 95% the 20-trial tail is one trial.")
```

With reinstatement premium, whether the proposal clears depends on the cost-of-capital policy, not the loss data. At the site's 10%
the program is short by \$0.37M; it clears at any cost of capital below 9.0%, the program's own
return on capital. At 8% the technical premium is \$31.60M, below the proposed \$32M, and at 6% it is \$30.82M. AM Best's cost-of-equity range (see the Consider callout in Step 6) spans both
results: the proposal clears at the 7.5% CAPM figure (\$31.40M) and is \$2.65M short at 16.0% (\$34.65M).
The two blended figures are inside the sweep's range, and the proposal clears at both: the technical premium is
\$31.46M at 7.66% and \$31.08M at the 6.66% first-quarter-2025 figure. Changing the confidence level changes
the technical premium far less: \$31.86M at 80%, where the proposal clears, and \$32.78M at 95%.
Without reinstatement premium the proposal is short at every point of both sweeps. A technical premium is a framework for making assumptions explicit, not a single objective
price.

:::caution[Watch Out]
The $\alpha = 95\%$ row is unreliable. With only 20 trials the 95% tail is a single
trial, so TVaR, [Value at Risk (VaR)](https://reinsurance.dev/glossary/#var-value-at-risk), and the worst trial all equal \$92.3M: the
[resolution floor noted in the risk profile](https://reinsurance.dev/applications/risk-profiling/#step-3-the-subject-loss-profile).
Even TVaR(90%), which averages the worst two trials, is based on two trials. The pricing
method is sound at any trial count; the estimates here are only as reliable as a 20-trial sample
allows. For a production portfolio, peak-peril capital is computed from [10,000 to 1,000,000+ trials](https://reinsurance.dev/toolkit/trials/#demo-scale) so
the tail metric is not determined by one or two simulated storms. On the demo data's 1,000-trial tier
([demo scale](https://reinsurance.dev/toolkit/trials/#demo-scale)), the same quotes can be tested at longer return periods.
:::

More trials raise the cost of each repricing, and
[a program's inuring edge constrains the order of that work](https://reinsurance.dev/applications/standalone-pricing/#at-production-scale).

## At production scale

The [production scale](https://reinsurance.dev/applications/production-scale/) page covers the concerns of running a
pipeline on production data: row counts, loss-set bookkeeping, currency, reproducibility, and
the partition-by-trial structure of every pipeline in this chapter. A program adds
one constraint to that structure. The [inuring edge](https://reinsurance.dev/financial-modelling/programs/#evaluating-a-program-with-edges)
means C3 cannot be priced until C1 and C2 are evaluated: at scale this is a topological sort
over the program's dependency graph (cheap, because the graph is tiny) that orders the
genuinely expensive part, which is evaluating each layer across 10,000 to 1,000,000+ trials.
That part stays [embarrassingly parallel](https://reinsurance.dev/financial-modelling/dissection/#one-trial-at-a-time):
partition by trial, evaluate, reduce (once per stage).

```mermaid
graph LR
    subgraph S1[Stage 1 — no dependencies]
        C1[C1 · FL hurricane CatXoL]:::Contract
        C2[C2 · CA/AZ earthquake AggXoL]:::Contract
    end
    subgraph S2[Stage 2 — net of stage 1]
        C3[C3 · All-US AggXoL]:::Contract
    end
    C1 -- inures to --> C3
    C2 -- inures to --> C3

    classDef Contract fill:#BFDBF8,stroke:#4F84BA,stroke-width:1.5px,color:#2B2620
```

The order is between contracts, not between trials: within each stage every trial is still
evaluated on its own, so the partition holds. The price is a [pure function](https://reinsurance.dev/applications/production-scale/#reproducibility) of (subject loss,
program structure, pricing parameters): change the cost of capital and the whole portfolio is repriced
deterministically, to the cent.

## What carries forward

Standalone program pricing is five stages (**subject loss → program → ceded distribution →
metrics → technical premium**), and it answers a precise question: is this program adequately
priced on its own? For SunCoast's renewal the answer depends on counting C1's reinstatement
premium. Without it, the \$32M proposal does not cover the program's expected loss; with it, the
program's technical premium is \$32.37M, and the proposal is short by \$0.37M at the site's 10%
cost of capital, earning 9.0% on capital that costs 10%. The pricing also measured the \$32.72M of
capital diversification that results from the layers not peaking together, and that only the holder
of the whole program benefits from.

This page measured diversification within one cedent's program,
between three layers. The same mechanism operates between SunCoast's program and every other
program on Caldera Re's portfolio: Japanese earthquake and European windstorm. Measuring it
across the whole portfolio, rather than asserting it, is the
[portfolio analytics story](https://reinsurance.dev/applications/portfolio-analytics/); pricing one new contract against that diversified
portfolio (what a new contract adds to the capital Caldera Re already holds) is
a marginal-pricing application *(planned)*, the goal of the rest of this Applications chapter.

[^frictional]: C. J. Exley and A. D. Smith, ["The Cost of Capital for Financial Firms"](https://www.actuaries.org.uk/system/files/documents/pdf/sm20060123.pdf), *British Actuarial Journal* 12(1), 2006, §6.3.1. Beyond the returns shareholders require, holding capital incurs cash-flow costs "collectively known as frictional costs, including double taxation and agency costs", the double taxation arising because interest on invested capital is taxed again at the corporate level. Michael Sherris, ["Risk Based Capital and Capital Allocation in Insurance"](https://wwwdocs.fce.unsw.edu.au/actuarial/research/papers/2007/SherrisConv07FinalPaper28June07final.pdf), Institute of Actuaries of Australia Biennial Convention, 2007, puts the same set as "agency costs, taxation and financial distress costs" and calls them deadweight losses. Robert C. Merton and André F. Perold, ["Theory of Risk Capital in Financial Firms"](https://doi.org/10.7312/chew14362-007), in Donald H. Chew (ed.), *Corporate Risk Management*, Columbia University Press, 2008, pp. 131 to 161, is the origin of the view.

[^systematic]: Exley and Smith, "The Cost of Capital for Financial Firms", §2.2.2. Under the capital asset pricing model "the systematic component, traditionally denoted by b, determines required expected returns. The other components of risk do not affect expected returns." George Zanjani, ["Pricing and capital allocation in catastrophe insurance"](https://firn.garven.com/readings/capital_allocation/Zanjani_2002JFE.pdf), *Journal of Financial Economics* 65(2), 2002, opens on the same tension: catastrophe reinsurance prices run "substantially in excess of expected losses", yet the risk "appears to be unrelated to financial asset returns and small relative to the capital market".

[^allocated-capital]: Rodney E. Kreps, ["Investment-Equivalent Reinsurance Pricing"](https://www.casact.org/sites/default/files/2021-02/pubs_proceed_proceed98_980101.pdf), *Proceedings of the Casualty Actuarial Society*, 1998. The assets a reinsurer allocates to a contract "arise from premium and from surplus, both of which are invested", so the paper treats the risk load as an opportunity cost represented "as a (partially offset) cost of liquidity" and sets the mean internal rate of return on those assets equal to the target yield. The offset is Kreps's; subtracting one rate from another is this site's reduction of it. Stephen P. D'Arcy, ["Capital Allocation in the Property-Liability Insurance Industry"](https://www.casact.org/sites/default/files/presentation/annual_2011_handouts_c13-darcypaper.pdf), Casualty Actuarial Society and The Actuarial Foundation, 2011, records that capital is allocated by line "both to calculate the expected amount of investment income and to determine the return on capital".

[^pricing-rip]: Anderson and Dong, "Pricing Catastrophe Reinsurance with Reinstatement Provisions Using a Catastrophe Model", eqs. (11)–(12) and (29)–(30). Sets the upfront premium plus the expected reinstatement premium equal to the expected layer loss, "ignoring expense and risk load charges", and shows that pricing from the average annual loss alone "is equivalent to assuming that there are unlimited free reinstatements". Ana J. Mata, Brian Fannin, and Mark A. Verheyen, ["Pricing Excess of Loss Treaty with Loss Sensitive Features: An Exposure Rating Approach"](https://www.actuaries.org.uk/system/files/documents/pdf/mata_0.pdf), GIRO Convention, Institute and Faculty of Actuaries, 2002, list reinstatements among the loss-sensitive features (Table 1) and estimate the expected reinstatement premium of a layer with two paid reinstatements at 100% from its aggregate loss distribution (Table 8).

[^loaded-rip]: Ana J. Mata, ["Pricing Excess of Loss Reinsurance with Reinstatements"](https://doi.org/10.2143/AST.30.2.504640), *ASTIN Bulletin* 30(2), 2000, §4. Following Sundt (1991), sets expected total premium income, the upfront premium plus the expected reinstatement premiums, equal to the expected loss for a pure premium. For a loaded premium it solves $E[T_K] = E[R_K] + \gamma\sqrt{\text{Var}(R_K - T_K)}$, so the load is set on the loss net of reinstatement income; the paper notes that such a solution need not exist. Jean-François Walhin and José Paris, ["Excess of Loss Reinsurance with Reinstatements: Premium Calculation and Ruin Probability of the Cedent"](https://doi.org/10.1007/BF02857112), *Blätter der DGVFM* 25(1), 2001, price the same net position under the proportional hazard transform, a result Mata's §4.3 reaches in closed form.
