Skip to content

Add robust betas to PerformanceAnalytics

Peter Carl edited this page Mar 22, 2021 · 10 revisions

Background

Robust statistics are useful in finance, since all classical estimates are vulnerable to extreme distortion by outliers.  Because financial data has outliers to various degrees, practitioners need robust estimates that:

  • Are not strongly influenced by outliers,
  • Fit a good model to the bulk of the data,
  • Detect and ignore outliers, and
  • Provide for stable inference and prediction

{PerformanceAnalytics} is a collection of econometric functions for performance and risk analysis, long considered a core package by the finance community. In addition to standard risk and performance metrics, this package aims to assist practitioners and researchers in using the latest research in analysis of non-normal return streams.

The idea here is to supplement existing functions in {PerformanceAnalytics} for calculating betas with robust betas fit using a modern robust regression method

Related work

"Robust Betas for Asset Management" by Bailer, Maravina and Martin (2011), Handbook of Quantitative Asset Management, Oxford University Press, 2011, which is referred to below as BMM, and available upon request from Doug Martin ([email protected]).

{RobStatTM} is a companion package for the book: "Robust Statistics: Theory and Methods, second edition", http://www.wiley.com/go/maronna/robust. This package contains code that implements the robust estimators discussed in the book, as well as the scripts reproducing all the examples in the book.

The candidate will be expected to become familiar with the function lmrobdetMM in the {RobStatTM} package available at https://cran.r-project.org/web/packages/RobStatTM/index.html.

Details of your coding project

Examine the lm function in R and the lmrobdetMM function in the {RobStatTM} R package on CRAN, and get familiar with their use to compute a least square fit and a robust regression fit for single factor and multiple factor regression models. Match the capability of the function lmrobdetMM to the several CAPM.beta functions in {PerformanceAnalytics}. Get familiar with those various CAPM.beta functions by running the examples in the {PerformanceAnalytics} documentation. Then use the lm function to replicate those results, and use the lmrobdetMM function and compare the results with the lm results, and explain why any differences occur.

Figure out how to enhance the CAPM.beta functions so that they will allow the user to compute: (1) a robust beta instead of a least-squares (LS) beta, (2) both a LS and a robust betas, and (3) the LS beta only, as the default.

Create functions to tabulate and visualize comparisons between the methods for assessment, or any other visualizations or useful statistical summaries. This is likely most easily and effectively done using the {fit.models} package available at CRAN.

Write a vignette showing how to use the new functionality in {PerformanceAnalytics}.

Identify any other robust statistics in {RobStatTM} for possible inclusion in {PerformanceAnalytics}.

Students should propose a realistic project plan. Quality is more important than quantity, so your proposal may not contain all targeted functionality.

Expected impact

The proposed project will make it possible for academics and practitioners to easily compute classical and robust betas using stock and market returns data sets.  Comparison of the differences between least squares and robust estimates has the considerable virtue of revealing whether or not the least squares estimate is influenced by outliers, which the portfolio or risk manager will otherwise not be aware of.  Adding these methods to a widely-used R package with supporting visualizations, vignettes and other documentation should help practitioners adopt the methods where they may be most useful.

Mentors

Students, please contact mentors below after completing at least one of the tests below.

Tests

Students, please do one or more of the following tests before contacting the mentors:

  • Demonstrate how to use the RobStatTM package to replicate the plots in Figure 2 of BBM.
  • Complete the exercises found at this link.

In addition to the test above, applicants should demonstrate that they have:

  • A very good working knowledge of programming in R
  • Familiarity with the construction of R packages
  • Good coding standards (Google’s R style guide)
  • Experience with GitHub

Please email the results of your tests to the mentors and add a link to your profile or website below.

Solutions of tests

Students, please post contact information here, and send a link to the mentors with your test results:

References

Clone this wiki locally