rm(list=ls()) #clear environment library(ggplot2) #for graph #Example Claim Distribution m<-500000 cv<-1.2 #Method of Moments sigma<-sqrt(log(1+cv^2)) mu<-log(m)-.5*(sigma^2) #c(mu,sigma) #to print values to screen x<-seq(0,5000000,10000) Fx<-dlnorm(x, mu, sigma) plot(x, Fx, type = "l", ylab = "density", main = "log-normal") #consider different inflation values inflation_values<-seq(0,0.2,0.01) mu_inflated<-mu+log(1+inflation_values) m_inflated_fgu<-exp(mu_inflated+.5*(sigma^2)) implied_inflation_fgu<-m_inflated_fgu/m-1 #loss to layer function cost_to_layer_ln <- function(limit,excess,mu,sigma) { limit_plus_excess_cost<-exp(mu + sigma * sigma / 2) limit_plus_excess_cost<-limit_plus_excess_cost * pnorm((log(limit+excess) - mu - sigma * sigma) / sigma) limit_plus_excess_cost<-limit_plus_excess_cost + (limit+excess) * (1 - pnorm((log(limit+excess) - mu) / sigma)) excess_cost<-exp(mu + sigma * sigma / 2) excess_cost<-excess_cost * pnorm((log(excess) - mu - sigma * sigma) / sigma) excess_cost<-excess_cost + (excess) * (1 - pnorm((log(excess) - mu) / sigma)) limit_plus_excess_cost-excess_cost } #1 xs 1 excess<-1000000 limit<-1000000 base_cost_1x1<-cost_to_layer_ln(limit,excess,mu,sigma) inflated_cost_1x1<-cost_to_layer_ln(limit,excess,mu_inflated,sigma) implied_inflation_1x1<-inflated_cost_1x1/base_cost_1x1-1 #3 xs 2 excess<-3000000 limit<-2000000 base_cost_3x2<-cost_to_layer_ln(limit,excess,mu,sigma) inflated_cost_3x2<-cost_to_layer_ln(limit,excess,mu_inflated,sigma) implied_inflation_3x2<-inflated_cost_3x2/base_cost_3x2-1 #now to plot combined_data<-data.frame(inflation_values,implied_inflation_fgu,implied_inflation_1x1,implied_inflation_3x2) ggplot() + geom_line(data = combined_data, aes(x = inflation_values, y = implied_inflation_fgu),color = "red") + geom_line(data = combined_data, aes(x = inflation_values, y = implied_inflation_1x1), color = "blue") + geom_line(data = combined_data, aes(x = inflation_values, y = implied_inflation_3x2), color = "green") + xlab('FGU Inflation') + scale_x_continuous(labels = scales::percent) + ylab('Implied Inflation') + scale_y_continuous(labels = scales::percent) + theme_classic()