require(RBloomberg) source(getBloombergData.R) conn <- blpConnect(jvm.params = "-Xmx1024m") sp500.tickers <- as.character(bds(conn,"SPX Index","INDX_MEMBERS")[,1]) #remove exchange information for(i in 1:length(sp500.tickers)){ ticker <- sp500.tickers[i] sp500.tickers[i] <- strsplit(ticker," ")[[1]][1] } list.sp500 <- list() for(i in 1:10){ ticker <- sp500.tickers[i] list.sp500[[ticker]] <- getBloombergData(conn,ticker,start.date) } add <- read.table("sp500 add.csv",sep=",",fill=T,header=T,colClasses="character",quote="") add$date <- as.Date(add$date,format="%m/%d/%Y") memb <- function(index,add,date){ #return the list of index constituents toreverse <- add[add$date>=date,] current.index <- index for(i in 1:nrow(toreverse)){ if(toreverse$ticker.add[i]!=""){ current.index <- current.index[-match(toreverse$ticker.add[i],current.index)] } if(toreverse$ticker.del[i]!=""){ current.index <- sort(c(current.index,toreverse$ticker.del[i])) } } current.index } sp500.extended <- union(sp500.tickers,add$ticker.del) sp500.extended <- sp500.extended[-match("",sp500.extended)] extra.tickers <- setdiff(sp500.extended,sp500.tickers) list.extra <- list() for(i in 1:length(extra.tickers)){ ticker <- extra.tickers[i] list.extra[[ticker]] <- bdh(conn,paste(ticker,"Equity"),c("PX_OPEN","PX_HIGH","PX_LOW","PX_LAST"),as.Date("2000-01-01"),dates.as.row.names=F) }