TimeDag

Welcome to the documentation for TimeDag.jl!

TimeDag enables you to build and run time-series models efficiently.

You might want to use this package if some of the following apply:

  • You are processing data with a natural time ordering.
  • You need to handle data sources that update irregularly.
  • You are building online-updating statistical models.
  • Your input data is too large to fit in memory.
  • Your system has several components that share similar computation.
  • You want to create a real-time system, but also test it over a large historical dataset.

This package was built with Invenia's work in electricity grids in mind. Other domains that could be suitable include sensor, system monitoring, and financial market data.

Getting started

It might be helpful to begin with the Concepts, and then to look at the Examples. After that, the documentation under Reference->Node ops should give an idea of what functionality is available.

Roadmap

This section indicates various core functionality that is either possible, or in progress:

Basic operations

  • [x] Lagging by fixed number of knots
  • [x] Lagging by fixed time interval
  • [x] Alignment of arbitrary numbers of node arguments to a node op

Source node ops

  • [x] In-memory, from an existing Block
  • [x] From a Tea file
  • [ ] From a generic Table, with some schema constraints

Array-values

  • [ ] Nodes should be aware of the size of each value, when it is provably constant.

Statistics

  • [x] Fixed-window sum, mean, std, cov, etc.
  • [ ] Time-windowed sum, mean, standard-deviation, covariance, etc.
  • [ ] Exponentially-weighted mean, std, cov, correlation
  • [ ] Integration with OnlineStats.jl — should be easy to wrap an estimator into a node.

Evaluation & scheduling

  • [x] Single-threaded evaluation of a graph
  • [ ] Optimise value-independent ops by using alignment_base concept.
  • [ ] Graph compilation / transformations
  • [ ] Parallel evaluation of a batch within time-independent nodes
  • [ ] Parallelising scheduler