Hi guys

Thanks a lot - that did the trick!
Cheers
Rory

On 7/12/07, Gabor Grothendieck <ggrothendieck@gmail.com> wrote:
>
> chop(x) below is the same as head(x, -1)
>
> On 7/11/07, Brahm, David <David.Brahm@geodecapital.com> wrote:
> > The [-1] in your tapply formula is what associates each spread with the
> > PRIOR time difference.  If you want to associate it with the NEXT time
> > difference, just chop off the last element instead of the first.
> >
> > This function may be handy:
> > chop <- function(x) rev(rev(x)[-1])
> >
> > Then:
> > twp <- tapply( diff(pricedata$time), chop(pricedata$spread), sum )
> >
> > -- David Brahm (brahm@alum.mit.edu)
> >
> >
> >
> > -----Original Message-----
> > From: r-sig-finance-bounces@stat.math.ethz.ch
> > [mailto:r-sig-finance-bounces@stat.math.ethz.ch] On Behalf Of Rory
> > Winston
> > Sent: Wednesday, July 11, 2007 7:25 AM
> > To: r-sig-finance@stat.math.ethz.ch
> > Subject: [R-SIG-Finance] Simple TWAP Algorithm in R, Part II
> >
> > Hi all
> >
> > I recently posted a question regarding a simple time-averaged
> > calculation in
> > R. I have an input data file which is a historical list of prices and
> > their
> > time:
> >
> > Time                  Bid        Ask
> > 1183480907.042 1.36150 1.36160
> > 1183480919.045 1.36150 1.36170
> > 1183480923.044 1.36150 1.36160
> > ....
> >
> > After some data conversion and spread calculations, I use R to calculate
> > a
> > time-weighted average (based on a clever tapply() command graciously
> > supplied by Patrick Burns):
> >
> > twp <- tapply( diff(pricedata$time), pricedata$spread[-1], sum )
> >
> > I can then calculate the time-weighted average by dividing twp by
> > sum(diff(pricedata$time)).
> >
> > When I compared my numbers with someone else who had done the
> > calculations,
> > it became apparent that I need to make a slight modification to the
> > tapply()
> > command : the current logic basically computes a running sum as spreads
> > [S_n] += T_{n} - T_{n-1}, whereas the correct calculation is spreads
> > [S_{n-1}] += T_{n} - T_{n-1}. In other words, I need to tell tapply()
> > somehow to offset the spread vector by one. I have fiddled around with
> > various permutations of tapply() trying to get it to do this, but with
> > no
> > success so far. I guess I could rebase the vector of spreads before
> > calculating, but this seems like an unecessary hassle. Does anyone out
> > there
> > know how I can get tapply() (or a similar command) to do what I want?
> >
> > Thanks
> > Rory
> >
> >        [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-SIG-Finance@stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> > -- Subscriber-posting only.
> > -- If you want to post, subscribe first.
> >
> > _______________________________________________
> > R-SIG-Finance@stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> > -- Subscriber-posting only.
> > -- If you want to post, subscribe first.
> >
>

	[[alternative HTML version deleted]]

