This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.


Self-financing hedge


[PortSens,PortValue,PortHolds] = hedgeslf(Sensitivities,Price,CurrentHolds,FixedInd,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 instrument unit prices.


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


(Optional) Empty or number of fixed instruments (NFIXED-by-1) vector of indices of instruments to hold fixed. The default is FixedInd = 1; the holdings in the first instrument are held fixed. If NFIXED instruments will not be changed, enter all their locations in the portfolio in a vector. If no instruments are to be held fixed, enter FixedInd = [].


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


[PortSens,PortValue,PortHolds] = hedgeslf(Sensitivities,Price,CurrentHolds,FixedInd,ConSet) allocates a self-financing hedge among a collection of instruments. hedgeslf finds the reallocation in a portfolio of financial instruments that hedges the portfolio against market moves and that is closest to being self-financing (maintaining constant portfolio value). By default the first instrument entered is hedged with the other instruments.

PortSens is a 1-by-NSENS vector of portfolio dollar sensitivities. When a perfect hedge exists, PortSens is zeros. Otherwise, the best possible hedge is chosen.

PortValue is the total portfolio value (scalar). When a perfectly self-financing hedge exists, PortValue is equal to dot(Price, CurrentWts) of the initial portfolio.

PortHolds is an NINST-by-1 vector of contracts allocated to each instrument. This is the reallocated portfolio.


  • The constraints PortHolds(FixedInd) = CurrentHolds(FixedInd) are appended to any constraints passed in ConSet. Pass FixedInd = [] to specify all constraints through ConSet.

  • The default constraints generated by portcons are inappropriate, since they require the sum of all holdings to be positive and equal to one.

  • hedgeself first tries to find the allocations of the portfolio that make it closest to being self-financing, while reducing the sensitivities to 0. If no solution is found, it finds the allocations that minimize the sensitivities. If the resulting portfolio is self-financing, PortValue is equal to the value of the original portfolio.


Example 1. Perfect sensitivity cannot be reached.

Sens = [0.44  0.32; 1.0 0.0];
Price = [1.2; 1.0];
W0 = [1; 1];
[PortSens, PortValue, PortHolds]= hedgeslf(Sens, Price, W0)
PortSens =


PortValue =


PortHolds =


Example 2. Constraints are in conflict.

Sens = [0.44  0.32; 1.0 0.0];
Price = [1.2; 1.0];
W0 = [1; 1];
ConSet = pcalims([2 2])

% O.K. if nothing fixed.

[PortSens, PortValue, PortHolds]= hedgeslf(Sens, Price, W0,... 
[], ConSet)
PortSens =


PortValue =


PortHolds =

% W0(1) is not greater than 2.

[PortSens, PortValue, PortHolds] = hedgeslf(Sens, Price, W0,... 
1, ConSet)
??? Error using ==> hedgeslf
Overly restrictive allocation constraints implied by ConSet and 
by fixing the weight of instruments(s): 1

Example 3. Constraints are impossible to meet.

Sens = [0.44  0.32; 1.0 0.0];
Price = [1.2; 1.0];
W0 = [1; 1];
ConSet = pcalims([2 2],[1 1]);

[PortSens, PortValue, PortHolds] = hedgeslf(Sens, Price, W0,... 
??? Error using ==> hedgeslf
Overly restrictive allocation constraints specified in ConSet

Introduced before R2006a