Skip to Main Content Skip to Search
Product Documentation

Portfolio class - Superclasses: AbstractPortfolio

Portfolio object for mean-variance portfolio optimization and analysis

Description

The portfolio object implements mean-variance portfolio optimization and is derived from the abstract portfolio optimization class AbstractPortfolio. Portfolio objects implement all methods in the AbstractPortfolio class along with methods that are specific to mean-variance portfolio optimization.

The main workflow for portfolio optimization is to create an instance of a portfolio object that completely specifies a portfolio optimization problem and to operate on the portfolio object to obtain and analyze efficient portfolios. A mean-variance optimization problem is completely specified with the following three elements:

After you specify three elements in an unambiguous way, you can solve and analyze portfolio optimization problems. The simplest mean-variance portfolio optimization problem has:

Given mean and covariance of asset returns in the variables AssetMean and AssetCovar, this problem is completely specified by:

p = Portfolio('AssetMean', AssetMean, 'AssetCovar', AssetCovar,...
'LowerBound', 0, 'Budget')

or equivalently by:

p = Portfolio;
p = p.setAssetMoments(AssetMean, AssetCovar); 
p = p.setDefaultConstraints;

Construction

p = Portfolio constructs an empty portfolio object for mean-variance portfolio optimization and analysis. You can then add elements to the portfolio object using Add Methods and Set Methods.

p = Portfolio(Name,Value) constructs a portfolio object for mean-variance portfolio optimization and analysis with additional options specified by one or more Name,Value pair arguments. Name is a property name and Value is its corresponding value. Name must appear inside single quotes (''). You can specify several name-value pair arguments in any order as Name1,Value1,…,NameN,ValueN.

p = Portfolio(p, Name,Value) constructs a portfolio object for mean-variance portfolio optimization and analysis using a previously constructed portfolio object p with additional options specified by one or more Name,Value pair arguments.

Input Arguments

p

(Optional) Previously constructed portfolio object (p).

Property Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments, where Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

'AInequality'

Linear inequality constraint matrix ([] or [matrix]).

Default: []

'AssetCovar'

