[R-SIG-Finance] quantmod::saveSymbols not working properly for me

Jeff Ryan jeff.a.ryan at gmail.com
Sun Jul 3 20:05:16 CEST 2011


quantmod is due for an update. I'll make sure this and other patches are incorporated. 

Thanks,
Jeff

Jeffrey Ryan    |    Founder    |    jeffrey.ryan at lemnica.com

www.lemnica.com

On Jul 3, 2011, at 11:59 AM, G See <gsee000 at gmail.com> wrote:

> 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 at 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 at 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]]
> 
> _______________________________________________
> R-SIG-Finance at 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.



More information about the R-SIG-Finance mailing list