diff options
| -rw-r--r-- | tranche_functions.R | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/tranche_functions.R b/tranche_functions.R index f7a0752d..3a5b568c 100644 --- a/tranche_functions.R +++ b/tranche_functions.R @@ -277,12 +277,9 @@ tranche.cl <- function(L, R, cs, K1, K2, scaled=FALSE){ }else{
n <- nrow(L)
support <- seq(0, 1, length=n)
- size <- rep(0, length(cs$df))
- for(t in 1:length(cs$df)){
- size[t] <- (K2 - K1 - crossprod(trancheloss(support, K1, K2), L[,t]) -
- crossprod(trancherecov(support, K1, K2), R[,t]))
- }
- sizeadj <- 0.5 * (size + c(K2-K1, size[-length(size)]))
+ size <- K2 - K1 - crossprod(trancheloss(support, K1, K2), L) -
+ crossprod(trancherecov(support, K1, K2), R)
+ sizeadj <-as.numeric(0.5 * (size + c(K2-K1, size[-length(size)])))
if(scaled){
return( 1/(K2-K1) * crossprod(sizeadj * cs$coupons, cs$df) )
}else{
@@ -299,11 +296,8 @@ tranche.pl <- function(L, R, cs, K1, K2, scaled=FALSE){ }else{
n <- nrow(L)
support <- seq(0, 1, length=n)
- cf <- rep(0, length(cs$df))
- for(t in 1:length(cs$df)){
- cf[t] <- K2 - K1 - crossprod(trancheloss(support, K1, K2), L[,t])
- }
- cf <- c(K2-K1, cf)
+ cf <- K2 - K1 - crossprod(trancheloss(support, K1, K2), L)
+ cf <- c(K2 - K1, cf)
if(scaled){
return( 1/(K2-K1) * crossprod(diff(cf), cs$df))
}else{
|
