diff options
Diffstat (limited to 'R')
| -rw-r--r-- | R/cds_functions_generic.R | 2 | ||||
| -rw-r--r-- | R/intex_deal_functions.R | 19 |
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
}
}
}
|
