aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--R/build_portfolios.R7
-rw-r--r--R/cds_functions_generic.R2
-rw-r--r--R/intex_deal_functions.R13
3 files changed, 10 insertions, 12 deletions
diff --git a/R/build_portfolios.R b/R/build_portfolios.R
index 32333c18..008d49a7 100644
--- a/R/build_portfolios.R
+++ b/R/build_portfolios.R
@@ -40,9 +40,9 @@ index <- creditIndex("hy25")
index <- set.index.desc(index, calibration.date)
global.params <- yaml.load_file(file.path(root.dir, "code", "etc", "params.yml"))
-cusipdata <- cusip.data()
+cusipdata <- cusip.data(workdate)
cashspread.discount <- 0
-currdealnames <- dbGetQuery(etdb, "select updatedate, dealname from latest_deal_model_numbers")
+currdealnames <- dbGetQuery(etdb, "select dealname from et_deal_model_numbers where updatedate=$1", list(workdate))
## build portfolio data
for(i in seq_along(dealnames)){
deal.name <- dealnames[i]
@@ -76,8 +76,7 @@ for(i in seq_along(dealnames)){
save(deal.portfolio, A, S, deal.weights, deal.spread5y,
deal.spreadatmaturity, deal.data, file=file.path(save.dir, paste0(deal.name, ".RData")))
cat(deal.name, "... done\n")
- dealupdatedate <- currdealnames$updatedate[currdealnames$dealname %in% deal.name]
- if(length(dealupdatedate) && dealupdatedate == workdate){
+ if(deal.name %in% currdealnames$dealname){
sqlstring <- paste0("UPDATE et_deal_model_numbers SET dealspread5y = $1,",
"dealspread = $2, cdopercentage = $3, stalepercentage= $4, ",
"marketvalue = $5",
diff --git a/R/cds_functions_generic.R b/R/cds_functions_generic.R
index 167b3d91..706072ee 100644
--- a/R/cds_functions_generic.R
+++ b/R/cds_functions_generic.R
@@ -816,7 +816,7 @@ SPmatrix2 <- function(portfolio, dealdata, freq="3 months", startdate=Sys.Date()
DP <- matrix(0, length(portfolio), length(dates))
PP <- matrix(0, length(portfolio), length(dates))
for(i in seq_along(portfolio)){
- temp <- DP2(portfolio[[i]]@curve, dates)
+ temp <- DP2(portfolio[[i]]@curve, dates, startdate)
DP[i,] <- temp$defaultprob
PP[i,] <- temp$prepayprob
colnames(DP) <- as.character(dates)
diff --git a/R/intex_deal_functions.R b/R/intex_deal_functions.R
index 663c9c40..e03706e1 100644
--- a/R/intex_deal_functions.R
+++ b/R/intex_deal_functions.R
@@ -50,13 +50,12 @@ listdealnames <- function(){
return( dbGetQuery(etdb, sqlstring))
}
-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 latest_cusip_universe a
-LEFT JOIN latest_clo_universe b ON a.dealname = b.dealname"
- data <- dbGetQuery(etdb, sqlstring)
+cusip.data <- function(workdate = Sys.Date()){
+ sqlstring <- "SELECT DISTINCT ON (cusip) cusip, maturity, coupon AS grosscoupon,
+spread, CASE WHEN floater_index like 'LIBOR%' THEN 'FLOAT' ELSE 'FIXED' END
+AS fixedorfloat, orig_moody FROM cusip_universe JOIN deal_indicative USING (dealname)
+WHERE updatedate<=$1 ORDER BY cusip, updatedate"
+ data <- dbGetQuery(etdb, sqlstring, workdate)
data <- data.table(data)
setkey(data, "cusip")
return( data )