TSFrames provides a convenient interface for performing standard manipulations of timeseries data. The package uses DataFrame at it’s core to allow powerful data manipulation functions while being lightweight. A lot of functionality/interfaces are inspired by the zoo and xts packages in the R ecosystem.
TSFrames.jl is registered in the general Julia repository, hence, can be added using Pkg.add("TSFrames").
Some of the design principles which were followed while building this package:
Handling of heterogeneous data types: most existing packages handles one type in the core data structure.
Easy maintenance: some main timeseries related packages are currently unmaintained.
Avoiding duplication of coding effort by using the core data structure of an existing widely used and well-tested package (DataFrames.jl).
Convenient syntax: most of the timeseries related data operations can be done using DataFrames but the syntax it isn’t really convenient or intuitive for such operations. The TSFrames interfaces are convenient for doing timeseries specific operations but under the hood most of them use DataFrames operations.
I am currently developing a finance related library and it is significantly dependent on TSFrames.jl as it looks to me that it is the only maintained time series data library.
I am just wondering if you will be maintaining this library in the future?
Can you send the link to your library? We (XKDR Forum) have also started work on some other finance-related packages which depend on TSFrames.jl. It would be good to know what each of us are doing to avoid overlap and collaborate, if possible.
Yes, we do plan to maintain the package going forward.
Thanks very much for the answer. To be honest too early to share something. There are only a few functions at this moment but will grow over time.
It will start with very basic functions like simple returns, then will be portfolio returns, and risk metrices etc.
Whereever possible TSFrames functions will be used within functions to avoid unnecessary duplication and where not possible will be writing custom ones.
Just checked OnlineStats. Some of the methods which accept an array or <:Number as input just work by subsetting a TSFrame. Some others like Lag() which accept custom type are also able to store last N values of type TSFrame.
Thank you for your answer. One another question, please:
skipmissing(ts)
skipmissing is not working, and I cannot remove the missing values from a TSFrame object. I checked the documentation but could not find a function to remove NAs or missing values.