View source: R/portVolDecomp.R
| portVolDecomp | R Documentation |
Decompose portfolio variance risk into factor/residual risk
portVolDecomp(object, ...)
## S3 method for class 'tsfm'
portVolDecomp(
object,
weights = NULL,
factor.cov,
use = "pairwise.complete.obs",
...
)
## S3 method for class 'ffm'
portVolDecomp(object, weights = NULL, factor.cov, ...)
object |
fit object of class |
... |
optional arguments passed to |
weights |
a vector of weights of the assets in the portfolio. Default is NULL, in which case an equal weights will be used. |
factor.cov |
optional user specified factor covariance matrix with named columns; defaults to the sample covariance matrix. |
use |
an optional character string giving a method for computing 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 vector containing: percent factor contribution to risk portfolio volatility risk, factor volatility risk and residual/specific volatility risk
Douglas Martin, Lingjie Yi
fitTsfm, fitFfm
for the different factor model fitting functions.
portSdDecomp for portfolio factor model VaR decomposition.
portVaRDecomp for portfolio factor model VaR decomposition.
portEsDecomp for portfolio factor model ES decomposition.
# Time Series Factor Model example
## Not run:
# load data
data(managers, package = 'PerformanceAnalytics')
fit.macro <- fitTsfm(asset.names = colnames(managers[,(1:6)]),
factor.names = colnames(managers[,(7:9)]),
rf.name = colnames(managers[,10]),
data = managers)
decomp <- portVolDecomp(fit.macro)
decomp
# Fundamental Factor Model example
## First load CRSP and SPGMI data sets
data(stocksCRSP)
data(factorsSPGMI)
## merge by intersection variables
intersecting_vars <- intersect(names(stocksCRSP), names(factorsSPGMI))
stocks_factors <- merge(stocksCRSP, factorsSPGMI, by = intersecting_vars)
## Remove observations with missing Sector/GICS
NA_index <- is.na(stocks_factors$GICS) & is.na(stocks_factors$Sector)
stocks_factors <- stocks_factors[!NA_index]
## Setindex for faster processing
data.table::setindexv(stocks_factors, c("Date","TickerLast"))
# fit a fundamental factor model
exposure_vars = c("Sector", "AnnVol12M", "BP", "EP", "LogMktCap", "PM12M1M")
fit.cross <- fitFfm(data = stocks_factors,
asset.var = "TickerLast",
ret.var = "Return",
date.var = "Date",
exposure.vars = exposure_vars,
fit.method = "W-Rob",
z.score = "crossSection")
decomp <- portVolDecomp(fit.cross)
# get the factor contributions of risk
decomp
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.