From noreply at r-forge.r-project.org Sun Jan 17 04:13:54 2016 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Sun, 17 Jan 2016 04:13:54 +0100 (CET) Subject: [Returnanalytics-commits] r4006 - in pkg/FactorAnalytics: . R man Message-ID: <20160117031354.8CF50187C06@r-forge.r-project.org> Author: pragnya Date: 2016-01-17 04:13:53 +0100 (Sun, 17 Jan 2016) New Revision: 4006 Modified: pkg/FactorAnalytics/DESCRIPTION pkg/FactorAnalytics/NAMESPACE pkg/FactorAnalytics/R/fitFfm.R pkg/FactorAnalytics/R/plot.tsfm.r pkg/FactorAnalytics/man/CornishFisher.Rd pkg/FactorAnalytics/man/fitFfm.Rd pkg/FactorAnalytics/man/fitSfm.Rd pkg/FactorAnalytics/man/fitTsfm.Rd pkg/FactorAnalytics/man/fitTsfm.control.Rd pkg/FactorAnalytics/man/fitTsfmLagBeta.Rd pkg/FactorAnalytics/man/fitTsfmMT.Rd pkg/FactorAnalytics/man/fitTsfmUpDn.Rd pkg/FactorAnalytics/man/fmCov.Rd pkg/FactorAnalytics/man/fmEsDecomp.Rd pkg/FactorAnalytics/man/fmSdDecomp.Rd pkg/FactorAnalytics/man/fmVaRDecomp.Rd pkg/FactorAnalytics/man/fmmc.Rd pkg/FactorAnalytics/man/fmmc.estimate.se.Rd pkg/FactorAnalytics/man/fmmcSemiParam.Rd pkg/FactorAnalytics/man/paFm.Rd pkg/FactorAnalytics/man/plot.pafm.Rd pkg/FactorAnalytics/man/plot.sfm.Rd pkg/FactorAnalytics/man/plot.tsfm.Rd pkg/FactorAnalytics/man/plot.tsfmUpDn.Rd pkg/FactorAnalytics/man/predict.sfm.Rd pkg/FactorAnalytics/man/predict.tsfm.Rd pkg/FactorAnalytics/man/predict.tsfmUpDn.Rd pkg/FactorAnalytics/man/print.ffm.Rd pkg/FactorAnalytics/man/print.pafm.Rd pkg/FactorAnalytics/man/print.sfm.Rd pkg/FactorAnalytics/man/print.tsfm.Rd pkg/FactorAnalytics/man/print.tsfmUpDn.Rd pkg/FactorAnalytics/man/summary.pafm.Rd pkg/FactorAnalytics/man/summary.sfm.Rd pkg/FactorAnalytics/man/summary.tsfm.Rd pkg/FactorAnalytics/man/summary.tsfmUpDn.Rd Log: Fixed bugs in plot.tsfm and fitFfm. Updated documentation (Roxygen upgrade) Modified: pkg/FactorAnalytics/DESCRIPTION =================================================================== --- pkg/FactorAnalytics/DESCRIPTION 2015-12-09 18:46:21 UTC (rev 4005) +++ pkg/FactorAnalytics/DESCRIPTION 2016-01-17 03:13:53 UTC (rev 4006) @@ -1,15 +1,15 @@ Package: factorAnalytics Type: Package Title: Factor Analytics -Version: 2.0.28 -Date: 2015-09-21 +Version: 2.0.29 +Date: 2016-01-16 Author: Eric Zivot, Sangeetha Srinivasan and Yi-An Chen Maintainer: Sangeetha Srinivasan -Description: Linear factor model fitting for asset returns (three major types- - time series, fundamental and statistical factor models); related risk - (volatility, VaR and ES) and performance attribution (factor-contributed vs - idiosyncratic returns); tabular displays of risk and performance reports; - factor model Monte Carlo, single and multiple imputation methods for +Description: Linear factor model fitting for asset returns (three major types- + time series, fundamental and statistical factor models); related risk + (volatility, VaR and ES) and performance attribution (factor-contributed vs + idiosyncratic returns); tabular displays of risk and performance reports; + factor model Monte Carlo, single and multiple imputation methods for simulating returns and backfilling unequal histories. License: GPL-2 Depends: @@ -17,13 +17,13 @@ xts (>= 0.9), foreach (>= 1.4), rrcov (>= 1.3) -Imports: +Imports: PerformanceAnalytics(>= 1.4), zoo, corrplot, robustbase, - robust, - leaps, + robust, + leaps, lars, strucchange, lmtest, @@ -42,3 +42,4 @@ LazyLoad: yes LazyDataCompression: xz URL: http://r-forge.r-project.org/projects/returnanalytics/ +RoxygenNote: 5.0.1 Modified: pkg/FactorAnalytics/NAMESPACE =================================================================== --- pkg/FactorAnalytics/NAMESPACE 2015-12-09 18:46:21 UTC (rev 4005) +++ pkg/FactorAnalytics/NAMESPACE 2016-01-17 03:13:53 UTC (rev 4006) @@ -1,4 +1,4 @@ -# Generated by roxygen2 (4.1.1): do not edit by hand +# Generated by roxygen2: do not edit by hand S3method(coef,ffm) S3method(coef,sfm) Modified: pkg/FactorAnalytics/R/fitFfm.R =================================================================== --- pkg/FactorAnalytics/R/fitFfm.R 2015-12-09 18:46:21 UTC (rev 4005) +++ pkg/FactorAnalytics/R/fitFfm.R 2016-01-17 03:13:53 UTC (rev 4006) @@ -40,7 +40,8 @@ #' in S-PLUS by a number of University of Washington Ph.D. students: #' Christopher Green, Eric Aldrich, and Yindeng Jiang. Guy Yollin ported the #' function to R and Yi-An Chen modified that code. Sangeetha Srinivasan -#' re-factored, updated and expanded the functionalities and S3 methods. +#' re-factored, tested, corrected and expanded the functionalities and S3 +#' methods. #' #' @param data data.frame of the balanced panel data containing the variables #' \code{asset.var}, \code{ret.var}, \code{exposure.vars}, \code{date.var} and @@ -76,9 +77,9 @@ #' #' An object of class \code{"ffm"} is a list containing the following #' components: -#' \item{asset.fit}{list of fitted objects for each asset. Each object is of -#' class \code{lm} if \code{fit.method="LS" or "WLS"}, or, class \code{lmRob} -#' if \code{fit.method="Rob" or "W-Rob"}.} +#' \item{factor.fit}{list of fitted objects for each time period. Each object +#' is of class \code{lm} if \code{fit.method="LS" or "WLS"}, or, class +#' \code{lmRob} if \code{fit.method="Rob" or "W-Rob"}.} #' \item{beta}{N x K matrix of factor exposures for the last time period.} #' \item{factor.returns}{xts object of K-factor returns (including intercept).} #' \item{residuals}{xts object of residuals for N-assets.} @@ -87,9 +88,6 @@ #' \item{resid.cov}{N x N covariance matrix of residuals.} #' \item{return.cov}{N x N return covariance estimated by the factor model, #' using the factor exposures from the last time period.} -#' \item{factor.corr}{N x N correlation matrix of the factor returns.} -#' \item{resid.corr}{N x N correlation matrix of residuals.} -#' \item{return.corr}{N x N correlation matrix of asset returns.} #' \item{resid.var}{length-N vector of residual variances.} #' \item{call}{the matched function call.} #' \item{data}{data frame object as input.} @@ -105,7 +103,7 @@ #' Where N is the number of assets, K is the number of factors (including the #' intercept or dummy variables) and T is the number of unique time periods. #' -#' @author Guy Yollin, Yi-An Chen and Sangeetha Srinivasan +#' @author Sangeetha Srinivasan, Guy Yollin and Yi-An Chen #' #' @references #' Menchero, J. (2010). The Characteristics of Factor Portfolios. Journal of @@ -192,6 +190,10 @@ stop("Invalid args: control parameter 'z.score' must be logical") } + # initialize to avoid R CMD check's NOTE: no visible binding for global var + DATE=NULL + W=NULL + # ensure dates are in required format data[[date.var]] <- as.Date(data[[date.var]]) # extract unique time periods from data @@ -268,7 +270,7 @@ resid.var <- apply(sapply(reg.list, residuals), 1, var) } # add column of weights to data replicating resid.var for each period - data <- cbind(data, W=resid.var) + data <- cbind(data, W=1/resid.var) } # estimate factor returns using WLS or weighted-Robust regression @@ -277,13 +279,13 @@ reg.list <- by(data=data, INDICES=data[[date.var]], FUN=function(x) { lm(data=x, formula=fm.formula, contrasts=contrasts.list, - na.action=na.fail, weights=~W) + na.action=na.fail, weights=W) }) } else if (fit.method=="W-Rob") { reg.list <- by(data=data, INDICES=data[[date.var]], FUN=function(x) { lmRob(data=x, formula=fm.formula, contrasts=contrasts.list, - na.action=na.fail, weights=~W, + na.action=na.fail, weights=W, mxr=200, mxf=200, mxs=200) }) } @@ -300,7 +302,6 @@ K <- length(factor.names) # exposure matrix B or beta for the last time period - N x K - DATE=NULL # to avoid R CMD check's NOTE: no visible binding for global var beta <- model.matrix(fm.formula, data=subset(data, DATE==time.periods[TP])) rownames(beta) <- asset.names @@ -353,17 +354,11 @@ # return covariance estimated by the factor model return.cov <- beta %*% factor.cov %*% t(beta) + resid.cov - # factor, residual and return correlations - factor.corr <- cov2cor(factor.cov) - resid.corr <- cov2cor(resid.cov) - return.corr <- cov2cor(return.cov) - # create list of return values. - result <- list(asset.fit=reg.list, beta=beta, factor.returns=factor.returns, + result <- list(factor.fit=reg.list, beta=beta, factor.returns=factor.returns, residuals=residuals, r2=r2, factor.cov=factor.cov, resid.cov=resid.cov, return.cov=return.cov, - factor.corr=factor.corr, resid.corr=resid.corr, - return.corr=return.corr, resid.var=resid.var, call=this.call, + resid.var=resid.var, call=this.call, data=data, date.var=date.var, ret.var=ret.var, asset.var=asset.var, exposure.vars=exposure.vars, weight.var=weight.var, fit.method=fit.method, Modified: pkg/FactorAnalytics/R/plot.tsfm.r =================================================================== --- pkg/FactorAnalytics/R/plot.tsfm.r 2015-12-09 18:46:21 UTC (rev 4005) +++ pkg/FactorAnalytics/R/plot.tsfm.r 2016-01-17 03:13:53 UTC (rev 4006) @@ -396,6 +396,12 @@ if (!(all(f.sub %in% x$factor.names)) && !(all(f.sub %in% 1:k))) { stop("Invalid argument: f.sub is not a valid subset of factor names.") } + if (is.character(f.sub)) { + f.sub <- which(f.sub %in% x$factor.names) + } + if (is.character(a.sub)) { + f.sub <- which(x$asset.names==a.sub) + } # plot selection repeat { Modified: pkg/FactorAnalytics/man/CornishFisher.Rd =================================================================== --- pkg/FactorAnalytics/man/CornishFisher.Rd 2015-12-09 18:46:21 UTC (rev 4005) +++ pkg/FactorAnalytics/man/CornishFisher.Rd 2016-01-17 03:13:53 UTC (rev 4006) @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/CornishFisher.R \name{dCornishFisher} \alias{Cornish-Fisher} @@ -17,9 +17,9 @@ rCornishFisher(n, sigma, skew, ekurt, dp = NULL, seed = NULL) } \arguments{ -\item{x,q}{vector of standardized quantiles.} +\item{x, q}{vector of standardized quantiles.} -\item{n}{scalar; number of simulated values in random simulation, sample +\item{n}{scalar; number of simulated values in random simulation, sample length in density, distribution and quantile functions.} \item{skew}{scalar; skewness.} @@ -30,38 +30,38 @@ \item{sigma}{scalar standard deviation.} -\item{dp}{a vector of length 3, whose elements represent sigma, skew and -ekurt, respectively. If dp is specified, the individual parameters cannot be +\item{dp}{a vector of length 3, whose elements represent sigma, skew and +ekurt, respectively. If dp is specified, the individual parameters cannot be set. Default is \code{NULL}.} \item{seed}{scalar; set seed. Default is \code{NULL}.} } \value{ -\code{dCornishFisher} gives the density, \code{pCornishFisher} gives the -distribution function, \code{qCornishFisher} gives the quantile function, +\code{dCornishFisher} gives the density, \code{pCornishFisher} gives the +distribution function, \code{qCornishFisher} gives the quantile function, and \code{rCornishFisher} generates \code{n} random simulations. } \description{ -Density, distribution function, quantile function and random +Density, distribution function, quantile function and random generation using Cornish-Fisher approximation. } \details{ CDF(q) = Pr(sqrt(n)*(x_bar-mu)/sigma < q) -\code{dCornishFisher} Computes Cornish-Fisher density from two term Edgeworth +\code{dCornishFisher} Computes Cornish-Fisher density from two term Edgeworth expansion given mean, standard deviation, skewness and excess kurtosis. -\code{pCornishFisher} Computes Cornish-Fisher CDF from two term Edgeworth +\code{pCornishFisher} Computes Cornish-Fisher CDF from two term Edgeworth expansion given mean, standard deviation, skewness and excess kurtosis. -\code{qCornishFisher} Computes Cornish-Fisher quantiles from two term -Edgeworth expansion given mean, standard deviation, skewness and excess +\code{qCornishFisher} Computes Cornish-Fisher quantiles from two term +Edgeworth expansion given mean, standard deviation, skewness and excess kurtosis. -\code{rCornishFisher} simulates observations based on Cornish-Fisher quantile +\code{rCornishFisher} simulates observations based on Cornish-Fisher quantile expansion given mean, standard deviation, skewness and excess kurtosis. } \examples{ \dontrun{ # generate 1000 observation from Cornish-Fisher distribution rc <- rCornishFisher(1000,1,0,5) -hist(rc, breaks=100, freq=FALSE, +hist(rc, breaks=100, freq=FALSE, main="simulation of Cornish Fisher Distribution", xlim=c(-10,10)) lines(seq(-10,10,0.1), dnorm(seq(-10,10,0.1), mean=0, sd=1), col=2) # compare with standard normal curve @@ -77,14 +77,15 @@ # use edgeworth expansion pCornishFisher(q, n=5, skew=2, ekurt=6) } + } \author{ Eric Zivot and Yi-An Chen. } \references{ -DasGupta, A. (2008). Asymptotic theory of statistics and probability. +DasGupta, A. (2008). Asymptotic theory of statistics and probability. Springer. -Severini, T. A., (2000). Likelihood Methods in Statistics. Oxford University +Severini, T. A., (2000). Likelihood Methods in Statistics. Oxford University Press. } Modified: pkg/FactorAnalytics/man/fitFfm.Rd =================================================================== --- pkg/FactorAnalytics/man/fitFfm.Rd 2015-12-09 18:46:21 UTC (rev 4005) +++ pkg/FactorAnalytics/man/fitFfm.Rd 2016-01-17 03:13:53 UTC (rev 4006) @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/fitFfm.R \name{fitFfm} \alias{coef.ffm} @@ -18,68 +18,65 @@ \method{residuals}{ffm}(object, ...) } \arguments{ -\item{data}{data.frame of the balanced panel data containing the variables -\code{asset.var}, \code{ret.var}, \code{exposure.vars}, \code{date.var} and +\item{data}{data.frame of the balanced panel data containing the variables +\code{asset.var}, \code{ret.var}, \code{exposure.vars}, \code{date.var} and optionally, \code{weight.var}.} \item{asset.var}{character; name of the variable for asset names.} \item{ret.var}{character; name of the variable for asset returns.} -\item{date.var}{character; name of the variable containing the dates +\item{date.var}{character; name of the variable containing the dates coercible to class \code{Date}.} -\item{exposure.vars}{vector; names of the variables containing the +\item{exposure.vars}{vector; names of the variables containing the fundamental factor exposures.} -\item{weight.var}{character; name of the variable containing the weights -used when standarizing style factor exposures. Default is \code{NULL}. See +\item{weight.var}{character; name of the variable containing the weights +used when standarizing style factor exposures. Default is \code{NULL}. See Details.} -\item{fit.method}{method for estimating factor returns; one of "LS", "WLS" +\item{fit.method}{method for estimating factor returns; one of "LS", "WLS" "Rob" or "W-Rob". See details. Default is "LS".} -\item{rob.stats}{logical; If \code{TRUE}, robust estimates of covariance, -correlation, location and univariate scale are computed as appropriate (see +\item{rob.stats}{logical; If \code{TRUE}, robust estimates of covariance, +correlation, location and univariate scale are computed as appropriate (see Details). Default is \code{FALSE}.} -\item{full.resid.cov}{logical; If \code{TRUE}, a full residual covariance -matrix is estimated. Otherwise, a diagonal residual covariance matrix is +\item{full.resid.cov}{logical; If \code{TRUE}, a full residual covariance +matrix is estimated. Otherwise, a diagonal residual covariance matrix is estimated. Default is \code{FALSE}.} -\item{z.score}{logical; If \code{TRUE}, style exposures will be converted to +\item{z.score}{logical; If \code{TRUE}, style exposures will be converted to z-scores; weights given by \code{weight.var}. Default is \code{FALSE}.} \item{...}{potentially further arguments passed.} -\item{object}{a fit object of class \code{ffm} which is returned by +\item{object}{a fit object of class \code{ffm} which is returned by \code{fitFfm}} } \value{ -\code{fitFfm} returns an object of class \code{"ffm"} for which -\code{print}, \code{plot}, \code{predict} and \code{summary} methods exist. +\code{fitFfm} returns an object of class \code{"ffm"} for which +\code{print}, \code{plot}, \code{predict} and \code{summary} methods exist. -The generic accessor functions \code{coef}, \code{fitted} and -\code{residuals} extract various useful features of the fit object. -Additionally, \code{fmCov} computes the covariance matrix for asset returns +The generic accessor functions \code{coef}, \code{fitted} and +\code{residuals} extract various useful features of the fit object. +Additionally, \code{fmCov} computes the covariance matrix for asset returns based on the fitted factor model. -An object of class \code{"ffm"} is a list containing the following +An object of class \code{"ffm"} is a list containing the following components: -\item{asset.fit}{list of fitted objects for each asset. Each object is of -class \code{lm} if \code{fit.method="LS" or "WLS"}, or, class \code{lmRob} -if \code{fit.method="Rob" or "W-Rob"}.} +\item{factor.fit}{list of fitted objects for each time period. Each object +is of class \code{lm} if \code{fit.method="LS" or "WLS"}, or, class +\code{lmRob} if \code{fit.method="Rob" or "W-Rob"}.} \item{beta}{N x K matrix of factor exposures for the last time period.} \item{factor.returns}{xts object of K-factor returns (including intercept).} \item{residuals}{xts object of residuals for N-assets.} \item{r2}{length-T vector of R-squared values.} \item{factor.cov}{N x N covariance matrix of the factor returns.} \item{resid.cov}{N x N covariance matrix of residuals.} -\item{return.cov}{N x N return covariance estimated by the factor model, +\item{return.cov}{N x N return covariance estimated by the factor model, using the factor exposures from the last time period.} -\item{factor.corr}{N x N correlation matrix of the factor returns.} -\item{resid.corr}{N x N correlation matrix of residuals.} -\item{return.corr}{N x N correlation matrix of asset returns.} \item{resid.var}{length-N vector of residual variances.} \item{call}{the matched function call.} \item{data}{data frame object as input.} @@ -92,7 +89,7 @@ \item{asset.names}{length-N vector of asset names.} \item{factor.names}{length-K vector of factor.names.} \item{time.periods}{length-T vector of dates.} -Where N is the number of assets, K is the number of factors (including the +Where N is the number of assets, K is the number of factors (including the intercept or dummy variables) and T is the number of unique time periods. } \description{ @@ -104,63 +101,66 @@ is returned. } \details{ -Estimation method "LS" corresponds to ordinary least squares using -\code{\link[stats]{lm}} and "Rob" is robust regression using -\code{\link[robust]{lmRob}}. "WLS" is weighted least squares using estimates -of the residual variances from LS regression as weights (feasible GLS). +Estimation method "LS" corresponds to ordinary least squares using +\code{\link[stats]{lm}} and "Rob" is robust regression using +\code{\link[robust]{lmRob}}. "WLS" is weighted least squares using estimates +of the residual variances from LS regression as weights (feasible GLS). Similarly, "W-Rob" is weighted robust regression. Standardizing style factor exposures: The exposures can be standardized into -z-scores using regular or robust (see \code{rob.stats}) measures of location -and scale. Further, \code{weight.var}, a variable such as market-cap, can be -used to compute the weighted mean exposure, and an equal-weighted standard -deviation of the exposures about the weighted mean. This may help avoid an -ill-conditioned covariance matrix. Default option equally weights exposures -of different assets each period. +z-scores using regular or robust (see \code{rob.stats}) measures of location +and scale. Further, \code{weight.var}, a variable such as market-cap, can be +used to compute the weighted mean exposure, and an equal-weighted standard +deviation of the exposures about the weighted mean. This may help avoid an +ill-conditioned covariance matrix. Default option equally weights exposures +of different assets each period. -If \code{rob.stats=TRUE}, \code{\link[robust]{covRob}} is used to compute a -robust estimate of the factor covariance/correlation matrix, and, -\code{\link[robustbase]{scaleTau2}} is used to compute robust tau-estimates -of univariate scale for residuals during "WLS" or "W-Rob" regressions. When -standardizing style exposures, the \code{\link[stats]{median}} and +If \code{rob.stats=TRUE}, \code{\link[robust]{covRob}} is used to compute a +robust estimate of the factor covariance/correlation matrix, and, +\code{\link[robustbase]{scaleTau2}} is used to compute robust tau-estimates +of univariate scale for residuals during "WLS" or "W-Rob" regressions. When +standardizing style exposures, the \code{\link[stats]{median}} and \code{\link[stats]{mad}} are used for location and scale respectively. -At this time, the regression can contain only one dummy exposure (one of -industry, sector, country etc.) or intercept term, otherwise the exposure -matrix will become singular. We plan to expand the function to allow -specifying more than one dummy variable, and, dummy variable(s) in -combination with an intercept term in the future. (Ex: Country + Sector + +At this time, the regression can contain only one dummy exposure (one of +industry, sector, country etc.) or intercept term, otherwise the exposure +matrix will become singular. We plan to expand the function to allow +specifying more than one dummy variable, and, dummy variable(s) in +combination with an intercept term in the future. (Ex: Country + Sector + Intercept) The original function was designed by Doug Martin and initially implemented in S-PLUS by a number of University of Washington Ph.D. students: Christopher Green, Eric Aldrich, and Yindeng Jiang. Guy Yollin ported the function to R and Yi-An Chen modified that code. Sangeetha Srinivasan -re-factored, updated and expanded the functionalities and S3 methods. +re-factored, tested, corrected and expanded the functionalities and S3 +methods. } \examples{ + # Load fundamental and return data data(Stock.df) # fit a fundamental factor model exposure.vars <- c("BOOK2MARKET", "LOG.MARKETCAP") -fit <- fitFfm(data=stock, asset.var="TICKER", ret.var="RETURN", +fit <- fitFfm(data=stock, asset.var="TICKER", ret.var="RETURN", date.var="DATE", exposure.vars=exposure.vars) names(fit) # fit a BARRA Industry Factor Model exposure.vars <- c("GICS.SECTOR") -fit1 <- fitFfm(data=stock, asset.var="TICKER", ret.var="RETURN", - date.var="DATE", exposure.vars=exposure.vars, +fit1 <- fitFfm(data=stock, asset.var="TICKER", ret.var="RETURN", + date.var="DATE", exposure.vars=exposure.vars, fit.method="Rob", rob.stats=TRUE) # example with sector dummy included exposure.vars <- c("BOOK2MARKET", "LOG.MARKETCAP", "GICS.SECTOR") -fit2 <- fitFfm(data=stock, asset.var="TICKER", ret.var="RETURN", +fit2 <- fitFfm(data=stock, asset.var="TICKER", ret.var="RETURN", date.var="DATE", exposure.vars=exposure.vars) + } \author{ -Guy Yollin, Yi-An Chen and Sangeetha Srinivasan +Sangeetha Srinivasan, Guy Yollin and Yi-An Chen } \references{ Menchero, J. (2010). The Characteristics of Factor Portfolios. Journal of @@ -170,13 +170,13 @@ Ed.). New York: McGraw-Hill. } \seealso{ -The \code{ffm} methods for generic functions: -\code{\link{plot.ffm}}, \code{\link{predict.ffm}}, -\code{\link{print.ffm}} and \code{\link{summary.ffm}}. +The \code{ffm} methods for generic functions: +\code{\link{plot.ffm}}, \code{\link{predict.ffm}}, +\code{\link{print.ffm}} and \code{\link{summary.ffm}}. -And, the following extractor functions: \code{\link[stats]{coef}}, +And, the following extractor functions: \code{\link[stats]{coef}}, \code{\link[stats]{fitted}}, \code{\link[stats]{residuals}}, -\code{\link{fmCov}}, \code{\link{fmSdDecomp}}, \code{\link{fmVaRDecomp}} +\code{\link{fmCov}}, \code{\link{fmSdDecomp}}, \code{\link{fmVaRDecomp}} and \code{\link{fmEsDecomp}}. \code{\link{paFm}} for Performance Attribution. Modified: pkg/FactorAnalytics/man/fitSfm.Rd =================================================================== --- pkg/FactorAnalytics/man/fitSfm.Rd 2015-12-09 18:46:21 UTC (rev 4005) +++ pkg/FactorAnalytics/man/fitSfm.Rd 2016-01-17 03:13:53 UTC (rev 4006) @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/fitSfm.R \name{fitSfm} \alias{coef.sfm} @@ -17,108 +17,109 @@ \method{residuals}{sfm}(object, ...) } \arguments{ -\item{data}{vector, matrix, data.frame, xts, timeSeries or zoo object with +\item{data}{vector, matrix, data.frame, xts, timeSeries or zoo object with asset returns. See details.} -\item{k}{number of factors (or) a method for determining the optimal number +\item{k}{number of factors (or) a method for determining the optimal number of factors, one of "bn" or "ck". See details. Default is 1.} -\item{max.k}{scalar; the maximum number of factors to be considered for +\item{max.k}{scalar; the maximum number of factors to be considered for methods "bn" or "ck". Default is \code{NULL}. See details.} -\item{refine}{logical; whether to use the Connor-Korajczyk refinement for +\item{refine}{logical; whether to use the Connor-Korajczyk refinement for APCA. Default is \code{TRUE}.} -\item{sig}{scalar; desired level of significance when "ck" method is +\item{sig}{scalar; desired level of significance when "ck" method is specified. Default is 0.05.} -\item{check}{logical; to check if any asset has identical observations. +\item{check}{logical; to check if any asset has identical observations. Default is \code{FALSE}.} -\item{corr}{logical; whether to use the correlation instead of the covariance +\item{corr}{logical; whether to use the correlation instead of the covariance matrix when finding the principal components. Default is \code{FALSE}.} \item{...}{optional arguments passed to \code{\link[stats]{lm}}.} -\item{object}{a fit object of class \code{sfm} which is returned by +\item{object}{a fit object of class \code{sfm} which is returned by \code{fitSfm}} } \value{ -fitTsfm returns an object of class \code{"sfm"} for which -\code{print}, \code{plot}, \code{predict} and \code{summary} methods exist. +fitTsfm returns an object of class \code{"sfm"} for which +\code{print}, \code{plot}, \code{predict} and \code{summary} methods exist. -The generic accessor functions \code{coef}, \code{fitted} and -\code{residuals} extract various useful features of the fit object. -Additionally, \code{fmCov} computes the covariance matrix for asset returns +The generic accessor functions \code{coef}, \code{fitted} and +\code{residuals} extract various useful features of the fit object. +Additionally, \code{fmCov} computes the covariance matrix for asset returns based on the fitted factor model -An object of class \code{"sfm"} is a list containing the following +An object of class \code{"sfm"} is a list containing the following components: -\item{asset.fit}{fitted object of class \code{"mlm"} or \code{"lm"} from the +\item{asset.fit}{fitted object of class \code{"mlm"} or \code{"lm"} from the time-series LS regression of asset returns on estimated factors.} \item{k}{number of factors; as input or determined by "ck" or "bn" methods.} \item{factors}{T x K xts object of estimated factor realizations.} -\item{loadings}{N x K matrix of factor loadings estimated by +\item{loadings}{N x K matrix of factor loadings estimated by regressing the asset returns on estimated factors.} \item{alpha}{length-N vector of estimated alphas.} \item{r2}{length-N vector of R-squared values.} \item{resid.sd}{length-N vector of residual standard deviations.} \item{residuals}{T x N xts object of residuals from the LS regression.} \item{Omega}{N x N return covariance matrix estimated by the factor model.} -\item{eigen}{length-N (or length-T for APCA) vector of eigenvalues of the +\item{eigen}{length-N (or length-T for APCA) vector of eigenvalues of the sample covariance matrix.} \item{mimic}{N x K matrix of factor mimicking portfolio weights.} \item{call}{the matched function call.} \item{data}{T x N xts data object containing the asset returns.} \item{asset.names}{length-N vector of column names from data.} -Where N is the number of assets, K is the number of factors, and T is the +Where N is the number of assets, K is the number of factors, and T is the number of observations. } \description{ -Fits a statistical factor model using Principal Component -Analysis (PCA) for one or more asset returns or excess returns. When the -number of assets exceeds the number of time periods, Asymptotic Principal -Component Analysis (APCA) is performed. An object of class \code{"sfm"} is +Fits a statistical factor model using Principal Component +Analysis (PCA) for one or more asset returns or excess returns. When the +number of assets exceeds the number of time periods, Asymptotic Principal +Component Analysis (APCA) is performed. An object of class \code{"sfm"} is returned. This function is based on the S+FinMetric function \code{mfactor}. } \details{ -If \code{data} is not of class \code{"xts"}, rownames must provide an -\code{"xts"} compatible time index. Before model fitting, incomplete cases in -\code{data} are removed using \code{\link[stats]{na.omit}}. Specifying -\code{check=TRUE}, issues a warning if any asset is found to have identical -observations. +If \code{data} is not of class \code{"xts"}, rownames must provide an +\code{"xts"} compatible time index. Before model fitting, incomplete cases in +\code{data} are removed using \code{\link[stats]{na.omit}}. Specifying +\code{check=TRUE}, issues a warning if any asset is found to have identical +observations. -Let \code{N} be the number of columns or assets and \code{T} be the number -of rows or observations. When \code{N < T}, Principal Component Analysis -(PCA) is performed. Any number of factors less than \code{min(N,T)} can be -chosen via argument \code{k}. Default is 1. Refer to Zivot and Wang (2007) +Let \code{N} be the number of columns or assets and \code{T} be the number +of rows or observations. When \code{N < T}, Principal Component Analysis +(PCA) is performed. Any number of factors less than \code{min(N,T)} can be +chosen via argument \code{k}. Default is 1. Refer to Zivot and Wang (2007) for more details and references. -When \code{N >= T}, Asymptotic Principal Component Analysis (APCA) is -performed. The user can directly specify \code{k} similar to PCA above, or a -method to automatically determine the number of factors can be specified: -\code{k="bn"} corresponds to Bai and Ng (2002) and \code{k="ck"} corresponds -to Connor and Korajczyk (1993). Users can choose the maximum number of -factors, \code{max.k}, to consider with these methods. The default for -\code{max.k} is set to be 10 or $T-1$, whichever is smaller. +When \code{N >= T}, Asymptotic Principal Component Analysis (APCA) is +performed. The user can directly specify \code{k} similar to PCA above, or a +method to automatically determine the number of factors can be specified: +\code{k="bn"} corresponds to Bai and Ng (2002) and \code{k="ck"} corresponds +to Connor and Korajczyk (1993). Users can choose the maximum number of +factors, \code{max.k}, to consider with these methods. The default for +\code{max.k} is set to be 10 or $T-1$, whichever is smaller. -\code{refine} specifies whether a refinement of the APCA procedure from -Connor and Korajczyk (1988), that may improve efficiency, is to be used. +\code{refine} specifies whether a refinement of the APCA procedure from +Connor and Korajczyk (1988), that may improve efficiency, is to be used. -When \code{corr=TRUE}, the correlation matrix of returns are used for -finding the principal components instead of the covariance matrix. This is -typically decided by practioners on a case-by-case basis. The variable with -the highest variance dominates the PCA when the covariance matrix is used. -However, this may be justified if a volatile asset is more interesting for -some reason and volatility information shouldn't be discarded. On the other -hand, using the correlation matrix standardizes the variables and makes them -comparable, avoiding penalizing variables with less dispersion. +When \code{corr=TRUE}, the correlation matrix of returns are used for +finding the principal components instead of the covariance matrix. This is +typically decided by practioners on a case-by-case basis. The variable with +the highest variance dominates the PCA when the covariance matrix is used. +However, this may be justified if a volatile asset is more interesting for +some reason and volatility information shouldn't be discarded. On the other +hand, using the correlation matrix standardizes the variables and makes them +comparable, avoiding penalizing variables with less dispersion. Finally, if the median of the 1st principal component is negative, all it's -factor realizations are automatically inverted to enable more meaningful +factor realizations are automatically inverted to enable more meaningful interpretation. } \examples{ + # load return data data(StockReturns) @@ -148,32 +149,33 @@ # APCA with the Connor-Korajczyk method fit.apca.ck <- fitSfm(r.W, k="ck") + } \author{ Eric Zivot, Sangeetha Srinivasan and Yi-An Chen } \references{ -Bai, J., & Ng, S. (2002). Determining the number of factors in approximate +Bai, J., & Ng, S. (2002). Determining the number of factors in approximate factor models. Econometrica, 70(1), 191-221. -Connor, G., & Korajczyk, R. A. (1988). Risk and return in an equilibrium -APT: Application of a new test methodology. Journal of Financial Economics, +Connor, G., & Korajczyk, R. A. (1988). Risk and return in an equilibrium +APT: Application of a new test methodology. Journal of Financial Economics, 21(2), 255-289. -Connor, G., & Korajczyk, R. A. (1993). A test for the number of factors in +Connor, G., & Korajczyk, R. A. (1993). A test for the number of factors in [TRUNCATED] To get the complete diff run: svnlook diff /svnroot/returnanalytics -r 4006