1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
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]
}
start.date <- as.Date("2000-01-01")
list.sp500 <- list()
for(i in 1:500){
ticker <- sp500.tickers[i]
#list.sp500.new[[ticker]] <- getBloombergData(conn,ticker,start.date)
list.sp500[[ticker]] <- bdh(conn,paste(ticker,"Equity"),c("PX_OPEN","PX_HIGH","PX_LOW","PX_LAST","VOLUME"),start.date,dates.as.row.names=F)
cat(paste("ticker", i, ": ",ticker),"\n")
}
test <- c()
for(i in 1:158){
test <- c(test,sum(abs(as.numeric(list.sp500.new[[i]][1,1:5])-as.numeric(list.sp500[[sp500.tickers[i]]][1,2:6]))))
}
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)
}
|