SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
Pricing Mortality Swaps Using R
R in Insurance 2015
Mick Cooney
michael.cooney@applied.ai
29 June 2015
Mick Cooney michael.cooney@applied.ai Applied AI Ltd
Pricing Mortality Swaps Using R
Before I Begin...
https://xkcd.com/793/
Mick Cooney michael.cooney@applied.ai 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 michael.cooney@applied.ai 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 michael.cooney@applied.ai Applied AI Ltd
Pricing Mortality Swaps Using R
Interest Rate Swaps
Mick Cooney michael.cooney@applied.ai 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 swap
lifetime
Mick Cooney michael.cooney@applied.ai 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 michael.cooney@applied.ai 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.0
MUR
Multiplier
Mick Cooney michael.cooney@applied.ai Applied AI Ltd
Pricing Mortality Swaps Using R
MonteCarlo Methods
Calculating the NAV of a fund of correlated assets with a yearly
drawdown:
Mick Cooney michael.cooney@applied.ai Applied AI Ltd
Pricing Mortality Swaps Using R
Simulation Approach
Simulation example: 10 simulations of 5 years
1 – annuitant still alive
0 – 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 michael.cooney@applied.ai 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 michael.cooney@applied.ai 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.00
Percentile
NetCashflow/Loss
Mick Cooney michael.cooney@applied.ai 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.00
Percentile
NetCashflow/Loss
Mick Cooney michael.cooney@applied.ai 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 2007
http://www.nytimes.com/2007/08/26/magazine/
26neworleans-t.html?pagewanted=all
Consensus around 4× expected loss
Need to calculate tail averages
Mick Cooney michael.cooney@applied.ai 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 100
Tail Percentile
MeanLossAmount
Mick Cooney michael.cooney@applied.ai 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
ProbabilityDensity
Mick Cooney michael.cooney@applied.ai 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 20
Swap Time−in−Force (years)
95%MeanLossValue
Mick Cooney michael.cooney@applied.ai 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 michael.cooney@applied.ai 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 20
Year
MeanLossAverage
Mick Cooney michael.cooney@applied.ai Applied AI Ltd
Pricing Mortality Swaps Using R
Summary
R package: mcmortswap
https://bitbucket.org/appliedai/mcmortswap
Email: michael.cooney@applied.ai
Slides available on bitbucket:
https://bitbucket.org/appliedai/r_in_insurance_2015
Mick Cooney michael.cooney@applied.ai Applied AI Ltd
Pricing Mortality Swaps Using R

Más contenido relacionado

Similar a Pricing Mortality Swaps Using R

Captial bugting
Captial bugtingCaptial bugting
Captial bugting
3prem
 
This will provide the info about capital budgeting.ppt
This will provide the info about capital budgeting.pptThis will provide the info about capital budgeting.ppt
This will provide the info about capital budgeting.ppt
GaneshPaila
 

Similar a Pricing Mortality Swaps Using R (20)

Pricing techniques for profit maximization
Pricing techniques for profit maximizationPricing techniques for profit maximization
Pricing techniques for profit maximization
 
Two Methods for Modeling LTV with a Spreadsheet
Two Methods for Modeling LTV with a SpreadsheetTwo Methods for Modeling LTV with a Spreadsheet
Two Methods for Modeling LTV with a Spreadsheet
 
Chapter 9.Risk and Managerial Options in Capital Budgeting
Chapter 9.Risk and Managerial Options in Capital BudgetingChapter 9.Risk and Managerial Options in Capital Budgeting
Chapter 9.Risk and Managerial Options in Capital Budgeting
 
100006651.ppt
100006651.ppt100006651.ppt
100006651.ppt
 
project risk analysis
project risk analysisproject risk analysis
project risk analysis
 
Capital budgeting -2
Capital budgeting -2Capital budgeting -2
Capital budgeting -2
 
Cvp analysis
Cvp analysisCvp analysis
Cvp analysis
 
Chap. 7.pptx
Chap. 7.pptxChap. 7.pptx
Chap. 7.pptx
 
Wsdm17 value-at-risk-bidding
Wsdm17 value-at-risk-biddingWsdm17 value-at-risk-bidding
Wsdm17 value-at-risk-bidding
 
Gulf real estate properties sol
Gulf real estate properties solGulf real estate properties sol
Gulf real estate properties sol
 
