Python package for timeseries analysis and manipulation
Python Visual Basic
Latest commit 21ac57c Nov 2, 2016 @lsbardel lsbardel dsl tests
Permalink
Failed to load latest commit information.
docs refactoring Nov 1, 2016
dynts dsl tests Nov 2, 2016
extensions test passing Nov 2, 2016
extras bug fixes and json vba formatter Sep 30, 2010
tests dsl tests Nov 2, 2016
.coveragerc coverage file Mar 27, 2012
.gitignore can run tests Nov 2, 2016
.travis.yml can run tests Nov 2, 2016
LICENSE flake8 - first stab Feb 16, 2016
MANIFEST.in created the tsweb module Jul 3, 2012
README.rst dsl tests Nov 2, 2016
__init__.py first commit Sep 12, 2010
environment.py fixing tests Oct 10, 2012
requirements-dev.txt can run tests Nov 2, 2016
requirements.txt refactoring Nov 1, 2016
setup.cfg dsl tests Nov 2, 2016
setup.py can run tests Nov 2, 2016

README.rst

A statistic package for python with enphasis on timeseries analysis. Built around numpy, it provides several back-end timeseries classes including R-based objects via rpy2. It is shipped with a domain specific language for timeseries analysis and manipulation built on to of ply.


Badges:license pyversions status pypiversion
Master CI:master-build coverage-master
Documentation:http://quantmind.github.io/dynts/
Dowloads:http://pypi.python.org/pypi/dynts/
Source:http://github.com/quantmind/dynts
Platforms:Linux, OSX, Windows. Python 3.5 and above
Keywords:timeseries, quantitative, finance, statistics, numpy, R, web

Timeseries

To create a timeseries object directly:

>>> from dynts import timeseries
>>> ts = timeseries('test')
>>> ts.type
'numpy'
>>> ts.name
'test'
>>> ts
TimeSeries:numpy:test
>>> str(ts)
'test'

DSL

The package comes with a Domain-Specific-Language (DSL) dedicated to timeserie analysis and manipulation. This is a simple multiplication:

>>> from dynts import api
>>> e = api.parse('2*GOOG')
>>> e
2.0 * goog
>>> len(e)
2
>>> list(e)
[2.0, goog]
>>> ts = api.evaluate(e).unwind()
>>> ts
TimeSeries:numpy:2.0 * goog
>>> len(ts)
251

Requirements

There are few requirements that must be met:

  • python 2.6 up to python 3.3.
  • numpy version 1.5.1 or higher for arrays and matrices.
  • ply version 3.3 or higher, the building block of the DSL.
  • ccy for date and currency manipulation.

R backend

Depending on the back-end used, additional dependencies need to be met. For example, there are back-ends depending on the following R packages:

Installing rpy2 on Linux is straightforward, on windows it requires the python for windows extension library.

Optional Requirements

  • cython for performance. The library is not strictly dependent on cython, however its usage is highly recommended. If available several python modules will be replaced by more efficient compiled C code.
  • xlwt to create spreadsheet from timeseries.
  • matplotlib for plotting.
  • djpcms for the web.views module.

Running Tests

There are three types of tests available:

  • regression for unit and regression tests.
  • profile for analysing performance of different backends and impact of cython.
  • bench same as profile but geared towards speed rather than profiling.

From the distribution directory type:

python setup.py test

This will run by default the regression tests. To run a profile test type:

python runtests.py -t profile <test-name>

where <test-name> is the name of a profile test. To obtain a list of available tests for each test type, run:

python setup.py test -l

for unit tests, or:

python runtests.py -t profile --list

for profile, or:

python runtests.py -t bench --list

from benchmarks.

It is needed since during tests some data is fetched from google finance.

To access coverage of tests you need to install the coverage package and run the tests using:

coverage run runtests.py

and to check out the coverage report:

coverage report -m