diff options
Diffstat (limited to 'R/build_scenarios.R')
| -rw-r--r-- | R/build_scenarios.R | 80 |
1 files changed, 0 insertions, 80 deletions
diff --git a/R/build_scenarios.R b/R/build_scenarios.R index 92364c17..be450ef2 100644 --- a/R/build_scenarios.R +++ b/R/build_scenarios.R @@ -63,47 +63,6 @@ convert.reinvtoperct <- function(d){ return(c(0.85, 0.15))
}
-compute.reinvprices <- function(df, forwards, cdrmonthly, recoverymonthly,
- spread, fixedrate, rollingmat, reinvlag){
- ## reinvlag is in months
- ## rollingmat is in months
- floatbp <- c()
- fixedbp <- c()
- for(i in 0:(ncol(cdrmonthly)-1)){
- index <- (i+1):min(i+rollingmat, ncol(cdrmonthly))
- indexlagged <- index + reinvlag
- if(i==0){
- currdf <- df[index]
- laggeddf <- df[indexlagged]
- }else{
- currdf <- df[index]/df[i]
- laggeddf <- df[indexlagged]/df[i]
- }
- floatcoupon <- (forwards[index]+ spread)/12
- fixedcoupon <- fixedrate/12
- currbalance <- 1 - cdrmonthly[,index]/100/12
-
- if(i < ncol(cdrmonthly)-1){
- currbalance <- t(apply(currbalance, 1, cumprod))
- recov <- -t(apply(cbind(1, currbalance), 1, diff)) *
- recoverymonthly[,index]
- fixedcl <- cbind(1,currbalance[,-length(index)])%*%(fixedcoupon*currdf)
- floatcl <- cbind(1,currbalance[,-length(index)])%*%(floatcoupon*currdf)
- pl <- currbalance[,dim(currbalance)[2]]*currdf[length(currdf)] +
- recov %*% laggeddf
- }else{
- recov <- -t(apply(cbind(1, currbalance), 1, diff)) *
- recoverymonthly[,index]
- fixedcl <- as.numeric(currbalance*fixedcoupon*currdf)
- floatcl <- as.numeric(currbalance*floatcoupon*currdf)
- pl <- as.numeric(currbalance * currdf + recov * laggeddf)
- }
- floatbp <- cbind(floatbp, pl+floatcl)
- fixedbp <- cbind(fixedbp, pl+fixedcl)
- }
- return( list(loan=floatbp, bond=fixedbp) )
-}
-
calibration.date <- prevBusDay(workdate)
calibration <- read.table(file.path(root.dir, "Scenarios", "Calibration",
paste0("calibration-", calibration.date,".csv")), sep=",", header=T)
@@ -243,45 +202,6 @@ for(j in seq_along(dealnames)){ }
}
- ## reinvprices <- compute.reinvprices(df, forwards, cdrmonthly, recoverymonthly, reinvspread,
- ## reinvfixed, rollingmaturity, reinvlag)
-
- ## loanprices <- apply(reinvprices.tweak$loan, 2, mean)
- ## bondprices <- apply(reinvprices.tweak$bond, 2, mean)
-
- ## reinvassets <- convert.reinvtoperct(get.reinvassets(dealnames[j]))
- ## ## all amounts are in units of current collateral balance
- ## reinvdollar <- matrix(0, n.scenarios, length(deal.datesmonthly))
- ## maturingbalance <- matrix(0, n.scenarios, length(deal.datesmonthly))
- ## reinvdollar[,1] <- scenariosrmonthly[,1] + deal.data$"Principal Bal"/deal.data$"Curr Collat Bal"
- ## loanprices <- crossprod(reinvdollar[,1], reinvprices$loan[,1])/sum(reinvdollar[,1])
- ## bondprices <- c(crossprod(reinvdollar[,1], reinvprices$bond[,1])/sum(reinvdollar[,1]))
- ## maturingbalance[,min(1+rollingmaturity, length(deal.datesmonthly))] <-
- ## reinvdollar[,1]/crossprod(reinvassets, c(loanprices[1], bondprices[1]))
- ## reinvbalance <- matrix(0, n.scenarios, length(deal.datesmonthly))
- ## for(t in 2:dim(cdrmonthly)[2]){
- ## reinvdollar <- scenariosrmonthly[,t]-scenariosrmonthly[,t-1] +
- ## reinvbalance * cdrmonthly[,t]/100 * recoverymonthly[,t] *
- ## yearFrac(deal.datesmonthly[t-1], deal.datesmonthly[t])
- ## if(t==(dim(cdrmonthly)[2]-1)){
- ## reinvbalance[,t] <- maturingbalance[,length(deal.datesmonthly)]
- ## }else if(t==dim(cdrmonthly)[2]){
- ## reinvbalance[,t] <- 0
- ## }else{
- ## reinvbalance[,t] <- rowSums(maturingbalance[,(t+1):length(deal.datesmonthly)])
- ## }
- ## reinvdollar[,t] <- scenariosrmonthly[,t] - scenariosrmonthly[,t-1] +
- ## reinvbalance[,t] * cdrmonthly[,t]/100 * recoverymonthly[,t] *
- ## yearFrac(deal.datesmonthly[t-1], deal.datesmonthly[t])
- ## loanprices <- c(loanprices, crossprod(reinvdollar[,t], reinvprices$loan[,t])/sum(reinvdollar[,t]))
- ## bondprices <- c(bondprices, crossprod(reinvdollar[,t], reinvprices$bond[,t])/sum(reinvdollar[,t]))
- ## maturingbalance[,min(t+rollingmaturity, length(deal.datesmonthly))] <-
- ## reinvdollar[,t]/crossprod(reinvassets, c(loanprices[t], bondprices[t]))
- ## maturingbalance[,min(t+rollingmaturity, length(deal.datesmonthly))] <-
- ## maturingbalance[,min(t+rollingmaturity, length(deal.datesmonthly))] +
- ## reinvdollar[,t]/loanprices[t]
- ## }
-
save.dir <- file.path(root.dir, "Scenarios", paste("Intex curves", workdate, sep="_"), "csv")
if(!file.exists(save.dir)){
dir.create(save.dir, recursive = T)
|
