Number of instruments (NINST) by number
of sensitivities (NSENS) matrix of dollar sensitivities
of each instrument. Each row represents a different instrument. Each
column represents a different sensitivity.

Price

NINST-by-1 vector
of portfolio instrument unit prices.

CurrentHolds

NINST-by-1 vector
of contracts allocated to each instrument.

FixedInd

(Optional) Number of fixed instruments (NFIXED)-by-1 vector
of indices of instruments to hold fixed. For example, to hold the
first and third instruments of a 10 instrument portfolio unchanged,
set FixedInd = [1 3]. Default = [],
no instruments held fixed.

NumCosts

(Optional) Number of points generated along the cost
frontier when a vector of target costs (TargetCost)
is not specified. The default is 10 equally spaced points between
the point of minimum cost and the point of minimum exposure. When
specifying TargetCost, enter NumCosts as
an empty matrix [].

TargetCost

(Optional) Vector of target cost values along the cost
frontier. If TargetCost is empty, or not entered, hedgeopt evaluates NumCosts equally
spaced target costs between the minimum cost and minimum exposure.
When specified, the elements of TargetCost should
be positive numbers that represent the maximum amount of money the
owner is willing to spend to rebalance the portfolio.

TargetSens

(Optional) 1-by-NSENS vector
containing the target sensitivity values of the portfolio. When specifying TargetSens,
enter NumCosts and TargetCost as
empty matrices [].

ConSet

(Optional) Number of constraints (NCONS)
by number of instruments (NINST) matrix of additional
conditions on the portfolio reallocations. An eligible NINST-by-1 vector
of contract holdings, PortWts, satisfies all the
inequalities A*PortWts <= b, where A
= ConSet(:,1:end-1) and b = ConSet(:,end).

Notes
The user-specified constraints included in ConSet may
be created with the functions pcalims or portcons. However, the portcons default PortHolds positivity
constraints are typically inappropriate for hedging problems since
short-selling is usually required.

NPOINTS,
the number of rows in PortSens and PortHolds and
the length of PortCost, is inferred from the inputs.
When the target sensitivities, TargetSens, is entered, NPOINTS
= 1; otherwise NPOINTS = NumCosts, or
is equal to the length of the TargetCost vector.

Not all problems are solvable (for example,
the solution space may be infeasible or unbounded, or the solution
may fail to converge). When a valid solution is not found, the
corresponding rows of PortSens and PortHolds and
the elements of PortCost are padded with NaNs
as placeholders.

Description

[PortSens, PortCost, PortHolds] =
hedgeopt(Sensitivities, Price, CurrentHolds, FixedInd,
NumCosts, TargetCost, TargetSens, ConSet) allocates
an optimal hedge by one of two criteria:

Minimize portfolio sensitivities (exposure) for a
given set of target costs.

Minimize the cost of hedging a portfolio given a set
of target sensitivities.

Hedging involves the fundamental tradeoff between portfolio
insurance and the cost of insurance coverage. This function lets investors
modify portfolio allocations among instruments to achieve either of
the criteria. The chosen criterion is inferred from the input argument
list. The problem is cast as a constrained linear least-squares problem.

PortSens is a number of points (NPOINTS)-by-NSENS matrix
of portfolio sensitivities. When a perfect hedge exists, PortSens is
zeros. Otherwise, the best hedge possible is chosen.

PortCost is a 1-by-NPOINTS vector
of total portfolio costs.

PortHolds is an NPOINTS-by-NINST matrix
of contracts allocated to each instrument. These are the reallocated
portfolios.