Skip to main content
Donate to the Python Software Foundation or Purchase a PyCharm License to Benefit the PSF! Donate Now

Quantitative financial timeseries analysis

Project description

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.

Keywords:timeseries, quantitative, finance, statistics, numpy, R, web

Timeserie Object

To create a timeseries object directly:

>>> from dynts import timeseries
>>> ts = timeseries('test')
>>> ts.type
>>> ts
>>> str(ts)


At the core of the library there is a Domain-Specific-Language (DSL) dedicated to timeserie analysis and manipulation. DynTS makes timeserie manipulation easy and fun. This is a simple multiplication:

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


There are several requirements that must be met:

  • python 2.6 or later. Support for Python 3 series is under development and should be completed soon.
  • numpy version 1.5.1 or higher for arrays and matrices.
  • ply version 3.3 or higher, the building block of the DSL.
  • rpy2 if an R TimeSeries back-end is used (default).
  • ccy for date and currency manipulation.

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:


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

python -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 --list

for regression, or:

python -t profile --list

for profile, or:

python -t bench --list

from benchmarks.

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

python -p

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

and to check out the coverage report:

coverage report -m



Trying to use an IRC channel #dynts on (you can use the webchat at

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

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
dynts-0.4.0.tar.gz (156.6 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page