aboutsummaryrefslogtreecommitdiffstats
path: root/R/cds_functions_generic.R
diff options
context:
space:
mode:
Diffstat (limited to 'R/cds_functions_generic.R')
-rw-r--r--R/cds_functions_generic.R19
1 files changed, 11 insertions, 8 deletions
diff --git a/R/cds_functions_generic.R b/R/cds_functions_generic.R
index 9696e766..22e1475a 100644
--- a/R/cds_functions_generic.R
+++ b/R/cds_functions_generic.R
@@ -542,20 +542,23 @@ portfoliospread <- function(portfolio, maturity){
## if maturity is missing, we use the intrinsic maturity for each curve
S <- 0
d <- rep(0, length(portfolio$SC))
+ ## Svec <- rep(0, length(portfolio$SC))
if(missing(maturity)){
maturityvec <- as.Date(sapply(portfolio$SC, creditcurve.maturity), origin="1970-01-01")
}else{
maturityvec <- rep(maturity, length(portfolio$SC))
}
for(i in 1:length(portfolio$SC)){
- if(length(portfolio$SC[[i]]@curve@hazardrates)==0){
- S <- S + 0
- d[i] <- 0
- }else{
- d[i] <- cdsduration(portfolio$SC[[i]]@curve, maturityvec[i])
- S <- S + d[i] * portfolio$notional[i] *
- cdsspread(portfolio$SC[[i]]@curve, maturityvec[i], portfolio$SC[[i]]@recovery)
- }
+ if(length(portfolio$SC[[i]]@curve@hazardrates)==0||maturityvec[i]<=portfolio$SC[[i]]@startdate){
+ S <- S + 0
+ d[i] <- 0
+ ## Svec[i] <- 0
+ }else{
+ d[i] <- cdsduration(portfolio$SC[[i]]@curve, maturityvec[i])
+ S <- S + d[i] * portfolio$notional[i] *
+ cdsspread(portfolio$SC[[i]]@curve, maturityvec[i], portfolio$SC[[i]]@recovery)
+ ## Svec[i] <- cdsspread(portfolio$SC[[i]]@curve, maturityvec[i], portfolio$SC[[i]]@recovery)
+ }
}
S <- S/crossprod(d, portfolio$notional)
return(S)