# pcpval

Linear inequalities for fixing total portfolio value

## Syntax

```[A,b] = pcpval(PortValue,NumAssets)
```

## Arguments

 `PortValue` Scalar total value of asset portfolio (sum of the allocations in all assets). `PortValue = 1` specifies weights as fractions of the portfolio and return and risk numbers as rates instead of value. `NumAssets` Number of available asset investments.

## Description

As an alternative to `pcpval`, use the Portfolio object (`Portfolio`) for mean-variance portfolio optimization. This object supports gross or net portfolio returns as the return proxy, the variance of portfolio returns as the risk proxy, and a portfolio set that is any combination of the specified constraints to form a portfolio set. For information on the workflow when using Portfolio objects, see Portfolio Object Workflow.

`[A,b] = pcpval(PortValue,NumAssets)` scales the total value of a portfolio of `NumAssets` assets to `PortValue`. All portfolio weights, bounds, return, and risk values except `ExpReturn` and `ExpCovariance` (see `portopt`) are in terms of `PortValue`.

`A` is a matrix and `b` a vector such that `A*PortWts' <= b`, where `PortWts` is a `1`-by-`NASSETS` vector of asset allocations.

If `pcpval` is called with fewer than two output arguments, the function returns `A` concatenated with `b` `[A,b]`.

## Examples

Scale the value of a portfolio of three assets = 1, so all return values are rates and all weight values are in fractions of the portfolio.

```PortValue = 1; NumAssets = 3; [A,b] = pcpval(PortValue, NumAssets)```
```A = 1 1 1 -1 -1 -1 b = 1 -1 ```

Portfolio weights of 40%, 10%, and 50% in the three assets satisfy the constraints.