Allocate optimal hedge for target costs or sensitivities


[PortSens,PortCost,PortHolds] = hedgeopt(Sensitivities,Price,CurrentHolds,FixedInd,NumCosts,TargetCost,TargetSens,ConSet)



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.


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


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


(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.


(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 [].


(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.


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


(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).


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, PortHolds, and the elements of PortCost are padded with NaNs as placeholders.


[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.

Introduced before R2006a