cusumActMgr: Using Statistical Process Control to Monitor Active...

View source: R/cusumActMgr.R

cusumActMgrR Documentation

Using Statistical Process Control to Monitor Active Management

Description

Monitor the Logarithmic Information Ratio of a portfolio relative to its benchmark and raise an alarm when sufficient evidence accrues to indicate that its current LIR is <0 using an optimal changepoint detection scheme (the CUSUM algorithm) An object of class "tsfm" is returned.

Usage

cusumActMgr(
  portfolioName,
  benchmarkName,
  ret_df,
  upperIR = 0.5,
  lowerIR = 0,
  lambda_in = 0.1,
  lambda_out = 0.2,
  winsorize = 4,
  filterStd = FALSE
)

Arguments

portfolioName

A character string with the name of the portfolio. Required, no default

benchmarkName

A character string with the name of the benchamark. Required, no default

ret_df

An xts object containing the columns portfolioName and benchmarkName of monthly returns. Required, no default.

upperIR

Numeric value representing the LIR of a good portfolio, default = 0.5

lowerIR

Numeric value representing the LIR of a bad portfolio, default = 0

lambda_in

Exponential weighting constant used when the data seems consistent with the current estimate of volatility. Default = 0.9

lambda_out

Exponential weighting constant used when the data seems inconsistent with the current estimate of volatility. Default = 0.8

winsorize

Numeric value >1, of the multiple of standard deviation at which we winsorize. The default is set to 4.

filterStd

Logical value, determines if estimated standard deviations are filtered. The default is set to FALSE.

Details

Assessing the performance of active managers is hard because active returns are noisy. In addition, their risk must be taken into account, and this is commonly measured by the standard deviation of active returns. Empirical studies of active managers across a wide range of asset classes suggest that an Annualized Logarithmic Information Ratio (LIR = Active Log Return / Std. Dev.(Active Log Return)) of 0.5 over a period of 5 years or more is exceptional, as markets are very efficient. The majority of active managers deliver active returns and IR close to 0, and even those with a positive IR are at constant risk of having their added value dissipate. Investors, therefore, must continually estimate the current performance of their active portfolios and determine when sufficient evidence has accrued to suggest that their active return and IR have fallen to 0. Put differently, investors need to rapidly detect changes, particularly negative changes, in the performance of their portfolios.

There is a rich literature on changepoint detection, and of the many available algorithms, the CUSUM (an acronym for CUmulative SUM) stands out, on account of its simplicity, its robustness to the actual distribution of active returns, and the optimal trade-off between detection time and the rate of false alarms that it offers. It is closely retlated to Wald's Sequential Probability Ratio Test (SPRT) but is much simpler to implement, and requires minimal inputs from the user. In this application, it seeks to determine when the IR of a portfolio has changed from a good level (default = 0.5 ) to a bad level (default = 0). An alarm is raised when the CUSUM scheme crosses a threshold, which is chosen to make the average time between false alarms 84 months (7 years). By way of comparison, the time taken to detect a transition from good performance to bad is 41 months (or 3 1/2 years). This is much faster than the traditional t-test, which would take 16 years to obtain a t-statistic of 2. The threshold can be recalibrated to meet a user's needs.

Data Processing

Value

cusumActMgr returns a list containing the following xts objects:

Log_Active_Returns

Logarithmic active returns of the fund relative to its benchmark

Annual_Moving_Average

The vector of annual moving average returns

Tracking_Error

The monthly tracking error of the logarithmic excess returns

Information_Ratios

The vector of monthly information ratios

Lindley's_Recursion

The vector Lindley's recursion with a reset after the detection threshold (6.66) is passed.

Annualized_Cusum_IR

The vector annualized CUSUM of the information ratios

Means

The xts matrix of estimated means of the fund in the first columns, the benchmark in the second column, and the excess logarithmic returns in the third column

Standard_deviations

The xts matrix of estimated standard deviations of the fund in the first columns, the benchmark in the second column, and the logarithmic active returns in the third column. It will not be filtered unless filterStd = TRUE is specified.

Protractor

The xts matrix of the rays from IR = -3 in the first column to IR = 3 in the seventh column used in the CUSUM IR as a protractor.

Excess_Volatility

The difference between the annualized Standard deviation of the portolio and its benchmark

Author(s)

Chindhanai Uthaisaad.

References

Philips, T. K., Yashchin, E. and Stein, D. M. (2003). Using Statistical Process Control to Monitor Active Managers, Journal of Portfolio Management, Fall 2003, pp. 86-94.

Examples

#Data Preprocessing
library(xts)
library(zoo)
df <- read.csv("Example1.csv", header = T, sep = "," , stringsAsFactors = FALSE)
df$Date <- as.yearmon(df$Date, format = "%m/%d/%Y")
df <- as.xts(df, order.by = df$Date)  
results <- cusumActMgr(portfolioName = "Small Growth Portfolio", benchmarkName = "Russell 2500", ret_df = df)

kecoli/PCRM documentation built on May 7, 2022, 9:33 a.m.