aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--R/build_portfolios.R4
-rw-r--r--R/intex_deal_functions.R27
2 files changed, 15 insertions, 16 deletions
diff --git a/R/build_portfolios.R b/R/build_portfolios.R
index c19d475e..1309cb54 100644
--- a/R/build_portfolios.R
+++ b/R/build_portfolios.R
@@ -32,7 +32,7 @@ index <- set.index.desc(index, calibration.date)
global.params <- yaml.load_file(file.path(config.dir, "params.yml"),
handlers = list(expr = function(x) eval(parse(text = x))))
-cusipdata <- cusip.data(workdate)
+tranchedata <- tranche.data(workdate)
cashspread.discount <- 0
currdealnames <- etdb %>% tbl("et_deal_model_numbers") %>%
filter(updatedate == !!workdate) %>%
@@ -52,7 +52,7 @@ for(i in seq_along(dealnames)){
deal.data$maturity <= Sys.Date()+90){
next
}
- deal.portfolio <- buildSC.portfolio(deal.name, deal.data, cusipdata, global.params, workdate)
+ deal.portfolio <- buildSC.portfolio(deal.name, deal.data, tranchedata, global.params, workdate)
##deal.portfolio$SC <- tweakportfolio(deal.portfolio$SC, -cashspread.discount, multiplicative=FALSE)
mv <- crossprod(deal.portfolio$notional, deal.portfolio$price)/100
nullcurves <- unlist(lapply(deal.portfolio$SC, is.null))
diff --git a/R/intex_deal_functions.R b/R/intex_deal_functions.R
index 17750244..824e0710 100644
--- a/R/intex_deal_functions.R
+++ b/R/intex_deal_functions.R
@@ -47,16 +47,16 @@ listdealnames <- function() {
return( dbGetQuery(etdb, sqlstring))
}
-cusip.data <- function(workdate = Sys.Date()) {
- sqlstring <- "SELECT DISTINCT ON (cusip) cusip, maturity, coupon AS grosscoupon,
+tranche.data <- function(workdate = Sys.Date()) {
+ sqlstring <- "SELECT DISTINCT ON (figi) figi, maturity, coupon AS grosscoupon,
spread, CASE WHEN floater_index like 'LIBOR%' THEN 'FLOAT' ELSE 'FIXED' END
- AS fixedorfloat, orig_moody FROM cusip_universe JOIN clo_universe
- ON clo_universe.\"Latest Update\" = cusip_universe.updatedate
- AND clo_universe.dealname = cusip_universe.dealname
-WHERE updatedate<=$1 ORDER BY cusip, updatedate DESC"
+ AS fixedorfloat, orig_moody FROM tranche_universe JOIN clo_universe
+ ON clo_universe.\"Latest Update\" = tranche_universe.updatedate
+ AND clo_universe.dealname = tranche_universe.dealname
+WHERE updatedate<=$1 ORDER BY figi, updatedate DESC"
data <- dbGetQuery(etdb, sqlstring, workdate)
data <- data.table(data)
- setkey(data, "cusip")
+ setkey(data, "figi")
return( data )
}
@@ -80,10 +80,10 @@ recovery <- function(collateral) {
return(recovery)
}
-dealnamefromcusip <- function(cusips){
+dealnamefromfigi <- function(figiss){
## wrapper around the sql function
- sqlstr <- sprintf("select * from dealname_from_cusip('%s')",
- paste(cusips, collapse="','"))
+ sqlstr <- sprintf("select * from dealname_from_figi('%s')",
+ paste(figiss, collapse="','"))
r <- dbGetQuery(etdb, sqlstr)
return( r$p_dealname )
}
@@ -248,15 +248,14 @@ buildSC <- function(line.item, reinvdate, dealmaturity, global.params, startdate
return( list(SC=SC, notional=line.item$currentbalance, price = line.item$price, beta = beta) )
}
-buildSC.portfolio <- function(dealname, dealdata, cusipdata, global.params, startdate = Sys.Date()) {
+buildSC.portfolio <- function(dealname, dealdata, tranchedata, global.params, startdate = Sys.Date()) {
collatdata <- data.table(getcollateral(dealname, startdate))
- setkey(collatdata, "cusip")
+ setkey(collatdata, "figi")
## replace the cdo fields by bloomberg data
- collatdata[cusipdata,
+ collatdata[tranchedata,
`:=`(maturity=i.maturity, fixedorfloat=i.fixedorfloat,
spread=i.spread, grosscoupon=i.grosscoupon, orig_moody=i.orig_moody, iscdo=TRUE),
allow.cartesian=TRUE]
-
portfolio <- foreach(line.item = iter(collatdata, by='row')) %:% {
when( !is.na(line.item$maturity) && !is.na(line.item$currentbalance) &&
line.item$currentbalance > 1 &&