aboutsummaryrefslogtreecommitdiffstats
path: root/R
diff options
context:
space:
mode:
Diffstat (limited to 'R')
-rw-r--r--R/cds_functions_generic.R2
-rw-r--r--R/intex_deal_functions.R19
2 files changed, 13 insertions, 8 deletions
diff --git a/R/cds_functions_generic.R b/R/cds_functions_generic.R
index 4b79372d..d404992f 100644
--- a/R/cds_functions_generic.R
+++ b/R/cds_functions_generic.R
@@ -1,3 +1,5 @@
+library("methods")
+
if(.Platform$OS.type == "unix"){
root.dir <- "/home/share/CorpCDOs/"
}else{
diff --git a/R/intex_deal_functions.R b/R/intex_deal_functions.R
index a7889d4d..bf3ba927 100644
--- a/R/intex_deal_functions.R
+++ b/R/intex_deal_functions.R
@@ -1,12 +1,14 @@
library(RQuantLib)
library(statmod)
-library(hash)
+library(data.table)
+options(datatable.nomatch=0)
if(.Platform$OS.type == "unix"){
root.dir <- "/home/share/CorpCDOs/"
}else{
root.dir <- "//WDSENTINEL/share/CorpCDOs/"
}
+
source(file.path(root.dir, "code", "R", "yieldCurve.R"))
source(file.path(root.dir, "code", "R", "cds_functions_generic.R"))
source(file.path(root.dir, "code", "R", "etdb.R"))
@@ -24,13 +26,11 @@ getdealdata <- function(dealnames, date){
sqlstring <- sprintf(sqlstring, date, paste(dealnames, collapse="','"))
}
data <- dbGetQuery(dbCon, sqlstring)
- data <- dbGetQuery(dbCon, sqlstring)
data <- data[match(dealnames, data$dealname),]
rownames(data) <- c()
return( data )
}
-
getcollateral <- function(dealname, date){
if(missing(date)){
sqlstring <- sprintf("select * from et_aggdealinfo('%s')", dealname)
@@ -50,8 +50,11 @@ cusip.data <- function(){
## TODO: make it date dependent
sqlstring <- "SELECT a.cusip, b.maturity, a.coupon AS grosscoupon, a.spread,
CASE WHEN a.floater_index like 'LIBOR%' THEN 'FLOAT' ELSE 'FIXED' END
-AS fixedorfloat, a.orig_moody from cusip_universe a LEFT JOIN latest_clo_universe b ON a.dealname = b.dealname"
+AS fixedorfloat, a.orig_moody from latest_cusip_universe a
+LEFT JOIN latest_clo_universe b ON a.dealname = b.dealname"
data <- dbGetQuery(dbCon, sqlstring)
+ data <- data.table(data)
+ setkey(data, "cusip")
return( data )
}
@@ -242,7 +245,6 @@ buildSC <- function(line.item, reinvdate, dealmaturity, global.params, startdate
buildSC.portfolio <- function(dealname, dealdata, cusipdata, global.params, startdate = Sys.Date()) {
collatdata <- getcollateral(dealname, startdate)
- index <- hash(cusipdata$cusip, seq.int(cusipdata$cusip))
notionalvec <- c()
SCvec <- c()
betavec <- c()
@@ -263,11 +265,12 @@ buildSC.portfolio <- function(dealname, dealdata, cusipdata, global.params, star
## overwrite the data with cusipdata info if not NA,
## because it should be higher quality
## e.g all cdos in acacl061 had wrong maturity
- if(has.key(line.item$cusip, index)){
+ newcusipdata <- cusipdata[line.item$cusip]
+ if(dim(newcusipdata)[1]>0){
line.item$iscdo <- TRUE
for(field in fields){
- if(!is.na(cusipdata[index[[line.item$cusip]],field])){
- line.item[field] <- cusipdata[index[[line.item$cusip]],field]
+ if(!is.na(newcusipdata$field)){
+ line.item[field] <- newcusipdata$field
}
}
}