An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-sig-finance/attachments/20110703/ab432f50/attachment.pl>
quantmod::saveSymbols not working properly for me
4 messages · Samo Pahor, G See, Jeff Ryan
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-sig-finance/attachments/20110703/d65b63a7/attachment.pl>
Take a look at attachSymbols in quantmod. It uses lazy loading and some additional R coolness to give you access to all symbols automatically. The example is using data sourced from yahoo on demand, but is easy enough to extend to files on disk as well. I'll try and post a nice example when I am not replying from my phone. Jeff Jeffrey Ryan | Founder | jeffrey.ryan at lemnica.com www.lemnica.com
On 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§orid=%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.
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§orid=%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.