diff options
Diffstat (limited to 'R/new_index_series.R')
| -rw-r--r-- | R/new_index_series.R | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/R/new_index_series.R b/R/new_index_series.R new file mode 100644 index 00000000..d6854667 --- /dev/null +++ b/R/new_index_series.R @@ -0,0 +1,50 @@ +library(Rbbg) +library(RPostgreSQL) +drv <- dbDriver("PostgreSQL") +dbCon <- dbConnect(drv, dbname="serenitasdb", user="serenitas_user", password="Serenitas1", + host="debian") + +bbgConn <- blpConnect(host='192.168.1.108', port='8194') + +## This script helps adding the necessary data for a new index series +newbasketID <- function(indextype='IG', series, newid){ + sqlstr <- "INSERT INTO index_version VALUES(%s, '%s', %s, '%s', '%s', 100, 0)" + stmt <- sprintf(sqlstr, newid, indextype, series, 1, 100, 0, 'infinity') + dbSendQuery(dbCon, stmt) +} +##TODO: fill the index +indextype <- 'IG' +oldseries <- 22 +newseries <- 23 +newid <- 338 +newbasketID('IG', 23, 338) + +oldindex <- bds(bbgConn, sprintf("CDX %s CDSI S%s 5Y Corp", indextype, oldseries), "INDX_MEMBERS") +newindex <- bds(bbgConn, sprintf("CDX %s CDSI S%s 5Y Corp", indextype, newseries), "INDX_MEMBERS") +oldtickers <- oldindex[,5] +tickers <- newindex[,5] + +data <- bdp(bbgConn, paste(tickers, "Corp"), c("cds_company_id", "cds_restructuring_type", "cds_corp_tkr")) +olddata <- bdp(bbgConn, paste(oldtickers, "Corp"), c("cds_company_id", "cds_restructuring_type", "cds_corp_tkr")) +data <- cbind(tickers, data) +unique.tickers <- aggregate(data, by=list(data$cds_company_id), FUN=function(x)x[1])$tickers +cdscurves <- bds(bbgConn, paste(unique.tickers, "Curncy"), "CDS_CURVE_INFO") +curves <- aggregate(cdscurves[,2], by=list(cdscurves$ticker), FUN=function(x)x) +prep.data <- data.frame(Name=newindex[,1], company_id=data[,2], ticker=data[,4], + currency=newindex[,3], seniority=temp1[,4], doc_clause=data[,3]) +newrowids <- which(!data[,'cds_company_id'] %in% olddata[,'cds_company_id'], 'cds_company_id') +newids <- data[!data[,'cds_company_id'] %in% olddata[,'cds_company_id'], 'cds_company_id'] +sqlstr <- "INSERT INTO CDS_Issuers VALUES('%s', %s, '%s', '%s', '%s', '%s', '%s')" +with(prep.data, + for(i in newids){ + stmt <- sprintf(sqlstr, gsub("'","''", Name[i]), company_id[i], ticker[i], currency[i], + seniority[i], doc_clause[i], + paste0("{\"", paste(curves[i,2], collapse="\",\""), "\"}")) + dbSendQuery(dbCon, stmt) + }) + +##fill index_list column +sqlstr <- "UPDATE CDS_Issuers SET index_list=index_list||%s where company_id=%s" +for(id in prep.data[,2]){ + dbSendQuery(dbCon, sprintf(sqlstr, newid, id)) +} |
