pricing mortality swaps using r
TRANSCRIPT
Pricing Mortality Swaps Using RR in Insurance 2015
Mick [email protected]
29 June 2015
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
Before I Begin...
https://xkcd.com/793/
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
What is a Mortality Swap?
Seller provides protection against mortality risk
Portfolio of Life-Contingent Annuities
Converts the portfolio to Guaranteed Annuities
Only guaranteeing mortality-adjusted cashflows
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
Swap Annuity Portfolio
Random portfolio of annuities:
## customerid age MUR amount
## 1: C97326460 39 350 $100,000
## 2: C99971880 30 175 $80,000
## 3: C65134119 34 225 $50,000
## 4: C35313144 33 200 $90,000
## 5: C17550793 45 200 $30,000
## ---
## 196: C37440555 40 200 $50,000
## 197: C60347677 42 200 $60,000
## 198: C93383952 45 200 $70,000
## 199: C08447895 35 150 $60,000
## 200: C64003360 41 325 $90,000
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
Assumptions
Starting point — some generalisable for flexibility
1 No consideration of credit risk
2 Swap has fixed lifetime
3 All annuities have annual payments received at same time
4 Fixed cost of capital over lifetime
5 All annuitants have undergone underwriting evaluation
6 APV calculations require a specific lifetable
7 All annuities have a lifetime at least as long as the swaplifetime
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
Calculating the MUR multiplier
lifetable.dt <- fread("lifetable.csv");
A <- 100000;
qx <- lifetable.dt[age >= 30][age < 50]$qx;
r <- 0.05;
calculate.MUR.multiple.diff <- function(MUR, mult) {MUR * price.term.assurance(qx, A = A, r = r, P = 0) -
price.term.assurance(mult * qx, A = A, r = r, P = 0);
}
MUR.values <- seq(0, 10, by = 0.25);
### Determine mortality multiplier that best matches the premium multiplier
MUR.mult <- sapply(MUR.values, function(MUR) {optimize(function(mult) abs(calculate.MUR.multiple.diff(MUR, mult)), c(0, 20))$minimum;
});
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
Calculating the MUR multiplier
0.0
2.5
5.0
7.5
10.0
0.0 2.5 5.0 7.5 10.0MUR
Multip
lier
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
MonteCarlo Methods
Calculating the NAV of a fund of correlated assets with a yearlydrawdown:
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
Simulation Approach
Simulation example: 10 simulations of 5 years
1 – annuitant still alive0 – annuitant has deceased
## sim1 sim2 sim3 sim4 sim5 sim6 sim7 sim8 sim9 sim10
## year1 1 1 1 1 1 1 1 1 1 1
## year2 1 1 0 1 1 1 1 1 1 1
## year3 1 1 0 1 1 1 1 1 0 1
## year4 1 1 0 1 0 1 1 1 0 1
## year5 1 1 0 1 0 1 1 1 0 1
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
Running the Simulation
Run the calculation:
mortport.dt <- fread("mortswap_portfolio.csv");
lifetable.dt <- fread("lifetable.csv");
n.sim <- 1000;
mortswap.value.sim <- calculate.mortality.swap.price(mortport.dt,
lifetable = lifetable.dt,
hedge.apv.cashflows = TRUE,
interest.rate = 0.05,
years.in.force = 20,
n.sim = n.sim,
return.all.data = FALSE);
print(dollar_format(largest_with_cents = 1e8)(mortswap.value.sim[1:20]));
## [1] "$748,064.31" "$461,186.76" "$2,274,787.66" "$-1,251,047.55"
## [5] "$1,954,488.45" "$-1,251,047.55" "$-2,237,366.32" "$1,733,535.87"
## [9] "$1,707,822.63" "$-1,299,952.30" "$2,139,507.05" "$-757,888.16"
## [13] "$-309,255.02" "$-717,420.20" "$1,927,893.22" "$1,417,572.90"
## [17] "$1,571,751.87" "$-739,440.89" "$-1,990,786.63" "$475,010.30"
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
Viewing the Output
Simulated cashflows(excludes initial premium):
$−2,000,000
$0
$2,000,000
$4,000,000
$6,000,000
0.00 0.25 0.50 0.75 1.00Percentile
Net C
ashflow
/Loss
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
Viewing the Output
Simulated cashflows(excludes initial premium):
$−2,000,000
$0
$2,000,000
$4,000,000
$6,000,000
0.00 0.25 0.50 0.75 1.00Percentile
Net C
ashflow
/Loss
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
Pricing Tail Risk
How to price the tail risk?
Michael Lewis “In Nature’s Casino” – NYT Aug 2007http://www.nytimes.com/2007/08/26/magazine/
26neworleans-t.html?pagewanted=all
Consensus around 4× expected loss
Need to calculate tail averages
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
Pricing Tail Risk
$0
$1,000,000
$2,000,000
$3,000,000
$4,000,000
$5,000,000
75 80 85 90 95 100Tail Percentile
Mean
Loss
Amou
nt
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
Pricing Tail Risk
Ensemble of 1,000 valuations of 10,000 iterations:90% 95%
99% 99.5%
0e+00
2e−06
4e−06
6e−06
8e−06
0e+00
2e−06
4e−06
6e−06
0e+00
1e−06
2e−06
3e−06
0.0e+00
5.0e−07
1.0e−06
1.5e−06
2.0e−06
$3,500,000$3,600,000
$3,700,000$4,200,000
$4,300,000$4,400,000
$4,500,000
$5,600,000$5,800,000
$6,000,000$6,200,000
$6,000,000$6,250,000
$6,500,000$6,750,000
$7,000,000
Mean Loss Amount
Proba
bility D
ensity
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
Time-in-Force Dependency
Scaling of 95% mean with time-in-force of swap:
$0
$1,000,000
$2,000,000
$3,000,000
5 10 15 20Swap Time−in−Force (years)
95%
Mean
Loss
Value
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
Time-in-Force Dependency (Ensemble)
times.in.force <- 1:20;
n.sim <- 1000;
n.ens <- 10;
calculate.tif <- function(tif) {mortswap.value.sim <- calculate.mortality.swap.price(mortport.dt,
lifetable = lifetable.dt,
hedge.apv.cashflows = TRUE,
interest.rate = 0.05,
years.in.force = tif,
n.sim = n.sim,
return.all.data = FALSE);
iterval <- calculate.quantile.averages(mortswap.value.sim, 0.95);
}
tif.ensemble <- sapply(times.in.force, function(iter.tif) {replicate(n.ens, calculate.tif(iter.tif))
});
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
Time-in-Force Dependency (Ensemble)
$0
$1,000,000
$2,000,000
$3,000,000
5 10 15 20Year
Mean
Loss
Averag
e
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R
Summary
R package: mcmortswap
https://bitbucket.org/appliedai/mcmortswap
Email: [email protected]
Slides available on bitbucket:https://bitbucket.org/appliedai/r_in_insurance_2015
Mick Cooney [email protected] Applied AI Ltd
Pricing Mortality Swaps Using R