On Sat, Jan 29, 2011 at 2:03 PM, john nicholas <jbnich...@sbcglobal.net> wrote: > All, > > I have been just recently working with zoo objects for trading systems. > > Can someone please help with these basic questions? > > Given a daily time series downloaded using get.hist.quote() from the tseries > package, ie...... > > startDate= as.Date("2000-01-01") > endDate= as.Date("2011-01-29") > frequency= 'd' > > s= get.hist.quote('IWF', start= startDate, end= endDate, > compression= 'd', quote= "AdjClose") > > tail(s,30) > AdjClose > 2010-12-16 56.85 > 2010-12-17 56.95 > 2010-12-20 57.00 > 2010-12-21 57.32 > 2010-12-22 57.37 > 2010-12-23 57.30 > 2010-12-27 57.30 > 2010-12-28 57.29 > 2010-12-29 57.43 > 2010-12-30 57.34 > 2010-12-31 57.26 > 2011-01-03 57.80 > 2011-01-04 57.55 > 2011-01-05 57.87 > 2011-01-06 57.89 > 2011-01-07 57.81 > 2011-01-10 57.88 > 2011-01-11 58.13 > 2011-01-12 58.60 > 2011-01-13 58.59 > 2011-01-14 58.94 > 2011-01-18 59.20 > 2011-01-19 58.64 > 2011-01-20 58.36 > 2011-01-21 58.33 > 2011-01-24 58.79 > 2011-01-25 58.84 > 2011-01-26 59.24 > 2011-01-27 59.36 > 2011-01-28 58.23 > > How can I extract a time series (a zoo object) containing the price of only > the > last trading day of each week, ie.: > > 2010-12-17 56.95 > 2010-12-23 57.30 > 2010-12-31 57.26 > 2011-01-07 57.81 > 2011-01-14 58.94 > 2011-01-21 58.33 > 2011-01-28 58.23 > > Similarly how can I extract a zoo object of only the last trading day of each > month, ie. > > 2010-12-31 57.26 > > Of course in most cases the last trading day is different from the last > calendar > day, and I would like to preserve the actual date of the last trading day. > > Finally, how can I extract a time series of the prices of only the days of > options expiration in a particular cycle, such as the third friday of Mar, > June, > Sept. and Dec.? > > Any help is greatly appreciated. >
Here are a few ways: 1. In get.hist.quote call use compression = "w" rather than compression = "d" . 2. use apply.weekly in xts where s is from your post: library(xts) apply.weekly(s, tail, 1) 3. Use the following where nextfri is a function that appears in vignette("zoo-quickref") and s is from your post: nextfri <- function(x) 7 * ceiling(as.numeric(x - 5 + 4)/7) + as.Date(5 - 4) # and this aggregate(s, nextfri, tail, 1) # or this s[!duplicated(nextfri(time(s)), fromLast = TRUE)] Note that the compression = "w" solution labels each week by using the Monday of that week. The apply.weekly and duplicated solutions label each week by the date of the last present data point in that week. The aggregate solution labels each point by the Friday of that week. You also might want to look at getSymbols in the quantmod package. -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.