entropy_pooling function

Numerical Entropy Minimization

Numerical Entropy Minimization

This function solves the entropy minimization problem with equality and inequality constraints. The solution is a vector of posterior probabilities that distorts the least the prior (equal-weights probabilities) given the constraints (views on the market).

entropy_pooling( p, A = NULL, b = NULL, Aeq = NULL, beq = NULL, solver = c("nlminb", "solnl", "nloptr"), ... )

Arguments

  • p: A vector of prior probabilities.
  • A: The linear inequality constraint (left-hand side).
  • b: The linear inequality constraint (right-hand side).
  • Aeq: The linear equality constraint (left-hand side).
  • beq: The linear equality constraint (right-hand side).
  • solver: A character. One of: "nlminb", "solnl" or "nloptr".
  • ...: Further arguments passed to one of the solvers.

Returns

A vector of posterior probabilities.

Details

When imposing views constraints there is no need to specify the non-negativity constraint for probabilities, which is done automatically by entropy_pooling.

For the arguments accepted in ..., please see the documentation of nlminb, solnl, nloptr

and the examples bellow.

Examples

# setup ret <- diff(log(EuStockMarkets)) n <- nrow(ret) # View on expected returns (here is 2% for each asset) mean <- rep(0.02, 4) # Prior probabilities (usually equal weight scheme) prior <- rep(1 / n, n) # View views <- view_on_mean(x = ret, mean = mean) # Optimization ep <- entropy_pooling( p = prior, Aeq = views$Aeq, beq = views$beq, solver = "nlminb" ) ep ### Using the ... argument to control the optimization parameters # nlminb ep <- entropy_pooling( p = prior, Aeq = views$Aeq, beq = views$beq, solver = "nlminb", control = list( eval.max = 1000, iter.max = 1000, trace = TRUE ) ) ep # nloptr ep <- entropy_pooling( p = prior, Aeq = views$Aeq, beq = views$beq, solver = "nloptr", control = list( xtol_rel = 1e-10, maxeval = 1000, check_derivatives = TRUE ) ) ep
  • Maintainer: Bernardo Reckziegel
  • License: MIT + file LICENSE
  • Last published: 2022-09-29