# rpsg_riskconstrprog: Solves risk minimization problems with constraint on a risk... In PSGExpress: Portfolio Safeguard: Optimization, Statistics and Risk Management

## Description

Finds a minimum for the problem

min_x [risk1(x) + d\cdot x]

subject to

risk2 ≤q r

A \cdot x= b

Aeq \cdot x= beq

lb ≤q x ≤q ub

where
A, Aeq are matrices;
d, x are vectors;
b, beq, lb, ub are vectors or scalars;
risk1(x), risk2(x) functions are linear combinations of PSG risk functions, PSG deterministic functions, or PSG utility functions. List of PSG functions for riskprog

## Usage

 1 rpsg_riskconstrprog(model, stroptions = NULL)

 model list with data for the optimization problem. Some components are optional. Names of list members: model$risk1character with description of the PSG function (objective includes only one PSG function) or character vector with coefficients and PSG functions in one of the following forms: coefficient 1, function 1, ... , coefficient K, function K; "na" denotes the absent parameter. List of PSG functions for riskconstrprog model$risk2character with description of the PSG function (constraint includes only one PSG function) or character vector with coefficients and PSG functions in one of the following forms: coefficient 1, function 1, ... , coefficient K, function K; "na" denotes the absent parameter. List of PSG functions for riskconstrprog model$w1parameter (numeric) of the PSG function (for one PSG function in objective) or vector of parameters (for linear combination of PSG functions; order of parameters are the same as the order of functions in model$risk1, "na" denotes the absent parameter); model$w2parameter (numeric) of the PSG function (for one PSG function in constraint) or vector of parameters (for linear combination of PSG functions; order of parameters are the same as the order of functions in model$risk2, "na" denotes the absent parameter); model$H1matrix for one PSG function in objective or vector of matrices for linear combination of PSG functions model$risk1 (order of matrix are the same as the order of functions in model$risk1); model$H2matrix for one PSG function in constraint or vector of matrices for linear combination of PSG functions model$risk2 (order of matrix are the same as the order of functions in model$risk2); model$c1vector of benchmark for one PSG function in objective or vector of vectors of benchmarks for linear combination of PSG functions (order of vectors are the same as the order of functions in model$risk1); model$c2vector of benchmark for one PSG function in constraint or vector of vectors of benchmarks for linear combination of PSG functions (order of vectors are the same as the order of functions in model$risk2); model$p1vector of probabilities for one PSG function in objective or vector of vectors of probabilities for linear combination of PSG functions (order of vectors are the same as the order of functions in model$risk1); model$p2vector of probabilities for one PSG function in constraint or vector of vectors of probabilities for linear combination of PSG functions (order of vectors are the same as the order of functions in model$risk2); model$dvector for linear component of objective; model$rineqvalue of upper bound for risk constraint; model$Aineqmatrix for linear inequality constraint; model$bineqvector or scalars for linear inequality constraint; model$Aeqmatrix for linear equality constraint; model$beqvector for linear equality constraint; model$lbvector of lower bounds for x; model$ubvector of upper bounds for x; model$x0initial point for x. stroptions list with additional optimization options: stroptions$solvercharacter with name of optimization solver: VAN (default), CAR, BULDOZER, TANK; stroptions$precisionnumber of digits that solver tries to obtain in objective and constraints (default = 7); stroptions$time.limittime in seconds restricting the duration of the optimization process; stroptions$linearization1number 0 or 1, controls internal representation of risk function in objective (model$risk1), which can speed up the optimization process (used with CAR and TANK solvers); stroptions$linearization2number 0 or 1, controls internal representation of risk function in constraint (model$risk2), which can speed up the optimization process (used with CAR and TANK solvers); stroptions$stagesnumber of stages of the optimization process. This parameter should be specified for VaR, Probability, and Cardinality groups of functions, default = 9; stroptions$typesnumber that specifies the variable types of a problem. If Types is defined as column-vector, it should include as many components as number of variables Problem includes. The components of column-vector can possess the values 0 - for variables of type real, or 1- for variables of type boolean, or 2 - for variables of type integer. If Types is defined as one number (0, or 1, or 2) than all variable types are real, or boolean, or integer respectively; stroptions$mip1number that specifies the linearization of functions in objective (model$risk1) using MIP capabilities of Gurobi. Active only in VANGRB, CARGRB or HELI solvers (which are based on Gurobi optimization solvers and are available only if Gurobi is installed). stroptions$mip2number that specifies the linearization of functions in constraint (model$risk2) using MIP capabilities of Gurobi. Active only in VANGRB, CARGRB or HELI solvers (which are based on Gurobi optimization solvers and are available only if Gurobi is installed). stroptions$save.to.textcharacter with path to the folder for storing problem in General (Text) Format of PSG. ## Value list results with solution results: results$status

status of solved problem;

results$objective optimal value of objective function; results$gap

difference between objective value in obtained point and Lower estimate of optimal value;

results$optimal.point optimal point; results$risk.constraint.value

optimal values of left hand sides of risk constraint;

results$risk.constraint.residual residual of risk constraint; results$ineq.constraint.value

optimal values of left hand sides of linear inequality constraint;

results$ineq.constraint.residual residual of linear inequality constraint; results$eq.constraint.value

optimal values of left hand sides of linear equality constraint;

results$eq.constraint.residual residual of linear equality constraint; results$function.value

optimal values of PSG functions defined in problem;

results$loading.time data loading time; results$preprocessing.time

preprocessing time;

results$solving.time solving time. ## Note • Exponential Utility, Logarithmic Utility, Power Utility, Logarithms Sum, and Logarithms Exponents Sum functions are included in the objective with the negative coefficient -1 by default. However, you should not set any coefficient for these functions, riskprog sets it automatically. • linear, pr_dev, pr_dev_g, pr_pen, and pr_pen_g PSG functions should NOT be combined with the vector d. • Relative Entropy function (entropyr) can have up to 100,000,000 decision variables if stroptions$linearization=1 is specified. This option may dramatically speedup calculations. In this case,a BULDOZER solver is recommended (options$solver <- "buldozer"). ## Author(s) Stan Uryasev [aut, cre, cph], Grigoriy Zrazhevsky [aut], Viktor Kuzmenko [aut], Alex Zrazhevsky [aut] Maintainer: Stan Uryasev <[email protected]> ## References ## See Also ## Examples  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #Problem of CVaR minimization with constraint on the mean profit: #Find x = (x1,x2,x3,x4) minimizing #risk(x) = CVaR(0.95,x) #subject to #Average Gain(x)>4.5 #x1+x2+x3+x4 = 1 #x1>=0, x2>=0, x3>=0, x4>=0 input.model <- list() input.model$risk1 <- "cvar_risk" input.model$w1 <- 0.95 input.model$H1<-matrix(c(1,4,8,3, 7,5,4,6, 2,8,1,0,0,3,4,9),nrow=4, byrow=TRUE) input.model$c1 <- c(0.2, 0.11, 0.6, 0.1) input.model$risk2 <- "avg" input.model$H2<-matrix(c(1,4,8,3, 7,5,4,6, 2,8,1,0,0,3,4,9),nrow=4, byrow=TRUE) input.model$c2 <- c(0.2, 0.11, 0.6, 0.1) input.model$rineq <- -4.5 input.model$Aeq <- matrix(c(1, 1, 1, 1),nrow=1) input.model$beq <- 1 input.model$lb<-c(0, 0, 0, 0) options<-list() options$solver <- "van" options$precision <- 7 options\$stages <- 30 results <- rpsg_riskconstrprog(input.model,options) print(results)

PSGExpress documentation built on March 25, 2019, 5:06 p.m.