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:
- rpy2 if an R TimeSeries back-end is used (default).
-
zoo and PerformanceAnlytics for the
zoo
back-end (currently the default one) -
timeSeries for the
rmetrics
back-end
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 asprofile
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.