dynts

Quantitative financial timeseries analysis


License
BSD-3-Clause
Install
pip install dynts==0.4.1

Documentation

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. It requires Python 2.6 and up, including Python 3 versions.

--

Documentation: http://packages.python.org/dynts/
Dowloads: http://pypi.python.org/pypi/dynts/
Source: http://github.com/quantmind/dynts
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:

>>> import dynts
>>> e = dynts.parse('2*GOOG')
>>> e
2.0 * goog
>>> len(e)
2
>>> list(e)
[2.0, goog]
>>> ts = dynts.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 runtests.py

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 runtests.py --list

for regression, or:

python runtests.py -t profile --list

for profile, or:

python runtests.py -t bench --list

from benchmarks.

If you access the internet behind a proxy server, pass the -p option, for example:

python runtests.py -p http://myproxy.com:80

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

JavaScript

  • jQuery flot plugin for web graphs.
  • jQuery Sparklines plugin for inline plotting.

Community

Trying to use an IRC channel #dynts on irc.freenode.net (you can use the webchat at http://webchat.freenode.net/).

If you find a bug or would like to request a feature, please submit an issue.