Alex Rivera | Logout

How to calculate returns from a vector of prices?

Asked 2011-08-21T20:43:57.210
10

I have to calculate the return of a vector that gives a historical price series of a stock. The vector is of a form:

a <- c(10.25, 11.26, 14, 13.56) 

I need to calculate daily gain/loss (%) - i.e. what is the gain it has from 10.25 to 11.26 then from 11.26 to 14 etc.

Is there a function to calculate this automatically?

r
Edit
Report

2 Answers

28

Using your sample data, I think you mean the following:

a <- c(10.25, 11.26, 14, 13.56) 
> diff(a)/a[-length(a)]
[1]  0.09853659  0.24333925 -0.03142857

diff returns the vector of lagged differences and a[-length(a)] drops the last element of a.

answered 2011-08-21T21:10:36.277
0
ret<-diff(log(a))

This will give you the geometric returns - return follow a lognormal distribution (lower boundary is -100% since prices are always non-negative), so the ln(prices) follows a normal distribution (therefore you might see returns smaller than -1 or -100%).

For the "normal" range of returns, the difference between the [P(t+1)-P(t)]/P(t) and the LN(P(t+1)/P(t)) should be negligible. I hope this helps.

answered 2012-07-31T14:43:44.340

Your Answer