Task
Create a matrix of returns given a matrix of prices.
Preparation
- price matrix of assets
You need to have your matrix of asset prices available. Assets should be in the columns and times in the rows (earliest first, most recent last).
Doing the example
pprobeData
package
To do the example, the pprobeData
package must be loaded in the session:
require(pprobeData)
If that package is not installed on your machine, see “Using R packages”.
Doing it
To get log returns given a price matrix, do:
xaLogRet <- diff(log(xassetPrices))
If instead you want simple returns, do:
xaSimpRet <- tail(xassetPrices, -1) / head(xassetPrices, -1) - 1
Explanation
The orientation of assets along columns and time along rows (and in order) is important. The computations will do the wrong thing if those conditions are not met.
The log
function returns an object like the input that contains the natural logarithm of each number. Given a matrix, the diff
function takes differences within each column.
The head
function returns the first rows of a matrix. When the second argument is -1, it returns all but the last row. Likewise when the second argument to tail
is -1, it returns all but the first row.
Both of these calls will work on a price vector as well as a matrix.
See also
To read in your prices, see “Read a comma-separated file into R” or “Read a tab-separated file into R”.
To use your return matrix to create a variance matrix, see “Returns to variance matrix”.
An explanation of simple versus log returns is in “A tale of two returns”.
Navigate
- Back to “Data Basics”
- Back to the top level of “Portfolio Probe Cookbook”