From 146e3e1b1276c71d2467202b9aa85fbdc127d6eb Mon Sep 17 00:00:00 2001 From: Guillaume Horel Date: Sun, 9 Oct 2011 17:21:01 -0400 Subject: Progress on getting the rolled back sp500 index --- IndexChange_500.csv | 65 +++++++++++++++++++++++++++++------------------------ bandit.R | 45 ++++++++++++++++++++++++++----------- 2 files changed, 68 insertions(+), 42 deletions(-) diff --git a/IndexChange_500.csv b/IndexChange_500.csv index dbdb143..cc4354a 100644 --- a/IndexChange_500.csv +++ b/IndexChange_500.csv @@ -1,32 +1,39 @@ Company Additions Ticker.add Company Deletions Ticker.del Date - MOS NSM 09/23/11 - ACN MIR 07/05/11 - MPCwi RSH 06/30/11 - AMB PLD 06/02/11 - ANR MEE 06/01/11 - CMG NOVL 04/27/11 - BLK GENZ 04/01/11 - COV MFE 02/28/11 - JOYG AYE 02/25/11 - NE QLGC 01/14/11 - MMIwi MDP 01/03/11 - CVC KG 12/17/10 - FFIV NYT 12/17/10 - NFLX ODP 12/17/10 - NFX EK 12/17/10 - IR PTV 11/16/10 - TYC SII 08/26/10 - ACE MIL 07/14/10 - QEPwi STR 06/30/10 - KMX XTO 06/25/10 - CERN BJS 04/29/10 - OKE BDK 03/12/10 - DISCA PBG 02/26/10 - HP RX 02/26/10 - BRK.B BNI 02/12/10 - URBN ACS 02/05/10 - NRG JAVA 01/28/10 - PCLN SGP 11/05/09 +MOSAIC CO MOS NATIONAL SEMICONDUCTOR NSM 09/23/11 +ACCENTURE PLC ACN MARSHALL & ILSLEY CORP (WI) MIR 07/05/11 +MARATHON PETROLEUM CORP MPCwi RADIOSHACK CORP RSH 06/30/11 +AMB PROPERTY CORP AMB PROLOGIS PLD 06/02/11 +ALPHA NATURAL RESOURCES ANR MASSEY ENERGY CO MEE 06/01/11 +CHIPOTLE MEXICAN GRILL IN CMG NOVELL INC NOVL 04/27/11 +BLACKROCK INC BLK GENZYME CORP GENZ 04/01/11 +EDWARDS LIFESCIENCES CORP EW QWEST COMMUNICATIONS INTL INC Q 03/31/11 +COVIDIEN PLC COV MCAFEE INC MFE 02/28/11 +JOY GLOBAL INC JOYG ALLEGHENY ENERGY INC AYE 02/25/11 +NOBLE CORP NE QLOGIC CORP QLGC 01/14/11 +MOTOROLA MOBILITY HOLDING MMIwi MEREDITH CORP MDP 01/03/11 +CABLEVISION SYSTEMS CO A CVC KING PHARMACEUTICALS INC KG 12/17/10 +F5 NETWORKS INC FFIV NEW YORK TIMES CO A NYT 12/17/10 +NETFLIX INC NFLX OFFICE DEPOT INC ODP 12/17/10 +NEWFIELD EXPLORATION CO NFX EASTMAN KODAK CO EK 12/17/10 +INGERSOLL-RAND PLC IR PACTIV CORPORATION PTV 11/16/10 +TYCO INTL TYC SMITH INTL INC SII 08/26/10 +ACE LIMITED ACE MILLIPORE CORP MIL 07/14/10 +QEP RESOURCES INC QEPwi QUESTAR CORP STR 06/30/10 +CARMAX INC KMX XTO ENERGY INC XTO 06/25/10 +CERNER CORP CERN BJ SERVICES CO BJS 04/29/10 +ONEOK INC OKE BLACK & DECKER CORP BDK 03/12/10 +DISCOVERY COMMUNICATIONS DISCA PEPSI BOTTLING GROUP INC PBG 02/26/10 +HELMERICH & PAYNE INC HP IMS HEALTH INC RX 02/26/10 +BERKSHIRE HATHAWAY B BRK/B BURLINGTON NORTHERN SANTE FE BNI 02/12/10 +URBAN OUTFITTERS URBN AFFILIATED COMPUTER SERVICES ACS 02/05/10 +NRG ENERGY NRG SUN MICROSYSTEMS INC JAVA 01/28/10 +ROPER INDUSTRIES INC ROP ENSCO INTL INC ESV 12/22/09 +CLIFFS NATURAL RESOURCES CLF KB HOME KBH 12/18/08 +MEAD JOHNSON NUTRITION CO MJN MBIA INC MBI 12/18/08 +ROSS STORES INC ROST DYNEGY INC A DYN 12/18/08 +SAIC INC SAI CONVERGYS CORP CVG 12/18/08 +VISA INC V CIENA CORP CIEN 12/18/08 +PRICELINE.COM INC PCLN SCHERING-PLOUGH CORP SGP 11/05/09 First Solar Inc. FSLR Wyeth Corp. WYE 10/15/09 Airgas Inc. ARG Cooper Industries Ltd. CBE 09/08/09 CareFusion Corp. CFNwi The Manitowoc Company Inc. MTW 08/31/09 @@ -35,7 +42,7 @@ Red Hat Inc. RHT CIT Group Inc. CIT 07/24/09 Quanta Services Inc. PWR Ingersoll-Rand Company Ltd. IR 06/30/09 Western Digital WDC Embarq Corp. EQ 06/30/09 MetroPCS Communications Inc. PCS 06/29/09 - Tyco Electronics Ltd. 06/25/09 + Tyco Electronics Ltd. TEL 06/25/09 DeVry Inc. DV 06/08/09 FMC Technologies Inc. FTI Covidien Ltd. COV 06/04/09 General Motors Corp. GM 06/02/09 diff --git a/bandit.R b/bandit.R index 0d35758..1acb59a 100644 --- a/bandit.R +++ b/bandit.R @@ -31,7 +31,8 @@ N <- 1000000 W <- N for(day in 1:length(returns[,1])){ r <- as.vector(exp(returns.subset[day,])-1) - r[is.na(r)] <- 0 #NA means we don't know the vector that day, but next return will catch up + r[is.na(r)] <- 0 #NA means we don't have quotes that day, but next return + #will catch up dN <- N*crossprod(w,r) N <- N+dN W <- c(W,N) @@ -47,19 +48,37 @@ for(day in 1:length(returns[,1])){ W <- c(W,N*mean(R)) } -indexchange <- read.table("IndexChange_500.csv",sep="\t",header=T,quote="") +indexchange <- read.table("IndexChange_500.csv",sep="\t",header=T,quote="", + colClasses="character") #cleanup tickers attach(indexchange) -Ticker.add <- sub('/', '-',Ticker.add) -Ticker.add <- sub('.wi', '',Ticker.add,fixed=T) -Ticker.add <- sub('wi', '',Ticker.add) -Ticker.add <- sub('.', '-',Ticker.add,fixed=T) -Ticker.del <- sub('/', '-',Ticker.del) -Ticker.del <- sub('.wi', '',Ticker.del,fixed=T) -Ticker.del <- sub('wi', '',Ticker.del) -Ticker.del <- sub('.', '-',Ticker.del,fixed=T) -Date <- as.Date(Date,format="%m/%d/%y") -for( jour in Date){ - +indexchange$Ticker.add <<- sub('/', '-',indexchange$Ticker.add) +indexchange$Ticker.add <- sub('.wi', '',indexchange$Ticker.add,fixed=T) +indexchange$Ticker.add <- sub('wi', '',indexchange$Ticker.add) +indexchange$Ticker.add <- sub('.', '-',indexchange$Ticker.add,fixed=T) +indexchange$Ticker.del <- sub('/', '-',indexchange$Ticker.del) +indexchange$Ticker.del <- sub('.wi', '',indexchange$Ticker.del,fixed=T) +indexchange$Ticker.del <- sub('wi', '',indexchange$Ticker.del) +indexchange$Ticker.del <- sub('.', '-',indexchange$Ticker.del,fixed=T) + +#rollback sp500 changes +sp500.historic <- sp500 +for( i in 1:100){ + #Ticker.add empty means index is <500 for a while + if(indexchange$Ticker.add[i]!=""){ + if(!is.na(match(indexchange$Ticker.add[i],sp500.historic$ticker))){ + sp500.historic <- + sp500.historic[-match(indexchange$Ticker.add[i],sp500.historic$ticker),] + }else{ + cat(paste("ticker",indexchange$Ticker.add[i],"not found\n")) + } + } + #add ticker that was removed + if(indexchange$Ticker.del[i]!=""){ + sp500.historic <- rbind(sp500.historic, + c(indexchange$Company.Deletions[i], + indexchange$Ticker.del[i])) + } +} detach(indexchange) -- cgit v1.2.3-70-g09d2