Description Usage Arguments Value Author(s) See Also Examples
Compute the factor contributions to Sd, VaR and ES of returns based on Euler's theorem, given the fitted factor model.
1 2 3 4 5 6 7 8 9 10 | riskDecomp(object, ...)
## S3 method for class 'tsfm'
riskDecomp(object, risk, weights = NULL, portDecomp = TRUE,
p = 0.05, type = c("np", "normal"), factor.cov, invert = FALSE,
use = "pairwise.complete.obs", ...)
## S3 method for class 'ffm'
riskDecomp(object, risk, weights = NULL, portDecomp = TRUE,
factor.cov, p = 0.05, type = c("np", "normal"), invert = FALSE, ...)
|
object |
fit object of class |
... |
other optional arguments passed to |
risk |
one of "Sd" (Standard Deviation) or "VaR" (Value at Risk) or "ES" (Expected Shortfall) |
weights |
a vector of weights of the assets in the portfolio, names of the vector should match with asset names. Default is NULL, in which case an equal weights will be used. |
portDecomp |
logical. If |
p |
tail probability for calculation. Default is 0.05. |
type |
one of "np" (non-parametric) or "normal" for calculating Es. Default is "np". |
factor.cov |
optional user specified factor covariance matrix with named columns; defaults to the sample covariance matrix. |
invert |
a logical variable to choose if change ES to positive number, default is False |
use |
an optional character string giving a method for computing factor covariances in the presence of missing values. This must be (an abbreviation of) one of the strings "everything", "all.obs", "complete.obs", "na.or.complete", or "pairwise.complete.obs". Default is "pairwise.complete.obs". |
A list containing
portES |
factor model ES of portfolio returns. |
mES |
length-(K + 1) vector of marginal contributions to Es. |
cES |
length-(K + 1) vector of component contributions to Es. |
pcES |
length-(K + 1) vector of percentage component contributions to Es. |
Where, K is the number of factors.
Eric Zivot, Yi-An Chen, Sangeetha Srinivasan, Lingjie Yi and Avinash Acharya
fitTsfm
, fitFfm
for the different factor model fitting functions.
portSdDecomp
for factor model Sd decomposition.
portVaRDecomp
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 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | # Time Series Factor Model
data(managers)
fit.macro <- factorAnalytics::fitTsfm(asset.names=colnames(managers[,(1:6)]),
factor.names=colnames(managers[,(7:9)]),
rf.name=colnames(managers[,10]), data=managers)
decompSd <- riskDecomp(fit.macro,risk = "Sd")
decompVaR <- riskDecomp(fit.macro,invert = TRUE, risk = "VaR")
decompES <- riskDecomp(fit.macro,invert = TRUE, risk = "ES")
# get the component contribution
# random weights
wts = runif(6)
wts = wts/sum(wts)
names(wts) <- colnames(managers)[1:6]
portSd.decomp <- riskDecomp(fit.macro, wts, portDecomp = TRUE, risk = "Sd")
portVaR.decomp <- riskDecomp(fit.macro, wts, portDecomp = TRUE, risk = "VaR")
portES.decomp <- riskDecomp(fit.macro, wts, portDecomp = TRUE, risk = "ES")
# Fundamental Factor Model
data("stocks145scores6")
dat = stocks145scores6
dat$DATE = as.yearmon(dat$DATE)
dat = dat[dat$DATE >=as.yearmon("2008-01-01") &
dat$DATE <= as.yearmon("2012-12-31"),]
# Load long-only GMV weights for the return data
data("wtsStocks145GmvLo")
wtsStocks145GmvLo = round(wtsStocks145GmvLo,5)
# fit a fundamental factor model
fit.cross <- fitFfm(data = dat,
exposure.vars = c("SECTOR","ROE","BP","MOM121","SIZE","VOL121",
"EP"),date.var = "DATE", ret.var = "RETURN", asset.var = "TICKER",
fit.method="WLS", z.score = "crossSection")
decompES = riskDecomp(fit.cross, risk = "ES")
#get the factor contributions of risk
portES.decomp = riskDecomp(fit.cross, weights = wtsStocks145GmvLo, risk = "ES", portDecomp = TRUE)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.