Computing day-over-day log return for a matrix containing multiple time series

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Computing day-over-day log return for a matrix containing multiple time series

Anyi Zhu
Hi all,

 

Thanks a lot for anyone's help in advance.

 

I am trying to find a way to compute the day-to-day return (log return) from
a n x r matrix containing, n different stocks and price quotes over r days.
The time series of prices are already split by using unstack function.

 

For the result, I would like to see a n x (r-1) matrix, where by each entry
is the day-over-day return of each stock.

 

I tried to look into the zoo package, however it seems to give only the
plots but not the actual data.

 

Would apply function work in this case?

 

Thanks a lot!


        [[alternative HTML version deleted]]

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Computing day-over-day log return for a matrix containing multiple time series

sayan dasgupta
Hope this helps

a <- matrix(runif(150),nrow=3,ncol=50)
p2r <- function(x) 100 * diff(log(x))
 t(apply(a,1,function(x){p2r(c(x))}))




On Mon, Jun 7, 2010 at 8:41 AM, Anyi Zhu <[hidden email]> wrote:

> Hi all,
>
>
>
> Thanks a lot for anyone's help in advance.
>
>
>
> I am trying to find a way to compute the day-to-day return (log return)
> from
> a n x r matrix containing, n different stocks and price quotes over r days.
> The time series of prices are already split by using unstack function.
>

>
>
> For the result, I would like to see a n x (r-1) matrix, where by each entry
> is the day-over-day return of each stock.
>
>
>
> I tried to look into the zoo package, however it seems to give only the
>
plots but not the actual data.
>
take a look at
vignette("zoo-quickref",package="zoo")
It gives an exact solution to your problem



>
>
>
> Would apply function work in this case?
>
>
>
> Thanks a lot!
>
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] 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.
>

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Computing day-over-day log return for a matrix containing multiple time series

Patrick Burns
Actually the 'apply' is not necessary.

The original poster has stocks as rows
rather than the customary columns, so
the following should suffice:

retmat <- diff(log(t(pricemat)))

Questions that are specifically financial
should be sent to r-sig-finance (you need
to subscribe before posting).

On 07/06/2010 07:12, sayan dasgupta wrote:

> Hope this helps
>
> a<- matrix(runif(150),nrow=3,ncol=50)
> p2r<- function(x) 100 * diff(log(x))
>   t(apply(a,1,function(x){p2r(c(x))}))
>
>
>
>
> On Mon, Jun 7, 2010 at 8:41 AM, Anyi Zhu<[hidden email]>  wrote:
>
>> Hi all,
>>
>>
>>
>> Thanks a lot for anyone's help in advance.
>>
>>
>>
>> I am trying to find a way to compute the day-to-day return (log return)
>> from
>> a n x r matrix containing, n different stocks and price quotes over r days.
>> The time series of prices are already split by using unstack function.
>>
>
>>
>>
>> For the result, I would like to see a n x (r-1) matrix, where by each entry
>> is the day-over-day return of each stock.
>>
>>
>>
>> I tried to look into the zoo package, however it seems to give only the
>>
> plots but not the actual data.
>>
> take a look at
> vignette("zoo-quickref",package="zoo")
> It gives an exact solution to your problem
>
>
>
>>
>>
>>
>> Would apply function work in this case?
>>
>>
>>
>> Thanks a lot!
>>
>>
>>         [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> [hidden email] 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.
>>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] 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.
>

--
Patrick Burns
[hidden email]
http://www.burns-stat.com
(home of 'Some hints for the R beginner'
and 'The R Inferno')

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Computing day-over-day log return for a matrix containing multiple time series

Gabor Grothendieck
In reply to this post by Anyi Zhu
You can use diff.zoo like this:

library(zoo)
z <- zoo(matrix(1:24, 6))
z
diff(log(z))

# also try
diff(z, arith = FALSE)  - 1

See ?diff.zoo
and read the three zoo vignettes (pdf documents):
vignette(package = "zoo") # lists them
vignette("zoo")
etc.


On Sun, Jun 6, 2010 at 11:11 PM, Anyi Zhu <[hidden email]> wrote:

> Hi all,
>
>
>
> Thanks a lot for anyone's help in advance.
>
>
>
> I am trying to find a way to compute the day-to-day return (log return) from
> a n x r matrix containing, n different stocks and price quotes over r days.
> The time series of prices are already split by using unstack function.
>
>
>
> For the result, I would like to see a n x (r-1) matrix, where by each entry
> is the day-over-day return of each stock.
>
>
>
> I tried to look into the zoo package, however it seems to give only the
> plots but not the actual data.
>
>
>
> Would apply function work in this case?
>
>
>
> Thanks a lot!
>
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] 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.
>

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Computing day-over-day log return for a matrix containing multiple time series

Anyi Zhu
In reply to this post by sayan dasgupta
Thanks a lot Sayan, I'll give it a try and let you know how it goes.

 

 

 

