aboutsummaryrefslogtreecommitdiffstats
path: root/cds_functions_generic.R
diff options
context:
space:
mode:
Diffstat (limited to 'cds_functions_generic.R')
-rw-r--r--cds_functions_generic.R11
1 files changed, 7 insertions, 4 deletions
diff --git a/cds_functions_generic.R b/cds_functions_generic.R
index 330920b2..9183b3e1 100644
--- a/cds_functions_generic.R
+++ b/cds_functions_generic.R
@@ -483,18 +483,21 @@ bondhazardrate.shaped <- function(collateral, shape, R=0.4, alpha=0.25, beta=15)
indexpv <- function(portfolio, index, epsilon=0){
## computes the intrinsic index pv of a portfolio of cds
- r <- rep(0, length(portfolio))
+ pl <- rep(0, length(portfolio))
+ cl <- rep(0, length(portfolio))
cs <- couponSchedule(nextIMMDate(today()), index$maturity, "Q", "FIXED", index$coupon)
for(i in 1:length(portfolio)){
if(epsilon!=0){
tweakedcurve <- portfolio[[i]]@curve
tweakedcurve@hazardrates <- tweakedcurve@hazardrates * (1 + epsilon)
- r[i] <- cdspv(cs, tweakedcurve, portfolio[[i]]@recovery)
+ cl[i] <- couponleg(cs, tweakedcurve, portfolio[[i]]@recovery)
+ pl[i] <- defaultleg(cs, tweakedcurve, portfolio[[i]]@recovery)
}else{
- r[i] <- cdspv(cs, portfolio[[i]]@curve, portfolio[[i]]@recovery)
+ cl[i] <- couponleg(cs, portfolio[[i]]@curve, portfolio[[i]]@recovery)
+ pl[i] <- defaultleg(cs, portfolio[[i]]@curve, portfolio[[i]]@recovery)
}
}
- return( 1+mean(r) )
+ return( list(cl=mean(cl), pl=mean(pl), bp=1+pl-cl))
}
indexduration <- function(portfolio, index){