Compute the factor contributions to standard deviation (Sd) of portfolio returns based on Euler's theorem, given the fitted factor model.
portSdDecomp(object, ...)# S3 method for ffm
portSdDecomp(object, weights = NULL, factor.cov, ...)
A list containing
factor model Sd of portfolio return.
length-(K + 1) vector of marginal contributions to Sd.
length-(K + 1) vector of component contributions to Sd.
length-(K + 1) vector of percentage component contributions to Sd.
Where, K is the number of factors.
fit object of class tsfm, or ffm.
optional arguments passed to cov.
a vector of weights of the assets in the portfolio. Default is NULL, in which case an equal weights will be used.
optional user specified factor covariance matrix with named columns; defaults to the sample covariance matrix.
Douglas Martin, Lingjie Yi
The factor model for a portfolio's return at time t has the
form
R(t) = beta'f(t) + e(t) = beta.star'f.star(t)
where, beta.star=(beta,sig.e) and f.star(t)=[f(t)',z(t)]'.
By Euler's theorem, the standard deviation of the portfolio's return
is given as:
portSd = sum(cSd_k) = sum(beta.star_k*mSd_k)
where, summation is across the K factors and the residual,
cSd and mSd are the component and marginal
contributions to Sd respectively. Computing portSd and
mSd is very straight forward. The formulas are given below and
details are in the references. The covariance term is approximated by the
sample covariance.
portSd = sqrt(beta.star''cov(F.star)beta.star)
mSd = cov(F.star)beta.star / portSd
fitFfm
for the different factor model fitting functions.
portVaRDecomp for portfolio factor model VaR decomposition.
portEsDecomp for portfolio factor model ES decomposition.