Skip to content

Multiple plotting engines for PerformanceAnalytics

Brian G. Peterson edited this page Mar 26, 2019 · 26 revisions

** Background

PerformanceAnalytics provides an R package of econometric functions for performance and risk analysis of financial instruments or portfolios. This package provides practitioners and researchers much of the latest research for analysis of both normally and non-normally distributed return streams.

PerformanceAnalytics uses xts and R base plotting to construct many charts of the analytical output. Since its initial creation, R has added the ability to use many other plotting engines. This project should add support for those plotting engines while maintaining the core functionality.

** Related work

PerformanceAnalytics is considered a 'core' project for financial analysis in R. This project seeks to extend the functionality and make it more useful to more people and for more output targets.

** Details of your coding project

PerformanceAnalytics provides more than 30 charting functions for visualizing financial data and the results of analysis on that data. In order to make the charts more useful, this project seeks to do two things. First, it should support multiple plotting libraries. Second, it should always return well structured data using the invisible function so that a user could use the data for additional analysis or to pass to some unsupported plotting library.

*** More Plotting Libraries support more charting engines in a rational and extensible way. e.g. , dygraphs, plotly, ggplot2 , matplotlib via reticulate

The current chart.Timeseries integration has it backwards. We should have the 'base' function, with no extension or possibly as an inner function with a .base extension, generate an object (which will be returned via invisible() ) that contains all necessary plotting data in a list object. Then if you choose an engine, which would default as now to base R plot.xts graphics, we would pass to a sub-function that had an extension which matched the engine someone wanted.

*** Data via invisible

All charting functions should return a well-formatted list that contains all the transformed data.

** Expected impact

Today, many people create replicas of PerformanceAnalytics charts using other engines to include charts in interactive rmarkdown documents or Shiny applications. After this project, users will be able to call the core plot functions with extra parameters, and get back the format output that they want.

** Mentors

  • Peter Carl
  • Brian Peterson
  • Justin Shea

** Tests

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

  • "basic": clone the repository and install the PerformanceAnalytics package and its dependencies locally

  • "intermediate": propose a patch via a pull request for any open issue on the PerformanceAnalytics package, or for a new feature you think would be useful to have in PerformanceAnalytics .

  • "expert": implement one of the models described in the scope of the GSoC project idea here. Most of these models are expected to take a few hours each to code the function, so a prototype should be achievable.

** Solutions of tests

Students, please post a link to your test results here.

Clone this wiki locally