diff options
Diffstat (limited to 'cds_functions_generic.R')
| -rw-r--r-- | cds_functions_generic.R | 11 |
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){
|
