saveSymbols does not work because of a typo.  It uses "env" instead of
"envir" or "pos" in the call to "save."  I brought this up a while ago....I
assume Jeff will fix it in the next release?

For now, it's easy enough to just use "save" or write your own wrapper.


There's a package on R-Forge called twsInstrument that has the constituent
S&P 500 symbols.  It's more of a place to store some extra code, than it is
a package (i.e. it's alpha code, that will probably be moved to other
packages in the future).  This will define all the stocks for you, but there
are no guarantees those are still the right symbols -- I know a couple of
the stocks aren't in the index anymore.

library(twsInstrument)
define_stocks(x = SP500desc, use.IB=FALSE)

Then, you can list all the symbols with something like:

ls_stocks()

or download the daily prices with something like:

getSymbols(ls_stocks())

-Garrett

On Sun, Jul 3, 2011 at 11:30 AM, Samo Pahor <samo.pahor@gmail.com> wrote:

> Hello experts,
>
> I am trying to get rid of the database while managing my data. I am testing
> saving xts objects on disk in binanry form in .RData files. I encountered
> some strange issues.
>
> I am downloading data from yahoo (approx 600 symbols - I have omitted some
> below to make exmaple more clear) and when I use saveSymbols to save them
> to
> disk some of them are not saved properly although I can manipulate them
> using R. If I save particular symbol "manually" using save it works OK. I
> am
> using two R sessions to see if it works correctley.
>
> Reproducible code(session that is downloading data from yahoo and saving to
> disk):
> require(quantmod)
> dwhFolderRaw = "D:/Temp/symbols/yahoo_hist/raw/"
> #download from
>
> http://www.standardandpoors.com/prot/spf/docs/indices/SPUSA-500-USDUF--P-US-L--Constituents.xls
> SnP500ConstituentsFileName = "SPUSA-500-USDUF--P-US-L--Constituents.csv"
> urlSnP500 <- paste(eligibleFIsFolder, SnP500ConstituentsFileName, sep="")
> # Read in CSV from S&P website
> SnP500 <- read.csv(urlSnP500)
> symbols <- paste(trim(SnP500[,'Symbol']),collapse=";")
> # BRK needs to be "BRK_B" or "BRK-A", actually, change all "/" to "-"
> symbols <- gsub("/", "-", symbols)
> getSymbols(symbols, from='1900-01-01')
> showSymbols()
> saveSymbols(file.path=dwhFolderRaw)
> head(F)
> tail(F)
> > head(F)
>           F.Open F.High F.Low F.Close F.Volume F.Adjusted
> 1977-01-03  61.00  61.63 61.00   61.25   896300       0.50
> 1977-01-04  61.25  61.25 59.00   59.50  1504600       0.49
> 1977-01-05  59.50  59.88 58.50   58.75  1481600       0.48
> 1977-01-06  59.00  60.38 59.00   59.75  1670300       0.49
> 1977-01-07  59.75  60.50 59.63   60.13   940400       0.49
> 1977-01-10  60.13  60.63 60.13   60.63  1334000       0.50
> > tail(F)
>           F.Open F.High F.Low F.Close F.Volume F.Adjusted
> 2011-06-24  13.52  13.60 13.14   13.24 82707400      13.24
> 2011-06-27  13.35  13.55 13.09   13.46 49987600      13.46
> 2011-06-28  13.55  13.55 13.25   13.33 54013200      13.33
> 2011-06-29  13.41  13.51 13.32   13.42 54105500      13.42
> 2011-06-30  13.46  13.97 13.36   13.79 74076900      13.79
> 2011-07-01  13.92  14.13 13.73   14.02 66304800      14.02
>
> When I do this F (and some other symbols also) only has 1K size of a file
> on
> disk.
>
> Reproducible code with error (R session that tries to read/read data):
> require(quantmod)
> library(xts)
> getSymbols("BRF", src='RData', extension="RData",
> dir="D:/Temp/symbols/yahoo_hist/raw/")
> head(BRF)
> tail(BRF)
> getSymbols("F", src='RData', extension="RData",
> dir="D:/Temp/symbols/yahoo_hist/raw/")
> head(F)
> tail(F)
>
> > require(quantmod)
> Loading required package: quantmod
> Loading required package: Defaults
> Loading required package: xts
> Loading required package: zoo
> Loading required package: TTR
> > getSymbols("BRF", src='RData', extension="RData",
> dir="D:/Temp/symbols/yahoo_hist/raw/")
> [1] "BRF"
> >
> > head(BRF)
>           BRF.Open BRF.High BRF.Low BRF.Close BRF.Volume BRF.Adjusted
> 2009-05-14    23.68    24.49   23.68     24.45      31400        22.71
> 2009-05-15    24.67    24.84   24.25     24.35      28200        22.62
> 2009-05-18    25.00    26.85   24.85     25.89      53000        24.05
> 2009-05-19    25.99    26.89   25.69     26.31      97400        24.44
> 2009-05-20    26.93    27.29   26.10     26.20     133100        24.34
> 2009-05-21    25.92    25.93   25.30     25.50      71800        23.69
> > tail(BRF)
>           BRF.Open BRF.High BRF.Low BRF.Close BRF.Volume BRF.Adjusted
> 2011-06-24    55.36    59.33   54.89     54.99     136200        54.99
> 2011-06-27    55.05    55.62   54.86     55.40     324800        55.40
> 2011-06-28    55.50    56.47   55.36     56.33     218700        56.33
> 2011-06-29    56.38    56.71   56.11     56.17     472800        56.17
> 2011-06-30    56.61    57.14   56.39     56.74     360000        56.74
> 2011-07-01    57.10    57.76   56.83     57.58     269100        57.58
> > getSymbols("F", src='RData', extension="RData",
> dir="D:/Temp/symbols/yahoo_hist/raw")
> Error in fr[, -1] : incorrect number of dimensions
> >
> >
> > head(F)
> [1] FALSE
> > tail(F)
> [1] FALSE
> For example, F is not saved correctley. On disk it size is only 1 KB as
> output from saveSymbols(). When save from base is used everything is OK and
> it gets the size of 141 KB. Which is strange since saveSymbols is using
> save... Maybe it has something to do with outputing/saving big number of
> symbols/objects at once... What am I doing wrong?
>
> If I save F in fors R session using
> save(F, file=paste(dwhFolderRaw, "F.RData", sep=""))
>
> then F is saved to disk correctley (has size of 141K), in the second
> session
> everything works as it should:
> > getSymbols("F", src='RData', extension="RData",
> dir="D:/Temp/symbols/yahoo_hist/raw/")
> [1] "F"
> >
> > head(F)
>           F.Open F.High F.Low F.Close F.Volume F.Adjusted
> 1977-01-03  61.00  61.63 61.00   61.25   896300       0.50
> 1977-01-04  61.25  61.25 59.00   59.50  1504600       0.49
> 1977-01-05  59.50  59.88 58.50   58.75  1481600       0.48
> 1977-01-06  59.00  60.38 59.00   59.75  1670300       0.49
> 1977-01-07  59.75  60.50 59.63   60.13   940400       0.49
> 1977-01-10  60.13  60.63 60.13   60.63  1334000       0.50
> > tail(F)
>           F.Open F.High F.Low F.Close F.Volume F.Adjusted
> 2011-06-24  13.52  13.60 13.14   13.24 82707400      13.24
> 2011-06-27  13.35  13.55 13.09   13.46 49987600      13.46
> 2011-06-28  13.55  13.55 13.25   13.33 54013200      13.33
> 2011-06-29  13.41  13.51 13.32   13.42 54105500      13.42
> 2011-06-30  13.46  13.97 13.36   13.79 74076900      13.79
> 2011-07-01  13.92  14.13 13.73   14.02 66304800      14.02
>
> BTW: is there some sort of automatic way to get a list of
> constituents/symbols of S&P 500? I tried using code in the comments posted
> by Joshua Ulrich on this site http://www.maxdama.com/?p=148 and here
>
> http://www.mathworks.com/matlabcentral/fileexchange/23569-get-trading-data-from-yahoo-in-your-matlab-workpace-or-excel
> :
> require(quantmod)
> url <- "
>
> http://www2.standardandpoors.com/servlet/Satellite?pagename=spcom/page/download&sectorid=%20%3E%20%2700%27&itemname=%3E=%20%271%27&dt=07-MAY-2009&indexcode=500
> "
> # Read in CSV from S&P website
> x <- read.csv(url)
> # Pull the first 10 symbols from Yahoo
> symbols <- paste(x[1:10,'Symbol'],collapse=";")
> getSymbols(symbols, env=.GlobalEnv)
>
> It is not working for dates beyond 2010. Any alternative ways?
>
> Thanks in advance for any ideas what might be wrong.
>
> Kind regards,
> Samo.
>
>        [[alternative HTML version deleted]]
>
> _______________________________________________
> R-SIG-Finance@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only. If you want to post, subscribe first.
> -- Also note that this is not the r-help list where general R questions
> should go.
>

	[[alternative HTML version deleted]]

