Description Usage Arguments Details Value Author(s) References See Also Examples

Compute the factor contributions to Expected Tail Loss or Expected Shortfall (ES) of assets' returns based on Euler's theorem, given the fitted factor model. The partial derivative of ES with respect to factor beta is computed as the expected factor return given fund return is less than or equal to its value-at-risk (VaR). Option to choose between non-parametric and Normal.

1 2 3 4 5 6 7 8 9 10 11 12 13 | ```
fmEsDecomp(object, ...)
## S3 method for class 'tsfm'
fmEsDecomp(object, factor.cov, p = 0.05, type = c("np",
"normal"), use = "pairwise.complete.obs", ...)
## S3 method for class 'sfm'
fmEsDecomp(object, factor.cov, p = 0.05, type = c("np",
"normal"), use = "pairwise.complete.obs", ...)
## S3 method for class 'ffm'
fmEsDecomp(object, factor.cov, p = 0.05, type = c("np",
"normal"), use = "pairwise.complete.obs", ...)
``` |

`object` |
fit object of class |

`...` |
other optional arguments passed to |

`factor.cov` |
optional user specified factor covariance matrix with named columns; defaults to the sample covariance matrix. |

`p` |
tail probability for calculation. Default is 0.05. |

`type` |
one of "np" (non-parametric) or "normal" for calculating VaR. Default is "np". |

`use` |
method for computing covariances in the presence of missing values; one of "everything", "all.obs", "complete.obs", "na.or.complete", or "pairwise.complete.obs". Default is "pairwise.complete.obs". |

The factor model for an asset'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 ES of the asset's return is given by:

`ES.fm = sum(cES_k) = sum(beta.star_k*mES_k)`

where, summation is across the `K`

factors and the residual,
`cES`

and `mES`

are the component and marginal
contributions to `ES`

respectively. The marginal contribution to ES is
defined as the expected value of `F.star`

, conditional on the loss
being less than or equal to `VaR.fm`

. This is estimated as a sample
average of the observations in that data window.

Refer to Eric Zivot's slides (referenced) for formulas pertaining to the calculation of Normal ES (adapted from a portfolio context to factor models).

A list containing

`ES.fm` |
length-N vector of factor model ES of N-asset returns. |

`mES` |
N x (K+1) matrix of marginal contributions to VaR. |

`cES` |
N x (K+1) matrix of component contributions to VaR. |

`pcES` |
N x (K+1) matrix of percentage component contributions to VaR. |

Where, `K`

is the number of factors and N is the number of assets.

Eric Zviot, Sangeetha Srinivasan and Yi-An Chen

Epperlein, E., & Smillie, A. (2006). Portfolio risk analysis Cracking VAR with kernels. RISK-LONDON-RISK MAGAZINE LIMITED-, 19(8), 70.

Hallerback (2003). Decomposing Portfolio Value-at-Risk: A General Analysis. The Journal of Risk, 5(2), 1-18.

Meucci, A. (2007). Risk contributions from generic user-defined factors. RISK-LONDON-RISK MAGAZINE LIMITED-, 20(6), 84.

Yamai, Y., & Yoshiba, T. (2002). Comparative analyses of expected shortfall and value-at-risk: their estimation error, decomposition, and optimization. Monetary and economic studies, 20(1), 87-121.

`fitTsfm`

, `fitSfm`

, `fitFfm`

for the different factor model fitting functions.

`fmSdDecomp`

for factor model SD decomposition.
`fmVaRDecomp`

for factor model VaR decomposition.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | ```
#' # Time Series Factor Model
data(managers)
fit.macro <- fitTsfm(asset.names=colnames(managers[,(1:6)]),
factor.names=colnames(managers[,(7:8)]), data=managers)
ES.decomp <- fmEsDecomp(fit.macro)
# get the component contributions
ES.decomp$cES
# Statistical Factor Model
data(StockReturns)
sfm.pca.fit <- fitSfm(r.M, k=2)
ES.decomp <- fmEsDecomp(sfm.pca.fit, type="normal")
ES.decomp$cES
# Fundamental Factor Model
data(Stock.df)
exposure.vars <- c("BOOK2MARKET", "LOG.MARKETCAP")
fit <- fitFfm(data=stock, asset.var="TICKER", ret.var="RETURN",
date.var="DATE", exposure.vars=exposure.vars)
ES.decomp <- fmEsDecomp(fit, type="normal")
head(ES.decomp$cES)
``` |

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.