-
Notifications
You must be signed in to change notification settings - Fork 8
Multiple plotting engines for PerformanceAnalytics
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.
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.
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.
support more charting engines in a rational and extensible way. e.g. , dygraphs, plotly, googleVis, ggplot2 , matplotlib via reticulate
The current chart.Timeseries dygraphs
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.
Basically, a proposed project plan should rely on first getting the structure correct, with a core implementation that organizes the data to be plotted and calls out to an appropriate sub-function to actually generate the plot object/output. Much of this is done with chart.TimeSeries.base now, with frames and other layering done later. A prototype for each engine should be achievable in a few hours for a single plotting engine.
Much of the complexity in planning for this project will come from understanding how the existing plots use the infrastructure, or implement things independently. Detailed outlines and a plan for tackling the structural issue inherent in the project will be key to a successful application and project.
All charting functions should return a well-formatted list that contains all the transformed data.
Each charting function engages in one or more calculations to plot
data. In many cases, this is simply calling existing
PerformanceAnalytics
functions. In some cases, calculations are
done inside a chart function that should be considered for export
to a stand-alone function. In all cases, the transformed data series
necessary for charting should be formatted in a list
and appropriately
classed. The resulting classed list
should be returned via invisible()
.
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.
- Peter Carl
- Brian Peterson https://github.com/braverock/
- Justin M. Shea https://github.com/JustinMShea
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.
Students, please post a link to your test results here.
Student name: Paritosh Singh
Email: paritoshsingh908@gmail.com
Program: BE in Computer Science and Engineering
Solution: “Basic” Test
University: Chandigarh College of Engineering and Technology(Government Institute Under UT Administration | Affilated to Punjab University, Chandigarh)
Name : Divyansh Chawla
Email : chdivy@iitk.ac.in, code.divyansh@gmail.com
University : Indian Institute of Technology, Kanpur
Course : Integrated B.S. & M.S. in Economics (Majorly Econometrics)
Easy Test Solution : Easy
Intermediate Test Solution : Intermediate
Hard Test Solution : Hard , Hard(Updated) , Plot Creation File , Plot 1 , Plot 2
Draft proposal submitted to SummerOfCode website.
Email: danielitonyo@gmail.com; ditonyo@mail.roosevelt.edu
Program: Major in Economics, Minors in Finance and Computer Science
University: Roosevelt University, Chicago, IL, U.S.A
Test Solution 1: “Basic Test"
Email: cdldl@connect.ust.hk
Program: Msc in Big Data Technology
University: The Hong Kong University of Science and Technology
Test Solution 1: Basic Test https://github.com/cdldl/GSOC2019
Suggestion Solution 2: Sent by mail