randomReturns function

Create a Random Returns

Create a Random Returns

Create a matrix of random returns.

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

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)

Details

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

Returns

a numeric matrix of size na times ns

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

Author(s)

Enrico Schumann

Note

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

See Also

mc

Examples

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) }