Learn R Programming

NMOF (version 2.10-0)

randomReturns: Create a Random Returns

Description

Create a matrix of random returns.

Usage

randomReturns(na, ns, sd, mean = 0, rho = 0, exact = FALSE)

Value

a numeric

matrix of size na times

ns

Arguments

na

number of assets

ns

number of return scenarios

sd

the standard deviation: either a single number or a vector of length na

mean

the mean return: either a single number or a vector of length na

rho

correlation: either a scalar (i.e. a constant pairwise correlation) or a correlation matrix

exact

logical: if TRUE, return a random matrix whose column means, standard deviations and correlations match the specified values exactly (up to numerical precision)

Author

Enrico Schumann

Details

The function corresponds to the function random_returns, described in the second edition of NMOF (the book).

References

Gilli, M., Maringer, D. and Schumann, E. (2019) Numerical Methods and Optimization in Finance. 2nd edition. Elsevier. tools:::Rd_expr_doi("10.1016/C2017-0-01621-X")

Schumann, E. (2023) Financial Optimisation with R (NMOF Manual). https://enricoschumann.net/NMOF.htm#NMOFmanual

See Also

mc

Examples

Run this code
if (requireNamespace("quadprog")) {
    ## a small experiment: when computing minimum-variance portfolios
    ## for correlated assets, how many large positions are in the portfolio?

    na <- 100  ## number of assets
    inc <-  5  ## minimum of assets to include

    n <- numeric(10)
    for (i in seq_along(n)) {
        R <- randomReturns(na = na,
                           ns = 500,
                           sd = seq(.2/.16, .5/.16, length.out = 100),
                           rho = 0.5)
        n[i] <- sum(minvar(cov(R), wmax = 1/inc)> 0.01)
    }
    summary(n)
}

Run the code above in your browser using DataLab