cusumActMgr | R Documentation |
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.
cusumActMgr( portfolioName, benchmarkName, ret_df, upperIR = 0.5, lowerIR = 0, lambda_in = 0.1, lambda_out = 0.2, winsorize = 4, filterStd = FALSE )
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 |
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 |
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.
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 |
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 |
Chindhanai Uthaisaad.
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.
#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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.