Covariance of asset returns ([] or square matrix.

Default: []

'AssetList'

Names or symbols of assets in universe ([] or [vector cell of strings]).

Default: []

'AssetMean'

Mean of asset returns ([] or vector).

Default: []

'bInequality'

Linear inequality constraint vector ([] or [vector]).

Default: []

'BuyCost'

Proportional purchase costs ([] or vector).

Default: []

'BuyTurnover'

Turnover constraint on purchases ([] or [scalar]).

Default: []

'GroupA'

Group A weights to be bounded by weights in group B ([] or [matrix]).

Default: []

'GroupB'

Group B weights ([] or [matrix]).

Default: []

'GroupMatrix'

Group membership matrix ([] or [matrix]).

Default: []

'InitPort'

Initial portfolio ([] or vector).

Default: []

'LowerBudget'

Lower-bound budget constraint ([] or [scalar]).

Default: []

'LowerGroup'

Lower-bound group constraint ([] or [vector]).

Default: []

'LowerRatio'

Mnimum ratio of allocations between groups A and B ([] or [vector]).

Default: []

'Name'

Name for instance of the portfolio object ([] or [string]).

Default: []

'NumAssets'

Number of assets in universe ([] or [integer scalar]).

Default: []

'RiskFreeRate'

Risk-free rate ([] or scalar).

Default: []

'SellCost'

Proportional sales costs ([] or vector).

Default: []

'SellTurnover'

Turnover constraint on sales ([] or [scalar]).

Default: []

'Turnover'

Turnover constraint ([] or [scalar]).

Default: []

'UpperBound'

Upper-bound constraint ([] or [vector]).

Default: []

'UpperBudget'

Upper-bound budget constraint ([] or [scalar]).

Default: []

'UpperGroup'

Upper-bound group constraint ([] or [vector]).

Default: []

'UpperRatio'

Maximum ratio of allocations between groups A and B ([] or [vector]).

Default: []

Properties

The following properties are from the Portfolio class.

AssetCovar

Covariance of asset returns ([] or matrix).

Attributes:

SetAccesspublic
GetAccesspublic

AssetMean

Mean of asset returns ([] or vector).

Attributes:

SetAccesspublic
GetAccesspublic

BuyCost

Proportional purchase costs ([] or vector).

Attributes:

SetAccesspublic
GetAccesspublic

BuyTurnover

Turnover constraint on purchases ([] or [scalar]).

Attributes:

SetAccesspublic
GetAccesspublic

RiskFreeRate

Risk-free rate ([] or scalar).

Attributes:

SetAccesspublic
GetAccesspublic

SellCost

Proportional sales costs ([] or vector).

Attributes:

SetAccesspublic
GetAccesspublic

SellTurnover

Turnover constraint on sales ([] or [scalar]).

Attributes:

SetAccesspublic
GetAccesspublic

Turnover

Turnover constraint ([] or [scalar]).

Attributes:

SetAccesspublic
GetAccesspublic

Inherited Properties

The following properties are inherited from the AbstractPortfolio class.

AEquality

Linear equality constraint matrix ([] or [matrix]).

Attributes:

SetAccesspublic
GetAccesspublic

AInequality

Linear inequality constraint matrix ([] or [matrix]).

Attributes:

SetAccesspublic
GetAccesspublic

AssetList

Names or symbols of assets in universe ([] or [vector cell of strings]).

Attributes:

SetAccesspublic
GetAccesspublic

bEquality

Linear equality constraint vector ([] or [vector]).

Attributes:

SetAccesspublic
GetAccesspublic

bInequality

Linear inequality constraint vector ([] or [vector]).

Attributes:

SetAccesspublic
GetAccesspublic

GroupA

Group A weights to be bounded by group B ([] or [matrix]).

Attributes:

SetAccesspublic
GetAccesspublic

GroupB

Group B weights ([] or [matrix]).

Attributes:

SetAccesspublic
GetAccesspublic

GroupMatrix

Group membership matrix ([] or [matrix]).

Attributes:

SetAccesspublic
GetAccesspublic

InitPort

Initial portfolio ([] or vector).

Attributes:

SetAccesspublic
GetAccesspublic

LowerBound

Lower-bound constraint ([] or [vector]).

Attributes:

SetAccesspublic
GetAccesspublic

LowerBudget

Lower-bound budget constraint ([] or [scalar]).

Attributes:

SetAccesspublic
GetAccesspublic

LowerGroup

Lower-bound group constraint ([] or [vector]).

Attributes:

SetAccesspublic
GetAccesspublic

LowerRatio

Mnimum ratio of allocations between groups A and B ([] or [vector]).

Attributes:

SetAccesspublic
GetAccesspublic

Name

Name for instance of the portfolio object ([] or [string]).

Attributes:

SetAccesspublic
GetAccesspublic

NumAssets

Number of assets in universe ([] or [integer scalar]).

Attributes:

SetAccesspublic
GetAccesspublic

UpperBound

Upper-bound constraint ([] or [vector]).

Attributes:

SetAccesspublic
GetAccesspublic

UpperBudget

Upper-bound budget constraint ([] or [scalar]).

Attributes:

SetAccesspublic
GetAccesspublic

UpperGroup

Upper-bound group constraint ([] or [vector]).

Attributes:

SetAccesspublic
GetAccesspublic

UpperRatio

Maximum ratio of allocations between groups A and B ([] or [vector]).

Attributes:

SetAccesspublic
GetAccesspublic

Inherited Methods

The following methods are inherited from the AbstractPortfolio class.

addEqualityAdd linear equality constraints for portfolio weights to existing constraints
addGroupRatioAdd group ratio constraints for portfolio weights to existing group ratio constraints
addGroupsAdd group constraints for portfolio weights to existing group constraints
addInequalityAdd linear inequality constraints for portfolio weights to existing constraints
checkFeasibilityCheck feasibility of input portfolios against a portfolio object
estimateBoundsEstimate global lower and upper bounds for set of portfolios
estimateFrontierEstimate specified number of optimal portfolios over entire efficient frontier
estimateFrontierByReturnEstimate optimal portfolios with targeted portfolio returns
estimateFrontierByRiskEstimate optimal portfolios with targeted portfolio risks
estimateFrontierLimitsEstimate optimal portfolios at endpoints of efficient frontier
estimateMaxSharpeRatioEstimate efficient portfolio to maximize Sharpe ratio
estimatePortReturnEstimate mean of portfolio returns (portfolio return)
estimatePortRiskEstimate standard deviation of portfolio returns (portfolio risk)
getBoundsObtain bounds for portfolio weights from portfolio object
getBudgetObtain budget constraint bounds from portfolio object
getEqualityObtain equality constraint arrays from portfolio object
getGroupRatioObtain group ratio constraint arrays from portfolio object
getGroupsObtain group constraint arrays from portfolio object
getInequalityObtain inequality constraint arrays from portfolio object
plotFrontierPlot efficient frontier
setAssetListSet up list of identifiers for assets
setBoundsSet up bounds for portfolio weights
setBudgetSet up budget constraints
setDefaultConstraintsSet up portfolio constraints with nonnegative weights that must sum to 1
setEqualitySet up linear equality constraints for portfolio weights
setGroupRatioSet up group ratio constraints for portfolio weights
setGroupsSet up group constraints for portfolio weights
setInequalitySet up linear inequality constraints for portfolio weights
setInitPortSet up initial or current portfolio
setOptionsSet hidden properties in portfolio object
setSolver Choose main solver and specify associated solver options for portfolio optimization

Methods

estimateAssetMomentsEstimate mean and covariance of asset returns from data
estimatePortMomentsEstimate moments of portfolio returns
getAssetMomentsObtain mean and covariance of asset returns from portfolio object
getCostsObtain buy and sell transaction costs from portfolio object
getOneWayTurnoverObtain one-way turnover constraints from portfolio object
setAssetMoments Set moments (mean and covariance) of asset returns
setCostsSet up proportional transaction costs
setOneWayTurnoverSet up one-way portfolio turnover constraints
setTurnover Set up maximum portfolio turnover constraint

Definitions

Mean-Variance Portfolio Optimization

For more information on the theory and definition of mean-variance optimization supported by portfolio optimization tools in Financial Toolbox software, see Portfolio Optimization Theory.

Copy Semantics

Value. To learn how value classes affect copy operations, see Copying Objects in the MATLAB Programming Fundamentals documentation.

Examples

Efficient portfolios can be obtained with:

load CAPMuniverse

p = Portfolio('AssetList',Assets(1:12));
p = p.estimateAssetMoments(Data(:,1:12),'missingdata',true);
p = p.setDefaultConstraints;
p.plotFrontier;

pwgt = p.estimateFrontier(5);

pnames = cell(1,5);
for i = 1:5
	pnames{i} = sprintf('Port%d',i);
end

Blotter = dataset([{pwgt},pnames],'obsnames',p.AssetList);

disp(Blotter);


          Port1        Port2       Port3       Port4      Port5
    AAPL     0.017926    0.058247    0.097816    0.12955    0    
    AMZN            0           0           0          0    0    
    CSCO            0           0           0          0    0    
    DELL    0.0041906           0           0          0    0    
    EBAY            0           0           0          0    0    
    GOOG      0.16144     0.35678     0.55228    0.75116    1    
    HPQ      0.052566    0.032302    0.011186          0    0    
    IBM       0.46422     0.36045     0.25577    0.11928    0    
    INTC            0           0           0          0    0    
    MSFT      0.29966     0.19222    0.082949          0    0    
    ORCL            0           0           0          0    0    
    YHOO            0           0           0          0    0    

 

References

For a complete list of references for the portfolio object and portfolio optimization tools, see Portfolio Optimization.

Alternatives

You can also perform portfolio optimization using a collection of special-purpose functions in Financial Toolbox software. For more information, see Portfolio Optimization Functions.

See Also

plotFrontier

Tutorials

How To

  


Free Interactive Computational Finance CD

View demos and recorded presentations led by industry experts.

Now On Demand
Network with industry peers and learn the latest applications of the leading software product for computational finance.

 © 1984-2012- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS