Description Usage Arguments Details Value Author(s) References Examples
Monitor the risk adjusted performance (Information Ratio) of an actively managed portfolio and
raise an alarm when sufficient evidence has accrued to indicate that its current Information Ratio is 0 or worse.
The monitorng is performed using an optimal changepoint detection scheme (the CUSUM algorithm)
An object of class "cusumActMgr"
is returned.
1 2 | cusumActMgr(portfolioName, benchmarkName, data, upperIR = 0.5, lowerIR = 0,
lambda_in = 0.1, lambda_out = 0.2, winsorize = 4, filterStd = FALSE)
|
portfolioName |
a character representing the name of the fund. It is a required argument with no default |
benchmarkName |
a character representing the name of the benchamark It is a required argument with no default |
data |
an xts object containing the columns |
upperIR |
a numeric value representing the information ratio of a good performance. The default is set to 0.5 |
lowerIR |
a numeric value representing the information ratio of a bad performance. The default is set to 0 |
lambda_in |
the exponential weighting constant when the data seems consistent with the current estimate of volatility. The default is set to 0.1 |
lambda_out |
the exponential weighting constant when the data seems inconsistent with the current estimate of volatility. The default is set to 0.2 |
winsorize |
the numeric value, greater than 1, of standard deviations at which we winsorize. The default is set to 4. |
filterStd |
the logical value representing the filter of the estimated
standard deviations. The default is set to |
Assessing the performance of the active managers is hard because active returns (i.e. portfolio return - benchmark return) are noisy. In addition, the risk of these active returns must be taken account of, and this is commonly (though not universally) done by measuring the standard deviation of active returns. Empirical studies of active managers across a wide range of asset classes suggest that an Annualized Information Ratio (IR = Active Return / Std. Dev.(Active Return)) of 0.5 over a period of 5 years or more is exceptional. In addition, public markets are very efficient, and known inefficiencies disappear as they get arbitraged away, though other inefficiencies sometimes appear in their place. Consequently, 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 (or turned negative). Put differently, investors need to reapidly 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 to detect changepoints, 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:
Logarithmic_Excess_Returns |
Logarithmic excess returns of the fund relative to the 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.81) is passed. |
Annualized_Cusum_IR |
The vector annualized CUSUM of the information ratios |
Annualized Cusum Excess Return |
The vector annualized CUSUM of the excess returns |
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 excess logarithmic 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 annualized Standard deviations |
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.
1 2 | Data = data(cusumData)
results = cusumActMgr(portfolioName = "Parvest", benchmarkName = "RUS2500", data = cusumData)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.