aboutsummaryrefslogtreecommitdiffstats
path: root/R
diff options
context:
space:
mode:
Diffstat (limited to 'R')
-rw-r--r--R/build_portfolios.R9
-rw-r--r--R/intex_deal_functions.R17
2 files changed, 6 insertions, 20 deletions
diff --git a/R/build_portfolios.R b/R/build_portfolios.R
index ab657bce..3c9b644a 100644
--- a/R/build_portfolios.R
+++ b/R/build_portfolios.R
@@ -12,13 +12,12 @@ source(file.path(root.dir, "code", "R", "intex_deal_functions.R"))
if(length(args) >=2){
dealnames <- args[2:length(args)]
- disablereinvflags <- rep(1, length(dealnames))
}else{
data <- read.table(file.path(root.dir, "scripts", "cusips_to_price.txt"))
dealnames <- dealnamefromcusip(data$V1)
uniqdealnames <- unique(dealnames)
uniqdealnames <- uniqdealnames[!is.na(uniqdealnames)]
- disablereinvflags <- data$V2[match(uniqdealnames, dealnames)]
+ reinvflags <- data$V2[match(uniqdealnames, dealnames)]
dealnames <- uniqdealnames
unlink(file.path(root.dir, "scripts", "cusips_to_price.txt"))
}
@@ -76,7 +75,7 @@ currdealnames <- dbGetQuery(dbCon, "select updatedate, dealname from latest_deal
i <- 1
for(deal.name in dealnames){
if(exists("reinvflags")){
- global.params$reinvflag <- !disablereinvflags[i]
+ global.params$reinvflag <- !reinvflags[i]
}
i <- i+1
if(is.na(deal.name)){
@@ -89,7 +88,7 @@ for(deal.name in dealnames){
deal.portfolio <- buildSC.portfolio(deal.name, deal.data, cusipdata, global.params, workdate)
A <- SPmatrix2(deal.portfolio$SC, deal.data, freq="3 months", workdate)
S <- 1 - sapply(deal.portfolio$SC, attr, "recov")
- deal.weights <- deal.portfolio$lossnotional/sum(deal.portfolio$lossnotional)
+ deal.weights <- deal.portfolio$notional/sum(deal.portfolio$notional)
deal.dates <- getdealschedule(deal.data)
deal.spread5y <- portfoliospread(deal.portfolio, hy19$maturity)
deal.spreadatmaturity <- portfoliospread(deal.portfolio)
@@ -133,4 +132,4 @@ for(deal.name in dealnames){
}
}
-write.table(data.frame(dealnames, as.integer(!disablereinvflags)), file = file.path(root.dir, "scripts", "scenarios.txt"), row.names = F, col.names = F)
+write.table(data.frame(dealnames, as.integer(!reinvflags)), file = file.path(root.dir, "scripts", "scenarios.txt"), row.names = F, col.names = F)
diff --git a/R/intex_deal_functions.R b/R/intex_deal_functions.R
index 83fa66e6..91a4960a 100644
--- a/R/intex_deal_functions.R
+++ b/R/intex_deal_functions.R
@@ -237,25 +237,13 @@ buildSC <- function(line.item, reinvdate, dealmaturity, global.params, startdate
if(is.na(line.item$price)){
## TODO
}
- if(line.item$maturity>=startdate){
- cs <- couponSchedule(line.item$nextpaydate, line.item$maturity,
- line.item$frequency, line.item$fixedorfloat,
- line.item$grosscoupon*0.01, line.item$spread*0.01)
- csflat <- couponSchedule(line.item$nextpaydate, line.item$maturity,
- line.item$frequency, "FLOAT", 0, 0)
- notional.at.risk <- line.item$currentbalance *(1+sum(cs$coupons-csflat$coupons))
- }else{
- notional.at.risk <- line.item$currentbalance
- }
- return( list(SC=SC, notional=line.item$currentbalance, notionalatrisk = notional.at.risk,
- price = line.item$price) )
+ return( list(SC=SC, notional=line.item$currentbalance, price = line.item$price) )
}
buildSC.portfolio <- function(dealname, dealdata, cusipdata, global.params, startdate = Sys.Date()) {
collatdata <- getcollateral(dealname, startdate)
index <- hash(cusipdata$cusip, 1:length(cusipdata$cusip))
notionalvec <- c()
- lossnotionalvec <- c()
SCvec <- c()
betavec <- c()
pricevec <- c()
@@ -293,14 +281,13 @@ buildSC.portfolio <- function(dealname, dealdata, cusipdata, global.params, star
}
temp <- buildSC(line.item, dealdata$"Reinv End Date", dealdata$maturity, global.params, startdate)
notionalvec <- c(notionalvec, temp$notional)
- lossnotionalvec <- c(lossnotionalvec, temp$notionalatrisk)
SCvec <- c(SCvec, temp$SC)
pricevec <- c(pricevec, temp$price)
betavec <- c(betavec, if(!is.na(line.item$iscdo) && line.item$iscdo) 1 else
global.params$defaultcorr)
}
return( list(notional=notionalvec, SC=SCvec, beta=betavec, price = pricevec,
- lossnotional=lossnotionalvec, cdopercentage = cdonotional/totalnotional,
+ cdopercentage = cdonotional/totalnotional,
stale = missingpricenotional/totalnotional, collatbalance = totalnotional) )
}