aboutsummaryrefslogtreecommitdiffstats
path: root/R
diff options
context:
space:
mode:
Diffstat (limited to 'R')
-rw-r--r--R/cds_functions_generic.R18
1 files changed, 16 insertions, 2 deletions
diff --git a/R/cds_functions_generic.R b/R/cds_functions_generic.R
index e6e5a654..8ad7e5c7 100644
--- a/R/cds_functions_generic.R
+++ b/R/cds_functions_generic.R
@@ -1,4 +1,4 @@
-source("cds_utils.R")
+source("//WDSENTINEL/share/CorpCDOs/code/R/cds_utils.R")
## TODO:
## - switch hazard rates and prepay curves to functions
@@ -530,10 +530,21 @@ indexspread <- function(portfolio, index){
## d[i] <- cdsduration(portfolio[[i]]@curve, index$maturity)
## S <- S + d[i] * cdsspread(portfolio[[i]]@curve, index$maturity, portfolio[[i]]@recovery)
## }
- S <- hy17$coupon-(indexpv(portfolio, index)-1)/indexduration(portfolio, index)
+ S <- index$coupon-(indexpv(portfolio, index)-1)/indexduration(portfolio, index)
return(S)
}
+portfoliospread <- function(portfolio, maturity){
+ ## computes the spread of a portfolio of survival curves and notional for a given maturity
+ S <- 0
+ d <- rep(0, length(portfolio))
+ for(i in 1:length(portfolio)){
+ d[i] <- cdsduration(portfolio$SC[[i]]@curve, maturity) * portfolio$notional[i]
+ S <- S + d[i] * cdsspread(portfolio$SC[[i]]@curve, index$maturity, portfolio$SC[[i]]@recovery)
+ }
+ S <- S/sum(d)
+ return(S)
+}
tweakcurves <- function(portfolio, index){
## computes the tweaking factor
epsilon <- 0
@@ -662,3 +673,6 @@ forwardportfolioprice <- function(portfolio, startdate, rollingmaturity, coupont
}
return(mean(r))
}
+
+portfoliospread <- function
+