inst/doc/credule.R

## ---- echo=FALSE--------------------------------------------------------------
library(credule)

percent <- function(x, digits = 2, format = "f", ...) {
  paste0(formatC(100 * x, format = format, digits = digits, ...), "%")
}


## ---- echo=FALSE--------------------------------------------------------------
t = c(1,3,5,7)
h = c(0.01,0.025,0.03,0.04)
spfun = function(i) {
  if (i==1) return(exp(-t[i]*h[i]))
  else return(spfun(i-1)*exp(-t[i]*h[i]))
}
sp = sapply(seq(1,4),spfun)
creditcurve_example = data.frame(tenor = as.character(t), hazardrate = percent(h), survprob = percent(sp))
knitr::kable(creditcurve_example, digits=4,caption = "Example of step-wise constant hazard rate function", row.names=FALSE)

## ---- fig.show='hold',echo=FALSE----------------------------------------------
barplot(h, names.arg = t, xlab="Time", ylab = "Non-Cummulative Hazard rate", main ="Hazard Rate (Non-Cum)")
plot(t, sp, type = "l", xlab="Time", ylab = "Survival Probability", main ="Survival Probability" )

## ---- echo=TRUE---------------------------------------------------------------
yieldcurveTenor = c(1.0,2.0,3.0,4.0,5.0,7.0,
                    10.0,15.0,20.0,30.0)
yieldcurveRate = c(0.002585,0.005034,0.008981,0.012954,0.016452,
                   0.021811,0.027007,0.031718,0.033834,0.035056)

## ---- fig.show='hold',echo=FALSE----------------------------------------------
yieldcurve = data.frame(t(percent(yieldcurveRate)))
colnames(yieldcurve) = yieldcurveTenor
knitr::kable(yieldcurve,caption = "USD yield curve (%) as of 27 May 2014")

## ---- echo=TRUE---------------------------------------------------------------
cdsTenor = c(1,2,3,4,5,7,10,15,20,30)
cdsSpread_PFE = c(0.0003,0.0009,0.0015,0.0021,0.0028,0.0043,0.0061,0.0063, 0.0068,0.0066)

## ---- fig.show='hold',echo=FALSE----------------------------------------------
cdsQuote_PFE = data.frame(t(cdsSpread_PFE*10000))
colnames(cdsQuote_PFE) = cdsTenor
knitr::kable(cdsQuote_PFE, digits=0,caption = "Pfizer (PFE) CDS spreads (basis points) as of 27 May 2014")

## ---- echo=TRUE---------------------------------------------------------------
cdsTenor = c(1,2,3,4,5,7,10,15,20,30)
cdsSpread_RSH = c(0.6405,0.5956,0.5511,0.5144,0.4894,0.4511,0.4156,0.3815,0.3657,0.3506)

## ---- fig.show='hold',echo=FALSE----------------------------------------------
cdsQuote_RSH = data.frame(t(cdsSpread_RSH*10000))
colnames(cdsQuote_RSH) = cdsTenor
knitr::kable(cdsQuote_RSH, digits=0,caption = "Radioshack (RSH) CDS spreads (basis points) as of 27 May 2014")

## ---- echo=FALSE--------------------------------------------------------------
# bootstrapping parameters
premiumFrequency = 4
defaultFrequency = 12
accruedPremium = TRUE
RR = 0.40

## ---- echo=TRUE---------------------------------------------------------------
creditcurve_RSH = bootstrapCDS(yieldcurveTenor, yieldcurveRate, 
                   cdsTenor, cdsSpread_RSH,
                   RR, premiumFrequency, defaultFrequency, accruedPremium)

## ---- echo=FALSE--------------------------------------------------------------
creditcurve_RSH_disp = creditcurve_RSH
creditcurve_RSH_disp$tenor = as.character(creditcurve_RSH_disp$tenor)
creditcurve_RSH_disp$hazrate = percent(creditcurve_RSH_disp$hazrate)
creditcurve_RSH_disp$survprob = percent(creditcurve_RSH_disp$survprob)
knitr::kable(creditcurve_RSH_disp, digits=4,caption = "RadioShack Corp Credit Curve", row.names=FALSE)

## ---- echo=FALSE, fig.height=3.5, fig.width=6---------------------------------
default.par = par()
par(mfrow=c(1,2),oma = c(0, 0, 2, 0))
barplot(creditcurve_RSH$hazrate, names.arg = creditcurve_RSH$tenor, xlab="Time", ylab = "Non-Cummulative Hazard rate", main ="Hazard Rate (Non-Cum)")
plot(creditcurve_RSH$tenor, creditcurve_RSH$survprob, type = "l", xlab="Time", ylab = "Survival Probability", main ="Survival Probability",ylim=c(0,1))
mtext("RadioShack Corp on 27-May-2014", outer = TRUE, cex = 1.5)
par = default.par

## ---- echo=TRUE---------------------------------------------------------------
creditcurve_PFE = bootstrapCDS(yieldcurveTenor, yieldcurveRate, 
                   cdsTenor, cdsSpread_PFE,
                   RR, premiumFrequency, defaultFrequency, accruedPremium)

## ---- echo=FALSE--------------------------------------------------------------
creditcurve_PFE_disp = creditcurve_PFE
creditcurve_PFE_disp$tenor = as.character(creditcurve_PFE_disp$tenor)
creditcurve_PFE_disp$hazrate = percent(creditcurve_PFE_disp$hazrate)
creditcurve_PFE_disp$survprob = percent(creditcurve_PFE_disp$survprob)
knitr::kable(creditcurve_PFE_disp, digits=4,caption = "Pfizer Inc Credit Curve", row.names=FALSE)

## ---- echo=FALSE, fig.height=3.5, fig.width=6---------------------------------
default.par = par()
par(mfrow=c(1,2),oma = c(0, 0, 2, 0))
barplot(creditcurve_PFE$hazrate, names.arg = creditcurve_PFE$tenor, xlab="Time", ylab = "Non-Cummulative Hazard rate", main ="Hazard Rate (Non-Cum)")
plot(creditcurve_PFE$tenor, creditcurve_PFE$survprob, type = "l", xlab="Time", ylab = "Survival Probability", main ="Survival Probability",ylim=c(0,1))
mtext("Pfizer Inc on 27-May-2014", outer = TRUE, cex = 1.5)
par = default.par

Try the credule package in your browser

Any scripts or data that you put into this service are public.

credule documentation built on July 8, 2020, 6:18 p.m.