CYDigital Pitch Deck for Crowdfunder
CYDigital Pitch Deck for CrowdfunderCYDigital Pitch Deck for Crowdfunder
CYDigital Pitch Deck for Crowdfunder
 
Customer Experience Mastery make every interaction customer worthy
Customer Experience Mastery make every interaction customer worthyCustomer Experience Mastery make every interaction customer worthy
Customer Experience Mastery make every interaction customer worthy
 
HyperDapp is the new internet protocol for Ecommerce 3.0 marketplace
HyperDapp is the new internet protocol for Ecommerce 3.0 marketplaceHyperDapp is the new internet protocol for Ecommerce 3.0 marketplace
HyperDapp is the new internet protocol for Ecommerce 3.0 marketplace
 
FX Reset: Risk Reduction Trade-offs & Hedging Costs in the Crisis Market
FX Reset: Risk Reduction Trade-offs & Hedging Costs in the Crisis MarketFX Reset: Risk Reduction Trade-offs & Hedging Costs in the Crisis Market
FX Reset: Risk Reduction Trade-offs & Hedging Costs in the Crisis Market
 
Captial bugting
Captial bugtingCaptial bugting
Captial bugting
 
Print Vision Presentation (August 2008)
Print Vision Presentation (August 2008)Print Vision Presentation (August 2008)
Print Vision Presentation (August 2008)
 
Financial Management Slides Ch 12
Financial Management Slides Ch 12Financial Management Slides Ch 12
Financial Management Slides Ch 12
 
Boeing Undergraduate Case Competition 2016
Boeing Undergraduate Case Competition 2016 Boeing Undergraduate Case Competition 2016
Boeing Undergraduate Case Competition 2016
 
Chapter09v2
Chapter09v2Chapter09v2
Chapter09v2
 
This will provide the info about capital budgeting.ppt
This will provide the info about capital budgeting.pptThis will provide the info about capital budgeting.ppt
This will provide the info about capital budgeting.ppt
 

Pricing Mortality Swaps Using R

  • 1. Pricing Mortality Swaps Using R R in Insurance 2015 Mick Cooney michael.cooney@applied.ai 29 June 2015 Mick Cooney michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 2. Before I Begin... https://xkcd.com/793/ Mick Cooney michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 3. 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 michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 4. 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 michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 5. Interest Rate Swaps Mick Cooney michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 6. 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 swap lifetime Mick Cooney michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 7. 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 michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 8. Calculating the MUR multiplier 0.0 2.5 5.0 7.5 10.0 0.0 2.5 5.0 7.5 10.0 MUR Multiplier Mick Cooney michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 9. MonteCarlo Methods Calculating the NAV of a fund of correlated assets with a yearly drawdown: Mick Cooney michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 10. Simulation Approach Simulation example: 10 simulations of 5 years 1 – annuitant still alive 0 – 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 michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 11. 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 michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 12. 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.00 Percentile NetCashflow/Loss Mick Cooney michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 13. 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.00 Percentile NetCashflow/Loss Mick Cooney michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 14. Pricing Tail Risk How to price the tail risk? Michael Lewis “In Nature’s Casino” – NYT Aug 2007 http://www.nytimes.com/2007/08/26/magazine/ 26neworleans-t.html?pagewanted=all Consensus around 4× expected loss Need to calculate tail averages Mick Cooney michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 15. Pricing Tail Risk $0 $1,000,000 $2,000,000 $3,000,000 $4,000,000 $5,000,000 75 80 85 90 95 100 Tail Percentile MeanLossAmount Mick Cooney michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 16. 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 ProbabilityDensity Mick Cooney michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 17. 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 20 Swap Time−in−Force (years) 95%MeanLossValue Mick Cooney michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 18. 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 michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 19. Time-in-Force Dependency (Ensemble) $0 $1,000,000 $2,000,000 $3,000,000 5 10 15 20 Year MeanLossAverage Mick Cooney michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R
  • 20. Summary R package: mcmortswap https://bitbucket.org/appliedai/mcmortswap Email: michael.cooney@applied.ai Slides available on bitbucket: https://bitbucket.org/appliedai/r_in_insurance_2015 Mick Cooney michael.cooney@applied.ai Applied AI Ltd Pricing Mortality Swaps Using R