-
Notifications
You must be signed in to change notification settings - Fork 8
Multiple plotting engines for PerformanceAnalytics
** 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.