Quantitative financial timeseries analysis
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.
|Keywords:||timeseries, quantitative, finance, statistics, numpy, R, web|
To create a timeseries object directly:
>>> from dynts import timeseries >>> ts = timeseries('test') >>> ts.type 'zoo' >>> ts.name 'test' >>> ts TimeSeries:zoo:test >>> str(ts) 'test'
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) 2 >>> list(e) [2.0, goog] >>> ts = dynts.evaluate(e).unwind() >>> ts TimeSeries:zoo:2.0 * goog >>> len(ts) 251
There are few requirements that must be met:
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
- 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.
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 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
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