PerformanceAnalytics (version 2.0.4)

CAPM.dynamic: Time-varying conditional single factor model beta

Description

CAPM is estimated assuming that betas and alphas change over time. It is assumed that the market prices of securities fully reflect readily available and public information. A matrix of market information variables, \(Z\) measures this information. Possible variables in \(Z\) could be the divident yield, Tresaury yield, etc. The betas of stocks and managed portfolios are allowed to change with market conditions:

Usage

CAPM.dynamic(Ra, Rb, Rf = 0, Z, lags = 1, ...)

Arguments

Ra

an xts, vector, matrix, data frame, timeSeries or zoo object of the asset returns

Rb

an xts, vector, matrix, data frame, timeSeries or zoo object of the benchmark asset return

Rf

risk free rate, in same period as your returns

Z

an xts, vector, matrix, data frame, timeSeries or zoo object of k variables that reflect public information

lags

number of lags before the current period on which the alpha and beta are conditioned

any other passthrough parameters

Details

$$\beta_{p}(z_{t})=b_{0p}+B_{p}'z_{t}$$

where \(z_{t}=Z_{t}-E[Z]\)

- a normalized vector of the deviations of \(Z_{t}\), \(B_{p}\)

- a vector with the same dimension as \(Z_{t}\).

The coefficient \(b_{0p}\) can be interpreted as the "average beta" or the beta when all infromation variables are at their means. The elements of \(B_{p}\) measure the sensitivity of the conditional beta to the deviations of the \(Z_{t}\) from their means. In the similar way the time-varying conditional alpha is modeled: $$\alpha_{pt}=\alpha_{p}(z_{t})=\alpha_{0p}+A_{p}'z_{t}$$ The modified regression is therefore: $$r_{pt+1}=\alpha_{0p}+A_{p}'z_{t}+b_{0p}r_{bt+1}+B_{p}'[z_{t}r_{bt+1}]+ \mu_{pt+1}$$

References

J. Christopherson, D. Carino, W. Ferson. Portfolio Performance Measurement and Benchmarking. 2009. McGraw-Hill. Chapter 12. Wayne E. Ferson and Rudi Schadt, "Measuring Fund Strategy and Performance in Changing Economic Conditions," Journal of Finance, vol. 51, 1996, pp.425-462

See Also

CAPM.beta

Examples

Run this code
# NOT RUN {
data(managers)
CAPM.dynamic(managers[,1,drop=FALSE], managers[,8,drop=FALSE], 
             Rf=.035/12, Z=managers[, 9:10])

CAPM.dynamic(managers[80:120,1:6], managers[80:120,7,drop=FALSE], 
             Rf=managers[80:120,10,drop=FALSE], Z=managers[80:120, 9:10])
             
CAPM.dynamic(managers[80:120,1:6], managers[80:120,8:7],
              managers[80:120,10,drop=FALSE], Z=managers[80:120, 9:10])

# }

Run the code above in your browser using DataCamp Workspace