From: sayan dasgupta [mailto:[hidden email]]
Sent: June-07-10 2:13 AM
To: [hidden email]
Cc: [hidden email]
Subject: Re: [R] Computing day-over-day log return for a matrix containing
multiple time series

 

Hope this helps

a <- matrix(runif(150),nrow=3,ncol=50)
p2r <- function(x) 100 * diff(log(x))
 t(apply(a,1,function(x){p2r(c(x))}))





On Mon, Jun 7, 2010 at 8:41 AM, Anyi Zhu <[hidden email]> wrote:

Hi all,



Thanks a lot for anyone's help in advance.



I am trying to find a way to compute the day-to-day return (log return) from
a n x r matrix containing, n different stocks and price quotes over r days.
The time series of prices are already split by using unstack function.




For the result, I would like to see a n x (r-1) matrix, where by each entry
is the day-over-day return of each stock.



I tried to look into the zoo package, however it seems to give only the

plots but not the actual data.

take a look at
vignette("zoo-quickref",package="zoo")
It gives an exact solution to your problem

 




Would apply function work in this case?



Thanks a lot!


       [[alternative HTML version deleted]]

______________________________________________
[hidden email] 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.

 


        [[alternative HTML version deleted]]

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Computing day-over-day log return for a matrix containing multiple time series

Anyi Zhu
In reply to this post by Gabor Grothendieck
I did not realise making a zoo object is that convenient. Thanks a lot
Gabor.


-----Original Message-----
From: Gabor Grothendieck [mailto:[hidden email]]
Sent: June-07-10 5:20 AM
To: [hidden email]
Cc: [hidden email]
Subject: Re: [R] Computing day-over-day log return for a matrix containing
multiple time series

You can use diff.zoo like this:

library(zoo)
z <- zoo(matrix(1:24, 6))
z
diff(log(z))

# also try
diff(z, arith = FALSE)  - 1

See ?diff.zoo
and read the three zoo vignettes (pdf documents):
vignette(package = "zoo") # lists them
vignette("zoo")
etc.


On Sun, Jun 6, 2010 at 11:11 PM, Anyi Zhu <[hidden email]> wrote:
> Hi all,
>
>
>
> Thanks a lot for anyone's help in advance.
>
>
>
> I am trying to find a way to compute the day-to-day return (log return)
from
> a n x r matrix containing, n different stocks and price quotes over r
days.
> The time series of prices are already split by using unstack function.
>
>
>
> For the result, I would like to see a n x (r-1) matrix, where by each
entry

> is the day-over-day return of each stock.
>
>
>
> I tried to look into the zoo package, however it seems to give only the
> plots but not the actual data.
>
>
>
> Would apply function work in this case?
>
>
>
> Thanks a lot!
>
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] 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.
>

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Computing day-over-day log return for a matrix containingmultiple time series

William Dunlap
In reply to this post by sayan dasgupta
> -----Original Message-----
> From: [hidden email]
> [mailto:[hidden email]] On Behalf Of sayan dasgupta
> Sent: Sunday, June 06, 2010 11:13 PM
> To: [hidden email]
> Cc: [hidden email]
> Subject: Re: [R] Computing day-over-day log return for a
> matrix containingmultiple time series
>
> Hope this helps
>
> a <- matrix(runif(150),nrow=3,ncol=50)
> p2r <- function(x) 100 * diff(log(x))
>  t(apply(a,1,function(x){p2r(c(x))}))

The following expressions compute the same
thing as that t(apply(...)) does:
  100 * (log(a[,-1]) - log(a[,-ncol(a)]))
or
  100 * log(a[,-1]/a[,-ncol(a)])

The [,-1] (all but the first column) and
[,-ncol(a)] (all but the last column) is
a way to work with lagged data.

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com

>
>
>
>
> On Mon, Jun 7, 2010 at 8:41 AM, Anyi Zhu <[hidden email]> wrote:
>
> > Hi all,
> >
> >
> >
> > Thanks a lot for anyone's help in advance.
> >
> >
> >
> > I am trying to find a way to compute the day-to-day return
> (log return)
> > from
> > a n x r matrix containing, n different stocks and price
> quotes over r days.
> > The time series of prices are already split by using
> unstack function.
> >
>
> >
> >
> > For the result, I would like to see a n x (r-1) matrix,
> where by each entry
> > is the day-over-day return of each stock.
> >
> >
> >
> > I tried to look into the zoo package, however it seems to
> give only the
> >
> plots but not the actual data.
> >
> take a look at
> vignette("zoo-quickref",package="zoo")
> It gives an exact solution to your problem
>
>
>
> >
> >
> >
> > Would apply function work in this case?
> >
> >
> >
> > Thanks a lot!
> >
> >
> >        [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > [hidden email] 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.
> >
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] 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.
>

______________________________________________
[hidden email] 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.