aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--R/new_index_series.R130
1 files changed, 79 insertions, 51 deletions
diff --git a/R/new_index_series.R b/R/new_index_series.R
index 06f0c36e..d292a403 100644
--- a/R/new_index_series.R
+++ b/R/new_index_series.R
@@ -5,74 +5,102 @@ bbgConn <- blpConnect(host='192.168.1.108')
## This script helps adding the necessary data for a new index series
newbasketID <- function(indextype='IG', series, mat_5yr, coupon){
- sqlstr <- paste("INSERT INTO index_version(index, series, version, indexfactor, cumulativeloss, lastdate)",
- "VALUES($1, $2, $3, 100, 0, 'infinity')")
- r <- dbSendQuery(dbCon, sqlstr, params=list(indextype, series, 1))
- if(dbHasCompleted(r)){
- dbClearResult(r)
- }
+ sqlstr <- paste0("INSERT INTO index_version",
+ "(index, series, version, indexfactor, cumulativeloss, lastdate) ",
+ "VALUES($1, $2, $3, 100, 0, 'infinity') RETURNING basketid")
+ basketid <- as.integer(dbGetQuery(serenitasdb, sqlstr, params=list(indextype, series, 1))$basketid)
maturity <- mat_5yr + lubridate::years(c(-2, 0, 2 ,5))
tenor <- c("3yr", "5yr", "7yr", "10yr")
sqlstr <- "INSERT INTO index_maturity VALUES($1, $2, $3, $4, $5)"
for(i in seq_along(tenor)){
- r <- dbSendQuery(dbCon, sqlstr,
- params=list(indextype, series, tenor[i], maturity[i], coupon))
+ r <- dbSendQuery(serenitasdb, sqlstr,
+ params=list(indextype, series, tenor[i], maturity[i], coupon))
if(dbHasCompleted(r)){
dbClearResult(r)
}
}
+ return(basketid)
}
-##TODO: fill the index
-##indexname <- 'ITRX' ## or CDX
-indexname <- 'CDX'
-##indextype <- 'EUR' ## or IG or HY or EUR
-indextype <- "IG"
-newseries <- 16
-##newbasketID('EU', 22, as.Date("2019-12-20"))
-
-index <- bds(bbgConn, sprintf("%s %s CDSI S%s 5Y Corp", indexname, indextype, newseries),
- "INDX_MEMBERS")
-tickers <- index[,5]
-
-cds.fields <- c("cds_company_id", "cds_restructuring_type", "cds_corp_tkr", "sw_seniority")
-data <- bdp(bbgConn, paste(tickers, "Corp"), cds.fields)
-data <- cbind(tickers, data)
-prep.data <- data.frame(Name=index[,1], company_id=data$cds_company_id, ticker=data$cds_corp_tkr,
- currency=index[,3], seniority=data$sw_seniority,
- doc_clause=data$cds_restructuring_type, curve_ticker=data$tickers)
+newcurves <- function(indextype, series, basketid){
+ ## indextype is EUR, IG, HY or XOVER
+ if(indextype=="EU"){
+ indextype <- "EUR"
+ indexname <- 'ITRX'
+ }else if(indextype=="XO"){
+ indextype <- "XOVER"
+ indexname <- "ITRX"
+ }else{
+ indexname <- 'CDX'
+ }
+ index <- bds(bbgConn, sprintf("%s %s CDSI S%s 5Y Corp", indexname, indextype, series),
+ "INDX_MEMBERS")
+ tickers <- index[,5]
+ cds.fields <- c("cds_company_id", "cds_restructuring_type", "cds_corp_tkr", "sw_seniority")
+ df <- bdp(bbgConn, paste(tickers, "Corp"), cds.fields)
+ df <- cbind(tickers, df)
+ prep.data <- with(df, data.frame(Name=index[,1], company_id=cds_company_id,
+ ticker=cds_corp_tkr, currency=index[,3],
+ seniority=sw_seniority, doc_clause=cds_restructuring_type,
+ curve_ticker=tickers))
-all.companyids <- dbGetQuery(serenitasdb, "SELECT company_id FROM bbg_issuers")
-prep.data <- prep.data[!prep.data$company_id %in% all.companyids$company_id,]
+ all.companyids <- dbGetQuery(serenitasdb, "SELECT company_id FROM bbg_issuers")
+ prep.data <- prep.data[!prep.data$company_id %in% all.companyids$company_id,]
-cdscurves <- bds(bbgConn, paste(prep.data$curve_ticker, "Curncy"), "CDS_CURVE_INFO")
-curves <- aggregate(cdscurves[,2], by=list(cdscurves$ticker), FUN=function(x)x)
+ cdscurves <- data.frame()
+ for(ticker in prep.data$curve_ticker){
+ cdscurves <- rbind(cdscurves,
+ data.frame(ticker=ticker,
+ bds(bbgConn, paste(ticker, "Curncy"), "CDS_CURVE_INFO")))
+ }
+ prep.data$cds_curve <- aggregate(Ticker~ticker, data=cdscurves, FUN=sqlArray)$Ticker
+ levels(prep.data$doc_clause) <- gsub("-", " ", levels(prep.data$doc_clause))
+ sqlstr <- paste0("INSERT INTO bbg_issuers",
+ "(name, company_id, ticker, currency, seniority, doc_clause, cds_curve)",
+ "VALUES($1, $2, $3, $4, $5, $6, $7)")
-curves <- curves[!prep.data$company_id %in% all.companyids$company_id,]
-prep.data[prep.data$doc_clause=="Modified-Modified Restructurin","doc_clause"] <- "Modified Modified Restructurin"
-sqlstr <- paste("INSERT INTO bbg_issuers(name, company_id, ticker, currency, seniority, doc_clause, cds_curve)",
- "VALUES($1, $2, $3, $4, $5, $6, $7)")
-with(prep.data,
- for(i in 1:nrow(prep.data)){
- r <- dbSendQuery(serenitasdb, sqlstr, params = list(Name[i], company_id[i], ticker[i],
- currency[i], seniority[i], doc_clause[i],
- sqlArray(curves[i,2])))
- if(dbHasCompleted(r)){
+ with(prep.data,
+ for(i in 1:nrow(prep.data)){
+ r <- dbSendQuery(serenitasdb, sqlstr,
+ params = list(Name[i], company_id[i], ticker[i],
+ currency[i], seniority[i], doc_clause[i], cds_curve[i]))
+ if(dbHasCompleted(r)){
dbClearResult(r)
}
- })
+ })
-sqlstr <- "SELECT basketid FROM index_version WHERE index=$1 and series=$2"
-#basketid.list <- dbGetQuery(serenitasdb, sqlstr, params=list('HY', 16))
-##fill index_list column
-##basketid <- nameToBasketID("HY20", as.Date("2014-05-23"))
-sqlstr <- "UPDATE bbg_issuers SET index_list=index_list||$1::int where company_id=$2"
-basketid <- 391
-for(id in prep.data$company_id){
- r <- dbSendQuery(serenitasdb, sqlstr, params=list(basketid, id))
- if(dbHasCompleted(r)){
- dbClearResult(r)
+ sqlstr <- "UPDATE bbg_issuers SET index_list=index_list||$1::int where company_id=$2"
+ for(id in df$cds_company_id){
+ r <- dbSendQuery(serenitasdb, sqlstr, params=list(basketid, id))
+ if(dbHasCompleted(r)){
+ dbClearResult(r)
+ }
}
+ return(prep.data)
+}
+
+## company_id markit_ticker seniority coupon
+## 1 100104 APA SNRFOR 100
+## 2 109584 ENB SNRFOR 100
+## mappings <- data.frame(company_id=df$company_id,
+## markit_ticker=c("FIATCHR","ZIGGBON"),
+## seniority="SNRFOR",coupon=500)
+
+markit.mappings <- function(df){
+ sqlstr <- "INSERT INTO bbg_markit_mapping VALUES('infinity', $1, $2, $3, $4)"
+ with(df,
+ for(i in 1:nrow(df)){
+ r <- dbSendQuery(serenitasdb, sqlstr,
+ params=list(company_id[i],
+ markit_ticker[i],
+ seniority[i],
+ coupon[i]))
+ if(dbHasCompleted(r)){
+ dbClearResult(r)
+ }
+ })
}
+
+blpDisconnect(bbgConn)