mirror of
https://github.com/wassname/catalyst.git
synced 2026-06-28 21:28:06 +08:00
ef4f642e62
This patch lays the groundwork for a compute engine designed to facilitate construction of factor-based universe screening and portfolio allocation. It contains: A new module, `zipline.modelling`, containing entities that can be used to express computations as dependency graphs. Each node in such a graph is an instance of the base `Term` class, defined in `zipline.modelling.term`. Dependency graphs are executed by instances of `FFCEngine`, defined in `zipline.modelling.engine`. A new module, `zipline.data.ffc`, containing loaders and dataset definitions for inputs to the modelling API. New `TradingAlgorithm` api methods: `add_factor`, and `add_filter`. These methods can only be called from `initialize`, and are used to inform the algorithm that each day it should compute the given terms. Computed factor results are made available through a new attribute of the `data` object in `before_trading_start` and `handle_data`. Computed filter results control which assets are available in the factor matrix on each day.
92 lines
1.9 KiB
Python
92 lines
1.9 KiB
Python
"""
|
|
Canonical path locations for zipline data.
|
|
|
|
Paths are rooted at $ZIPLINE_ROOT if that environment variable is set.
|
|
Otherwise default to expanduser(~/.zipline)
|
|
"""
|
|
import os
|
|
from os.path import (
|
|
expanduser,
|
|
join,
|
|
)
|
|
|
|
|
|
def zipline_root(environ=None):
|
|
"""
|
|
Get the root directory for all zipline-managed files.
|
|
|
|
For testing purposes, this accepts a dictionary to interpret as the os
|
|
environment.
|
|
|
|
Parameters
|
|
----------
|
|
environ : dict, optional
|
|
A dict to interpret as the os environment.
|
|
|
|
Returns
|
|
-------
|
|
root : string
|
|
Path to the zipline root dir.
|
|
"""
|
|
if environ is None:
|
|
environ = os.environ.copy()
|
|
|
|
root = environ.get('ZIPLINE_ROOT', None)
|
|
if root is None:
|
|
root = expanduser('~/.zipline')
|
|
|
|
return root
|
|
|
|
|
|
def zipline_root_path(path, environ=None):
|
|
"""
|
|
Get a path relative to the zipline root.
|
|
|
|
Parameters
|
|
----------
|
|
path : str
|
|
The requested path.
|
|
environ : dict, optional
|
|
An environment dict to forward to zipline_root.
|
|
|
|
Returns
|
|
-------
|
|
newpath : str
|
|
The requested path joined with the zipline root.
|
|
"""
|
|
return join(zipline_root(environ=environ), path)
|
|
|
|
|
|
def data_root(environ=None):
|
|
"""
|
|
The root directory for zipline data files.
|
|
|
|
Parameters
|
|
----------
|
|
environ : dict, optional
|
|
An environment dict to forward to zipline_root.
|
|
|
|
Returns
|
|
-------
|
|
data_root : str
|
|
The zipline data root.
|
|
"""
|
|
return zipline_root_path('data', environ=environ)
|
|
|
|
|
|
def cache_root(environ=None):
|
|
"""
|
|
The root directory for zipline cache files.
|
|
|
|
Parameters
|
|
----------
|
|
environ : dict, optional
|
|
An environment dict to forward to zipline_root.
|
|
|
|
Returns
|
|
-------
|
|
cache_root : str
|
|
The zipline cache root.
|
|
"""
|
|
return zipline_root_path('cache', environ=environ)
|