These study notes are based on the Exam 9 syllabus reading CAT Bond and Other Risk-Linked Securities: State of Market and Recent Developments by J. D. Cummins. This reading explains various approaches to securitization of catastrophe risk, and discusses reasons for growth in the market. This reading corresponds to learning objective C5 on the syllabus.
easypackages::packages("dplyr", "ggplot2")
Structure: The sponsor forms a single purpose reinsurer who issues bonds to investors. Proceeds are invested in safe short-term securities; the fixed return is swapped for a floating rate based on LIBOR to immunize against interest rate risk. If a specified catastrophic event occurs, the SPR releases funds to the sponsor to pay claims arising from the event. If the event does not occur, the principal is returned to investors.
Risk Premium: The bond pays LIBOR plus a risk premium. Margins tend to be lower than reinsurance, because they are uncorrelated with financial risk and are attractive to investors.
Tenor: Can lock in multi-year protection; the typical tenor is three years. Tend to be shorter than 5 years because market participants want to reprice the risk periodically.
Transaction costs: Cost of issuing can be spread over multiple years if it is a multi-year bond. Use of an SPR provides access to the tax and accounting benefits of traditional reinsurance.
Credit Risk: CAT bonds are fully collateralized, so there is no credit risk.
Principal Risk: Generally, principal is fully at risk. As a result, bond ratings are determined by the risk of the triggering event, not the risk of default. A bond may have a principal protected tranche in which the return of principal is guaranteed; the triggering event affects the interest and timing of repayment. (Example: the cat bond becomes a 10-year zero coupon bond.)
Triggers: The sidecar is liable to pay claims on the ceded reinsurance contracts when they occur
Tenor: Tend to be short-lived
Transaction costs: Can be formed quickly with minimal documentation and costs
Structure: a catastrophe equity put is an option to issue preferred stock at a pre-agreed price after a catastrophe, when the stock price is likely depressed. This will likely further dilute the value of the firm’s existing shares after a catastrohpe.
Risk Premium: insurer pays a premimum to the writer of the option.
Transaction costs: lower than CAT bonds because there is no need to set up a SPR
Credit Risk: not collateralized, so the insurer is exposed to counterparty credit risk
Principal Risk: no principal is provided
Structure: swaps are executed betwene two firms with exposure to different types of catastrophic risk, e.g. swapping California earthquake risk for Japanese earthquake risk. May use a reinsurer as an intermediary, or directly between the two swap partners.
Risk Premium: no exchange of money at the outset of the contract; only on the occurrence of one of the triggering events
Triggers: need to be carefully defined so that the expected losses under the two sides of the risk are equivalent; introduces model risk. Typically a parametric trigger with a specified payment amount is used; this amount may be on a sliding scale depending on the severity of the event.
Tenor: annual or multi-year
Transaction costs: low because no money changes hands until the occurrence of a triggering event
Credit Risk: both participants are exposed to counterparty credit risk. Could be mitigated by involving an investment bank or reinsurer, but this would increase transaction costs.
Principal Risk: not pre-funded
As an example, suppose we are considering a swap of earthquake risk for hurricane risk based on a parametric trigger. The insurers base the swap on 1000 simulations of two catastrophe models, with only 10 of each corresponding to catastrophic losses. Suppose the results of the simulation are as follows:
eq.simulation = data.frame(magnitude = c(8, 7, 7, 7, 6, 6, 6, 6, 6, 6), eq_cost = c(1000, 600, 500, 400, 450, 400, 300, 250, 200, 200))
eq.simulation
## magnitude eq_cost
## 1 8 1000
## 2 7 600
## 3 7 500
## 4 7 400
## 5 6 450
## 6 6 400
## 7 6 300
## 8 6 250
## 9 6 200
## 10 6 200
hurricane.simulation = data.frame(category = c(5, 5, 4, 4, 4, 4, 3, 3, 3, 3), hurricane_cost = c(600, 550, 400, 350, 350, 300, 200, 200, 150, 150))
hurricane.simulation
## category hurricane_cost
## 1 5 600
## 2 5 550
## 3 4 400
## 4 4 350
## 5 4 350
## 6 4 300
## 7 3 200
## 8 3 200
## 9 3 150
## 10 3 150
Suppose that the parametric trigger for earthquake is magnitude 7 or greater, and we want to determine a trigger for hurricane that produces the closest possible expected loss, and determine the balance that should be paid from one party to the other. The expected loss on the earthquake side of the swap is:
eq.simulation = eq.simulation %>% mutate(swap_triggered = magnitude >= 7)
eq.expected.swap = sum(eq.simulation$swap_triggered * eq.simulation$eq_cost) / 1000
print(paste0("The expected amount of earthquake cost transferred is ", eq.expected.swap))
## [1] "The expected amount of earthquake cost transferred is 2.5"
Determine the expected hurricane loss transferred at each of the possible parametric thresholds:
hurr.expected.swap = function(trigger_level) {
swap_triggered = hurricane.simulation$category >= trigger_level
return(sum(hurricane.simulation$hurricane_cost * swap_triggered) / 1000)
}
hurr.transferred = data.frame(trigger_level = 3:5)
hurr.transferred$hurr_expected_swap = apply(hurr.transferred, 1, function(y) hurr.expected.swap(y['trigger_level']))
hurr.transferred
## trigger_level hurr_expected_swap
## 1 3 3.25
## 2 4 2.55
## 3 5 1.15
A category 4 trigger for the hurricane transfer provides the closest expected transfer to the expected transfer of earthquake risk. In order to fully equalize the swap, the hurricane insurer should also pay 0.05 to the earthquake insurer.
Structure: similar to CAT bonds, but are dual-trigger. Based on both the insurer’s losses and industry losses, so it provides protection in scenarios where the reinsurance market is likely to harden. They are treated as reinsurance for regulatory purposes.
Triggers: The retention trigger is based on the incurred losses of the sponsor. The warranty trigger is based on an industry-wide loss index. Both triggers must be hit in order for the sponsor to receive a payoff. Under a binary trigger, when both triggers are hit the full amount of the contract pays off. Under a pro rata trigger, the payoff amount depends on how much the loss exceeds the warranty.
Tenor: typically one year
Instrument | Advantages | Disadvantages |
---|---|---|
CAT Bond | Fully collateralized | Moral hazard / basis risk (depending on trigger); higher costs than other securities |
Sidecars | Formed quickly with minimal costs | |
Cat-E-Puts | Lower transaction costs | Dilutes stock price after a catastrophe; credit risk |
Catastrophe Risk Swaps | Provides a new source of diversification | Exposure to model risk and credit risk |
Industry Loss Warranties | Avoid regulatory concerns about non-indemnity bonds |
Using simulated data for industry and insurer losses, the different trigger types can be compared. In these examples, assume that the insurer sets capital for catastropic risk at the 0.99 Tail Value At Risk (CTE). The triggers will be compared by assessing their impact on this capital requirement.
set.seed(123)
simulated.losses = data.frame(simulation = 1:1000)
simulated.losses = simulated.losses %>% mutate(industry_losses = exp(rnorm(nrow(simulated.losses), mean = 4, sd = 3)), insurer_losses = 0.25 * runif(nrow(simulated.losses)) * industry_losses) %>% arrange(-industry_losses)
head(simulated.losses, 10)
## simulation industry_losses insurer_losses
## 1 164 911748.81 160437.476
## 2 747 175455.72 3411.381
## 3 842 171884.32 17442.319
## 4 911 123790.92 21508.937
## 5 360 122317.38 12916.296
## 6 866 115737.31 22215.032
## 7 929 95224.60 15809.371
## 8 696 87045.08 21677.817
## 9 549 80071.88 9139.932
## 10 371 76904.53 16893.908
Absent any catastrophe protection, the capital requirement is the average of the ten largest losses for the insurer.
cte.baseline.data = simulated.losses %>% arrange(-insurer_losses) %>% mutate(loss_rank = rank(insurer_losses), cte_contribution = loss_rank >= 991)
head(cte.baseline.data, 15)
## simulation industry_losses insurer_losses loss_rank cte_contribution
## 1 164 911748.81 160437.476 1000 TRUE
## 2 866 115737.31 22215.032 999 TRUE
## 3 696 87045.08 21677.817 998 TRUE
## 4 911 123790.92 21508.937 997 TRUE
## 5 842 171884.32 17442.319 996 TRUE
## 6 371 76904.53 16893.908 995 TRUE
## 7 929 95224.60 15809.371 994 TRUE
## 8 360 122317.38 12916.296 993 TRUE
## 9 855 57675.09 11560.067 992 TRUE
## 10 981 55005.36 10708.976 991 TRUE
## 11 97 38638.29 9274.080 990 FALSE
## 12 549 80071.88 9139.932 989 FALSE
## 13 265 53063.09 9024.645 988 FALSE
## 14 201 39991.85 8199.974 987 FALSE
## 15 808 35747.93 8129.647 986 FALSE
baseline.CTE = sum((cte.baseline.data$insurer_losses * cte.baseline.data$cte_contribution)) / sum(cte.baseline.data$cte_contribution)
print(paste0("The baseline capital requirement is ", baseline.CTE))
## [1] "The baseline capital requirement is 31117.0200114945"
Suppose that the insurer is comparing CAT Bonds, with a payoff of 10,000 and three possible triggers:
An indemnity trigger at 10,000
An industry index trigger at 100,000
A binary trigger based on the two triggers above
Identify when each trigger would be met:
simulated.losses = simulated.losses %>% mutate(warranty_trigger_met = industry_losses >= 100000, retention_trigger_met = insurer_losses >= 10000, both_trigers_met = warranty_trigger_met & retention_trigger_met)
head(simulated.losses, 10)
## simulation industry_losses insurer_losses warranty_trigger_met
## 1 164 911748.81 160437.476 TRUE
## 2 747 175455.72 3411.381 TRUE
## 3 842 171884.32 17442.319 TRUE
## 4 911 123790.92 21508.937 TRUE
## 5 360 122317.38 12916.296 TRUE
## 6 866 115737.31 22215.032 TRUE
## 7 929 95224.60 15809.371 FALSE
## 8 696 87045.08 21677.817 FALSE
## 9 549 80071.88 9139.932 FALSE
## 10 371 76904.53 16893.908 FALSE
## retention_trigger_met both_trigers_met
## 1 TRUE TRUE
## 2 FALSE FALSE
## 3 TRUE TRUE
## 4 TRUE TRUE
## 5 TRUE TRUE
## 6 TRUE TRUE
## 7 TRUE FALSE
## 8 TRUE FALSE
## 9 FALSE FALSE
## 10 TRUE FALSE
Under each of the three triggers, re-calculate the losses:
simulated.losses = simulated.losses %>% mutate(warranty_losses = insurer_losses - 10000 * warranty_trigger_met, retention_losses = insurer_losses - 10000 * retention_trigger_met, binary_losses = insurer_losses - 10000 * both_trigers_met)
head(simulated.losses, 10)
## simulation industry_losses insurer_losses warranty_trigger_met
## 1 164 911748.81 160437.476 TRUE
## 2 747 175455.72 3411.381 TRUE
## 3 842 171884.32 17442.319 TRUE
## 4 911 123790.92 21508.937 TRUE
## 5 360 122317.38 12916.296 TRUE
## 6 866 115737.31 22215.032 TRUE
## 7 929 95224.60 15809.371 FALSE
## 8 696 87045.08 21677.817 FALSE
## 9 549 80071.88 9139.932 FALSE
## 10 371 76904.53 16893.908 FALSE
## retention_trigger_met both_trigers_met warranty_losses retention_losses
## 1 TRUE TRUE 150437.476 150437.476
## 2 FALSE FALSE -6588.619 3411.381
## 3 TRUE TRUE 7442.319 7442.319
## 4 TRUE TRUE 11508.937 11508.937
## 5 TRUE TRUE 2916.296 2916.296
## 6 TRUE TRUE 12215.032 12215.032
## 7 TRUE FALSE 15809.371 5809.371
## 8 TRUE FALSE 21677.817 11677.817
## 9 FALSE FALSE 9139.932 9139.932
## 10 TRUE FALSE 16893.908 6893.908
## binary_losses
## 1 150437.476
## 2 3411.381
## 3 7442.319
## 4 11508.937
## 5 2916.296
## 6 12215.032
## 7 15809.371
## 8 21677.817
## 9 9139.932
## 10 16893.908
Now, calculate the CTE for each of the three triggers, noting that the “top ten” simulations are different in each case.
cte.indemnity.data = simulated.losses %>% mutate(loss_rank = rank(retention_losses), cte_contribution = loss_rank >= 991)
indemnity.CTE = sum((cte.indemnity.data$retention_losses * cte.indemnity.data$cte_contribution)) / sum(cte.indemnity.data$cte_contribution)
print(paste0("The indemnity trigger capital requirement is ", indemnity.CTE, ", an improvement of ", baseline.CTE - indemnity.CTE, " over the baseline."))
## [1] "The indemnity trigger capital requirement is 23704.9860239407, an improvement of 7412.03398755372 over the baseline."
cte.warranty.data = simulated.losses %>% mutate(loss_rank = rank(warranty_losses), cte_contribution = loss_rank >= 991)
warranty.CTE = sum((cte.warranty.data$warranty_losses * cte.warranty.data$cte_contribution)) / sum(cte.warranty.data$cte_contribution)
print(paste0("The industry index trigger capital requirement is ", warranty.CTE, ", an improvement of ", baseline.CTE - warranty.CTE, " over the baseline."))
## [1] "The industry index trigger capital requirement is 26922.5597095798, an improvement of 4194.46030191464 over the baseline."
cte.binary.data = simulated.losses %>% mutate(loss_rank = rank(binary_losses), cte_contribution = loss_rank >= 991)
binary.CTE = sum((cte.binary.data$binary_losses * cte.binary.data$cte_contribution)) / sum(cte.binary.data$cte_contribution)
print(paste0("The binary trigger capital requirement is ", binary.CTE, ", an improvement of ", baseline.CTE - warranty.CTE, " over the baseline."))
## [1] "The binary trigger capital requirement is 26922.5597095798, an improvement of 4194.46030191464 over the baseline."
The last two two produce the same result in this simulation, but this is a coincidece caused by the fact that the simulations on which the two triggers differ don’t contribute to the CTE. They do have an impact on the overall expected result:
print(paste0("Under a binary trigger, the expected loss is ", mean(simulated.losses$binary_losses)))
## [1] "Under a binary trigger, the expected loss is 449.405869262025"
print(paste0("Under an industry index trigger, the expected loss is ", mean(simulated.losses$warranty_losses)))
## [1] "Under an industry index trigger, the expected loss is 439.405869262025"
CAT bonds are generally issued to cover the highest layers of reinsurance protection; this is the layer where reinsurer credit is of greatest concern, and the reinsurance margins are highest.
Reinsurance typically only provides one year of protection, but CAT bonds can have longer tenors. As a result, they shelter the bond sponsor from cyclical price fluctuations in the reinsurance market.
Investors are interested in CAT bonds because they are a “pure play” in catastrophic risk; the use of an SPR isolates them from the general business and insolvency risks of the sponsor.
CAT bonds are attractive to investors because catastrophic events have low correlation with securities markets and provide diversification.
The securities market is significantly larger than the reinsurance market, and can more easily absorb extreme losses.
Securities markets are more efficient than insurance markets in determining prices.
Can be used by governments to pre-fund disaster relief efforts.
Transaction costs are generally lower for CAT Bonds than for traditional reinsurance.
CAT Bonds are particularly well-suited to high coverage layers and the retrocession market.
A key factor in the expansion of the CAT Bond market is that prices are competitive with comparable reinsurance.
The price metric for a CAT Bond is the spread, which is the ratio of risk premium to expected loss (as a percentage of principal).
For reinsurance, the rate on line (ROL) is the ratio of reinsurance premium to policy limit.
The loss on line (LOL) is the ratio of expected losses to the policy limit.
The analogous price metric for reinsurance is the ROL-to-LOL ratio, which is the ratio of premium to expected loss. This is generally low for contracts with higher LOL because low-LOL contracts are likely covering the riskier upper tails.
Considerations when making comparisons between CAT Bonds and reinsurance include:
Reinsurance contracts for national primary insurers are a fairer comparison point than regional primary insurers. This is because large national and international firms are the most likely issuers of CAT Bonds, and national insurers tend to have higher ROL-to-LOL ratios than regional insurers.
The LOL of the reinsurance contracts should be comparable to the expected losses (as a percentage of principal) for the CAT Bond.
For regulatory reasons, CAT Bonds are typically issued offshore; onshore issuance might decrease transaction costs.
Reinsurer credit risk is ignored by regulators until there is a recoverable. Grading regulatory capital charges for reinsurance by reinsurer credit quality would boost the catastrophe securities market by recognizing the full collateralization provided by CAT Bonds.
Regulators could give primary insurers credit for locking in multi-year pricing by issuing catastrophe securities, compared to the annual renewal of reinsurance.
Offshore issuance generally avoids taxation concerns; the SPRs have been held to be not taxable for U.S. federal income tax purposes.
The tax status of bond premia is ambiguous, and is not addressed by the Tax Code or the IRS. They are generally being treated as dividends rather than interest.
The sponsors deduct premium payments on bonds for income tax purposes, e.g. treating bond interest the same way as reinsurance premiums.
CAT Bonds are not publicly traded, and securities regulations discourage the dissemination of information on CAT Bonds, limiting the ability of potential sponsors to conduct research.
Data on large catastrophe events is required in order to provide information on potential losses and facilitate the development of CAT loss index products.