random.portfolio {PortfolioProbe}R Documentation

Generate Random Portfolios

Description

Returns a list of portfolios that satisfy the constraints imposed, but the utility is ignored.

Usage

random.portfolio(number.rand = 1, ..., out.trade = FALSE, 
        intermediate = NULL) 

Arguments

number.rand the number of random portfolios desired. This can be zero (in which case NULL is returned), but can not be negative.
... arguments of trade.optimizer need to be given that specify the constraints. Arguments concerning utility are ignored.
out.trade logical value stating if it should be the random trades (TRUE), or the resulting random portfolios (FALSE) that are to be returned. The full name of this argument needs to be given.
intermediate you are unlikely to care about this argument. Either NULL or a character string or a list. See the Details section for more. The full name of this argument needs to be given.

Value

unless intermediate is given, a list of the random portfolios or trades. This has attributes:

call an image of the call that created the object.
timestamp a character string giving the time and date of creation.
seed the random seed for the generator internal to the C code.
version a vector stating the versions of C and S code used. This attribute is suppressed when the object is printed.
checkinput a list with components prices, variance, expected.return and existing that contains a few values of each of these inputs. This is used in randport.eval and update to make sure that the data for these inputs are what you expect they are. This attribute is suppressed when the object is printed.
funevals the number of portfolios that were examined during the search. This attribute is suppressed when the object is printed.
iterhistory only present if the save.iterhistory control argument is TRUE, and is seldom of any interest. If present, it is a numeric vector giving the value of the objective at each iteration of the algorithm for the last random portfolio that is generated. The value of the objective is a measure of how much a given portfolio violates the constraints.
class "randportBurSt". There are several methods for this class.

Side Effects

the S language random seed is created or changed (unless the seed argument is given explicitly).

An error occurs if no portfolios were found that satisfy the constraints, unless the throw.error control is set to FALSE. This generally only happens if the constraints are inconsistent, or at least very restrictive. In the latter case, you can adjust control arguments to search more thoroughly.

Details

It is possible that fewer portfolios are generated than requested. This happens if too many attempts fail. There is a warning for this unless the do.warn item randport.fail is set to FALSE.

If you want a bound on the utility, then you can use random.portfolio.utility. However, this is substantially slower than using random.portfolio.

There are randportBurSt methods for several generic functions.

When tracing is done, a message gives: the number of optimizations, the number of satisfactory portfolios found, and the number of failures.

The intermediate argument allows some computations to be avoided in some circumstances. The amount of computation per call is in the millisecond range, so is unlikely to be important. The way it would be used is to make one call with intermediate="Clist" and then to pass a modification of that list as the intermediate argument multiple times. The list in question is a list of objects ready to be passed into the C code (plus a few other things).

Bugs

Tracing generally does not work under Windows.

Revision

This help was last revised 2009 November 27.

See Also

trade.optimizer, random.portfolio.control, random.portfolio.utility, randport.eval, deport.randportBurSt, summary.randportBurSt, valuation.randportBurSt, head.randportBurSt, update.randportBurSt, seed.BurSt.

Examples

randport1 <- random.portfolio(100, prices, varian, long.only=TRUE,
        bench.constr=c(spx=.04^2/252), lin.constraints=cntrysect.conmat,
        lin.bounds=cntrysect.bounds, gross.value=1e6)

randtrade1 <- random.portfolio(100, prices, varian, long.only=TRUE,
        bench.constr=c(spx=.04^2/252), lin.constraints=cntrysect.conmat,
        lin.bounds=cntrysect.bounds, gross.value=1e6, out.trade=TRUE)

# now use it
randalpha1 <- numeric(length(randtrade1))
for(i in 1:length(randtrade1)) {
        randalpha1[i] <- trade.optimizer(prices, varian, long.only=TRUE,
          bench.constr=c(spx=.04^2/252), lin.constraints=cntrysect.conmat,
          lin.bounds=cntrysect.bounds, gross.value=1e6, funeval=0,
          start=randtrade1[[i]])$alpha.values
}

# same thing again
randalpha1 <- unlist(randport.eval(randtrade1, keep="alpha.values"))
# and again
randalpha1 <- unlist(randport.eval(randport1, keep="alpha.values"))

[Package PortfolioProbe version 1.02 Index]