Create a set of scenarios based on historical price movements.
- a matrix of the historical prices — times (in order) in the rows and assets in the columns.
pprobeSup package needs to be loaded into your R session:
pprobeSup is not installed on your machine, then you can get it with:
or alternatively with:
install.packages("pprobeSup", repos="http://www.portfolioprobe.com/R", type="source")
Doing the example
You need to have the
pprobeData package loaded into your R session:
This package may be installed from the same repository.
We create 100 scenarios of monthly price changes on the first 50 assets in the price matrix:
monScen <- pp.historyScenarios(xassetPrices[, 1:50], template=c(0,21), number=100)
The result is a three-dimensional array that is 2 (times) by 50 (assets) by 100 (scenarios):
> dim(monScen)  2 50 100
template argument specifies the time relation of data that will go into the scenarios. In this example the first row of the first scenario will be some row of the price matrix and the second row of the first scenario will be the row of the price matrix that is 21 rows later.
template normally starts with a zero and is strictly increasing.
The final task that
pp.historyScenarios performs is to adjust all of the scenarios so that they all correspond to a specific (current) price. If a
prices argument is not given, then it defaults to the last row of the price matrix. Thus the first row of all scenarios will be the same.
If your utility needs to estimate values over time (as the four moments utility does), then
template should be a sequence of numbers:
dqScen <- pp.historyScenarios(xassetPrices[, 1:50], template=0:62, number=100)
The result is a 63 by 50 by 100 array.
number argument says how many scenarios to generate based on a random selection of all the possible starting places. If you have a short history, that is going to be silly. You will want to generate one of each possible scenario. To do that use the
which argument instead of the
shortHistory <- xassetPrices[1:36, 1:50] shortScen <- pp.historyScenarios(shortHistory, template=0:1, which=1:(nrow(shortHistory)-1))
The result is a 2 by 50 by 35 array. There are 35 possible scenarios and we get each one.