estimatePortSharpeRatio
Estimate Sharpe ratio of given portfolio weights for Portfolio object
Description
estimates the Sharpe ratio of given portfolio weights for a
psharpe
= estimatePortSharpeRatio(obj
,pwgt
)Portfolio
object. For details on
the workflow, see Portfolio Object Workflow.
Examples
Estimate Sharpe Ratios of the Given Portfolio Weights
This example shows how to find efficient portfolios that satisfy the target returns and then find the Sharpe ratios corresponding to each of the portfolios.
To obtain efficient portfolios that have targeted portfolio returns, the estimateFrontierByReturn
function accepts one or more target portfolio returns and obtains efficient portfolios with the specified returns. Assume you have a universe of four assets where you want to obtain efficient portfolios with target portfolio returns of 6%, 9%, and 12%. Use estimatePortSharpeRatio
to obtain the Sharpe ratio for the collection of portfolios (pwgt
).
m = [ 0.05; 0.1; 0.12; 0.18 ]; C = [ 0.0064 0.00408 0.00192 0; 0.00408 0.0289 0.0204 0.0119; 0.00192 0.0204 0.0576 0.0336; 0 0.0119 0.0336 0.1225 ]; p = Portfolio; p = setAssetMoments(p, m, C); p = setDefaultConstraints(p); pwgt = estimateFrontierByReturn(p, [0.06, 0.09, 0.12]); display(pwgt);
pwgt = 4×3
0.8772 0.5032 0.1293
0.0434 0.2488 0.4541
0.0416 0.0780 0.1143
0.0378 0.1700 0.3022
pwgt
is a NumAssets
-by-NumPorts
matrix where NumAssets
is the number of asset in the universe and NumPorts
is the number of portfolios in the collection of portfolios.
psharpe = estimatePortSharpeRatio(p,pwgt)
psharpe = 3×1
0.7796
0.8519
0.7406
psharpe
is a NumPorts
-by-1
vector, where NumPorts
is the number of portfolios in the collection of portfolios.
Estimate Sharpe Ratios of the Given Portfolio Weights Portfolio
Object with Integrality Constraints
Create a Portfolio
object for three assets.
AssetMean = [ 0.0101110; 0.0043532; 0.0137058 ]; AssetCovar = [ 0.00324625 0.00022983 0.00420395; 0.00022983 0.00049937 0.00019247; 0.00420395 0.00019247 0.00764097 ]; p = Portfolio('AssetMean', AssetMean, 'AssetCovar', AssetCovar); p = setDefaultConstraints(p);
Use setBounds
with semi-continuous constraints to set xi=0
or 0.02
<=xi
<=0.5
for all i=1
,...NumAssets.
p = setBounds(p, 0.02, 0.5,'BoundType', 'Conditional', 'NumAssets', 3);
When working with a Portfolio
object, the setMinMaxNumAssets
function enables you to set up cardinality constraints for a long-only portfolio. This sets the cardinality constraints for the Portfolio
object, where the total number of allocated assets satisfying the nonzero semi-continuous constraints are between MinNumAssets
and MaxNumAssets
. By setting MinNumAssets
=MaxNumAssets
=2, only two of the three assets are invested in the portfolio.
p = setMinMaxNumAssets(p, 2, 2);
Use estimatePortSharpeRatio to e
stimate Sharpe ratio of given portfolio weights for a Portfolio
object.
pwgt = estimateFrontierByReturn(p, [ 0.0072321, 0.0119084 ]); psharpe = estimatePortSharpeRatio(p,pwgt)
psharpe = 2×1
0.2230
0.1715
The estimatePortSharpeRatio
function uses the MINLP solver to solve this problem. Use the setSolverMINLP
function to configure the SolverType
and options.
p.solverOptionsMINLP
ans = struct with fields:
MaxIterations: 1000
AbsoluteGapTolerance: 1.0000e-07
RelativeGapTolerance: 1.0000e-05
NonlinearScalingFactor: 1000
ObjectiveScalingFactor: 1000
Display: 'off'
CutGeneration: 'basic'
MaxIterationsInactiveCut: 30
ActiveCutTolerance: 1.0000e-07
IntMainSolverOptions: [1x1 optim.options.Intlinprog]
NumIterationsEarlyIntegerConvergence: 30
ExtendedFormulation: 0
NumInnerCuts: 10
NumInitialOuterCuts: 10
Input Arguments
obj
— Object for portfolio
object
Object for portfolio, specified using a
Portfolio
object.
Note
The risk-free rate is obtained from the
property RiskFreeRate
in the
Portfolio object. If you leave the
RiskFreeRate
unset, it is
assumed to be 0
. For more
information on creating a portfolio object, see
Portfolio
.
Data Types: object
pwgt
— Collection of portfolios
matrix
Collection of portfolios, specified as a
NumAssets
-by-
NumPorts
matrix where
NumAssets
is the number of
assets in the universe and
NumPorts
is the number of
portfolios in the collection of portfolios.
Data Types: double
Output Arguments
psharpe
— Sharpe ratios of the given portfolios
vector
Sharpe ratios of the given portfolios, returned as a
NumPorts
-by-1
vector.
More About
Sharpe Ratio
The Sharpe ratio is the ratio of the difference
between the mean of portfolio returns and the risk-free rate divided
by the standard deviation of portfolio returns for each portfolio in
pwgt
.
estimatePortSharpeRatio
computes the Sharpe ratio
with mean and standard deviation (which is the square-root of
variance) of portfolio returns.
Tips
You can also use dot notation to estimate the Sharpe ratio of given portfolio weights.
psharpe = obj.estimatePortSharpeRatio(pwgt);
Version History
Introduced in R2018a
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)