diff options
| -rw-r--r-- | R/cds_functions_generic.R | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/R/cds_functions_generic.R b/R/cds_functions_generic.R index 51bb4e3c..72e52528 100644 --- a/R/cds_functions_generic.R +++ b/R/cds_functions_generic.R @@ -837,25 +837,21 @@ creditcurve.maturity <- function(creditcurve){ forward.cl <- function(index, exerciseDate){
aux <- function(creditCurve){
- cs <- cds.cs$cs[cds.cs$cs$unadj.dates<=index$maturity,]
- couponleg(cs, creditCurve@curve, startdate=exerciseDate)
+ couponleg(index$cs, creditCurve@curve, startdate=exerciseDate)
}
return( crossprod(index$issuerweights, unlist(lapply(index$portfolio, aux))) )
}
forward.prot <- function(index, exerciseDate){
- cs <- cds.cs$cs[cds.cs$cs$unadj.dates<=index$maturity,]
- prot <- numeric(length(index$portfolio))
- for(i in seq_along(index$portfolio)){
- creditCurve <- index$portfolio[[i]]
- prot[i] <- defaultleg(cs, creditCurve@curve, creditCurve@recovery, startdate=exerciseDate)
- }
+ prot <- unlist(lapply(index$portfolio, function(cc){
+ defaultleg(index$cs, cc@curve, cc@recovery, startdate=exerciseDate)
+ }))
return( crossprod(prot, index$issuerweights) )
}
defaultAdjustedForwardIndexPrice <- function(index, exerciseDate, fixedRate=0.05){
tes <- addBusDay(exerciseDate)
- df <- DiscountCurve(L3m$params, L3m$tsQuotes, yearFrac(tradedate, tes))$discounts
+ df <- DiscountCurve(L3m$params, L3m$tsQuotes, yearFrac(index$tradedate, tes))$discounts
price <- 1 - FEP(index, exerciseDate) + 1/df*(forward.cl(index, exerciseDate)*fixedRate -
forward.prot(index, exerciseDate)-cdsAccrued(exerciseDate, fixedRate))
return( price )
|
