Compute risk-adjusted alphas and returns for one or more assets



portalpha(Asset,Benchmark) computes risk-adjusted alphas.


portalpha(Asset,Benchmark,Cash) computes risk-adjusted alphas using the optional argument Cash.


[Alpha,RAReturn] = portalpha(Asset,Benchmark,Cash,Choice) computes risk-adjusted alphas and returns for one or more methods specified by Choice.


collapse all

This example shows how to calculate the risk-adjusted return using portalpha and compare it with the fund and market's mean returns.

Use the example data with a fund, a market, and a cash series.

load FundMarketCash 
Returns = tick2ret(TestData);
Fund = Returns(:,1);
Market = Returns(:,2);
Cash = Returns(:,3);
MeanFund = mean(Fund)
MeanFund = 0.0038
MeanMarket = mean(Market)
MeanMarket = 0.0030
[MM, aMM] = portalpha(Fund, Market, Cash, 'MM')
MM = 0.0022
aMM = 0.0052
[GH1, aGH1] = portalpha(Fund, Market, Cash, 'gh1')
GH1 = 0.0013
aGH1 = 0.0025
[GH2, aGH2] = portalpha(Fund, Market, Cash, 'gh2')
GH2 = 0.0022
aGH2 = 0.0052
[SML, aSML] = portalpha(Fund, Market, Cash, 'sml')
SML = 0.0013
aSML = 0.0025

Since the fund's risk is much less than the market's risk, the risk-adjusted return of the fund is much higher than both the nominal fund and market returns.

Input Arguments

collapse all

Asset returns, specified as a NUMSAMPLES x NUMSERIES matrix with NUMSAMPLES observations of asset returns for NUMSERIES asset return series.

Data Types: double

Returns for a benchmark asset, specified as a NUMSAMPLES vector of returns for a benchmark asset. The periodicity must be the same as the periodicity of Asset. For example, if Asset is monthly data, then Benchmark should be monthly returns.

Data Types: double

(Optional) Riskless asset, specified as a either a scalar return for a riskless asset or a vector of asset returns to be a proxy for a “riskless” asset. In either case, the periodicity must be the same as the periodicity of Asset. For example, if Asset is monthly data, then Cash must be monthly returns. If no value is supplied, the default value for Cash returns is 0.

Data Types: double

(Optional) Computed measures, specified as a character vector or cell array of character vectors to indicate one or more measures to be computed from among various risk-adjusted alphas and return measures. The number of choices selected in Choice is NUMCHOICES. The list of choices is given in the following table:

'xs'Excess Return (no risk adjustment)
'sml'Security Market Line — The security market line shows that the relationship between risk and return is linear for individual securities (that is, increased risk = increased return).
'capm'Jensen's Alpha — Risk-adjusted performance measure that represents the average return on a portfolio or investment, above or below that predicted by the capital asset pricing model (CAPM), given the portfolio's or investment's beta and the average market return.
'mm'Modigliani & Modigliani — Measures the returns of an investment portfolio for the amount of risk taken relative to some benchmark portfolio.
'gh1'Graham-Harvey 1 — Performance measure developed by John Graham and Campbell Harvey. The idea is to lever a fund's portfolio to exactly match the volatility of the S&P 500. The difference between the fund's levered return and the S&P 500 return is the performance measure.
'gh2'Graham-Harvey 2 — In this measure, the idea is to lever up or down the fund's recommended investment strategy (using a Treasury bill), so that the strategy has the same volatility as the S&P 500.
'all'Compute all measures.

Choice is specified by using the code from the table (for example, to select the Modigliani & Modigliani measure, Choice = 'mm'). A single choice is either a character vector or a scalar cell array with a single code from the table.

Multiple choices can be selected with a cell array of character vectors for choice codes (for example, to select both Graham-Harvey measures, Choice = {'gh1','gh2'}). To select all choices, specify Choice = 'all'. If no value is supplied, the default choice is to compute the excess return with Choice = 'xs'. Choice is not case-sensitive.

Data Types: char | cell

Output Arguments

collapse all

Risk-adjusted alphas, returned as an NUMCHOICES-by-NUMSERIES matrix of risk-adjusted alphas for each series in Asset with each row corresponding to a specified measure in Choice.

Risk-adjusted returns, returned as an NUMCHOICES-by-NUMSERIES matrix of risk-adjusted returns for each series in Asset with each row corresponding to a specified measure in Choice.


NaN values in the data are ignored and, if NaNs are present, some results could be unpredictable. Although the alphas are comparable across measures, risk-adjusted returns depend on whether the Asset or Benchmark is levered or unlevered to match its risk with the alternative. If Choice = 'all', the order of rows in Alpha and RAReturn follows the order in the table. In addition, Choice = 'all' overrides all other choices.


[1] Graham, J. R. and Campbell R. Harvey. "Market Timing Ability and Volatility Implied in Investment Newsletters' Asset Allocation Recommendations." Journal of Financial Economics. Vol. 42, 1996, pp. 397–421.

[2] Lintner, J. "The Valuation of Risk Assets and the Selection of Risky Investments in Stocks Portfolios and Capital Budgets." Review of Economics and Statistics. Vol. 47, No. 1, February 1965, pp. 13–37.

[3] Modigliani, F. and Leah Modigliani. "Risk-Adjusted Performance: How to Measure It and Why." Journal of Portfolio Management. Vol. 23, No. 2, Winter 1997, pp. 45–54.

[4] Mossin, J. "Equilibrium in a Capital Asset Market." Econometrica. Vol. 34, No. 4, October 1966, pp. 768–783.

[5] Sharpe, W.F., "Capital Asset Prices: A Theory of Market Equilibrium under Conditions of Risk." Journal of Finance. Vol. 19, No. 3, September 1964, pp. 425–442.

Introduced in R2006b