diff --git a/Dockerfile b/Dockerfile index c07be9b0..b36313c9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,11 @@ # -# Dockerfile for an image with the currently checked out version of zipline installed. To build: +# Dockerfile for an image with the currently checked out version of catalyst installed. To build: # -# docker build -t quantopian/zipline . +# docker build -t quantopian/catalyst . # # To run the container: # -# docker run -v /path/to/your/notebooks:/projects -v ~/.zipline:/root/.zipline -p 8888:8888/tcp --name zipline -it quantopian/zipline +# docker run -v /path/to/your/notebooks:/projects -v ~/.catalyst:/root/.catalyst -p 8888:8888/tcp --name catalyst -it quantopian/catalyst # # To access Jupyter when running docker locally (you may need to add NAT rules): # @@ -19,7 +19,7 @@ # # You can also run an algo using the docker exec command. For example: # -# docker exec -it zipline zipline run -f /projects/my_algo.py --start 2015-1-1 --end 2016-1-1 /projects/result.pickle +# docker exec -it catalyst catalyst run -f /projects/my_algo.py --start 2015-1-1 --end 2016-1-1 /projects/result.pickle # FROM python:3.5 @@ -48,7 +48,7 @@ RUN mkdir ${PROJECT_DIR} \ && curl -L https://downloads.sourceforge.net/project/ta-lib/ta-lib/0.4.0/ta-lib-0.4.0-src.tar.gz | tar xvz # -# build and install zipline from source. install TA-Lib after to ensure +# build and install catalyst from source. install TA-Lib after to ensure # numpy is available. # @@ -72,17 +72,17 @@ RUN pip install 'numpy>=1.11.1,<2.0.0' \ ADD ./etc/docker_cmd.sh / # -# make port available. /zipline is made a volume +# make port available. /catalyst is made a volume # for developer testing. # EXPOSE ${NOTEBOOK_PORT} # -# build and install the zipline package into the image +# build and install the catalyst package into the image # -ADD . /zipline -WORKDIR /zipline +ADD . /catalyst +WORKDIR /catalyst RUN pip install -e . # diff --git a/Dockerfile-dev b/Dockerfile-dev index 96a1c6bb..4a729651 100644 --- a/Dockerfile-dev +++ b/Dockerfile-dev @@ -1,15 +1,15 @@ # -# Dockerfile for an image with the currently checked out version of zipline installed. To build: +# Dockerfile for an image with the currently checked out version of catalyst installed. To build: # -# docker build -t quantopian/ziplinedev -f Dockerfile-dev . +# docker build -t quantopian/catalystdev -f Dockerfile-dev . # -# Note: the dev build requires a quantopian/zipline image, which you can build as follows: +# Note: the dev build requires a quantopian/catalyst image, which you can build as follows: # -# docker build -t quantopian/zipline -f Dockerfile +# docker build -t quantopian/catalyst -f Dockerfile # # To run the container: # -# docker run -v /path/to/your/notebooks:/projects -v ~/.zipline:/root/.zipline -p 8888:8888/tcp --name ziplinedev -it quantopian/ziplinedev +# docker run -v /path/to/your/notebooks:/projects -v ~/.catalyst:/root/.catalyst -p 8888:8888/tcp --name catalystdev -it quantopian/catalystdev # # To access Jupyter when running docker locally (you may need to add NAT rules): # @@ -23,11 +23,11 @@ # # You can also run an algo using the docker exec command. For example: # -# docker exec -it ziplinedev zipline run -f /projects/my_algo.py --start 2015-1-1 --end 2016-1-1 /projects/result.pickle +# docker exec -it catalystdev catalyst run -f /projects/my_algo.py --start 2015-1-1 --end 2016-1-1 /projects/result.pickle # -FROM quantopian/zipline +FROM quantopian/catalyst -WORKDIR /zipline +WORKDIR /catalyst RUN pip install -r etc/requirements_dev.txt -r etc/requirements_blaze.txt # Clean out any cython assets. The pip install re-builds them. diff --git a/MANIFEST.in b/MANIFEST.in index d940e60f..0914840c 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,9 +1,9 @@ include LICENSE include etc/requirements*.txt -recursive-include zipline *.pyi -recursive-include zipline *.pxi +recursive-include catalyst *.pyi +recursive-include catalyst *.pxi -recursive-include zipline/resources *.* +recursive-include catalyst/resources *.* include versioneer.py -include zipline/_version.py +include catalyst/_version.py diff --git a/appveyor.yml b/appveyor.yml index bdaefac7..8e28c0b1 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -83,8 +83,8 @@ install: - ps: copy .\ci\appveyor\vcvars64.bat "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64" - "%CMD_IN_ENV% python .\\ci\\make_conda_packages.py" - # test that we can conda install zipline in a new env - - conda create -n installenv --yes -q --use-local python=%PYTHON_VERSION% numpy=%NUMPY_VERSION% zipline -c quantopian -c https://conda.anaconda.org/quantopian/label/ci + # test that we can conda install catalyst in a new env + - conda create -n installenv --yes -q --use-local python=%PYTHON_VERSION% numpy=%NUMPY_VERSION% catalyst -c quantopian -c https://conda.anaconda.org/quantopian/label/ci - ps: $env:BCOLZ_VERSION=(sls "bcolz==(.*)" .\etc\requirements.txt -ca).matches.groups[1].value - ps: $env:NUMEXPR_VERSION=(sls "numexpr==(.*)" .\etc\requirements.txt -ca).matches.groups[1].value @@ -101,8 +101,8 @@ install: - pip freeze | sort test_script: - - nosetests -e zipline.utils.numpy_utils - - flake8 zipline tests + - nosetests -e catalyst.utils.numpy_utils + - flake8 catalyst tests branches: only: diff --git a/zipline/__init__.py b/catalyst/__init__.py similarity index 82% rename from zipline/__init__.py rename to catalyst/__init__.py index 34eac834..b4f1dcd4 100644 --- a/zipline/__init__.py +++ b/catalyst/__init__.py @@ -30,14 +30,14 @@ from . algorithm import TradingAlgorithm from . import api -# PERF: Fire a warning if calendars were instantiated during zipline import. -# Having calendars doesn't break anything per-se, but it makes zipline imports +# PERF: Fire a warning if calendars were instantiated during catalyst import. +# Having calendars doesn't break anything per-se, but it makes catalyst imports # noticeably slower, which becomes particularly noticeable in the Zipline CLI. -from zipline.utils.calendars.calendar_utils import global_calendar_dispatcher +from catalyst.utils.calendars.calendar_utils import global_calendar_dispatcher if global_calendar_dispatcher._calendars: import warnings warnings.warn( - "Found TradingCalendar instances after zipline import.\n" + "Found TradingCalendar instances after catalyst import.\n" "Zipline startup will be much slower until this is fixed!", ) del warnings @@ -49,8 +49,8 @@ del get_versions def load_ipython_extension(ipython): - from .__main__ import zipline_magic - ipython.register_magic_function(zipline_magic, 'line_cell', 'zipline') + from .__main__ import catalyst_magic + ipython.register_magic_function(catalyst_magic, 'line_cell', 'catalyst') if os.name == 'nt': diff --git a/zipline/__main__.py b/catalyst/__main__.py similarity index 93% rename from zipline/__main__.py rename to catalyst/__main__.py index b0c9fba6..d6ce581a 100644 --- a/zipline/__main__.py +++ b/catalyst/__main__.py @@ -7,9 +7,9 @@ import logbook import pandas as pd from six import text_type -from zipline.data import bundles as bundles_module -from zipline.utils.cli import Date, Timestamp -from zipline.utils.run_algo import _run, load_extensions +from catalyst.data import bundles as bundles_module +from catalyst.utils.cli import Date, Timestamp +from catalyst.utils.run_algo import _run, load_extensions try: __IPYTHON__ @@ -22,12 +22,12 @@ except NameError: '-e', '--extension', multiple=True, - help='File or module path to a zipline extension to load.', + help='File or module path to a catalyst extension to load.', ) @click.option( '--strict-extensions/--non-strict-extensions', is_flag=True, - help='If --strict-extensions is passed then zipline will not run if it' + help='If --strict-extensions is passed then catalyst will not run if it' ' cannot load all of the specified extensions. If this is not passed or' ' --non-strict-extensions is passed then the failure will be logged but' ' execution will continue.', @@ -36,10 +36,10 @@ except NameError: '--default-extension/--no-default-extension', is_flag=True, default=True, - help="Don't load the default zipline extension.py file in $ZIPLINE_HOME.", + help="Don't load the default catalyst extension.py file in $ZIPLINE_HOME.", ) def main(extension, strict_extensions, default_extension): - """Top level zipline entry point. + """Top level catalyst entry point. """ # install a logbook handler before performing any other operations logbook.StderrHandler().push_application() @@ -242,14 +242,14 @@ def run(ctx, if output == '-': click.echo(str(perf)) - elif output != os.devnull: # make the zipline magic not write any data + elif output != os.devnull: # make the catalyst magic not write any data perf.to_pickle(output) return perf -def zipline_magic(line, cell=None): - """The zipline IPython cell magic. +def catalyst_magic(line, cell=None): + """The catalyst IPython cell magic. """ load_extensions( default=True, @@ -270,7 +270,7 @@ def zipline_magic(line, cell=None): '--algotext', '', '--local-namespace', ] if cell is None else []) + line.split(), - '%s%%zipline' % ((cell or '') and '%'), + '%s%%catalyst' % ((cell or '') and '%'), # don't use system exit and propogate errors to the caller standalone_mode=False, ) diff --git a/zipline/_protocol.pyx b/catalyst/_protocol.pyx similarity index 99% rename from zipline/_protocol.pyx rename to catalyst/_protocol.pyx index 4b401431..32fc551e 100644 --- a/zipline/_protocol.pyx +++ b/catalyst/_protocol.pyx @@ -24,12 +24,12 @@ from six import iteritems, PY2, string_types from cpython cimport bool from collections import Iterable -from zipline.assets import (Asset, +from catalyst.assets import (Asset, AssetConvertible, PricingDataAssociable, Future) -from zipline.assets.continuous_futures import ContinuousFuture -from zipline.zipline_warnings import ZiplineDeprecationWarning +from catalyst.assets.continuous_futures import ContinuousFuture +from catalyst.catalyst_warnings import ZiplineDeprecationWarning cdef bool _is_iterable(obj): @@ -149,7 +149,7 @@ cdef class BarData: data_frequency : {'minute', 'daily'} The frequency of the bar data; i.e. whether the data is daily or minute bars - restrictions : zipline.finance.asset_restrictions.Restrictions + restrictions : catalyst.finance.asset_restrictions.Restrictions Object that combines and returns restricted list information from multiple sources universe_func : callable, optional diff --git a/zipline/_version.py b/catalyst/_version.py similarity index 99% rename from zipline/_version.py rename to catalyst/_version.py index 5a6de56d..9177081c 100644 --- a/zipline/_version.py +++ b/catalyst/_version.py @@ -37,8 +37,8 @@ def get_config(): cfg.VCS = "git" cfg.style = "pep440" cfg.tag_prefix = "" - cfg.parentdir_prefix = "zipline-" - cfg.versionfile_source = "zipline/_version.py" + cfg.parentdir_prefix = "catalyst-" + cfg.versionfile_source = "catalyst/_version.py" cfg.verbose = False return cfg diff --git a/zipline/algorithm.py b/catalyst/algorithm.py similarity index 95% rename from zipline/algorithm.py rename to catalyst/algorithm.py index afe809b2..8573768e 100644 --- a/zipline/algorithm.py +++ b/catalyst/algorithm.py @@ -35,11 +35,11 @@ from six import ( viewkeys, ) -from zipline._protocol import handle_non_market_minutes -from zipline.assets.synthetic import make_simple_equity_info -from zipline.data.data_portal import DataPortal -from zipline.data.us_equity_pricing import PanelBarReader -from zipline.errors import ( +from catalyst._protocol import handle_non_market_minutes +from catalyst.assets.synthetic import make_simple_equity_info +from catalyst.data.data_portal import DataPortal +from catalyst.data.us_equity_pricing import PanelBarReader +from catalyst.errors import ( AttachPipelineAfterInitialize, CannotOrderDelistedAsset, HistoryInInitialize, @@ -60,9 +60,9 @@ from zipline.errors import ( UnsupportedDatetimeFormat, UnsupportedOrderParameters, ) -from zipline.finance.trading import TradingEnvironment -from zipline.finance.blotter import Blotter -from zipline.finance.controls import ( +from catalyst.finance.trading import TradingEnvironment +from catalyst.finance.blotter import Blotter +from catalyst.finance.controls import ( LongOnly, MaxOrderCount, MaxOrderSize, @@ -70,34 +70,34 @@ from zipline.finance.controls import ( MaxLeverage, RestrictedListOrder ) -from zipline.finance.execution import ( +from catalyst.finance.execution import ( LimitOrder, MarketOrder, StopLimitOrder, StopOrder, ) -from zipline.finance.performance import PerformanceTracker -from zipline.finance.asset_restrictions import Restrictions -from zipline.finance.cancel_policy import NeverCancel, CancelPolicy -from zipline.finance.asset_restrictions import ( +from catalyst.finance.performance import PerformanceTracker +from catalyst.finance.asset_restrictions import Restrictions +from catalyst.finance.cancel_policy import NeverCancel, CancelPolicy +from catalyst.finance.asset_restrictions import ( NoRestrictions, StaticRestrictions, SecurityListRestrictions, ) -from zipline.assets import Asset, Equity, Future -from zipline.gens.tradesimulation import AlgorithmSimulator -from zipline.pipeline import Pipeline -from zipline.pipeline.engine import ( +from catalyst.assets import Asset, Equity, Future +from catalyst.gens.tradesimulation import AlgorithmSimulator +from catalyst.pipeline import Pipeline +from catalyst.pipeline.engine import ( ExplodingPipelineEngine, SimplePipelineEngine, ) -from zipline.utils.api_support import ( +from catalyst.utils.api_support import ( api_method, require_initialized, require_not_initialized, ZiplineAPI, disallowed_in_before_trading_start) -from zipline.utils.input_validation import ( +from catalyst.utils.input_validation import ( coerce_string, ensure_upper_case, error_keywords, @@ -105,14 +105,14 @@ from zipline.utils.input_validation import ( expect_types, optional, ) -from zipline.utils.numpy_utils import int64_dtype -from zipline.utils.calendars.trading_calendar import days_at_time -from zipline.utils.cache import CachedObject, Expired -from zipline.utils.calendars import get_calendar -from zipline.utils.compat import exc_clear +from catalyst.utils.numpy_utils import int64_dtype +from catalyst.utils.calendars.trading_calendar import days_at_time +from catalyst.utils.cache import CachedObject, Expired +from catalyst.utils.calendars import get_calendar +from catalyst.utils.compat import exc_clear -import zipline.utils.events -from zipline.utils.events import ( +import catalyst.utils.events +from catalyst.utils.events import ( EventManager, make_eventrule, date_rules, @@ -121,21 +121,21 @@ from zipline.utils.events import ( AfterOpen, BeforeClose ) -from zipline.utils.factory import create_simulation_parameters -from zipline.utils.math_utils import ( +from catalyst.utils.factory import create_simulation_parameters +from catalyst.utils.math_utils import ( tolerant_equals, round_if_near_integer, ) -from zipline.utils.pandas_utils import clear_dataframe_indexer_caches -from zipline.utils.preprocess import preprocess -from zipline.utils.security_list import SecurityList +from catalyst.utils.pandas_utils import clear_dataframe_indexer_caches +from catalyst.utils.preprocess import preprocess +from catalyst.utils.security_list import SecurityList -import zipline.protocol -from zipline.sources.requests_csv import PandasRequestsCSV +import catalyst.protocol +from catalyst.sources.requests_csv import PandasRequestsCSV -from zipline.gens.sim_engine import MinuteSimulationClock -from zipline.sources.benchmark_source import BenchmarkSource -from zipline.zipline_warnings import ZiplineDeprecationWarning +from catalyst.gens.sim_engine import MinuteSimulationClock +from catalyst.sources.benchmark_source import BenchmarkSource +from catalyst.catalyst_warnings import ZiplineDeprecationWarning log = logbook.Logger("ZiplineLog") @@ -206,7 +206,7 @@ class TradingAlgorithm(object): The platform the simulation is running on. This can be queried for in the simulation with ``get_environment``. This allows algorithms to conditionally execute code based on platform it is running on. - default: 'zipline' + default: 'catalyst' """ def __init__(self, *args, **kwargs): @@ -260,7 +260,7 @@ class TradingAlgorithm(object): self._recorded_vars = {} self.namespace = kwargs.pop('namespace', {}) - self._platform = kwargs.pop('platform', 'zipline') + self._platform = kwargs.pop('platform', 'catalyst') self.logger = None @@ -316,7 +316,7 @@ class TradingAlgorithm(object): if not self.blotter: self.blotter = Blotter( data_frequency=self.data_frequency, - # Default to NeverCancel in zipline + # Default to NeverCancel in catalyst cancel_policy=self.cancel_policy, ) @@ -389,8 +389,8 @@ class TradingAlgorithm(object): self._analyze = kwargs.pop('analyze', None) self.event_manager.add_event( - zipline.utils.events.Event( - zipline.utils.events.Always(), + catalyst.utils.events.Event( + catalyst.utils.events.Always(), # We pass handle_data.__func__ to get the unbound method. # We will explicitly pass the algorithm to bind it again. self.handle_data.__func__, @@ -702,7 +702,7 @@ class TradingAlgorithm(object): # this is a repeat run of the algorithm. self.perf_tracker = None - # Create zipline and loop through simulated_trading. + # Create catalyst and loop through simulated_trading. # Each iteration returns a perf dictionary try: perfs = [] @@ -937,7 +937,7 @@ class TradingAlgorithm(object): The starting capital for the simulation. platform : str The platform that the code is running on. By default this - will be the string 'zipline'. This can allow algorithms to + will be the string 'catalyst'. This can allow algorithms to know if they are running on the Quantopian platform instead. * : dict[str -> any] Returns all of the fields in a dictionary. @@ -1022,7 +1022,7 @@ class TradingAlgorithm(object): Returns ------- - csv_data_source : zipline.sources.requests_csv.PandasRequestsCSV + csv_data_source : catalyst.sources.requests_csv.PandasRequestsCSV A requests source that will pull data from the url specified. """ @@ -1063,7 +1063,7 @@ class TradingAlgorithm(object): The function to execute when the rule is triggered. """ self.event_manager.add_event( - zipline.utils.events.Event(rule, callback), + catalyst.utils.events.Event(rule, callback), ) @api_method @@ -1090,8 +1090,8 @@ class TradingAlgorithm(object): See Also -------- - :class:`zipline.api.date_rules` - :class:`zipline.api.time_rules` + :class:`catalyst.api.date_rules` + :class:`catalyst.api.time_rules` """ # When the user calls schedule_function(func, ), assume that @@ -1146,7 +1146,7 @@ class TradingAlgorithm(object): ----- These values will appear in the performance packets and the performance dataframe passed to ``analyze`` and returned from - :func:`~zipline.run_algorithm`. + :func:`~catalyst.run_algorithm`. """ # Make 2 objects both referencing the same iterator args = [iter(args)] * 2 @@ -1201,7 +1201,7 @@ class TradingAlgorithm(object): See Also -------- - :func:`zipline.api.set_symbol_lookup_date` + :func:`catalyst.api.set_symbol_lookup_date` """ # If the user has not set the symbol lookup date, # use the end_session as the date for sybmol->sid resolution. @@ -1273,7 +1273,7 @@ class TradingAlgorithm(object): See Also -------- - :func:`zipline.api.set_symbol_lookup_date` + :func:`catalyst.api.set_symbol_lookup_date` """ return [self.symbol(identifier) for identifier in args] @@ -1433,9 +1433,9 @@ class TradingAlgorithm(object): See Also -------- - :class:`zipline.finance.execution.ExecutionStyle` - :func:`zipline.api.order_value` - :func:`zipline.api.order_percent` + :class:`catalyst.finance.execution.ExecutionStyle` + :func:`catalyst.api.order_value` + :func:`catalyst.api.order_percent` """ if not self._can_order_asset(asset): return None @@ -1567,14 +1567,14 @@ class TradingAlgorithm(object): Notes ----- - See :func:`zipline.api.order` for more information about + See :func:`catalyst.api.order` for more information about ``limit_price``, ``stop_price``, and ``style`` See Also -------- - :class:`zipline.finance.execution.ExecutionStyle` - :func:`zipline.api.order` - :func:`zipline.api.order_percent` + :class:`catalyst.finance.execution.ExecutionStyle` + :func:`catalyst.api.order` + :func:`catalyst.api.order_percent` """ if not self._can_order_asset(asset): return None @@ -1673,7 +1673,7 @@ class TradingAlgorithm(object): See Also -------- - :class:`zipline.finance.slippage.SlippageModel` + :class:`catalyst.finance.slippage.SlippageModel` """ if self.initialized: raise SetSlippagePostInit() @@ -1709,9 +1709,9 @@ class TradingAlgorithm(object): See Also -------- - :class:`zipline.finance.commission.PerShare` - :class:`zipline.finance.commission.PerTrade` - :class:`zipline.finance.commission.PerDollar` + :class:`catalyst.finance.commission.PerShare` + :class:`catalyst.finance.commission.PerTrade` + :class:`catalyst.finance.commission.PerDollar` """ if self.initialized: raise SetCommissionPostInit() @@ -1745,8 +1745,8 @@ class TradingAlgorithm(object): See Also -------- - :class:`zipline.api.EODCancel` - :class:`zipline.api.NeverCancel` + :class:`catalyst.api.EODCancel` + :class:`catalyst.api.NeverCancel` """ if not isinstance(cancel_policy, CancelPolicy): raise UnsupportedCancelPolicy() @@ -1815,14 +1815,14 @@ class TradingAlgorithm(object): Notes ----- - See :func:`zipline.api.order` for more information about + See :func:`catalyst.api.order` for more information about ``limit_price``, ``stop_price``, and ``style`` See Also -------- - :class:`zipline.finance.execution.ExecutionStyle` - :func:`zipline.api.order` - :func:`zipline.api.order_value` + :class:`catalyst.finance.execution.ExecutionStyle` + :func:`catalyst.api.order` + :func:`catalyst.api.order_value` """ if not self._can_order_asset(asset): return None @@ -1884,15 +1884,15 @@ class TradingAlgorithm(object): call to ``order_target`` will not have been filled when the second ``order_target`` call is made. - See :func:`zipline.api.order` for more information about + See :func:`catalyst.api.order` for more information about ``limit_price``, ``stop_price``, and ``style`` See Also -------- - :class:`zipline.finance.execution.ExecutionStyle` - :func:`zipline.api.order` - :func:`zipline.api.order_target_percent` - :func:`zipline.api.order_target_value` + :class:`catalyst.finance.execution.ExecutionStyle` + :func:`catalyst.api.order` + :func:`catalyst.api.order_target_percent` + :func:`catalyst.api.order_target_value` """ if not self._can_order_asset(asset): return None @@ -1958,15 +1958,15 @@ class TradingAlgorithm(object): call to ``order_target_value`` will not have been filled when the second ``order_target_value`` call is made. - See :func:`zipline.api.order` for more information about + See :func:`catalyst.api.order` for more information about ``limit_price``, ``stop_price``, and ``style`` See Also -------- - :class:`zipline.finance.execution.ExecutionStyle` - :func:`zipline.api.order` - :func:`zipline.api.order_target` - :func:`zipline.api.order_target_percent` + :class:`catalyst.finance.execution.ExecutionStyle` + :func:`catalyst.api.order` + :func:`catalyst.api.order_target` + :func:`catalyst.api.order_target_percent` """ if not self._can_order_asset(asset): return None @@ -2022,15 +2022,15 @@ class TradingAlgorithm(object): because the first call to ``order_target_percent`` will not have been filled when the second ``order_target_percent`` call is made. - See :func:`zipline.api.order` for more information about + See :func:`catalyst.api.order` for more information about ``limit_price``, ``stop_price``, and ``style`` See Also -------- - :class:`zipline.finance.execution.ExecutionStyle` - :func:`zipline.api.order` - :func:`zipline.api.order_target` - :func:`zipline.api.order_target_value` + :class:`catalyst.finance.execution.ExecutionStyle` + :func:`catalyst.api.order` + :func:`catalyst.api.order_target` + :func:`catalyst.api.order_target_value` """ if not self._can_order_asset(asset): return None @@ -2128,7 +2128,7 @@ class TradingAlgorithm(object): The order_id or order object to cancel. """ order_id = order_param - if isinstance(order_param, zipline.protocol.Order): + if isinstance(order_param, catalyst.protocol.Order): order_id = order_param.id self.blotter.cancel(order_id) @@ -2333,7 +2333,7 @@ class TradingAlgorithm(object): else: warnings.warn( "`set_do_not_order_list(container_of_assets)` is deprecated. " - "Create a zipline.finance.asset_restrictions." + "Create a catalyst.finance.asset_restrictions." "StaticRestrictions object with a container of assets and use " "`set_asset_restrictions(StaticRestrictions(" "container_of_assets))` instead.", @@ -2359,7 +2359,7 @@ class TradingAlgorithm(object): See Also -------- - zipline.finance.asset_restrictions.Restrictions + catalyst.finance.asset_restrictions.Restrictions """ control = RestrictedListOrder(on_error, restrictions) self.register_trading_control(control) @@ -2404,7 +2404,7 @@ class TradingAlgorithm(object): See Also -------- - :func:`zipline.api.pipeline_output` + :func:`catalyst.api.pipeline_output` """ if self._pipelines: raise NotImplementedError("Multiple pipelines are not supported.") @@ -2444,8 +2444,8 @@ class TradingAlgorithm(object): See Also -------- - :func:`zipline.api.attach_pipeline` - :meth:`zipline.pipeline.engine.PipelineEngine.run_pipeline` + :func:`catalyst.api.attach_pipeline` + :meth:`catalyst.pipeline.engine.PipelineEngine.run_pipeline` """ # NOTE: We don't currently support multiple pipelines, but we plan to # in the future. diff --git a/zipline/api.py b/catalyst/api.py similarity index 100% rename from zipline/api.py rename to catalyst/api.py diff --git a/zipline/api.pyi b/catalyst/api.pyi similarity index 89% rename from zipline/api.pyi rename to catalyst/api.pyi index 72429795..bf104664 100644 --- a/zipline/api.pyi +++ b/catalyst/api.pyi @@ -1,12 +1,12 @@ import collections -from zipline.assets import Asset, Equity, Future -from zipline.assets.futures import FutureChain -from zipline.finance.asset_restrictions import Restrictions -from zipline.finance.cancel_policy import CancelPolicy -from zipline.pipeline import Pipeline -from zipline.protocol import Order -from zipline.utils.events import EventRule -from zipline.utils.security_list import SecurityList +from catalyst.assets import Asset, Equity, Future +from catalyst.assets.futures import FutureChain +from catalyst.finance.asset_restrictions import Restrictions +from catalyst.finance.cancel_policy import CancelPolicy +from catalyst.pipeline import Pipeline +from catalyst.protocol import Order +from catalyst.utils.events import EventRule +from catalyst.utils.security_list import SecurityList def attach_pipeline(pipeline, name, chunks=None): @@ -31,7 +31,7 @@ def attach_pipeline(pipeline, name, chunks=None): See Also -------- - :func:`zipline.api.pipeline_output` + :func:`catalyst.api.pipeline_output` """ def batch_market_order(share_counts): @@ -121,7 +121,7 @@ def fetch_csv(url, pre_func=None, post_func=None, date_column='date', date_forma Returns ------- - csv_data_source : zipline.sources.requests_csv.PandasRequestsCSV + csv_data_source : catalyst.sources.requests_csv.PandasRequestsCSV A requests source that will pull data from the url specified. """ @@ -182,7 +182,7 @@ def get_environment(field='platform'): The starting capital for the simulation. platform : str The platform that the code is running on. By default this - will be the string 'zipline'. This can allow algorithms to + will be the string 'catalyst'. This can allow algorithms to know if they are running on the Quantopian platform instead. * : dict[str -> any] Returns all of the fields in a dictionary. @@ -253,9 +253,9 @@ def order(asset, amount, limit_price=None, stop_price=None, style=None): See Also -------- - :class:`zipline.finance.execution.ExecutionStyle` - :func:`zipline.api.order_value` - :func:`zipline.api.order_percent` + :class:`catalyst.finance.execution.ExecutionStyle` + :func:`catalyst.api.order_value` + :func:`catalyst.api.order_percent` """ def order_percent(asset, percent, limit_price=None, stop_price=None, style=None): @@ -283,14 +283,14 @@ def order_percent(asset, percent, limit_price=None, stop_price=None, style=None) Notes ----- - See :func:`zipline.api.order` for more information about + See :func:`catalyst.api.order` for more information about ``limit_price``, ``stop_price``, and ``style`` See Also -------- - :class:`zipline.finance.execution.ExecutionStyle` - :func:`zipline.api.order` - :func:`zipline.api.order_value` + :class:`catalyst.finance.execution.ExecutionStyle` + :func:`catalyst.api.order` + :func:`catalyst.api.order_value` """ def order_target(asset, target, limit_price=None, stop_price=None, style=None): @@ -333,15 +333,15 @@ def order_target(asset, target, limit_price=None, stop_price=None, style=None): call to ``order_target`` will not have been filled when the second ``order_target`` call is made. - See :func:`zipline.api.order` for more information about + See :func:`catalyst.api.order` for more information about ``limit_price``, ``stop_price``, and ``style`` See Also -------- - :class:`zipline.finance.execution.ExecutionStyle` - :func:`zipline.api.order` - :func:`zipline.api.order_target_percent` - :func:`zipline.api.order_target_value` + :class:`catalyst.finance.execution.ExecutionStyle` + :func:`catalyst.api.order` + :func:`catalyst.api.order_target_percent` + :func:`catalyst.api.order_target_value` """ def order_target_percent(asset, target, limit_price=None, stop_price=None, style=None): @@ -385,15 +385,15 @@ def order_target_percent(asset, target, limit_price=None, stop_price=None, style because the first call to ``order_target_percent`` will not have been filled when the second ``order_target_percent`` call is made. - See :func:`zipline.api.order` for more information about + See :func:`catalyst.api.order` for more information about ``limit_price``, ``stop_price``, and ``style`` See Also -------- - :class:`zipline.finance.execution.ExecutionStyle` - :func:`zipline.api.order` - :func:`zipline.api.order_target` - :func:`zipline.api.order_target_value` + :class:`catalyst.finance.execution.ExecutionStyle` + :func:`catalyst.api.order` + :func:`catalyst.api.order_target` + :func:`catalyst.api.order_target_value` """ def order_target_value(asset, target, limit_price=None, stop_price=None, style=None): @@ -437,15 +437,15 @@ def order_target_value(asset, target, limit_price=None, stop_price=None, style=N call to ``order_target_value`` will not have been filled when the second ``order_target_value`` call is made. - See :func:`zipline.api.order` for more information about + See :func:`catalyst.api.order` for more information about ``limit_price``, ``stop_price``, and ``style`` See Also -------- - :class:`zipline.finance.execution.ExecutionStyle` - :func:`zipline.api.order` - :func:`zipline.api.order_target` - :func:`zipline.api.order_target_percent` + :class:`catalyst.finance.execution.ExecutionStyle` + :func:`catalyst.api.order` + :func:`catalyst.api.order_target` + :func:`catalyst.api.order_target_percent` """ def order_value(asset, value, limit_price=None, stop_price=None, style=None): @@ -478,14 +478,14 @@ def order_value(asset, value, limit_price=None, stop_price=None, style=None): Notes ----- - See :func:`zipline.api.order` for more information about + See :func:`catalyst.api.order` for more information about ``limit_price``, ``stop_price``, and ``style`` See Also -------- - :class:`zipline.finance.execution.ExecutionStyle` - :func:`zipline.api.order` - :func:`zipline.api.order_percent` + :class:`catalyst.finance.execution.ExecutionStyle` + :func:`catalyst.api.order` + :func:`catalyst.api.order_percent` """ def pipeline_output(name): @@ -510,8 +510,8 @@ def pipeline_output(name): See Also -------- - :func:`zipline.api.attach_pipeline` - :meth:`zipline.pipeline.engine.PipelineEngine.run_pipeline` + :func:`catalyst.api.attach_pipeline` + :meth:`catalyst.pipeline.engine.PipelineEngine.run_pipeline` """ def record(*args, **kwargs): @@ -526,7 +526,7 @@ def record(*args, **kwargs): ----- These values will appear in the performance packets and the performance dataframe passed to ``analyze`` and returned from - :func:`~zipline.run_algorithm`. + :func:`~catalyst.run_algorithm`. """ def schedule_function(func, date_rule=None, time_rule=None, half_days=True, calendar=None): @@ -545,8 +545,8 @@ def schedule_function(func, date_rule=None, time_rule=None, half_days=True, cale See Also -------- - :class:`zipline.api.date_rules` - :class:`zipline.api.time_rules` + :class:`catalyst.api.date_rules` + :class:`catalyst.api.time_rules` """ def set_asset_restrictions(restrictions, on_error='fail'): @@ -559,7 +559,7 @@ def set_asset_restrictions(restrictions, on_error='fail'): See Also -------- - zipline.finance.asset_restrictions.Restrictions + catalyst.finance.asset_restrictions.Restrictions """ def set_benchmark(benchmark): @@ -586,8 +586,8 @@ def set_cancel_policy(cancel_policy): See Also -------- - :class:`zipline.api.EODCancel` - :class:`zipline.api.NeverCancel` + :class:`catalyst.api.EODCancel` + :class:`catalyst.api.NeverCancel` """ def set_commission(commission): @@ -600,9 +600,9 @@ def set_commission(commission): See Also -------- - :class:`zipline.finance.commission.PerShare` - :class:`zipline.finance.commission.PerTrade` - :class:`zipline.finance.commission.PerDollar` + :class:`catalyst.finance.commission.PerShare` + :class:`catalyst.finance.commission.PerTrade` + :class:`catalyst.finance.commission.PerDollar` """ def set_do_not_order_list(restricted_list, on_error='fail'): @@ -691,7 +691,7 @@ def set_slippage(slippage): See Also -------- - :class:`zipline.finance.slippage.SlippageModel` + :class:`catalyst.finance.slippage.SlippageModel` """ def set_symbol_lookup_date(dt): @@ -745,7 +745,7 @@ def symbol(symbol_str): See Also -------- - :func:`zipline.api.set_symbol_lookup_date` + :func:`catalyst.api.set_symbol_lookup_date` """ def symbols(*args): @@ -770,6 +770,6 @@ def symbols(*args): See Also -------- - :func:`zipline.api.set_symbol_lookup_date` + :func:`catalyst.api.set_symbol_lookup_date` """ diff --git a/zipline/assets/__init__.py b/catalyst/assets/__init__.py similarity index 100% rename from zipline/assets/__init__.py rename to catalyst/assets/__init__.py diff --git a/zipline/assets/_assets.pyx b/catalyst/assets/_assets.pyx similarity index 99% rename from zipline/assets/_assets.pyx rename to catalyst/assets/_assets.pyx index 40d84997..a06e4239 100644 --- a/zipline/assets/_assets.pyx +++ b/catalyst/assets/_assets.pyx @@ -34,7 +34,7 @@ from numpy cimport int64_t import warnings cimport numpy as np -from zipline.utils.calendars import get_calendar +from catalyst.utils.calendars import get_calendar # IMPORTANT NOTE: You must change this template if you change diff --git a/zipline/assets/asset_db_migrations.py b/catalyst/assets/asset_db_migrations.py similarity index 97% rename from zipline/assets/asset_db_migrations.py rename to catalyst/assets/asset_db_migrations.py index 78eaf4a4..9ca319e7 100644 --- a/zipline/assets/asset_db_migrations.py +++ b/catalyst/assets/asset_db_migrations.py @@ -5,10 +5,10 @@ from alembic.operations import Operations import sqlalchemy as sa from toolz.curried import do, operator as op -from zipline.assets.asset_writer import write_version_info -from zipline.errors import AssetDBImpossibleDowngrade -from zipline.utils.preprocess import preprocess -from zipline.utils.sqlite_utils import coerce_string_to_eng +from catalyst.assets.asset_writer import write_version_info +from catalyst.errors import AssetDBImpossibleDowngrade +from catalyst.utils.preprocess import preprocess +from catalyst.utils.sqlite_utils import coerce_string_to_eng @preprocess(engine=coerce_string_to_eng) diff --git a/zipline/assets/asset_db_schema.py b/catalyst/assets/asset_db_schema.py similarity index 100% rename from zipline/assets/asset_db_schema.py rename to catalyst/assets/asset_db_schema.py diff --git a/zipline/assets/asset_writer.py b/catalyst/assets/asset_writer.py similarity index 98% rename from zipline/assets/asset_writer.py rename to catalyst/assets/asset_writer.py index 615c9a5c..9910db72 100644 --- a/zipline/assets/asset_writer.py +++ b/catalyst/assets/asset_writer.py @@ -21,8 +21,8 @@ import pandas as pd import sqlalchemy as sa from toolz import first -from zipline.errors import AssetDBVersionError -from zipline.assets.asset_db_schema import ( +from catalyst.errors import AssetDBVersionError +from catalyst.assets.asset_db_schema import ( ASSET_DB_VERSION, asset_db_table_names, asset_router, @@ -36,9 +36,9 @@ from zipline.assets.asset_db_schema import ( version_info, ) -from zipline.utils.preprocess import preprocess -from zipline.utils.range import from_tuple, intersecting_ranges -from zipline.utils.sqlite_utils import coerce_string_to_eng +from catalyst.utils.preprocess import preprocess +from catalyst.utils.range import from_tuple, intersecting_ranges +from catalyst.utils.sqlite_utils import coerce_string_to_eng # Define a namedtuple for use with the load_data and _load_data methods AssetData = namedtuple( @@ -455,7 +455,7 @@ class AssetDBWriter(object): See Also -------- - zipline.assets.asset_finder + catalyst.assets.asset_finder """ with self.engine.begin() as conn: # Create SQL tables if they do not exist. diff --git a/zipline/assets/assets.py b/catalyst/assets/assets.py similarity index 99% rename from zipline/assets/assets.py rename to catalyst/assets/assets.py index 1e73bdae..2c190750 100644 --- a/zipline/assets/assets.py +++ b/catalyst/assets/assets.py @@ -39,7 +39,7 @@ from toolz import ( ) from toolz.curried import operator as op -from zipline.errors import ( +from catalyst.errors import ( EquitiesNotFound, FutureContractsNotFound, MapAssetIdentifierIndexError, @@ -70,11 +70,11 @@ from .asset_writer import ( from .asset_db_schema import ( ASSET_DB_VERSION ) -from zipline.utils.control_flow import invert -from zipline.utils.memoize import lazyval -from zipline.utils.numpy_utils import as_column -from zipline.utils.preprocess import preprocess -from zipline.utils.sqlite_utils import group_into_chunks, coerce_string_to_eng +from catalyst.utils.control_flow import invert +from catalyst.utils.memoize import lazyval +from catalyst.utils.numpy_utils import as_column +from catalyst.utils.preprocess import preprocess +from catalyst.utils.sqlite_utils import group_into_chunks, coerce_string_to_eng log = Logger('assets.py') @@ -260,7 +260,7 @@ class AssetFinder(object): See Also -------- - :class:`zipline.assets.AssetDBWriter` + :class:`catalyst.assets.AssetDBWriter` """ # Token used as a substitute for pickling objects that contain a # reference to an AssetFinder. @@ -1316,7 +1316,7 @@ class AssetFinder(object): See Also -------- numpy.putmask - zipline.pipeline.engine.SimplePipelineEngine._compute_root_mask + catalyst.pipeline.engine.SimplePipelineEngine._compute_root_mask """ # This is a less than ideal place to do this, because if someone adds # assets to the finder after we've touched lifetimes we won't have diff --git a/zipline/assets/continuous_futures.pyx b/catalyst/assets/continuous_futures.pyx similarity index 99% rename from zipline/assets/continuous_futures.pyx rename to catalyst/assets/continuous_futures.pyx index ad573668..40f7b8ab 100644 --- a/zipline/assets/continuous_futures.pyx +++ b/catalyst/assets/continuous_futures.pyx @@ -36,7 +36,7 @@ from numpy cimport long_t, int64_t from pandas import Timestamp import warnings -from zipline.utils.calendars import get_calendar +from catalyst.utils.calendars import get_calendar def delivery_predicate(codes, contract): diff --git a/zipline/assets/futures.py b/catalyst/assets/futures.py similarity index 100% rename from zipline/assets/futures.py rename to catalyst/assets/futures.py diff --git a/zipline/assets/roll_finder.py b/catalyst/assets/roll_finder.py similarity index 100% rename from zipline/assets/roll_finder.py rename to catalyst/assets/roll_finder.py diff --git a/zipline/assets/synthetic.py b/catalyst/assets/synthetic.py similarity index 99% rename from zipline/assets/synthetic.py rename to catalyst/assets/synthetic.py index 948dd981..c4903012 100644 --- a/zipline/assets/synthetic.py +++ b/catalyst/assets/synthetic.py @@ -187,7 +187,7 @@ def make_future_info(first_sid, month_codes : dict[str -> [1..12]], optional Dictionary of month codes for which to create contracts. Entries should be strings mapped to values from 1 (January) to 12 (December). - Default is zipline.futures.CME_CODE_TO_MONTH + Default is catalyst.futures.CME_CODE_TO_MONTH Returns ------- diff --git a/zipline/zipline_warnings.py b/catalyst/catalyst_warnings.py similarity index 100% rename from zipline/zipline_warnings.py rename to catalyst/catalyst_warnings.py diff --git a/zipline/data/__init__.py b/catalyst/data/__init__.py similarity index 100% rename from zipline/data/__init__.py rename to catalyst/data/__init__.py diff --git a/zipline/data/_adjustments.pyx b/catalyst/data/_adjustments.pyx similarity index 98% rename from zipline/data/_adjustments.pyx rename to catalyst/data/_adjustments.pyx index 151a518d..bc27deb9 100644 --- a/zipline/data/_adjustments.pyx +++ b/catalyst/data/_adjustments.pyx @@ -29,11 +29,11 @@ ctypedef object Timestamp_t ctypedef object DatetimeIndex_t ctypedef object Int64Index_t -from zipline.lib.adjustment import Float64Multiply -from zipline.assets.asset_writer import ( +from catalyst.lib.adjustment import Float64Multiply +from catalyst.assets.asset_writer import ( SQLITE_MAX_VARIABLE_NUMBER as SQLITE_MAX_IN_STATEMENT, ) -from zipline.utils.pandas_utils import timedelta_to_integral_seconds +from catalyst.utils.pandas_utils import timedelta_to_integral_seconds _SID_QUERY_TEMPLATE = """ diff --git a/zipline/data/_equities.pyx b/catalyst/data/_equities.pyx similarity index 100% rename from zipline/data/_equities.pyx rename to catalyst/data/_equities.pyx diff --git a/zipline/data/_minute_bar_internal.pyx b/catalyst/data/_minute_bar_internal.pyx similarity index 100% rename from zipline/data/_minute_bar_internal.pyx rename to catalyst/data/_minute_bar_internal.pyx diff --git a/zipline/data/_resample.pyx b/catalyst/data/_resample.pyx similarity index 100% rename from zipline/data/_resample.pyx rename to catalyst/data/_resample.pyx diff --git a/zipline/data/bar_reader.py b/catalyst/data/bar_reader.py similarity index 97% rename from zipline/data/bar_reader.py rename to catalyst/data/bar_reader.py index 24a2d05a..67f25183 100644 --- a/zipline/data/bar_reader.py +++ b/catalyst/data/bar_reader.py @@ -71,7 +71,7 @@ class BarReader(with_metaclass(ABCMeta, object)): @abstractproperty def trading_calendar(self): """ - Returns the zipline.utils.calendar.trading_calendar used to read + Returns the catalyst.utils.calendar.trading_calendar used to read the data. Can be None (if the writer didn't specify it). """ pass @@ -124,7 +124,7 @@ class BarReader(with_metaclass(ABCMeta, object)): Parameters ---------- - asset : zipline.asset.Asset + asset : catalyst.asset.Asset The asset for which to get the last traded minute. dt : pd.Timestamp The minute at which to start searching for the last traded minute. diff --git a/zipline/data/benchmarks.py b/catalyst/data/benchmarks.py similarity index 100% rename from zipline/data/benchmarks.py rename to catalyst/data/benchmarks.py diff --git a/zipline/data/bundles/__init__.py b/catalyst/data/bundles/__init__.py similarity index 95% rename from zipline/data/bundles/__init__.py rename to catalyst/data/bundles/__init__.py index c75bae5a..e79d35b1 100644 --- a/zipline/data/bundles/__init__.py +++ b/catalyst/data/bundles/__init__.py @@ -1,6 +1,5 @@ # These imports are necessary to force module-scope register calls to happen. from . import quandl # noqa -from . import catalyst from .core import ( UnknownBundle, bundles, @@ -15,8 +14,6 @@ from .core import ( ) from .yahoo import yahoo_equities - - __all__ = [ 'UnknownBundle', 'bundles', diff --git a/zipline/data/bundles/core.py b/catalyst/data/bundles/core.py similarity index 95% rename from zipline/data/bundles/core.py rename to catalyst/data/bundles/core.py index 50da9435..92750e67 100644 --- a/zipline/data/bundles/core.py +++ b/catalyst/data/bundles/core.py @@ -19,18 +19,18 @@ from ..minute_bars import ( BcolzMinuteBarReader, BcolzMinuteBarWriter, ) -from zipline.assets import AssetDBWriter, AssetFinder, ASSET_DB_VERSION -from zipline.assets.asset_db_migrations import downgrade -from zipline.utils.cache import ( +from catalyst.assets import AssetDBWriter, AssetFinder, ASSET_DB_VERSION +from catalyst.assets.asset_db_migrations import downgrade +from catalyst.utils.cache import ( dataframe_cache, working_dir, working_file, ) -from zipline.utils.compat import mappingproxy -from zipline.utils.input_validation import ensure_timestamp, optionally -import zipline.utils.paths as pth -from zipline.utils.preprocess import preprocess -from zipline.utils.calendars import get_calendar +from catalyst.utils.compat import mappingproxy +from catalyst.utils.input_validation import ensure_timestamp, optionally +import catalyst.utils.paths as pth +from catalyst.utils.preprocess import preprocess +from catalyst.utils.calendars import get_calendar def asset_db_path(bundle_name, timestr, environ=None, db_version=None): @@ -248,7 +248,7 @@ def _make_bundle_core(): The daily bar writer to write into. adjustment_writer : SQLiteAdjustmentWriter The adjustment db writer to write into. - calendar : zipline.utils.calendars.TradingCalendar + calendar : catalyst.utils.calendars.TradingCalendar The trading calendar to ingest for. start_session : pd.Timestamp The first session of data to ingest. @@ -291,7 +291,7 @@ def _make_bundle_core(): See Also -------- - zipline.data.bundles.bundles + catalyst.data.bundles.bundles """ if name in bundles: warnings.warn( @@ -300,9 +300,9 @@ def _make_bundle_core(): ) # NOTE: We don't eagerly compute calendar values here because - # `register` is called at module scope in zipline, and creating a + # `register` is called at module scope in catalyst, and creating a # calendar currently takes between 0.5 and 1 seconds, which causes a - # noticeable delay on the zipline CLI. + # noticeable delay on the catalyst CLI. _bundles[name] = RegisteredBundle( calendar_name=calendar_name, start_session=start_session, @@ -328,7 +328,7 @@ def _make_bundle_core(): See Also -------- - zipline.data.bundles.bundles + catalyst.data.bundles.bundles """ try: del _bundles[name] @@ -470,7 +470,7 @@ def _make_bundle_core(): timestamp : datetime The timestamp to begin searching on or before. environ : dict, optional - An environment dict to forward to zipline_root. + An environment dict to forward to catalyst_root. """ if bundle_name not in bundles: raise UnknownBundle(bundle_name) @@ -492,7 +492,7 @@ def _make_bundle_core(): raise raise ValueError( 'no data for bundle {bundle!r} on or before {timestamp}\n' - 'maybe you need to run: $ zipline ingest -b {bundle}'.format( + 'maybe you need to run: $ catalyst ingest -b {bundle}'.format( bundle=bundle_name, timestamp=timestamp, ), @@ -544,7 +544,7 @@ def _make_bundle_core(): keep_last=None, environ=os.environ): """Clean up data that was created with ``ingest`` or - ``$ python -m zipline ingest`` + ``$ python -m catalyst ingest`` Parameters ---------- diff --git a/zipline/data/bundles/quandl.py b/catalyst/data/bundles/quandl.py similarity index 90% rename from zipline/data/bundles/quandl.py rename to catalyst/data/bundles/quandl.py index d946e6cc..da48c259 100644 --- a/zipline/data/bundles/quandl.py +++ b/catalyst/data/bundles/quandl.py @@ -12,8 +12,8 @@ import pandas as pd import requests from six.moves.urllib.parse import urlencode -from zipline.utils.calendars import register_calendar_alias -from zipline.utils.cli import maybe_show_progress +from catalyst.utils.calendars import register_calendar_alias +from catalyst.utils.cli import maybe_show_progress from . import core as bundles @@ -87,7 +87,7 @@ def fetch_symbol_metadata_frame(api_key, retries : int, optional The number of times to retry each request before failing. environ : mapping[str -> str], optional - The environment to use to find the zipline home. By default this + The environment to use to find the catalyst home. By default this is ``os.environ``. show_progress : bool, optional Show a progress bar for the download of this data. @@ -286,7 +286,7 @@ def quandl_bundle(environ, cache, show_progress, output_dir): - """Build a zipline data bundle from the Quandl WIKI dataset. + """Build a catalyst data bundle from the Quandl WIKI dataset. """ api_key = environ.get('QUANDL_API_KEY') metadata = fetch_symbol_metadata_frame( @@ -407,3 +407,38 @@ def quantopian_quandl_bundle(environ, register_calendar_alias("QUANDL", "NYSE") + +CATALYST_URL = ( + 'https://s3.amazonaws.com/quantopian-public-zipline-data/quandl' +) + +@bundles.register( + 'catalyst', + calendar_name='NYSE', + minutes_per_day=390, + create_writers=False, +) +def catalyst_bundle(environ, + asset_db_writer, + minute_bar_writer, + daily_bar_writer, + adjustment_writer, + calendar, + start_session, + end_session, + cache, + show_progress, + output_dir): + if show_progress: + data = download_with_progress( + CATALYST_URL, + chunk_size=ONE_MEGABYTE, + label="Downloading Bundle: catalyst", + ) + else: + data = download_without_progress(CATALYST_URL) + + with tarfile.open('r', fileobj=data) as tar: + if show_progress: + print("Writing data to %s." % output_dir) + tar.extractall(output_dir) diff --git a/zipline/data/bundles/yahoo.py b/catalyst/data/bundles/yahoo.py similarity index 96% rename from zipline/data/bundles/yahoo.py rename to catalyst/data/bundles/yahoo.py index ace6a405..69f6da53 100644 --- a/zipline/data/bundles/yahoo.py +++ b/catalyst/data/bundles/yahoo.py @@ -5,8 +5,8 @@ import pandas as pd from pandas_datareader.data import DataReader import requests -from zipline.utils.calendars import register_calendar_alias -from zipline.utils.cli import maybe_show_progress +from catalyst.utils.calendars import register_calendar_alias +from catalyst.utils.cli import maybe_show_progress from .core import register @@ -36,11 +36,11 @@ def yahoo_equities(symbols, start=None, end=None): Examples -------- - This code should be added to ~/.zipline/extension.py + This code should be added to ~/.catalyst/extension.py .. code-block:: python - from zipline.data.bundles import yahoo_equities, register + from catalyst.data.bundles import yahoo_equities, register symbols = ( 'AAPL', diff --git a/zipline/data/continuous_future_reader.py b/catalyst/data/continuous_future_reader.py similarity index 97% rename from zipline/data/continuous_future_reader.py rename to catalyst/data/continuous_future_reader.py index 8c0d7a2e..f3f830b4 100644 --- a/zipline/data/continuous_future_reader.py +++ b/catalyst/data/continuous_future_reader.py @@ -1,6 +1,6 @@ import numpy as np import pandas as pd -from zipline.data.session_bars import SessionBarReader +from catalyst.data.session_bars import SessionBarReader class ContinuousFutureSessionBarReader(SessionBarReader): @@ -93,7 +93,7 @@ class ContinuousFutureSessionBarReader(SessionBarReader): @property def trading_calendar(self): """ - Returns the zipline.utils.calendar.trading_calendar used to read + Returns the catalyst.utils.calendar.trading_calendar used to read the data. Can be None (if the writer didn't specify it). """ return self._bar_reader.trading_calendar @@ -148,7 +148,7 @@ class ContinuousFutureSessionBarReader(SessionBarReader): Parameters ---------- - asset : zipline.asset.Asset + asset : catalyst.asset.Asset The asset for which to get the last traded minute. dt : pd.Timestamp The minute at which to start searching for the last traded minute. @@ -279,7 +279,7 @@ class ContinuousFutureMinuteBarReader(SessionBarReader): @property def trading_calendar(self): """ - Returns the zipline.utils.calendar.trading_calendar used to read + Returns the catalyst.utils.calendar.trading_calendar used to read the data. Can be None (if the writer didn't specify it). """ return self._bar_reader.trading_calendar @@ -334,7 +334,7 @@ class ContinuousFutureMinuteBarReader(SessionBarReader): Parameters ---------- - asset : zipline.asset.Asset + asset : catalyst.asset.Asset The asset for which to get the last traded minute. dt : pd.Timestamp The minute at which to start searching for the last traded minute. diff --git a/zipline/data/data_portal.py b/catalyst/data/data_portal.py similarity index 98% rename from zipline/data/data_portal.py rename to catalyst/data/data_portal.py index 7d1ec286..9049f337 100644 --- a/zipline/data/data_portal.py +++ b/catalyst/data/data_portal.py @@ -24,45 +24,45 @@ from pandas.tslib import normalize_date from six import iteritems from six.moves import reduce -from zipline.assets import ( +from catalyst.assets import ( Asset, AssetConvertible, Equity, Future, PricingDataAssociable, ) -from zipline.assets.continuous_futures import ContinuousFuture -from zipline.data.continuous_future_reader import ( +from catalyst.assets.continuous_futures import ContinuousFuture +from catalyst.data.continuous_future_reader import ( ContinuousFutureSessionBarReader, ContinuousFutureMinuteBarReader ) -from zipline.assets.roll_finder import ( +from catalyst.assets.roll_finder import ( CalendarRollFinder, VolumeRollFinder ) -from zipline.data.dispatch_bar_reader import ( +from catalyst.data.dispatch_bar_reader import ( AssetDispatchMinuteBarReader, AssetDispatchSessionBarReader ) -from zipline.data.resample import ( +from catalyst.data.resample import ( DailyHistoryAggregator, ReindexMinuteBarReader, ReindexSessionBarReader, ) -from zipline.data.history_loader import ( +from catalyst.data.history_loader import ( DailyHistoryLoader, MinuteHistoryLoader, ) -from zipline.data.us_equity_pricing import NoDataOnDate +from catalyst.data.us_equity_pricing import NoDataOnDate -from zipline.utils.math_utils import ( +from catalyst.utils.math_utils import ( nansum, nanmean, nanstd ) -from zipline.utils.memoize import remember_last, weak_lru_cache -from zipline.utils.pandas_utils import timedelta_to_integral_minutes -from zipline.errors import ( +from catalyst.utils.memoize import remember_last, weak_lru_cache +from catalyst.utils.pandas_utils import timedelta_to_integral_minutes +from catalyst.errors import ( NoTradeDataAvailableTooEarly, NoTradeDataAvailableTooLate, HistoryWindowStartsBeforeData, @@ -100,7 +100,7 @@ _DEF_D_HIST_PREFETCH = DEFAULT_DAILY_HISTORY_PREFETCH class DataPortal(object): - """Interface to all of the data that a zipline simulation needs. + """Interface to all of the data that a catalyst simulation needs. This is used by the simulation runner to answer questions about the data, like getting the prices of assets on a given day or to service history @@ -108,9 +108,9 @@ class DataPortal(object): Parameters ---------- - asset_finder : zipline.assets.assets.AssetFinder + asset_finder : catalyst.assets.assets.AssetFinder The AssetFinder instance used to resolve assets. - trading_calendar: zipline.utils.calendar.exchange_calendar.TradingCalendar + trading_calendar: catalyst.utils.calendar.exchange_calendar.TradingCalendar The calendar instance used to provide minute->session information. first_trading_day : pd.Timestamp The first trading day for the simulation. @@ -154,8 +154,6 @@ class DataPortal(object): minute_history_prefetch_length=_DEF_M_HIST_PREFETCH, daily_history_prefetch_length=_DEF_D_HIST_PREFETCH): - print 'trading_calendar: {0}'.format(trading_calendar) - self.trading_calendar = trading_calendar self.asset_finder = asset_finder @@ -879,7 +877,7 @@ class DataPortal(object): Parameters ---------- - assets : list of zipline.data.Asset objects + assets : list of catalyst.data.Asset objects The assets whose data is desired. bar_count: int diff --git a/zipline/data/dispatch_bar_reader.py b/catalyst/data/dispatch_bar_reader.py similarity index 96% rename from zipline/data/dispatch_bar_reader.py rename to catalyst/data/dispatch_bar_reader.py index 6a39a2ec..42770e55 100644 --- a/zipline/data/dispatch_bar_reader.py +++ b/catalyst/data/dispatch_bar_reader.py @@ -22,7 +22,7 @@ from numpy import ( ) from six import iteritems, with_metaclass -from zipline.utils.memoize import lazyval +from catalyst.utils.memoize import lazyval class AssetDispatchBarReader(with_metaclass(ABCMeta)): @@ -30,8 +30,8 @@ class AssetDispatchBarReader(with_metaclass(ABCMeta)): Parameters ---------- - - trading_calendar : zipline.utils.trading_calendar.TradingCalendar - - asset_finder : zipline.assets.AssetFinder + - trading_calendar : catalyst.utils.trading_calendar.TradingCalendar + - asset_finder : catalyst.assets.AssetFinder - readers : dict A dict mapping Asset type to the corresponding [Minute|Session]BarReader diff --git a/zipline/data/history_loader.py b/catalyst/data/history_loader.py similarity index 97% rename from zipline/data/history_loader.py rename to catalyst/data/history_loader.py index f7002044..8bc00563 100644 --- a/zipline/data/history_loader.py +++ b/catalyst/data/history_loader.py @@ -26,16 +26,16 @@ from toolz import sliding_window from six import with_metaclass -from zipline.assets import Equity, Future -from zipline.assets.continuous_futures import ContinuousFuture -from zipline.lib._int64window import AdjustedArrayWindow as Int64Window -from zipline.lib._float64window import AdjustedArrayWindow as Float64Window -from zipline.lib.adjustment import Float64Multiply, Float64Add -from zipline.utils.cache import ExpiringCache -from zipline.utils.math_utils import number_of_decimal_places -from zipline.utils.memoize import lazyval -from zipline.utils.numpy_utils import float64_dtype -from zipline.utils.pandas_utils import find_in_sorted_index +from catalyst.assets import Equity, Future +from catalyst.assets.continuous_futures import ContinuousFuture +from catalyst.lib._int64window import AdjustedArrayWindow as Int64Window +from catalyst.lib._float64window import AdjustedArrayWindow as Float64Window +from catalyst.lib.adjustment import Float64Multiply, Float64Add +from catalyst.utils.cache import ExpiringCache +from catalyst.utils.math_utils import number_of_decimal_places +from catalyst.utils.memoize import lazyval +from catalyst.utils.numpy_utils import float64_dtype +from catalyst.utils.pandas_utils import find_in_sorted_index # Default number of decimal places used for rounding asset prices. DEFAULT_ASSET_PRICE_DECIMALS = 3 diff --git a/zipline/data/loader.py b/catalyst/data/loader.py similarity index 99% rename from zipline/data/loader.py rename to catalyst/data/loader.py index f682f47e..a436f8cf 100644 --- a/zipline/data/loader.py +++ b/catalyst/data/loader.py @@ -29,7 +29,7 @@ from ..utils.paths import ( data_root, ) from ..utils.deprecate import deprecated -from zipline.utils.calendars import get_calendar +from catalyst.utils.calendars import get_calendar logger = logbook.Logger('Loader') @@ -104,7 +104,7 @@ def load_market_data(trading_day=None, trading_days=None, bm_symbol='SPY', Bank of Canada is also available. Results downloaded from the internet are cached in - ~/.zipline/data. Subsequent loads will attempt to read from the cached + ~/.catalyst/data. Subsequent loads will attempt to read from the cached files before falling back to redownload. Parameters diff --git a/zipline/data/minute_bars.py b/catalyst/data/minute_bars.py similarity index 98% rename from zipline/data/minute_bars.py rename to catalyst/data/minute_bars.py index 7b8d6ddf..d2707122 100644 --- a/zipline/data/minute_bars.py +++ b/catalyst/data/minute_bars.py @@ -30,19 +30,19 @@ import tables from six import with_metaclass from toolz import keymap, valmap -from zipline.data._minute_bar_internal import ( +from catalyst.data._minute_bar_internal import ( minute_value, find_position_of_minute, find_last_traded_position_internal ) -from zipline.gens.sim_engine import NANOS_IN_MINUTE +from catalyst.gens.sim_engine import NANOS_IN_MINUTE -from zipline.data.bar_reader import BarReader, NoDataOnDate -from zipline.data.us_equity_pricing import check_uint32_safe -from zipline.utils.calendars import get_calendar -from zipline.utils.cli import maybe_show_progress -from zipline.utils.memoize import lazyval +from catalyst.data.bar_reader import BarReader, NoDataOnDate +from catalyst.data.us_equity_pricing import check_uint32_safe +from catalyst.utils.calendars import get_calendar +from catalyst.utils.cli import maybe_show_progress +from catalyst.utils.memoize import lazyval logger = logbook.Logger('MinuteBars') @@ -187,7 +187,7 @@ class BcolzMinuteBarMetadata(object): ohlc_ratio : int The factor by which the pricing data is multiplied so that the float data can be stored as an integer. - calendar : zipline.utils.calendars.trading_calendar.TradingCalendar + calendar : catalyst.utils.calendars.trading_calendar.TradingCalendar The TradingCalendar on which the minute bars are based. start_session : datetime The first trading session in the data set. @@ -358,7 +358,7 @@ class BcolzMinuteBarWriter(object): rootdir : string Path to the root directory into which to write the metadata and bcolz subdirectories. - calendar : zipline.utils.calendars.trading_calendar.TradingCalendar + calendar : catalyst.utils.calendars.trading_calendar.TradingCalendar The trading calendar on which to base the minute bars. Used to get the market opens used as a starting point for each periodic span of minutes in the index, and the market closes that @@ -436,7 +436,7 @@ class BcolzMinuteBarWriter(object): See Also -------- - zipline.data.minute_bars.BcolzMinuteBarReader + catalyst.data.minute_bars.BcolzMinuteBarReader """ COL_NAMES = ('open', 'high', 'low', 'close', 'volume') @@ -895,7 +895,7 @@ class BcolzMinuteBarReader(MinuteBarReader): See Also -------- - zipline.data.minute_bars.BcolzMinuteBarWriter + catalyst.data.minute_bars.BcolzMinuteBarWriter """ FIELDS = ('open', 'high', 'low', 'close', 'volume') diff --git a/zipline/data/resample.py b/catalyst/data/resample.py similarity index 98% rename from zipline/data/resample.py rename to catalyst/data/resample.py index f7257df7..3154e590 100644 --- a/zipline/data/resample.py +++ b/catalyst/data/resample.py @@ -18,17 +18,17 @@ import numpy as np import pandas as pd from six import with_metaclass -from zipline.data._resample import ( +from catalyst.data._resample import ( _minute_to_session_open, _minute_to_session_high, _minute_to_session_low, _minute_to_session_close, _minute_to_session_volume, ) -from zipline.data.bar_reader import NoDataOnDate -from zipline.data.minute_bars import MinuteBarReader -from zipline.data.session_bars import SessionBarReader -from zipline.utils.memoize import lazyval +from catalyst.data.bar_reader import NoDataOnDate +from catalyst.data.minute_bars import MinuteBarReader +from catalyst.data.session_bars import SessionBarReader +from catalyst.utils.memoize import lazyval _MINUTE_TO_SESSION_OHCLV_HOW = OrderedDict(( ('open', 'first'), @@ -50,7 +50,7 @@ def minute_frame_to_session_frame(minute_frame, calendar): minute_frame : pd.DataFrame A DataFrame with the columns `open`, `high`, `low`, `close`, `volume`, and `dt` (minute dts) - calendar : zipline.utils.calendars.trading_calendar.TradingCalendar + calendar : catalyst.utils.calendars.trading_calendar.TradingCalendar A TradingCalendar on which session labels to resample from minute to session. @@ -610,7 +610,7 @@ class ReindexBarReader(with_metaclass(ABCMeta)): Parameters ---------- - - trading_calendar : zipline.utils.trading_calendar.TradingCalendar + - trading_calendar : catalyst.utils.trading_calendar.TradingCalendar The calendar to use when indexing results from the reader. - reader : MinuteBarReader|SessionBarReader The reader which has a calendar that is a subset of the desired diff --git a/zipline/data/session_bars.py b/catalyst/data/session_bars.py similarity index 95% rename from zipline/data/session_bars.py rename to catalyst/data/session_bars.py index cac3fa0f..5e0cd735 100644 --- a/zipline/data/session_bars.py +++ b/catalyst/data/session_bars.py @@ -13,7 +13,7 @@ # limitations under the License. from abc import abstractproperty -from zipline.data.bar_reader import BarReader +from catalyst.data.bar_reader import BarReader class SessionBarReader(BarReader): diff --git a/zipline/data/treasuries.py b/catalyst/data/treasuries.py similarity index 100% rename from zipline/data/treasuries.py rename to catalyst/data/treasuries.py diff --git a/zipline/data/treasuries_can.py b/catalyst/data/treasuries_can.py similarity index 100% rename from zipline/data/treasuries_can.py rename to catalyst/data/treasuries_can.py diff --git a/zipline/data/us_equity_pricing.py b/catalyst/data/us_equity_pricing.py similarity index 98% rename from zipline/data/us_equity_pricing.py rename to catalyst/data/us_equity_pricing.py index ce2f7427..76606bb0 100644 --- a/zipline/data/us_equity_pricing.py +++ b/catalyst/data/us_equity_pricing.py @@ -53,23 +53,23 @@ from six import ( ) from toolz import compose -from zipline.data.session_bars import SessionBarReader -from zipline.data.bar_reader import ( +from catalyst.data.session_bars import SessionBarReader +from catalyst.data.bar_reader import ( NoDataAfterDate, NoDataBeforeDate, NoDataOnDate, ) -from zipline.utils.calendars import get_calendar -from zipline.utils.functional import apply -from zipline.utils.preprocess import call -from zipline.utils.input_validation import ( +from catalyst.utils.calendars import get_calendar +from catalyst.utils.functional import apply +from catalyst.utils.preprocess import call +from catalyst.utils.input_validation import ( expect_element, preprocess, verify_indices_all_unique, ) -from zipline.utils.sqlite_utils import group_into_chunks, coerce_string_to_conn -from zipline.utils.memoize import lazyval -from zipline.utils.cli import maybe_show_progress +from catalyst.utils.sqlite_utils import group_into_chunks, coerce_string_to_conn +from catalyst.utils.memoize import lazyval +from catalyst.utils.cli import maybe_show_progress from ._equities import _compute_row_slices, _read_bcolz_data from ._adjustments import load_adjustments_from_sqlite @@ -173,7 +173,7 @@ class BcolzDailyBarWriter(object): ---------- filename : str The location at which we should write our output. - calendar : zipline.utils.calendar.trading_calendar + calendar : catalyst.utils.calendar.trading_calendar Calendar to use to compute asset calendar offsets. start_session: pd.Timestamp Midnight UTC session label. @@ -182,7 +182,7 @@ class BcolzDailyBarWriter(object): See Also -------- - zipline.data.us_equity_pricing.BcolzDailyBarReader + catalyst.data.us_equity_pricing.BcolzDailyBarReader """ _csv_dtypes = { 'open': float64, @@ -492,7 +492,7 @@ class BcolzDailyBarReader(SessionBarReader): See Also -------- - zipline.data.us_equity_pricing.BcolzDailyBarWriter + catalyst.data.us_equity_pricing.BcolzDailyBarWriter """ def __init__(self, table, read_all_threshold=3000): self._maybe_table_rootdir = table @@ -847,7 +847,7 @@ class PanelBarReader(SessionBarReader): """ Parameters ---------- - asset : zipline.asset.Asset + asset : catalyst.asset.Asset The asset identifier. dt : datetime64-like Midnight of the day for which data is requested. @@ -883,7 +883,7 @@ class SQLiteAdjustmentWriter(object): See Also -------- - zipline.data.us_equity_pricing.SQLiteAdjustmentReader + catalyst.data.us_equity_pricing.SQLiteAdjustmentReader """ def __init__(self, @@ -1197,7 +1197,7 @@ class SQLiteAdjustmentWriter(object): See Also -------- - zipline.data.us_equity_pricing.SQLiteAdjustmentReader + catalyst.data.us_equity_pricing.SQLiteAdjustmentReader """ self.write_frame('splits', splits) self.write_frame('mergers', mergers) @@ -1277,7 +1277,7 @@ class SQLiteAdjustmentReader(object): See Also -------- - :class:`zipline.data.us_equity_pricing.SQLiteAdjustmentWriter` + :class:`catalyst.data.us_equity_pricing.SQLiteAdjustmentWriter` """ @preprocess(conn=coerce_string_to_conn) diff --git a/zipline/dispatch.py b/catalyst/dispatch.py similarity index 100% rename from zipline/dispatch.py rename to catalyst/dispatch.py diff --git a/zipline/errors.py b/catalyst/errors.py similarity index 99% rename from zipline/errors.py rename to catalyst/errors.py index 015818c8..883e423a 100644 --- a/zipline/errors.py +++ b/catalyst/errors.py @@ -14,7 +14,7 @@ # limitations under the License. from textwrap import dedent -from zipline.utils.memoize import lazyval +from catalyst.utils.memoize import lazyval class ZiplineError(Exception): @@ -782,7 +782,7 @@ class UnsupportedPipelineOutput(ZiplineError): class NonSliceableTerm(ZiplineError): """ Raised when attempting to index into a non-sliceable term, e.g. instances - of `zipline.pipeline.term.LoadableTerm`. + of `catalyst.pipeline.term.LoadableTerm`. """ msg = "Taking slices of {term} is not currently supported." diff --git a/zipline/examples/__init__.py b/catalyst/examples/__init__.py similarity index 92% rename from zipline/examples/__init__.py rename to catalyst/examples/__init__.py index 8a06f8a1..37aa26c3 100644 --- a/zipline/examples/__init__.py +++ b/catalyst/examples/__init__.py @@ -3,11 +3,11 @@ import os from toolz import merge -from zipline import run_algorithm +from catalyst import run_algorithm # These are used by test_examples.py to discover the examples to run. -from zipline.utils.calendars import register_calendar, get_calendar +from catalyst.utils.calendars import register_calendar, get_calendar EXAMPLE_MODULES = {} for f in os.listdir(os.path.dirname(__file__)): @@ -64,7 +64,7 @@ _cols_to_check = [ def run_example(example_name, environ): """ - Run an example module from zipline.examples. + Run an example module from catalyst.examples. """ mod = EXAMPLE_MODULES[example_name] diff --git a/zipline/examples/buy_and_hold.py b/catalyst/examples/buy_and_hold.py similarity index 89% rename from zipline/examples/buy_and_hold.py rename to catalyst/examples/buy_and_hold.py index fbd6b2f8..7cc299a3 100644 --- a/zipline/examples/buy_and_hold.py +++ b/catalyst/examples/buy_and_hold.py @@ -13,7 +13,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -from zipline.api import order, symbol +from catalyst.api import order, symbol stocks = ['AAPL', 'MSFT'] @@ -31,7 +31,7 @@ def handle_data(context, data): def _test_args(): - """Extra arguments to use when zipline's automated tests run this example. + """Extra arguments to use when catalyst's automated tests run this example. """ import pandas as pd diff --git a/zipline/examples/buyapple.ipynb b/catalyst/examples/buyapple.ipynb similarity index 99% rename from zipline/examples/buyapple.ipynb rename to catalyst/examples/buyapple.ipynb index 8433b13a..ea7ac392 100644 --- a/zipline/examples/buyapple.ipynb +++ b/catalyst/examples/buyapple.ipynb @@ -9,7 +9,7 @@ "outputs": [], "source": [ "%matplotlib inline\n", - "%load_ext zipline" + "%load_ext catalyst" ] }, { @@ -2170,9 +2170,9 @@ } ], "source": [ - "%%zipline --start=2011-1-1 --end=2013-1-1\n", + "%%catalyst --start=2011-1-1 --end=2013-1-1\n", "\n", - "from zipline.api import order, record, symbol\n", + "from catalyst.api import order, record, symbol\n", "import matplotlib.pyplot as plt\n", "\n", "def initialize(context):\n", diff --git a/zipline/examples/buyapple.py b/catalyst/examples/buyapple.py similarity index 92% rename from zipline/examples/buyapple.py rename to catalyst/examples/buyapple.py index 008d86ff..888ec87b 100644 --- a/zipline/examples/buyapple.py +++ b/catalyst/examples/buyapple.py @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from zipline.api import order, record, symbol +from catalyst.api import order, record, symbol def initialize(context): @@ -44,7 +44,7 @@ def analyze(context=None, results=None): def _test_args(): - """Extra arguments to use when zipline's automated tests run this example. + """Extra arguments to use when catalyst's automated tests run this example. """ import pandas as pd diff --git a/zipline/examples/dual_ema_talib.py b/catalyst/examples/dual_ema_talib.py similarity index 96% rename from zipline/examples/dual_ema_talib.py rename to catalyst/examples/dual_ema_talib.py index cbdc9957..c2b069ac 100644 --- a/zipline/examples/dual_ema_talib.py +++ b/catalyst/examples/dual_ema_talib.py @@ -24,7 +24,7 @@ momentum). """ -from zipline.api import order, record, symbol +from catalyst.api import order, record, symbol # Import exponential moving average from talib wrapper from talib import EMA @@ -99,7 +99,7 @@ def analyze(context=None, results=None): def _test_args(): - """Extra arguments to use when zipline's automated tests run this example. + """Extra arguments to use when catalyst's automated tests run this example. """ import pandas as pd diff --git a/zipline/examples/dual_moving_average.py b/catalyst/examples/dual_moving_average.py similarity index 96% rename from zipline/examples/dual_moving_average.py rename to catalyst/examples/dual_moving_average.py index 529b497a..7d6c6022 100644 --- a/zipline/examples/dual_moving_average.py +++ b/catalyst/examples/dual_moving_average.py @@ -22,7 +22,7 @@ its shares once the averages cross again (indicating downwards momentum). """ -from zipline.api import order_target, record, symbol +from catalyst.api import order_target, record, symbol def initialize(context): @@ -98,7 +98,7 @@ def analyze(context=None, results=None): def _test_args(): - """Extra arguments to use when zipline's automated tests run this example. + """Extra arguments to use when catalyst's automated tests run this example. """ import pandas as pd diff --git a/zipline/examples/momentum_pipeline.py b/catalyst/examples/momentum_pipeline.py similarity index 90% rename from zipline/examples/momentum_pipeline.py rename to catalyst/examples/momentum_pipeline.py index a6a3d005..5a1aac2f 100644 --- a/zipline/examples/momentum_pipeline.py +++ b/catalyst/examples/momentum_pipeline.py @@ -3,7 +3,7 @@ A simple Pipeline algorithm that longs the top 3 stocks by RSI and shorts the bottom 3 each day. """ from six import viewkeys -from zipline.api import ( +from catalyst.api import ( attach_pipeline, date_rules, order_target_percent, @@ -11,9 +11,9 @@ from zipline.api import ( record, schedule_function, ) -from zipline.pipeline import Pipeline -from zipline.pipeline.factors.crypto import RSI as cRSI -from zipline.pipeline.factors.equity import RSI as eRSI +from catalyst.pipeline import Pipeline +from catalyst.pipeline.factors.crypto import RSI as cRSI +from catalyst.pipeline.factors.equity import RSI as eRSI def make_pipeline(): @@ -73,7 +73,7 @@ def before_trading_start(context, data): def _test_args(): """ - Extra arguments to use when zipline's automated tests run this example. + Extra arguments to use when catalyst's automated tests run this example. Notes for testers: diff --git a/zipline/examples/olmar.py b/catalyst/examples/olmar.py similarity index 95% rename from zipline/examples/olmar.py rename to catalyst/examples/olmar.py index a9158334..f54cf941 100644 --- a/zipline/examples/olmar.py +++ b/catalyst/examples/olmar.py @@ -2,14 +2,14 @@ import sys import logbook import numpy as np -from zipline.finance import commission +from catalyst.finance import commission -zipline_logging = logbook.NestedSetup([ +catalyst_logging = logbook.NestedSetup([ logbook.NullHandler(), logbook.StreamHandler(sys.stdout, level=logbook.INFO), logbook.StreamHandler(sys.stderr, level=logbook.ERROR), ]) -zipline_logging.push_application() +catalyst_logging.push_application() STOCKS = ['AMD', 'CERN', 'COST', 'DELL', 'GPS', 'INTC', 'MMM'] @@ -157,7 +157,7 @@ def analyze(context=None, results=None): def _test_args(): - """Extra arguments to use when zipline's automated tests run this example. + """Extra arguments to use when catalyst's automated tests run this example. """ import pandas as pd diff --git a/zipline/finance/__init__.py b/catalyst/finance/__init__.py similarity index 100% rename from zipline/finance/__init__.py rename to catalyst/finance/__init__.py diff --git a/zipline/finance/asset_restrictions.py b/catalyst/finance/asset_restrictions.py similarity index 97% rename from zipline/finance/asset_restrictions.py rename to catalyst/finance/asset_restrictions.py index 8724eae0..94ebd47a 100644 --- a/zipline/finance/asset_restrictions.py +++ b/catalyst/finance/asset_restrictions.py @@ -7,9 +7,9 @@ from six import with_metaclass, iteritems from collections import namedtuple from toolz import groupby -from zipline.utils.enum import enum -from zipline.utils.numpy_utils import vectorized_is_element -from zipline.assets import Asset +from catalyst.utils.enum import enum +from catalyst.utils.numpy_utils import vectorized_is_element +from catalyst.assets import Asset Restriction = namedtuple( @@ -203,7 +203,7 @@ class SecurityListRestrictions(Restrictions): Parameters ---------- - restrictions : zipline.utils.security_list.SecurityList + restrictions : catalyst.utils.security_list.SecurityList The restrictions defined by a SecurityList """ diff --git a/zipline/finance/blotter.py b/catalyst/finance/blotter.py similarity index 97% rename from zipline/finance/blotter.py rename to catalyst/finance/blotter.py index 52ef5995..a3332e3c 100644 --- a/zipline/finance/blotter.py +++ b/catalyst/finance/blotter.py @@ -18,21 +18,21 @@ from copy import copy from six import iteritems -from zipline.assets import Equity, Future, Asset -from zipline.finance.order import Order -from zipline.finance.slippage import ( +from catalyst.assets import Equity, Future, Asset +from catalyst.finance.order import Order +from catalyst.finance.slippage import ( DEFAULT_FUTURE_VOLUME_SLIPPAGE_BAR_LIMIT, VolatilityVolumeShare, VolumeShareSlippage, ) -from zipline.finance.commission import ( +from catalyst.finance.commission import ( DEFAULT_PER_CONTRACT_COST, FUTURE_EXCHANGE_FEES_BY_SYMBOL, PerContract, PerShare, ) -from zipline.finance.cancel_policy import NeverCancel -from zipline.utils.input_validation import expect_types +from catalyst.finance.cancel_policy import NeverCancel +from catalyst.utils.input_validation import expect_types log = Logger('Blotter') warning_logger = Logger('AlgoWarning') @@ -98,13 +98,13 @@ class Blotter(object): Parameters ---------- - asset : zipline.assets.Asset + asset : catalyst.assets.Asset The asset that this order is for. amount : int The amount of shares to order. If ``amount`` is positive, this is the number of shares to buy or cover. If ``amount`` is negative, this is the number of shares to sell or short. - style : zipline.finance.execution.ExecutionStyle + style : catalyst.finance.execution.ExecutionStyle The execution style for the order. order_id : str, optional The unique identifier for this order. @@ -332,7 +332,7 @@ class Blotter(object): Parameters ---------- - bar_data: zipline._protocol.BarData + bar_data: catalyst._protocol.BarData Notes ----- diff --git a/zipline/finance/cancel_policy.py b/catalyst/finance/cancel_policy.py similarity index 86% rename from zipline/finance/cancel_policy.py rename to catalyst/finance/cancel_policy.py index 77f7b363..4fde175b 100644 --- a/zipline/finance/cancel_policy.py +++ b/catalyst/finance/cancel_policy.py @@ -17,7 +17,7 @@ import abc from abc import abstractmethod from six import with_metaclass -from zipline.gens.sim_engine import SESSION_END +from catalyst.gens.sim_engine import SESSION_END class CancelPolicy(with_metaclass(abc.ABCMeta)): @@ -32,10 +32,10 @@ class CancelPolicy(with_metaclass(abc.ABCMeta)): ---------- event : enum-value An event type, one of: - - :data:`zipline.gens.sim_engine.BAR` - - :data:`zipline.gens.sim_engine.DAY_START` - - :data:`zipline.gens.sim_engine.DAY_END` - - :data:`zipline.gens.sim_engine.MINUTE_END` + - :data:`catalyst.gens.sim_engine.BAR` + - :data:`catalyst.gens.sim_engine.DAY_START` + - :data:`catalyst.gens.sim_engine.DAY_END` + - :data:`catalyst.gens.sim_engine.MINUTE_END` Returns ------- diff --git a/zipline/finance/commission.py b/catalyst/finance/commission.py similarity index 97% rename from zipline/finance/commission.py rename to catalyst/finance/commission.py index 33d856d1..9071fb7b 100644 --- a/zipline/finance/commission.py +++ b/catalyst/finance/commission.py @@ -18,10 +18,10 @@ from collections import defaultdict from six import with_metaclass from toolz import merge -from zipline.assets import Equity, Future -from zipline.finance.constants import FUTURE_EXCHANGE_FEES_BY_SYMBOL -from zipline.finance.shared import AllowedAssetMarker, FinancialModelMeta -from zipline.utils.dummy import DummyMapping +from catalyst.assets import Equity, Future +from catalyst.finance.constants import FUTURE_EXCHANGE_FEES_BY_SYMBOL +from catalyst.finance.shared import AllowedAssetMarker, FinancialModelMeta +from catalyst.utils.dummy import DummyMapping DEFAULT_PER_SHARE_COST = 0.0075 # 0.75 cents per share DEFAULT_PER_CONTRACT_COST = 0.85 # $0.85 per future contract @@ -50,13 +50,13 @@ class CommissionModel(with_metaclass(FinancialModelMeta)): Parameters ---------- - order : zipline.finance.order.Order + order : catalyst.finance.order.Order The order being processed. The ``commission`` field of ``order`` is a float indicating the amount of commission already charged on this order. - transaction : zipline.finance.transaction.Transaction + transaction : catalyst.finance.transaction.Transaction The transaction being processed. A single order may generate multiple transactions if there isn't enough volume in a given bar to fill the full amount requested in the order. diff --git a/zipline/finance/constants.py b/catalyst/finance/constants.py similarity index 98% rename from zipline/finance/constants.py rename to catalyst/finance/constants.py index 19632d08..72d1e03c 100644 --- a/zipline/finance/constants.py +++ b/catalyst/finance/constants.py @@ -100,7 +100,7 @@ FUTURE_EXCHANGE_FEES_BY_SYMBOL = { 'YS': 0.75, # Silver e-mini } -# See `zipline.finance.slippage.VolatilityVolumeShare` for more information on +# See `catalyst.finance.slippage.VolatilityVolumeShare` for more information on # how these constants are used. DEFAULT_ETA = 0.049018143225019836 ROOT_SYMBOL_TO_ETA = { diff --git a/zipline/finance/controls.py b/catalyst/finance/controls.py similarity index 99% rename from zipline/finance/controls.py rename to catalyst/finance/controls.py index ca31a462..029a3f27 100644 --- a/zipline/finance/controls.py +++ b/catalyst/finance/controls.py @@ -19,7 +19,7 @@ import pandas as pd from six import with_metaclass -from zipline.errors import ( +from catalyst.errors import ( AccountControlViolation, TradingControlViolation, ) @@ -137,7 +137,7 @@ class RestrictedListOrder(TradingControl): Parameters ---------- - restrictions : zipline.finance.asset_restrictions.Restrictions + restrictions : catalyst.finance.asset_restrictions.Restrictions Object representing restrictions of a group of assets. """ diff --git a/zipline/finance/execution.py b/catalyst/finance/execution.py similarity index 98% rename from zipline/finance/execution.py rename to catalyst/finance/execution.py index 7509233e..fe7c1c89 100644 --- a/zipline/finance/execution.py +++ b/catalyst/finance/execution.py @@ -19,11 +19,11 @@ from sys import float_info from six import with_metaclass -import zipline.utils.math_utils as zp_math +import catalyst.utils.math_utils as zp_math from numpy import isfinite -from zipline.errors import BadOrderParameters +from catalyst.errors import BadOrderParameters class ExecutionStyle(with_metaclass(abc.ABCMeta)): diff --git a/zipline/finance/order.py b/catalyst/finance/order.py similarity index 98% rename from zipline/finance/order.py rename to catalyst/finance/order.py index 47ee24c3..e8923c76 100644 --- a/zipline/finance/order.py +++ b/catalyst/finance/order.py @@ -17,10 +17,10 @@ import uuid from six import text_type -import zipline.protocol as zp -from zipline.assets import Asset -from zipline.utils.enum import enum -from zipline.utils.input_validation import expect_types +import catalyst.protocol as zp +from catalyst.assets import Asset +from catalyst.utils.enum import enum +from catalyst.utils.input_validation import expect_types ORDER_STATUS = enum( 'OPEN', diff --git a/zipline/finance/performance/__init__.py b/catalyst/finance/performance/__init__.py similarity index 100% rename from zipline/finance/performance/__init__.py rename to catalyst/finance/performance/__init__.py diff --git a/zipline/finance/performance/period.py b/catalyst/finance/performance/period.py similarity index 99% rename from zipline/finance/performance/period.py rename to catalyst/finance/performance/period.py index 97664654..efd3716f 100644 --- a/zipline/finance/performance/period.py +++ b/catalyst/finance/performance/period.py @@ -76,7 +76,7 @@ import logbook import numpy as np from collections import namedtuple -from zipline.assets import Future +from catalyst.assets import Future try: # optional cython based OrderedDict @@ -86,7 +86,7 @@ except ImportError: from six import itervalues, iteritems -import zipline.protocol as zp +import catalyst.protocol as zp log = logbook.Logger('Performance') TRADE_TYPE = zp.DATASOURCE_TYPE.TRADE diff --git a/zipline/finance/performance/position.py b/catalyst/finance/performance/position.py similarity index 96% rename from zipline/finance/performance/position.py rename to catalyst/finance/performance/position.py index a73ee913..9dda5681 100644 --- a/zipline/finance/performance/position.py +++ b/catalyst/finance/performance/position.py @@ -37,8 +37,8 @@ from collections import OrderedDict import numpy as np import logbook -from zipline.assets import Future, Asset -from zipline.utils.input_validation import expect_types +from catalyst.assets import Future, Asset +from catalyst.utils.input_validation import expect_types log = logbook.Logger('Performance') @@ -153,11 +153,11 @@ class Position(object): @expect_types(asset=Asset) def adjust_commission_cost_basis(self, asset, cost): """ - A note about cost-basis in zipline: all positions are considered + A note about cost-basis in catalyst: all positions are considered to share a cost basis, even if they were executed in different transactions with different commission costs, different prices, etc. - Due to limitations about how zipline handles positions, zipline will + Due to limitations about how catalyst handles positions, catalyst will currently spread an externally-delivered commission charge across all shares in a position. """ diff --git a/zipline/finance/performance/position_tracker.py b/catalyst/finance/performance/position_tracker.py similarity index 98% rename from zipline/finance/performance/position_tracker.py rename to catalyst/finance/performance/position_tracker.py index 67e547dc..e93e40f6 100644 --- a/zipline/finance/performance/position_tracker.py +++ b/catalyst/finance/performance/position_tracker.py @@ -22,11 +22,11 @@ from math import isnan from six import iteritems, itervalues -from zipline.finance.performance.position import Position -from zipline.finance.transaction import Transaction -from zipline.utils.input_validation import expect_types -import zipline.protocol as zp -from zipline.assets import ( +from catalyst.finance.performance.position import Position +from catalyst.finance.transaction import Transaction +from catalyst.utils.input_validation import expect_types +import catalyst.protocol as zp +from catalyst.assets import ( Future, Asset ) diff --git a/zipline/finance/performance/tracker.py b/catalyst/finance/performance/tracker.py similarity index 98% rename from zipline/finance/performance/tracker.py rename to catalyst/finance/performance/tracker.py index 6546429c..6b84431e 100644 --- a/zipline/finance/performance/tracker.py +++ b/catalyst/finance/performance/tracker.py @@ -52,7 +52,7 @@ Performance Tracking | _metrics | calculated based on the positions aggregated | | | through all the events delivered to this tracker. | | | For details look at the comments for | - | | :py:meth:`zipline.finance.risk.RiskMetrics.to_dict`| + | | :py:meth:`catalyst.finance.risk.RiskMetrics.to_dict`| +-----------------+----------------------------------------------------+ """ @@ -64,9 +64,9 @@ import logbook import pandas as pd from pandas.tseries.tools import normalize_date -from zipline.finance.performance.period import PerformancePeriod -from zipline.errors import NoFurtherDataError -import zipline.finance.risk as risk +from catalyst.finance.performance.period import PerformancePeriod +from catalyst.errors import NoFurtherDataError +import catalyst.finance.risk as risk from . position_tracker import PositionTracker diff --git a/zipline/finance/risk/__init__.py b/catalyst/finance/risk/__init__.py similarity index 100% rename from zipline/finance/risk/__init__.py rename to catalyst/finance/risk/__init__.py diff --git a/zipline/finance/risk/cumulative.py b/catalyst/finance/risk/cumulative.py similarity index 100% rename from zipline/finance/risk/cumulative.py rename to catalyst/finance/risk/cumulative.py diff --git a/zipline/finance/risk/period.py b/catalyst/finance/risk/period.py similarity index 100% rename from zipline/finance/risk/period.py rename to catalyst/finance/risk/period.py diff --git a/zipline/finance/risk/report.py b/catalyst/finance/risk/report.py similarity index 100% rename from zipline/finance/risk/report.py rename to catalyst/finance/risk/report.py diff --git a/zipline/finance/risk/risk.py b/catalyst/finance/risk/risk.py similarity index 100% rename from zipline/finance/risk/risk.py rename to catalyst/finance/risk/risk.py diff --git a/zipline/finance/shared.py b/catalyst/finance/shared.py similarity index 100% rename from zipline/finance/shared.py rename to catalyst/finance/shared.py diff --git a/zipline/finance/slippage.py b/catalyst/finance/slippage.py similarity index 97% rename from zipline/finance/slippage.py rename to catalyst/finance/slippage.py index 716d1765..118a5b58 100644 --- a/zipline/finance/slippage.py +++ b/catalyst/finance/slippage.py @@ -22,13 +22,13 @@ from pandas import isnull from six import with_metaclass from toolz import merge -from zipline.assets import Equity, Future -from zipline.errors import HistoryWindowStartsBeforeData -from zipline.finance.constants import ROOT_SYMBOL_TO_ETA -from zipline.finance.shared import AllowedAssetMarker, FinancialModelMeta -from zipline.finance.transaction import create_transaction -from zipline.utils.cache import ExpiringCache -from zipline.utils.dummy import DummyMapping +from catalyst.assets import Equity, Future +from catalyst.errors import HistoryWindowStartsBeforeData +from catalyst.finance.constants import ROOT_SYMBOL_TO_ETA +from catalyst.finance.shared import AllowedAssetMarker, FinancialModelMeta +from catalyst.finance.transaction import create_transaction +from catalyst.utils.cache import ExpiringCache +from catalyst.utils.dummy import DummyMapping SELL = 1 << 0 BUY = 1 << 1 @@ -54,7 +54,7 @@ def fill_price_worse_than_limit_price(fill_price, order): fill_price: float The price to check. - order: zipline.finance.order.Order + order: catalyst.finance.order.Order The order whose limit price to check. Returns diff --git a/zipline/finance/trading.py b/catalyst/finance/trading.py similarity index 95% rename from zipline/finance/trading.py rename to catalyst/finance/trading.py index 63d551a7..19c90b23 100644 --- a/zipline/finance/trading.py +++ b/catalyst/finance/trading.py @@ -20,11 +20,11 @@ from pandas.tslib import normalize_date from six import string_types from sqlalchemy import create_engine -from zipline.assets import AssetDBWriter, AssetFinder -from zipline.assets.continuous_futures import CHAIN_PREDICATES -from zipline.data.loader import load_market_data -from zipline.utils.calendars import get_calendar -from zipline.utils.memoize import remember_last +from catalyst.assets import AssetDBWriter, AssetFinder +from catalyst.assets.continuous_futures import CHAIN_PREDICATES +from catalyst.data.loader import load_market_data +from catalyst.utils.calendars import get_calendar +from catalyst.utils.memoize import remember_last log = logbook.Logger('Trading') @@ -34,7 +34,7 @@ DEFAULT_CAPITAL_BASE = 1e5 class TradingEnvironment(object): """ - The financial simulations in zipline depend on information + The financial simulations in catalyst depend on information about the benchmark index and the risk free rates of return. The benchmark index defines the benchmark returns used in the calculation of performance metrics such as alpha/beta. Many @@ -49,7 +49,7 @@ class TradingEnvironment(object): ensure proper rollover through daylight savings and so on. User code will not normally need to use TradingEnvironment - directly. If you are extending zipline's core financial + directly. If you are extending catalyst's core financial components and need to use the environment, you must import the module and build a new TradingEnvironment object, then pass that TradingEnvironment as the 'env' arg to your TradingAlgorithm. diff --git a/zipline/finance/transaction.py b/catalyst/finance/transaction.py similarity index 94% rename from zipline/finance/transaction.py rename to catalyst/finance/transaction.py index adde43cc..3a388890 100644 --- a/zipline/finance/transaction.py +++ b/catalyst/finance/transaction.py @@ -16,9 +16,9 @@ from __future__ import division from copy import copy -from zipline.assets import Asset -from zipline.protocol import DATASOURCE_TYPE -from zipline.utils.input_validation import expect_types +from catalyst.assets import Asset +from catalyst.protocol import DATASOURCE_TYPE +from catalyst.utils.input_validation import expect_types class Transaction(object): diff --git a/zipline/gens/__init__.py b/catalyst/gens/__init__.py similarity index 100% rename from zipline/gens/__init__.py rename to catalyst/gens/__init__.py diff --git a/zipline/gens/composites.py b/catalyst/gens/composites.py similarity index 100% rename from zipline/gens/composites.py rename to catalyst/gens/composites.py diff --git a/zipline/gens/sim_engine.pyx b/catalyst/gens/sim_engine.pyx similarity index 100% rename from zipline/gens/sim_engine.pyx rename to catalyst/gens/sim_engine.pyx diff --git a/zipline/gens/tradesimulation.py b/catalyst/gens/tradesimulation.py similarity index 98% rename from zipline/gens/tradesimulation.py rename to catalyst/gens/tradesimulation.py index 1d5b372f..f7daa233 100644 --- a/zipline/gens/tradesimulation.py +++ b/catalyst/gens/tradesimulation.py @@ -15,11 +15,11 @@ from contextlib2 import ExitStack from logbook import Logger, Processor from pandas.tslib import normalize_date -from zipline.protocol import BarData -from zipline.utils.api_support import ZiplineAPI +from catalyst.protocol import BarData +from catalyst.utils.api_support import ZiplineAPI from six import viewkeys -from zipline.gens.sim_engine import ( +from catalyst.gens.sim_engine import ( BAR, SESSION_START, SESSION_END, diff --git a/zipline/gens/utils.py b/catalyst/gens/utils.py similarity index 97% rename from zipline/gens/utils.py rename to catalyst/gens/utils.py index 2f78dcab..98ae8e35 100644 --- a/zipline/gens/utils.py +++ b/catalyst/gens/utils.py @@ -19,7 +19,7 @@ import numbers from hashlib import md5 from datetime import datetime -from zipline.protocol import DATASOURCE_TYPE +from catalyst.protocol import DATASOURCE_TYPE from six import iteritems, b diff --git a/zipline/lib/__init__.py b/catalyst/lib/__init__.py similarity index 100% rename from zipline/lib/__init__.py rename to catalyst/lib/__init__.py diff --git a/zipline/lib/_factorize.pyx b/catalyst/lib/_factorize.pyx similarity index 98% rename from zipline/lib/_factorize.pyx rename to catalyst/lib/_factorize.pyx index 3b84662e..c359cfd5 100644 --- a/zipline/lib/_factorize.pyx +++ b/catalyst/lib/_factorize.pyx @@ -5,7 +5,7 @@ from libc.math cimport log cimport numpy as np import numpy as np -from zipline.utils.numpy_utils import unsigned_int_dtype_with_size_in_bytes +from catalyst.utils.numpy_utils import unsigned_int_dtype_with_size_in_bytes np.import_array() diff --git a/zipline/lib/_float64window.pyx b/catalyst/lib/_float64window.pyx similarity index 100% rename from zipline/lib/_float64window.pyx rename to catalyst/lib/_float64window.pyx diff --git a/zipline/lib/_int64window.pyx b/catalyst/lib/_int64window.pyx similarity index 100% rename from zipline/lib/_int64window.pyx rename to catalyst/lib/_int64window.pyx diff --git a/zipline/lib/_labelwindow.pyx b/catalyst/lib/_labelwindow.pyx similarity index 100% rename from zipline/lib/_labelwindow.pyx rename to catalyst/lib/_labelwindow.pyx diff --git a/zipline/lib/_uint8window.pyx b/catalyst/lib/_uint8window.pyx similarity index 100% rename from zipline/lib/_uint8window.pyx rename to catalyst/lib/_uint8window.pyx diff --git a/zipline/lib/_windowtemplate.pxi b/catalyst/lib/_windowtemplate.pxi similarity index 98% rename from zipline/lib/_windowtemplate.pxi rename to catalyst/lib/_windowtemplate.pxi index 9ba958e1..f31ab788 100644 --- a/zipline/lib/_windowtemplate.pxi +++ b/catalyst/lib/_windowtemplate.pxi @@ -7,9 +7,9 @@ file that's defined a type symbol named `databuffer` that can be used like a See Also -------- -zipline.lib._floatwindow -zipline.lib._intwindow -zipline.lib._datewindow +catalyst.lib._floatwindow +catalyst.lib._intwindow +catalyst.lib._datewindow """ from numpy cimport ndarray from numpy import asanyarray, dtype, issubdtype diff --git a/zipline/lib/adjusted_array.py b/catalyst/lib/adjusted_array.py similarity index 97% rename from zipline/lib/adjusted_array.py rename to catalyst/lib/adjusted_array.py index 80d167d2..faeefd36 100644 --- a/zipline/lib/adjusted_array.py +++ b/catalyst/lib/adjusted_array.py @@ -13,18 +13,18 @@ from numpy import ( uint32, uint8, ) -from zipline.errors import ( +from catalyst.errors import ( WindowLengthNotPositive, WindowLengthTooLong, ) -from zipline.lib.labelarray import LabelArray -from zipline.utils.numpy_utils import ( +from catalyst.lib.labelarray import LabelArray +from catalyst.utils.numpy_utils import ( datetime64ns_dtype, float64_dtype, int64_dtype, uint8_dtype, ) -from zipline.utils.memoize import lazyval +from catalyst.utils.memoize import lazyval # These class names are all the same because of our bootleg templating system. from ._float64window import AdjustedArrayWindow as Float64Window @@ -274,7 +274,7 @@ def ensure_ndarray(ndarray_or_adjusted_array): Parameters ---------- - ndarray_or_adjusted_array : numpy.ndarray | zipline.data.adjusted_array + ndarray_or_adjusted_array : numpy.ndarray | catalyst.data.adjusted_array Returns ------- diff --git a/zipline/lib/adjustment.pyx b/catalyst/lib/adjustment.pyx similarity index 99% rename from zipline/lib/adjustment.pyx rename to catalyst/lib/adjustment.pyx index 3c13470a..61e7e6e2 100644 --- a/zipline/lib/adjustment.pyx +++ b/catalyst/lib/adjustment.pyx @@ -5,7 +5,7 @@ from pandas import isnull, Timestamp from numpy cimport float64_t, uint8_t, int64_t from numpy import asarray, datetime64, float64, int64 -from zipline.utils.compat import unicode +from catalyst.utils.compat import unicode # Purely for readability. There aren't C-level declarations for these types. ctypedef object Int64Index_t @@ -786,7 +786,7 @@ cdef class ObjectOverwrite(_ObjectAdjustment): cpdef mutate(self, object data): # data is an object here because this is intended to be used with a - # `zipline.lib.LabelArray`. + # `catalyst.lib.LabelArray`. # We don't do this in a loop because we only want to look up the label # code in the array's categories once. diff --git a/zipline/lib/labelarray.py b/catalyst/lib/labelarray.py similarity index 98% rename from zipline/lib/labelarray.py rename to catalyst/lib/labelarray.py index ff121ff9..7c599958 100644 --- a/zipline/lib/labelarray.py +++ b/catalyst/lib/labelarray.py @@ -10,22 +10,22 @@ from numpy import ndarray import pandas as pd from toolz import compose -from zipline.utils.compat import unicode -from zipline.utils.functional import instance -from zipline.utils.preprocess import preprocess -from zipline.utils.sentinel import sentinel -from zipline.utils.input_validation import ( +from catalyst.utils.compat import unicode +from catalyst.utils.functional import instance +from catalyst.utils.preprocess import preprocess +from catalyst.utils.sentinel import sentinel +from catalyst.utils.input_validation import ( coerce, expect_kinds, expect_types, optional, ) -from zipline.utils.numpy_utils import ( +from catalyst.utils.numpy_utils import ( bool_dtype, unsigned_int_dtype_with_size_in_bytes, is_object, ) -from zipline.utils.pandas_utils import ignore_pandas_nan_categorical_warning +from catalyst.utils.pandas_utils import ignore_pandas_nan_categorical_warning from ._factorize import ( factorize_strings, diff --git a/zipline/lib/normalize.py b/catalyst/lib/normalize.py similarity index 100% rename from zipline/lib/normalize.py rename to catalyst/lib/normalize.py diff --git a/zipline/lib/quantiles.py b/catalyst/lib/quantiles.py similarity index 100% rename from zipline/lib/quantiles.py rename to catalyst/lib/quantiles.py diff --git a/zipline/lib/rank.pyx b/catalyst/lib/rank.pyx similarity index 98% rename from zipline/lib/rank.pyx rename to catalyst/lib/rank.pyx index 022b39b8..0022bc48 100644 --- a/zipline/lib/rank.pyx +++ b/catalyst/lib/rank.pyx @@ -17,7 +17,7 @@ from numpy cimport ( from numpy import apply_along_axis, float64, isnan, nan from scipy.stats import rankdata -from zipline.utils.numpy_utils import ( +from catalyst.utils.numpy_utils import ( is_missing, float64_dtype, int64_dtype, diff --git a/zipline/pipeline/__init__.py b/catalyst/pipeline/__init__.py similarity index 97% rename from zipline/pipeline/__init__.py rename to catalyst/pipeline/__init__.py index a169256b..85ec1e65 100644 --- a/zipline/pipeline/__init__.py +++ b/catalyst/pipeline/__init__.py @@ -1,5 +1,5 @@ from __future__ import print_function -from zipline.assets import AssetFinder +from catalyst.assets import AssetFinder from .classifiers import Classifier, CustomClassifier from .engine import SimplePipelineEngine diff --git a/zipline/pipeline/api_utils.py b/catalyst/pipeline/api_utils.py similarity index 91% rename from zipline/pipeline/api_utils.py rename to catalyst/pipeline/api_utils.py index d8b77fb8..fd492232 100644 --- a/zipline/pipeline/api_utils.py +++ b/catalyst/pipeline/api_utils.py @@ -1,7 +1,7 @@ """ Utilities for creating public APIs (e.g. argument validation decorators). """ -from zipline.utils.input_validation import preprocess +from catalyst.utils.input_validation import preprocess def restrict_to_dtype(dtype, message_template): @@ -10,7 +10,7 @@ def restrict_to_dtype(dtype, message_template): Terms with a specific dtype. This is conceptually similar to - zipline.utils.input_validation.expect_dtypes, but provides more flexibility + catalyst.utils.input_validation.expect_dtypes, but provides more flexibility for providing error messages that are specifically targeting Term methods. Parameters diff --git a/zipline/pipeline/classifiers/__init__.py b/catalyst/pipeline/classifiers/__init__.py similarity index 100% rename from zipline/pipeline/classifiers/__init__.py rename to catalyst/pipeline/classifiers/__init__.py diff --git a/zipline/pipeline/classifiers/classifier.py b/catalyst/pipeline/classifiers/classifier.py similarity index 95% rename from zipline/pipeline/classifiers/classifier.py rename to catalyst/pipeline/classifiers/classifier.py index de5da2f0..933f9652 100644 --- a/zipline/pipeline/classifiers/classifier.py +++ b/catalyst/pipeline/classifiers/classifier.py @@ -8,15 +8,15 @@ import re from numpy import where, isnan, nan, zeros import pandas as pd -from zipline.lib.labelarray import LabelArray -from zipline.lib.quantiles import quantiles -from zipline.pipeline.api_utils import restrict_to_dtype -from zipline.pipeline.sentinels import NotSpecified -from zipline.pipeline.term import ComputableTerm -from zipline.utils.compat import unicode -from zipline.utils.input_validation import expect_types, expect_dtypes -from zipline.utils.memoize import classlazyval -from zipline.utils.numpy_utils import ( +from catalyst.lib.labelarray import LabelArray +from catalyst.lib.quantiles import quantiles +from catalyst.pipeline.api_utils import restrict_to_dtype +from catalyst.pipeline.sentinels import NotSpecified +from catalyst.pipeline.term import ComputableTerm +from catalyst.utils.compat import unicode +from catalyst.utils.input_validation import expect_types, expect_dtypes +from catalyst.utils.memoize import classlazyval +from catalyst.utils.numpy_utils import ( categorical_dtype, int64_dtype, vectorized_is_element, @@ -330,7 +330,7 @@ class Classifier(RestrictedDTypeMixin, ComputableTerm): Called with the result of a pipeline. This needs to return an object which can be put into the workspace to continue doing computations. - This is the inverse of :func:`~zipline.pipeline.term.Term.postprocess`. + This is the inverse of :func:`~catalyst.pipeline.term.Term.postprocess`. """ if self.dtype == int64_dtype: return super(Classifier, self).to_workspace_value(result, assets) @@ -409,7 +409,7 @@ class Relabel(SingleInputMixin, Classifier): Parameters ---------- - arg : zipline.pipeline.Classifier + arg : catalyst.pipeline.Classifier Term produceing the input to be relabeled. relabel_func : function(LabelArray) -> LabelArray Function to apply to the result of `term`. @@ -455,8 +455,8 @@ class CustomClassifier(PositiveWindowLengthMixin, See Also -------- - zipline.pipeline.CustomFactor - zipline.pipeline.CustomFilter + catalyst.pipeline.CustomFactor + catalyst.pipeline.CustomFilter """ def _allocate_output(self, windows, shape): """ @@ -481,9 +481,9 @@ class Latest(LatestMixin, CustomClassifier): See Also -------- - zipline.pipeline.data.dataset.BoundColumn.latest - zipline.pipeline.factors.factor.Latest - zipline.pipeline.filters.filter.Latest + catalyst.pipeline.data.dataset.BoundColumn.latest + catalyst.pipeline.factors.factor.Latest + catalyst.pipeline.filters.filter.Latest """ pass diff --git a/zipline/pipeline/common.py b/catalyst/pipeline/common.py similarity index 100% rename from zipline/pipeline/common.py rename to catalyst/pipeline/common.py diff --git a/zipline/pipeline/data/__init__.py b/catalyst/pipeline/data/__init__.py similarity index 100% rename from zipline/pipeline/data/__init__.py rename to catalyst/pipeline/data/__init__.py diff --git a/zipline/pipeline/data/crypto_pricing.py b/catalyst/pipeline/data/crypto_pricing.py similarity index 86% rename from zipline/pipeline/data/crypto_pricing.py rename to catalyst/pipeline/data/crypto_pricing.py index 1e97d08f..49e50b14 100644 --- a/zipline/pipeline/data/crypto_pricing.py +++ b/catalyst/pipeline/data/crypto_pricing.py @@ -1,5 +1,5 @@ -from zipline.utils.numpy_utils import float64_dtype +from catalyst.utils.numpy_utils import float64_dtype from .dataset import Column, DataSet diff --git a/zipline/pipeline/data/dataset.py b/catalyst/pipeline/data/dataset.py similarity index 91% rename from zipline/pipeline/data/dataset.py rename to catalyst/pipeline/data/dataset.py index 2008170b..46c213aa 100644 --- a/zipline/pipeline/data/dataset.py +++ b/catalyst/pipeline/data/dataset.py @@ -7,18 +7,18 @@ from six import ( with_metaclass, ) -from zipline.pipeline.classifiers import Classifier, Latest as LatestClassifier -from zipline.pipeline.factors import Factor, Latest as LatestFactor -from zipline.pipeline.filters import Filter, Latest as LatestFilter -from zipline.pipeline.sentinels import NotSpecified -from zipline.pipeline.term import ( +from catalyst.pipeline.classifiers import Classifier, Latest as LatestClassifier +from catalyst.pipeline.factors import Factor, Latest as LatestFactor +from catalyst.pipeline.filters import Filter, Latest as LatestFilter +from catalyst.pipeline.sentinels import NotSpecified +from catalyst.pipeline.term import ( AssetExists, LoadableTerm, validate_dtype, ) -from zipline.utils.input_validation import ensure_dtype -from zipline.utils.numpy_utils import NoDefaultMissingValue -from zipline.utils.preprocess import preprocess +from catalyst.utils.input_validation import ensure_dtype +from catalyst.utils.numpy_utils import NoDefaultMissingValue +from catalyst.utils.preprocess import preprocess class Column(object): @@ -99,14 +99,14 @@ class BoundColumn(LoadableTerm): ---------- dtype : numpy.dtype The dtype of data produced when this column is loaded. - latest : zipline.pipeline.data.Factor or zipline.pipeline.data.Filter + latest : catalyst.pipeline.data.Factor or catalyst.pipeline.data.Filter A Filter, Factor, or Classifier computing the most recently known value of this column on each date. Produces a Filter if self.dtype == ``np.bool_``. Produces a Classifier if self.dtype == ``np.int64`` Otherwise produces a Factor. - dataset : zipline.pipeline.data.DataSet + dataset : catalyst.pipeline.data.DataSet The dataset to which this column is bound. name : str The name of this column. diff --git a/zipline/pipeline/data/equity_pricing.py b/catalyst/pipeline/data/equity_pricing.py similarity index 85% rename from zipline/pipeline/data/equity_pricing.py rename to catalyst/pipeline/data/equity_pricing.py index e81489d9..e84a716c 100644 --- a/zipline/pipeline/data/equity_pricing.py +++ b/catalyst/pipeline/data/equity_pricing.py @@ -1,5 +1,5 @@ -from zipline.utils.numpy_utils import float64_dtype +from catalyst.utils.numpy_utils import float64_dtype from .dataset import Column, DataSet diff --git a/zipline/pipeline/data/testing.py b/catalyst/pipeline/data/testing.py similarity index 92% rename from zipline/pipeline/data/testing.py rename to catalyst/pipeline/data/testing.py index 52873685..95dd94ac 100644 --- a/zipline/pipeline/data/testing.py +++ b/catalyst/pipeline/data/testing.py @@ -2,10 +2,10 @@ Datasets for testing use. Loaders for datasets in this file can be found in -zipline.pipeline.data.testing. +catalyst.pipeline.data.testing. """ from .dataset import Column, DataSet -from zipline.utils.numpy_utils import ( +from catalyst.utils.numpy_utils import ( bool_dtype, categorical_dtype, float64_dtype, diff --git a/zipline/pipeline/downsample_helpers.py b/catalyst/pipeline/downsample_helpers.py similarity index 91% rename from zipline/pipeline/downsample_helpers.py rename to catalyst/pipeline/downsample_helpers.py index d514fd4f..3acc4417 100644 --- a/zipline/pipeline/downsample_helpers.py +++ b/catalyst/pipeline/downsample_helpers.py @@ -3,9 +3,9 @@ Helpers for downsampling code. """ from operator import attrgetter -from zipline.utils.input_validation import expect_element -from zipline.utils.numpy_utils import changed_locations -from zipline.utils.sharedoc import ( +from catalyst.utils.input_validation import expect_element +from catalyst.utils.numpy_utils import changed_locations +from catalyst.utils.sharedoc import ( templated_docstring, PIPELINE_DOWNSAMPLING_FREQUENCY_DOC, ) diff --git a/zipline/pipeline/engine.py b/catalyst/pipeline/engine.py similarity index 95% rename from zipline/pipeline/engine.py rename to catalyst/pipeline/engine.py index 335854c8..8b8eb4b6 100644 --- a/zipline/pipeline/engine.py +++ b/catalyst/pipeline/engine.py @@ -16,20 +16,20 @@ from pandas import DataFrame, MultiIndex from toolz import groupby, juxt from toolz.curried.operator import getitem -from zipline.lib.adjusted_array import ensure_adjusted_array, ensure_ndarray -from zipline.errors import NoFurtherDataError -from zipline.utils.numpy_utils import ( +from catalyst.lib.adjusted_array import ensure_adjusted_array, ensure_ndarray +from catalyst.errors import NoFurtherDataError +from catalyst.utils.numpy_utils import ( as_column, repeat_first_axis, repeat_last_axis, ) -from zipline.utils.pandas_utils import explode +from catalyst.utils.pandas_utils import explode from .term import AssetExists, InputDates, LoadableTerm -from zipline.utils.date_utils import compute_date_range_chunks -from zipline.utils.pandas_utils import categorical_df_concat -from zipline.utils.sharedoc import copydoc +from catalyst.utils.date_utils import compute_date_range_chunks +from catalyst.utils.pandas_utils import categorical_df_concat +from catalyst.utils.sharedoc import copydoc class PipelineEngine(with_metaclass(ABCMeta)): @@ -44,7 +44,7 @@ class PipelineEngine(with_metaclass(ABCMeta)): Parameters ---------- - pipeline : zipline.pipeline.Pipeline + pipeline : catalyst.pipeline.Pipeline The pipeline to run. start_date : pd.Timestamp Start date of the computed matrix. @@ -58,7 +58,7 @@ class PipelineEngine(with_metaclass(ABCMeta)): The ``result`` columns correspond to the entries of `pipeline.columns`, which should be a dictionary mapping strings to - instances of :class:`zipline.pipeline.term.Term`. + instances of :class:`catalyst.pipeline.term.Term`. For each date between ``start_date`` and ``end_date``, ``result`` will contain a row for each asset that passed `pipeline.screen`. @@ -93,7 +93,7 @@ class PipelineEngine(with_metaclass(ABCMeta)): The ``result`` columns correspond to the entries of `pipeline.columns`, which should be a dictionary mapping strings to - instances of :class:`zipline.pipeline.term.Term`. + instances of :class:`catalyst.pipeline.term.Term`. For each date between ``start_date`` and ``end_date``, ``result`` will contain a row for each asset that passed `pipeline.screen`. @@ -102,7 +102,7 @@ class PipelineEngine(with_metaclass(ABCMeta)): See Also -------- - :meth:`zipline.pipeline.engine.PipelineEngine.run_pipeline` + :meth:`catalyst.pipeline.engine.PipelineEngine.run_pipeline` """ raise NotImplementedError("run_chunked_pipeline") @@ -176,18 +176,18 @@ class SimplePipelineEngine(PipelineEngine): calendar : DatetimeIndex Array of dates to consider as trading days when computing a range between a fixed start and end. - asset_finder : zipline.assets.AssetFinder + asset_finder : catalyst.assets.AssetFinder An AssetFinder instance. We depend on the AssetFinder to determine which assets are in the top-level universe at any point in time. populate_initial_workspace : callable, optional A function which will be used to populate the initial workspace when computing a pipeline. See - :func:`zipline.pipeline.engine.default_populate_initial_workspace` + :func:`catalyst.pipeline.engine.default_populate_initial_workspace` for more info. See Also -------- - :func:`zipline.pipeline.engine.default_populate_initial_workspace` + :func:`catalyst.pipeline.engine.default_populate_initial_workspace` """ __slots__ = ( '_get_loader', @@ -250,7 +250,7 @@ class SimplePipelineEngine(PipelineEngine): Parameters ---------- - pipeline : zipline.pipeline.Pipeline + pipeline : catalyst.pipeline.Pipeline The pipeline to run. start_date : pd.Timestamp Start date of the computed matrix. @@ -264,7 +264,7 @@ class SimplePipelineEngine(PipelineEngine): The ``result`` columns correspond to the entries of `pipeline.columns`, which should be a dictionary mapping strings to - instances of :class:`zipline.pipeline.term.Term`. + instances of :class:`catalyst.pipeline.term.Term`. For each date between ``start_date`` and ``end_date``, ``result`` will contain a row for each asset that passed `pipeline.screen`. @@ -273,8 +273,8 @@ class SimplePipelineEngine(PipelineEngine): See Also -------- - :meth:`zipline.pipeline.engine.PipelineEngine.run_pipeline` - :meth:`zipline.pipeline.engine.PipelineEngine.run_chunked_pipeline` + :meth:`catalyst.pipeline.engine.PipelineEngine.run_pipeline` + :meth:`catalyst.pipeline.engine.PipelineEngine.run_chunked_pipeline` """ if end_date < start_date: raise ValueError( @@ -437,7 +437,7 @@ class SimplePipelineEngine(PipelineEngine): Parameters ---------- - graph : zipline.pipeline.graph.TermGraph + graph : catalyst.pipeline.graph.TermGraph dates : pd.DatetimeIndex Row labels for our root mask. assets : pd.Int64Index diff --git a/zipline/pipeline/expression.py b/catalyst/pipeline/expression.py similarity index 98% rename from zipline/pipeline/expression.py rename to catalyst/pipeline/expression.py index 941f058e..260bc05b 100644 --- a/zipline/pipeline/expression.py +++ b/catalyst/pipeline/expression.py @@ -12,7 +12,7 @@ from numpy import ( inf, ) -from zipline.pipeline.term import Term, ComputableTerm +from catalyst.pipeline.term import Term, ComputableTerm _VARIABLE_NAME_RE = re.compile("^(x_)([0-9]+)$") @@ -107,9 +107,9 @@ class BadBinaryOperator(TypeError): ---------- op : str The attempted operation - left : zipline.computable.Term + left : catalyst.computable.Term The left hand side of the operation. - right : zipline.computable.Term + right : catalyst.computable.Term The right hand side of the operation. """ def __init__(self, op, left, right): diff --git a/zipline/pipeline/factors/__init__.py b/catalyst/pipeline/factors/__init__.py similarity index 59% rename from zipline/pipeline/factors/__init__.py rename to catalyst/pipeline/factors/__init__.py index 57ae0518..01a35f41 100644 --- a/zipline/pipeline/factors/__init__.py +++ b/catalyst/pipeline/factors/__init__.py @@ -8,11 +8,6 @@ from .events import ( BusinessDaysSincePreviousEvent, BusinessDaysUntilNextEvent, ) -from .statistical import ( - RollingLinearRegressionOfReturns, - RollingPearsonOfReturns, - RollingSpearmanOfReturns, -) __all__ = [ 'BusinessDaysSincePreviousEvent', @@ -21,7 +16,4 @@ __all__ = [ 'Factor', 'Latest', 'RecarrayField', - 'RollingLinearRegressionOfReturns', - 'RollingPearsonOfReturns', - 'RollingSpearmanOfReturns', ] diff --git a/zipline/pipeline/factors/crypto/__init__.py b/catalyst/pipeline/factors/crypto/__init__.py similarity index 100% rename from zipline/pipeline/factors/crypto/__init__.py rename to catalyst/pipeline/factors/crypto/__init__.py diff --git a/zipline/pipeline/factors/crypto/technical.py b/catalyst/pipeline/factors/crypto/technical.py similarity index 95% rename from zipline/pipeline/factors/crypto/technical.py rename to catalyst/pipeline/factors/crypto/technical.py index 7bd754e2..bfdc2285 100644 --- a/zipline/pipeline/factors/crypto/technical.py +++ b/catalyst/pipeline/factors/crypto/technical.py @@ -24,10 +24,10 @@ from numpy import ( ) from numexpr import evaluate -from zipline.pipeline.data import CryptoPricing -from zipline.pipeline.mixins import SingleInputMixin -from zipline.utils.input_validation import expect_bounded, expect_types -from zipline.utils.math_utils import ( +from catalyst.pipeline.data import CryptoPricing +from catalyst.pipeline.mixins import SingleInputMixin +from catalyst.utils.input_validation import expect_bounded, expect_types +from catalyst.utils.math_utils import ( nanargmax, nanargmin, nanmax, @@ -36,7 +36,7 @@ from zipline.utils.math_utils import ( nansum, nanmin, ) -from zipline.utils.numpy_utils import ( +from catalyst.utils.numpy_utils import ( float64_dtype, ignore_nanwarnings, rolling_window, @@ -468,7 +468,7 @@ class BollingerBands(CustomFactor): Bollinger Bands technical indicator. https://en.wikipedia.org/wiki/Bollinger_Bands - **Default Inputs:** :data:`zipline.pipeline.data.CryptoPricing.close` + **Default Inputs:** :data:`catalyst.pipeline.data.CryptoPricing.close` Parameters ---------- @@ -540,9 +540,9 @@ class FastStochasticOscillator(CustomFactor): market analysis. It is recommended to use the slow stochastic oscillator or a moving average of the %K [%D]. - **Default Inputs:** :data: `zipline.pipeline.data.CryptoPricing.close` - :data: `zipline.pipeline.data.CryptoPricing.low` - :data: `zipline.pipeline.data.CryptoPricing.high` + **Default Inputs:** :data: `catalyst.pipeline.data.CryptoPricing.close` + :data: `catalyst.pipeline.data.CryptoPricing.low` + :data: `catalyst.pipeline.data.CryptoPricing.high` **Default Window Length:** 14 @@ -576,9 +576,9 @@ class IchimokuKinkoHyo(CustomFactor): """Compute the various metrics for the Ichimoku Kinko Hyo (Ichimoku Cloud). http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:ichimoku_cloud # noqa - **Default Inputs:** :data:`zipline.pipeline.data.CryptoPricing.high` - :data:`zipline.pipeline.data.CryptoPricing.low` - :data:`zipline.pipeline.data.CryptoPricing.close` + **Default Inputs:** :data:`catalyst.pipeline.data.CryptoPricing.high` + :data:`catalyst.pipeline.data.CryptoPricing.low` + :data:`catalyst.pipeline.data.CryptoPricing.close` **Default Window Length:** 52 Parameters @@ -672,9 +672,9 @@ class TrueRange(CustomFactor): A technical indicator originally developed by J. Welles Wilder, Jr. Indicates the true degree of daily price change in an underlying. - **Default Inputs:** :data:`zipline.pipeline.data.CryptoPricing.high` - :data:`zipline.pipeline.data.CryptoPricing.low` - :data:`zipline.pipeline.data.CryptoPricing.close` + **Default Inputs:** :data:`catalyst.pipeline.data.CryptoPricing.high` + :data:`catalyst.pipeline.data.CryptoPricing.low` + :data:`catalyst.pipeline.data.CryptoPricing.close` **Default Window Length:** 2 """ inputs = ( @@ -708,7 +708,7 @@ class MovingAverageConvergenceDivergenceSignal(CustomFactor): reveals changes in the strength, direction, momentum, and duration of a trend in a stock's price. - **Default Inputs:** :data:`zipline.pipeline.data.CryptoPricing.close` + **Default Inputs:** :data:`catalyst.pipeline.data.CryptoPricing.close` Parameters ---------- @@ -790,7 +790,7 @@ class AnnualizedVolatility(CustomFactor): the standard deviation of daily returns. https://en.wikipedia.org/wiki/Volatility_(finance) - **Default Inputs:** :data:`zipline.pipeline.factors.Returns(window_length=2)` # noqa + **Default Inputs:** :data:`catalyst.pipeline.factors.Returns(window_length=2)` # noqa Parameters ---------- diff --git a/zipline/pipeline/factors/equity/__init__.py b/catalyst/pipeline/factors/equity/__init__.py similarity index 81% rename from zipline/pipeline/factors/equity/__init__.py rename to catalyst/pipeline/factors/equity/__init__.py index aa16cfbe..e8d29cf0 100644 --- a/zipline/pipeline/factors/equity/__init__.py +++ b/catalyst/pipeline/factors/equity/__init__.py @@ -1,3 +1,8 @@ +from .statistical import ( + RollingLinearRegressionOfReturns, + RollingPearsonOfReturns, + RollingSpearmanOfReturns, +) from .technical import ( AnnualizedVolatility, Aroon, @@ -39,6 +44,9 @@ __all__ = [ 'MovingAverageConvergenceDivergenceSignal', 'RateOfChangePercentage', 'Returns', + 'RollingLinearRegressionOfReturns', + 'RollingPearsonOfReturns', + 'RollingSpearmanOfReturns', 'RSI', 'SimpleMovingAverage', 'TrueRange', diff --git a/zipline/pipeline/factors/statistical.py b/catalyst/pipeline/factors/equity/statistical.py similarity index 89% rename from zipline/pipeline/factors/statistical.py rename to catalyst/pipeline/factors/equity/statistical.py index 918237d3..7ef768a2 100644 --- a/zipline/pipeline/factors/statistical.py +++ b/catalyst/pipeline/factors/equity/statistical.py @@ -6,14 +6,14 @@ from scipy.stats import ( spearmanr, ) -from zipline.errors import IncompatibleTerms -from zipline.pipeline.factors import CustomFactor -from zipline.pipeline.filters import SingleAsset -from zipline.pipeline.mixins import SingleInputMixin -from zipline.pipeline.sentinels import NotSpecified -from zipline.pipeline.term import AssetExists -from zipline.utils.input_validation import expect_bounded, expect_dtypes -from zipline.utils.numpy_utils import float64_dtype, int64_dtype +from catalyst.errors import IncompatibleTerms +from catalyst.pipeline.factors import CustomFactor +from catalyst.pipeline.filters import SingleAsset +from catalyst.pipeline.mixins import SingleInputMixin +from catalyst.pipeline.sentinels import NotSpecified +from catalyst.pipeline.term import AssetExists +from catalyst.utils.input_validation import expect_bounded, expect_dtypes +from catalyst.utils.numpy_utils import float64_dtype, int64_dtype from .technical import Returns @@ -49,10 +49,10 @@ class RollingPearson(_RollingCorrelation): Parameters ---------- - base_factor : zipline.pipeline.factors.Factor + base_factor : catalyst.pipeline.factors.Factor The factor for which to compute correlations of each of its columns with `target`. - target : zipline.pipeline.Term with a numeric dtype + target : catalyst.pipeline.Term with a numeric dtype The term with which to compute correlations against each column of data produced by `base_factor`. This term may be a Factor, a BoundColumn or a Slice. If `target` is two-dimensional, correlations are computed @@ -60,7 +60,7 @@ class RollingPearson(_RollingCorrelation): correlation_length : int Length of the lookback window over which to compute each correlation coefficient. - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional A Filter describing which assets (columns) of `base_factor` should have their correlation with `target` computed each day. @@ -68,7 +68,7 @@ class RollingPearson(_RollingCorrelation): -------- :func:`scipy.stats.pearsonr` :meth:`Factor.pearsonr` - :class:`zipline.pipeline.factors.RollingPearsonOfReturns` + :class:`catalyst.pipeline.factors.RollingPearsonOfReturns` Notes ----- @@ -95,10 +95,10 @@ class RollingSpearman(_RollingCorrelation): Parameters ---------- - base_factor : zipline.pipeline.factors.Factor + base_factor : catalyst.pipeline.factors.Factor The factor for which to compute correlations of each of its columns with `target`. - target : zipline.pipeline.Term with a numeric dtype + target : catalyst.pipeline.Term with a numeric dtype The term with which to compute correlations against each column of data produced by `base_factor`. This term may be a Factor, a BoundColumn or a Slice. If `target` is two-dimensional, correlations are computed @@ -106,7 +106,7 @@ class RollingSpearman(_RollingCorrelation): correlation_length : int Length of the lookback window over which to compute each correlation coefficient. - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional A Filter describing which assets (columns) of `base_factor` should have their correlation with `target` computed each day. @@ -114,7 +114,7 @@ class RollingSpearman(_RollingCorrelation): -------- :func:`scipy.stats.spearmanr` :meth:`Factor.spearmanr` - :class:`zipline.pipeline.factors.RollingSpearmanOfReturns` + :class:`catalyst.pipeline.factors.RollingSpearmanOfReturns` Notes ----- @@ -141,21 +141,21 @@ class RollingLinearRegression(CustomFactor, SingleInputMixin): Parameters ---------- - dependent : zipline.pipeline.factors.Factor + dependent : catalyst.pipeline.factors.Factor The factor whose columns are the predicted/dependent variable of each regression with `independent`. - independent : zipline.pipeline.slice.Slice or zipline.pipeline.Factor + independent : catalyst.pipeline.slice.Slice or catalyst.pipeline.Factor The factor/slice whose columns are the predictor/independent variable of each regression with `dependent`. If `independent` is a Factor, regressions are computed asset-wise. - independent : zipline.pipeline.Term with a numeric dtype + independent : catalyst.pipeline.Term with a numeric dtype The term to use as the predictor/independent variable in each regression with `dependent`. This term may be a Factor, a BoundColumn or a Slice. If `independent` is two-dimensional, regressions are computed asset-wise. regression_length : int Length of the lookback window over which to compute each regression. - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional A Filter describing which assets (columns) of `dependent` should be regressed against `independent` each day. @@ -163,7 +163,7 @@ class RollingLinearRegression(CustomFactor, SingleInputMixin): -------- :func:`scipy.stats.linregress` :meth:`Factor.linear_regression` - :class:`zipline.pipeline.factors.RollingLinearRegressionOfReturns` + :class:`catalyst.pipeline.factors.RollingLinearRegressionOfReturns` Notes ----- @@ -225,7 +225,7 @@ class RollingPearsonOfReturns(RollingPearson): Parameters ---------- - target : zipline.assets.Asset + target : catalyst.assets.Asset The asset to correlate with all other assets. returns_length : int >= 2 Length of the lookback window over which to compute returns. Daily @@ -233,7 +233,7 @@ class RollingPearsonOfReturns(RollingPearson): correlation_length : int >= 1 Length of the lookback window over which to compute each correlation coefficient. - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional A Filter describing which assets should have their correlation with the target asset computed each day. @@ -285,8 +285,8 @@ class RollingPearsonOfReturns(RollingPearson): See Also -------- - :class:`zipline.pipeline.factors.RollingSpearmanOfReturns` - :class:`zipline.pipeline.factors.RollingLinearRegressionOfReturns` + :class:`catalyst.pipeline.factors.RollingSpearmanOfReturns` + :class:`catalyst.pipeline.factors.RollingLinearRegressionOfReturns` """ def __new__(cls, target, @@ -315,7 +315,7 @@ class RollingSpearmanOfReturns(RollingSpearman): Parameters ---------- - target : zipline.assets.Asset + target : catalyst.assets.Asset The asset to correlate with all other assets. returns_length : int >= 2 Length of the lookback window over which to compute returns. Daily @@ -323,7 +323,7 @@ class RollingSpearmanOfReturns(RollingSpearman): correlation_length : int >= 1 Length of the lookback window over which to compute each correlation coefficient. - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional A Filter describing which assets should have their correlation with the target asset computed each day. @@ -335,8 +335,8 @@ class RollingSpearmanOfReturns(RollingSpearman): See Also -------- - :class:`zipline.pipeline.factors.RollingPearsonOfReturns` - :class:`zipline.pipeline.factors.RollingLinearRegressionOfReturns` + :class:`catalyst.pipeline.factors.RollingPearsonOfReturns` + :class:`catalyst.pipeline.factors.RollingLinearRegressionOfReturns` """ def __new__(cls, target, @@ -365,14 +365,14 @@ class RollingLinearRegressionOfReturns(RollingLinearRegression): Parameters ---------- - target : zipline.assets.Asset + target : catalyst.assets.Asset The asset to regress against all other assets. returns_length : int >= 2 Length of the lookback window over which to compute returns. Daily returns require a window length of 2. regression_length : int >= 1 Length of the lookback window over which to compute each regression. - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional A Filter describing which assets should be regressed against the target asset each day. @@ -395,7 +395,7 @@ class RollingLinearRegressionOfReturns(RollingLinearRegression): regression. For more help on factors with multiple outputs, see - :class:`zipline.pipeline.factors.CustomFactor`. + :class:`catalyst.pipeline.factors.CustomFactor`. Examples -------- @@ -452,8 +452,8 @@ class RollingLinearRegressionOfReturns(RollingLinearRegression): See Also -------- - :class:`zipline.pipeline.factors.RollingPearsonOfReturns` - :class:`zipline.pipeline.factors.RollingSpearmanOfReturns` + :class:`catalyst.pipeline.factors.RollingPearsonOfReturns` + :class:`catalyst.pipeline.factors.RollingSpearmanOfReturns` """ def __new__(cls, target, diff --git a/zipline/pipeline/factors/equity/technical.py b/catalyst/pipeline/factors/equity/technical.py similarity index 95% rename from zipline/pipeline/factors/equity/technical.py rename to catalyst/pipeline/factors/equity/technical.py index 71512f18..0f3c5927 100644 --- a/zipline/pipeline/factors/equity/technical.py +++ b/catalyst/pipeline/factors/equity/technical.py @@ -24,10 +24,10 @@ from numpy import ( ) from numexpr import evaluate -from zipline.pipeline.data import USEquityPricing -from zipline.pipeline.mixins import SingleInputMixin -from zipline.utils.input_validation import expect_bounded, expect_types -from zipline.utils.math_utils import ( +from catalyst.pipeline.data import USEquityPricing +from catalyst.pipeline.mixins import SingleInputMixin +from catalyst.utils.input_validation import expect_bounded, expect_types +from catalyst.utils.math_utils import ( nanargmax, nanargmin, nanmax, @@ -36,7 +36,7 @@ from zipline.utils.math_utils import ( nansum, nanmin, ) -from zipline.utils.numpy_utils import ( +from catalyst.utils.numpy_utils import ( float64_dtype, ignore_nanwarnings, rolling_window, @@ -468,7 +468,7 @@ class BollingerBands(CustomFactor): Bollinger Bands technical indicator. https://en.wikipedia.org/wiki/Bollinger_Bands - **Default Inputs:** :data:`zipline.pipeline.data.USEquityPricing.close` + **Default Inputs:** :data:`catalyst.pipeline.data.USEquityPricing.close` Parameters ---------- @@ -540,9 +540,9 @@ class FastStochasticOscillator(CustomFactor): market analysis. It is recommended to use the slow stochastic oscillator or a moving average of the %K [%D]. - **Default Inputs:** :data: `zipline.pipeline.data.USEquityPricing.close` - :data: `zipline.pipeline.data.USEquityPricing.low` - :data: `zipline.pipeline.data.USEquityPricing.high` + **Default Inputs:** :data: `catalyst.pipeline.data.USEquityPricing.close` + :data: `catalyst.pipeline.data.USEquityPricing.low` + :data: `catalyst.pipeline.data.USEquityPricing.high` **Default Window Length:** 14 @@ -576,9 +576,9 @@ class IchimokuKinkoHyo(CustomFactor): """Compute the various metrics for the Ichimoku Kinko Hyo (Ichimoku Cloud). http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:ichimoku_cloud # noqa - **Default Inputs:** :data:`zipline.pipeline.data.USEquityPricing.high` - :data:`zipline.pipeline.data.USEquityPricing.low` - :data:`zipline.pipeline.data.USEquityPricing.close` + **Default Inputs:** :data:`catalyst.pipeline.data.USEquityPricing.high` + :data:`catalyst.pipeline.data.USEquityPricing.low` + :data:`catalyst.pipeline.data.USEquityPricing.close` **Default Window Length:** 52 Parameters @@ -672,9 +672,9 @@ class TrueRange(CustomFactor): A technical indicator originally developed by J. Welles Wilder, Jr. Indicates the true degree of daily price change in an underlying. - **Default Inputs:** :data:`zipline.pipeline.data.USEquityPricing.high` - :data:`zipline.pipeline.data.USEquityPricing.low` - :data:`zipline.pipeline.data.USEquityPricing.close` + **Default Inputs:** :data:`catalyst.pipeline.data.USEquityPricing.high` + :data:`catalyst.pipeline.data.USEquityPricing.low` + :data:`catalyst.pipeline.data.USEquityPricing.close` **Default Window Length:** 2 """ inputs = ( @@ -708,7 +708,7 @@ class MovingAverageConvergenceDivergenceSignal(CustomFactor): reveals changes in the strength, direction, momentum, and duration of a trend in a stock's price. - **Default Inputs:** :data:`zipline.pipeline.data.USEquityPricing.close` + **Default Inputs:** :data:`catalyst.pipeline.data.USEquityPricing.close` Parameters ---------- @@ -790,7 +790,7 @@ class AnnualizedVolatility(CustomFactor): the standard deviation of daily returns. https://en.wikipedia.org/wiki/Volatility_(finance) - **Default Inputs:** :data:`zipline.pipeline.factors.Returns(window_length=2)` # noqa + **Default Inputs:** :data:`catalyst.pipeline.factors.Returns(window_length=2)` # noqa Parameters ---------- diff --git a/zipline/pipeline/factors/events.py b/catalyst/pipeline/factors/events.py similarity index 98% rename from zipline/pipeline/factors/events.py rename to catalyst/pipeline/factors/events.py index 8f568e09..c04fc3ca 100644 --- a/zipline/pipeline/factors/events.py +++ b/catalyst/pipeline/factors/events.py @@ -3,7 +3,7 @@ Factors describing information about event data (e.g. earnings announcements, acquisitions, dividends, etc.). """ from numpy import newaxis -from zipline.utils.numpy_utils import ( +from catalyst.utils.numpy_utils import ( NaTD, busday_count_mask_NaT, datetime64D_dtype, diff --git a/zipline/pipeline/factors/factor.py b/catalyst/pipeline/factors/factor.py similarity index 93% rename from zipline/pipeline/factors/factor.py rename to catalyst/pipeline/factors/factor.py index f7ae7f6e..afe9c219 100644 --- a/zipline/pipeline/factors/factor.py +++ b/catalyst/pipeline/factors/factor.py @@ -9,12 +9,12 @@ from math import ceil from numpy import empty_like, inf, nan, where from scipy.stats import rankdata -from zipline.errors import BadPercentileBounds, UnknownRankMethod -from zipline.lib.normalize import naive_grouped_rowwise_apply -from zipline.lib.rank import masked_rankdata_2d, rankdata_1d_descending -from zipline.pipeline.api_utils import restrict_to_dtype -from zipline.pipeline.classifiers import Classifier, Everything, Quantiles -from zipline.pipeline.expression import ( +from catalyst.errors import BadPercentileBounds, UnknownRankMethod +from catalyst.lib.normalize import naive_grouped_rowwise_apply +from catalyst.lib.rank import masked_rankdata_2d, rankdata_1d_descending +from catalyst.pipeline.api_utils import restrict_to_dtype +from catalyst.pipeline.classifiers import Classifier, Everything, Quantiles +from catalyst.pipeline.expression import ( BadBinaryOperator, COMPARISONS, is_comparison, @@ -25,14 +25,14 @@ from zipline.pipeline.expression import ( UNARY_OPS, unary_op_name, ) -from zipline.pipeline.filters import ( +from catalyst.pipeline.filters import ( Filter, NumExprFilter, PercentileFilter, NotNullFilter, NullFilter, ) -from zipline.pipeline.mixins import ( +from catalyst.pipeline.mixins import ( AliasedMixin, CustomTermMixin, DownsampledMixin, @@ -41,13 +41,13 @@ from zipline.pipeline.mixins import ( RestrictedDTypeMixin, SingleInputMixin, ) -from zipline.pipeline.sentinels import NotSpecified, NotSpecifiedType -from zipline.pipeline.term import ComputableTerm, Term -from zipline.utils.functional import with_doc, with_name -from zipline.utils.input_validation import expect_types -from zipline.utils.math_utils import nanmean, nanstd -from zipline.utils.memoize import classlazyval -from zipline.utils.numpy_utils import ( +from catalyst.pipeline.sentinels import NotSpecified, NotSpecifiedType +from catalyst.pipeline.term import ComputableTerm, Term +from catalyst.utils.functional import with_doc, with_name +from catalyst.utils.input_validation import expect_types +from catalyst.utils.math_utils import nanmean, nanstd +from catalyst.utils.memoize import classlazyval +from catalyst.utils.numpy_utils import ( bool_dtype, categorical_dtype, coerce_to_dtype, @@ -338,7 +338,7 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): >>> f2 = SomeOtherFactor(...) # doctest: +SKIP >>> average = (f1 + f2) / 2.0 # doctest: +SKIP - Factors can also be converted into :class:`zipline.pipeline.Filter` objects + Factors can also be converted into :class:`catalyst.pipeline.Filter` objects via comparison operators: (``<``, ``<=``, ``!=``, ``eq``, ``>``, ``>=``). There are many natural operators defined on Factors besides the basic @@ -405,9 +405,9 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): Parameters ---------- - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional A Filter defining values to ignore when computing means. - groupby : zipline.pipeline.Classifier, optional + groupby : catalyst.pipeline.Classifier, optional A classifier defining partitions over which to compute means. Examples @@ -538,14 +538,14 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): Parameters ---------- - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional A Filter defining values to ignore when Z-Scoring. - groupby : zipline.pipeline.Classifier, optional + groupby : catalyst.pipeline.Classifier, optional A classifier defining partitions over which to compute Z-Scores. Returns ------- - zscored : zipline.pipeline.Factor + zscored : catalyst.pipeline.Factor A Factor producing that z-scores the output of self. Notes @@ -564,7 +564,7 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): Examples -------- - See :meth:`~zipline.pipeline.factors.Factor.demean` for an in-depth + See :meth:`~catalyst.pipeline.factors.Factor.demean` for an in-depth example of the semantics for ``mask`` and ``groupby``. See Also @@ -600,16 +600,16 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): ascending : bool, optional Whether to return sorted rank in ascending or descending order. Default is True. - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional A Filter representing assets to consider when computing ranks. If mask is supplied, ranks are computed ignoring any asset/date pairs for which `mask` produces a value of False. - groupby : zipline.pipeline.Classifier, optional + groupby : catalyst.pipeline.Classifier, optional A classifier defining partitions over which to perform ranking. Returns ------- - ranks : zipline.pipeline.factors.Rank + ranks : catalyst.pipeline.factors.Rank A new factor that will compute the ranking of the data produced by `self`. @@ -625,7 +625,7 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): See Also -------- :func:`scipy.stats.rankdata` - :class:`zipline.pipeline.factors.factor.Rank` + :class:`catalyst.pipeline.factors.factor.Rank` """ if groupby is NotSpecified: @@ -656,7 +656,7 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): Parameters ---------- - target : zipline.pipeline.Term with a numeric dtype + target : catalyst.pipeline.Term with a numeric dtype The term used to compute correlations against each column of data produced by `self`. This may be a Factor, a BoundColumn or a Slice. If `target` is two-dimensional, correlations are computed @@ -664,13 +664,13 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): correlation_length : int Length of the lookback window over which to compute each correlation coefficient. - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional A Filter describing which assets should have their correlation with the target slice computed each day. Returns ------- - correlations : zipline.pipeline.factors.RollingPearson + correlations : catalyst.pipeline.factors.RollingPearson A new Factor that will compute correlations between `target` and the columns of `self`. @@ -696,7 +696,7 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): See Also -------- :func:`scipy.stats.pearsonr` - :class:`zipline.pipeline.factors.RollingPearsonOfReturns` + :class:`catalyst.pipeline.factors.RollingPearsonOfReturns` :meth:`Factor.spearmanr` """ from .statistical import RollingPearson @@ -721,7 +721,7 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): Parameters ---------- - target : zipline.pipeline.Term with a numeric dtype + target : catalyst.pipeline.Term with a numeric dtype The term used to compute correlations against each column of data produced by `self`. This may be a Factor, a BoundColumn or a Slice. If `target` is two-dimensional, correlations are computed @@ -729,13 +729,13 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): correlation_length : int Length of the lookback window over which to compute each correlation coefficient. - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional A Filter describing which assets should have their correlation with the target slice computed each day. Returns ------- - correlations : zipline.pipeline.factors.RollingSpearman + correlations : catalyst.pipeline.factors.RollingSpearman A new Factor that will compute correlations between `target` and the columns of `self`. @@ -761,7 +761,7 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): See Also -------- :func:`scipy.stats.spearmanr` - :class:`zipline.pipeline.factors.RollingSpearmanOfReturns` + :class:`catalyst.pipeline.factors.RollingSpearmanOfReturns` :meth:`Factor.pearsonr` """ from .statistical import RollingSpearman @@ -786,20 +786,20 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): Parameters ---------- - target : zipline.pipeline.Term with a numeric dtype + target : catalyst.pipeline.Term with a numeric dtype The term to use as the predictor/independent variable in each regression. This may be a Factor, a BoundColumn or a Slice. If `target` is two-dimensional, regressions are computed asset-wise. regression_length : int Length of the lookback window over which to compute each regression. - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional A Filter describing which assets should be regressed with the target slice each day. Returns ------- - regressions : zipline.pipeline.factors.RollingLinearRegression + regressions : catalyst.pipeline.factors.RollingLinearRegression A new Factor that will compute linear regressions of `target` against the columns of `self`. @@ -824,7 +824,7 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): See Also -------- :func:`scipy.stats.linregress` - :class:`zipline.pipeline.factors.RollingLinearRegressionOfReturns` + :class:`catalyst.pipeline.factors.RollingLinearRegressionOfReturns` """ from .statistical import RollingLinearRegression return RollingLinearRegression( @@ -871,14 +871,14 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): Entries with values at or above this percentile will be replaced with the (len(inp) * max_percentile)th lowest value. If high values should not be clipped, use 1. - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional A Filter defining values to ignore when winsorizing. - groupby : zipline.pipeline.Classifier, optional + groupby : catalyst.pipeline.Classifier, optional A classifier defining partitions over which to winsorize. Returns ------- - winsorized : zipline.pipeline.Factor + winsorized : catalyst.pipeline.Factor A Factor producing a winsorized version of self. Examples @@ -950,12 +950,12 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): ---------- bins : int Number of bins labels to compute. - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional Mask of values to ignore when computing quantiles. Returns ------- - quantiles : zipline.pipeline.classifiers.Quantiles + quantiles : catalyst.pipeline.classifiers.Quantiles A Classifier producing integer labels ranging from 0 to (bins - 1). """ if mask is NotSpecified: @@ -976,12 +976,12 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): Parameters ---------- - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional Mask of values to ignore when computing quartiles. Returns ------- - quartiles : zipline.pipeline.classifiers.Quantiles + quartiles : catalyst.pipeline.classifiers.Quantiles A Classifier producing integer labels ranging from 0 to 3. """ return self.quantiles(bins=4, mask=mask) @@ -1000,12 +1000,12 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): Parameters ---------- - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional Mask of values to ignore when computing quintiles. Returns ------- - quintiles : zipline.pipeline.classifiers.Quantiles + quintiles : catalyst.pipeline.classifiers.Quantiles A Classifier producing integer labels ranging from 0 to 4. """ return self.quantiles(bins=5, mask=mask) @@ -1024,12 +1024,12 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): Parameters ---------- - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional Mask of values to ignore when computing deciles. Returns ------- - deciles : zipline.pipeline.classifiers.Quantiles + deciles : catalyst.pipeline.classifiers.Quantiles A Classifier producing integer labels ranging from 0 to 9. """ return self.quantiles(bins=10, mask=mask) @@ -1045,16 +1045,16 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): ---------- N : int Number of assets passing the returned filter each day. - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional A Filter representing assets to consider when computing ranks. If mask is supplied, top values are computed ignoring any asset/date pairs for which `mask` produces a value of False. - groupby : zipline.pipeline.Classifier, optional + groupby : catalyst.pipeline.Classifier, optional A classifier defining partitions over which to perform ranking. Returns ------- - filter : zipline.pipeline.filters.Filter + filter : catalyst.pipeline.filters.Filter """ return self.rank(ascending=False, mask=mask, groupby=groupby) <= N @@ -1069,16 +1069,16 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): ---------- N : int Number of assets passing the returned filter each day. - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional A Filter representing assets to consider when computing ranks. If mask is supplied, bottom values are computed ignoring any asset/date pairs for which `mask` produces a value of False. - groupby : zipline.pipeline.Classifier, optional + groupby : catalyst.pipeline.Classifier, optional A classifier defining partitions over which to perform ranking. Returns ------- - filter : zipline.pipeline.Filter + filter : catalyst.pipeline.Filter """ return self.rank(ascending=True, mask=mask, groupby=groupby) <= N @@ -1097,7 +1097,7 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): Return True for assets falling above this percentile in the data. max_percentile : float [0.0, 100.0] Return True for assets falling below this percentile in the data. - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional A Filter representing assets to consider when percentile calculating thresholds. If mask is supplied, percentile cutoffs are computed each day using only assets for which ``mask`` returns @@ -1106,12 +1106,12 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): Returns ------- - out : zipline.pipeline.filters.PercentileFilter + out : catalyst.pipeline.filters.PercentileFilter A new filter that will compute the specified percentile-range mask. See Also -------- - zipline.pipeline.filters.filter.PercentileFilter + catalyst.pipeline.filters.filter.PercentileFilter """ return PercentileFilter( self, @@ -1129,7 +1129,7 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): Returns ------- - filter : zipline.pipeline.filters.Filter + filter : catalyst.pipeline.filters.Filter """ if self.dtype == float64_dtype: # Using isnan is more efficient when possible because we can fold @@ -1154,7 +1154,7 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): Returns ------- - nanfilter : zipline.pipeline.filters.Filter + nanfilter : catalyst.pipeline.filters.Filter """ return self != self @@ -1165,7 +1165,7 @@ class Factor(RestrictedDTypeMixin, ComputableTerm): Returns ------- - nanfilter : zipline.pipeline.filters.Filter + nanfilter : catalyst.pipeline.filters.Filter """ return ~self.isnan() @@ -1220,11 +1220,11 @@ class GroupedRowTransform(Factor): ---------- transform : function[ndarray[ndim=1] -> ndarray[ndim=1]] Function to apply over each row group. - factor : zipline.pipeline.Factor + factor : catalyst.pipeline.Factor The factor providing baseline data to transform. - mask : zipline.pipeline.Filter + mask : catalyst.pipeline.Filter Mask of entries to ignore when calculating transforms. - groupby : zipline.pipeline.Classifier + groupby : catalyst.pipeline.Classifier Classifier partitioning ``factor`` into groups to use when calculating means. transform_args : tuple[hashable] @@ -1238,9 +1238,9 @@ class GroupedRowTransform(Factor): See Also -------- - zipline.pipeline.factors.Factor.zscore - zipline.pipeline.factors.Factor.demean - zipline.pipeline.factors.Factor.rank + catalyst.pipeline.factors.Factor.zscore + catalyst.pipeline.factors.Factor.demean + catalyst.pipeline.factors.Factor.rank """ window_length = 0 @@ -1331,7 +1331,7 @@ class Rank(SingleInputMixin, Factor): Parameters ---------- - factor : zipline.pipeline.factors.Factor + factor : catalyst.pipeline.factors.Factor The factor on which to compute ranks. method : str, {'average', 'min', 'max', 'dense', 'ordinal'} The method used to assign ranks to tied elements. See @@ -1427,7 +1427,7 @@ class CustomFactor(PositiveWindowLengthMixin, CustomTermMixin, Factor): Number of rows to pass for each input. If this argument is not passed to the CustomFactor constructor, we look for a class-level attribute named `window_length`. - mask : zipline.pipeline.Filter, optional + mask : catalyst.pipeline.Filter, optional A Filter describing the assets on which we should compute each day. Each call to ``CustomFactor.compute`` will only receive assets for which ``mask`` produced True on the day for which compute is being diff --git a/zipline/pipeline/filters/__init__.py b/catalyst/pipeline/filters/__init__.py similarity index 100% rename from zipline/pipeline/filters/__init__.py rename to catalyst/pipeline/filters/__init__.py diff --git a/zipline/pipeline/filters/filter.py b/catalyst/pipeline/filters/filter.py similarity index 94% rename from zipline/pipeline/filters/filter.py rename to catalyst/pipeline/filters/filter.py index be1959f9..aaa9170b 100644 --- a/zipline/pipeline/filters/filter.py +++ b/catalyst/pipeline/filters/filter.py @@ -10,20 +10,20 @@ from numpy import ( nanpercentile, ) -from zipline.errors import ( +from catalyst.errors import ( BadPercentileBounds, NonExistentAssetInTimeFrame, UnsupportedDataType, ) -from zipline.lib.labelarray import LabelArray -from zipline.lib.rank import is_missing -from zipline.pipeline.expression import ( +from catalyst.lib.labelarray import LabelArray +from catalyst.lib.rank import is_missing +from catalyst.pipeline.expression import ( BadBinaryOperator, FILTER_BINOPS, method_name_for_op, NumericalExpression, ) -from zipline.pipeline.mixins import ( +from catalyst.pipeline.mixins import ( AliasedMixin, CustomTermMixin, DownsampledMixin, @@ -32,10 +32,10 @@ from zipline.pipeline.mixins import ( RestrictedDTypeMixin, SingleInputMixin, ) -from zipline.pipeline.term import ComputableTerm, Term -from zipline.utils.input_validation import expect_types -from zipline.utils.memoize import classlazyval -from zipline.utils.numpy_utils import bool_dtype, repeat_first_axis +from catalyst.pipeline.term import ComputableTerm, Term +from catalyst.utils.input_validation import expect_types +from catalyst.utils.memoize import classlazyval +from catalyst.utils.numpy_utils import bool_dtype, repeat_first_axis def concat_tuples(*tuples): @@ -130,18 +130,18 @@ class Filter(RestrictedDTypeMixin, ComputableTerm): or exclude for some particular purpose. Many Pipeline API functions accept a ``mask`` argument, which can be supplied a Filter indicating that only values passing the Filter should be considered when performing the - requested computation. For example, :meth:`zipline.pipeline.Factor.top` + requested computation. For example, :meth:`catalyst.pipeline.Factor.top` accepts a mask indicating that ranks should be computed only on assets that passed the specified Filter. The most common way to construct a Filter is via one of the comparison operators (``<``, ``<=``, ``!=``, ``eq``, ``>``, ``>=``) of - :class:`~zipline.pipeline.Factor`. For example, a natural way to construct + :class:`~catalyst.pipeline.Factor`. For example, a natural way to construct a Filter for stocks with a 10-day VWAP less than $20.0 is to first construct a Factor computing 10-day VWAP and compare it to the scalar value 20.0:: - >>> from zipline.pipeline.factors import VWAP + >>> from catalyst.pipeline.factors import VWAP >>> vwap_10 = VWAP(window_length=10) >>> vwaps_under_20 = (vwap_10 <= 20) @@ -247,7 +247,7 @@ class NullFilter(SingleInputMixin, Filter): Parameters ---------- - factor : zipline.pipeline.Term + factor : catalyst.pipeline.Term The factor to compare against its missing_value. """ window_length = 0 @@ -271,7 +271,7 @@ class NotNullFilter(SingleInputMixin, Filter): Parameters ---------- - factor : zipline.pipeline.Term + factor : catalyst.pipeline.Term The factor to compare against its missing_value. """ window_length = 0 @@ -295,7 +295,7 @@ class PercentileFilter(SingleInputMixin, Filter): Parameters ---------- - factor : zipline.pipeline.factor.Factor + factor : catalyst.pipeline.factor.Factor The factor over which to compute percentile bounds. min_percentile : float [0.0, 1.0] The minimum percentile rank of an asset that will pass the filter. @@ -410,12 +410,12 @@ class CustomFilter(PositiveWindowLengthMixin, CustomTermMixin, Filter): Raw data arrays corresponding to the values of `self.inputs`. See the documentation for - :class:`~zipline.pipeline.factors.factor.CustomFactor` for more details on + :class:`~catalyst.pipeline.factors.factor.CustomFactor` for more details on implementing a custom ``compute`` method. See Also -------- - zipline.pipeline.factors.factor.CustomFactor + catalyst.pipeline.factors.factor.CustomFactor """ @@ -425,7 +425,7 @@ class ArrayPredicate(SingleInputMixin, Filter): Parameters ---------- - term : zipline.pipeline.Term + term : catalyst.pipeline.Term Term producing the array over which the predicate will be computed. op : function(ndarray, *args) -> ndarray[bool] Function to apply to the result of `term`. diff --git a/zipline/pipeline/filters/smoothing.py b/catalyst/pipeline/filters/smoothing.py similarity index 100% rename from zipline/pipeline/filters/smoothing.py rename to catalyst/pipeline/filters/smoothing.py diff --git a/zipline/pipeline/graph.py b/catalyst/pipeline/graph.py similarity index 96% rename from zipline/pipeline/graph.py rename to catalyst/pipeline/graph.py index 8feefa47..47e349c1 100644 --- a/zipline/pipeline/graph.py +++ b/catalyst/pipeline/graph.py @@ -6,8 +6,8 @@ from networkx import ( topological_sort, ) from six import iteritems, itervalues -from zipline.utils.memoize import lazyval -from zipline.pipeline.visualize import display_graph +from catalyst.utils.memoize import lazyval +from catalyst.pipeline.visualize import display_graph from .term import LoadableTerm @@ -158,7 +158,7 @@ class TermGraph(object): ----- This should only be used to build the initial workspace, after that we should use: - :meth:`~zipline.pipeline.graph.TermGraph.decref_dependencies` + :meth:`~catalyst.pipeline.graph.TermGraph.decref_dependencies` """ # Edges are tuple of (from, to). for parent, _ in self.graph.in_edges([term]): @@ -175,7 +175,7 @@ class TermGraph(object): Parameters ---------- - term : zipline.pipeline.Term + term : catalyst.pipeline.Term The term whose parents should be decref'ed. refcounts : dict[Term -> int] Dictionary of refcounts. @@ -344,9 +344,9 @@ class ExecutionPlan(TermGraph): See Also -------- - zipline.pipeline.graph.TermGraph.offset - zipline.pipeline.engine.SimplePipelineEngine._inputs_for_term - zipline.pipeline.engine.SimplePipelineEngine._mask_and_dates_for_term + catalyst.pipeline.graph.TermGraph.offset + catalyst.pipeline.engine.SimplePipelineEngine._inputs_for_term + catalyst.pipeline.engine.SimplePipelineEngine._mask_and_dates_for_term """ extra = self.extra_rows return { @@ -389,8 +389,8 @@ class ExecutionPlan(TermGraph): See Also -------- - zipline.pipeline.graph.TermGraph.offset - zipline.pipeline.term.Term.dependencies + catalyst.pipeline.graph.TermGraph.offset + catalyst.pipeline.term.Term.dependencies """ return { term: attrs['extra_rows'] diff --git a/zipline/pipeline/loaders/__init__.py b/catalyst/pipeline/loaders/__init__.py similarity index 100% rename from zipline/pipeline/loaders/__init__.py rename to catalyst/pipeline/loaders/__init__.py diff --git a/zipline/pipeline/loaders/base.py b/catalyst/pipeline/loaders/base.py similarity index 83% rename from zipline/pipeline/loaders/base.py rename to catalyst/pipeline/loaders/base.py index da11a05f..d5b5ff2f 100644 --- a/zipline/pipeline/loaders/base.py +++ b/catalyst/pipeline/loaders/base.py @@ -12,7 +12,7 @@ from six import with_metaclass class PipelineLoader(with_metaclass(ABCMeta)): """ - ABC for classes that can load data for use with zipline.pipeline APIs. + ABC for classes that can load data for use with catalyst.pipeline APIs. TODO: DOCUMENT THIS MORE! """ diff --git a/zipline/pipeline/loaders/blaze/__init__.py b/catalyst/pipeline/loaders/blaze/__init__.py similarity index 100% rename from zipline/pipeline/loaders/blaze/__init__.py rename to catalyst/pipeline/loaders/blaze/__init__.py diff --git a/zipline/pipeline/loaders/blaze/core.py b/catalyst/pipeline/loaders/blaze/core.py similarity index 98% rename from zipline/pipeline/loaders/blaze/core.py rename to catalyst/pipeline/loaders/blaze/core.py index 6ba1df0f..72862a83 100644 --- a/zipline/pipeline/loaders/blaze/core.py +++ b/catalyst/pipeline/loaders/blaze/core.py @@ -100,7 +100,7 @@ Conversion from Blaze to the Pipeline API Now that our data is structured in the way that the blaze loader expects, we are ready to convert our blaze expressions into Pipeline API objects. -This module (zipline.pipeline.loaders.blaze) exports a function called +This module (catalyst.pipeline.loaders.blaze) exports a function called ``from_blaze`` which performs this mapping. The expression that you are trying to convert must either be tabular or @@ -167,30 +167,30 @@ from toolz import ( ) import toolz.curried.operator as op -from zipline.pipeline.common import ( +from catalyst.pipeline.common import ( AD_FIELD_NAME, SID_FIELD_NAME, TS_FIELD_NAME ) -from zipline.pipeline.data.dataset import DataSet, Column -from zipline.pipeline.loaders.utils import ( +from catalyst.pipeline.data.dataset import DataSet, Column +from catalyst.pipeline.loaders.utils import ( check_data_query_args, last_in_date_group, normalize_data_query_bounds, normalize_timestamp_to_query_time, ffill_across_cols ) -from zipline.pipeline.sentinels import NotSpecified -from zipline.lib.adjusted_array import AdjustedArray, can_represent_dtype -from zipline.lib.adjustment import make_adjustment_from_indices, OVERWRITE -from zipline.utils.input_validation import ( +from catalyst.pipeline.sentinels import NotSpecified +from catalyst.lib.adjusted_array import AdjustedArray, can_represent_dtype +from catalyst.lib.adjustment import make_adjustment_from_indices, OVERWRITE +from catalyst.utils.input_validation import ( expect_element, ensure_timezone, optionally, ) -from zipline.utils.numpy_utils import bool_dtype -from zipline.utils.pool import SequentialPool -from zipline.utils.preprocess import preprocess +from catalyst.utils.numpy_utils import bool_dtype +from catalyst.utils.pool import SequentialPool +from catalyst.utils.preprocess import preprocess valid_deltas_node_types = ( @@ -957,7 +957,7 @@ class BlazeLoader(dict): See Also -------- - :class:`zipline.utils.pool.SequentialPool` + :class:`catalyst.utils.pool.SequentialPool` :class:`multiprocessing.Pool` """ @preprocess(data_query_tz=optionally(ensure_timezone)) diff --git a/zipline/pipeline/loaders/blaze/estimates.py b/catalyst/pipeline/loaders/blaze/estimates.py similarity index 94% rename from zipline/pipeline/loaders/blaze/estimates.py rename to catalyst/pipeline/loaders/blaze/estimates.py index bf046a9b..506954e6 100644 --- a/zipline/pipeline/loaders/blaze/estimates.py +++ b/catalyst/pipeline/loaders/blaze/estimates.py @@ -3,27 +3,27 @@ from datashape import istabular from .core import ( bind_expression_to_resources, ) -from zipline.pipeline.common import ( +from catalyst.pipeline.common import ( EVENT_DATE_FIELD_NAME, FISCAL_QUARTER_FIELD_NAME, FISCAL_YEAR_FIELD_NAME, SID_FIELD_NAME, TS_FIELD_NAME, ) -from zipline.pipeline.loaders.base import PipelineLoader -from zipline.pipeline.loaders.blaze.utils import load_raw_data -from zipline.pipeline.loaders.earnings_estimates import ( +from catalyst.pipeline.loaders.base import PipelineLoader +from catalyst.pipeline.loaders.blaze.utils import load_raw_data +from catalyst.pipeline.loaders.earnings_estimates import ( NextEarningsEstimatesLoader, PreviousEarningsEstimatesLoader, required_estimates_fields, metadata_columns, PreviousSplitAdjustedEarningsEstimatesLoader, NextSplitAdjustedEarningsEstimatesLoader) -from zipline.pipeline.loaders.utils import ( +from catalyst.pipeline.loaders.utils import ( check_data_query_args, ) -from zipline.utils.input_validation import ensure_timezone, optionally -from zipline.utils.preprocess import preprocess +from catalyst.utils.input_validation import ensure_timezone, optionally +from catalyst.utils.preprocess import preprocess class BlazeEstimatesLoader(PipelineLoader): diff --git a/zipline/pipeline/loaders/blaze/events.py b/catalyst/pipeline/loaders/blaze/events.py similarity index 89% rename from zipline/pipeline/loaders/blaze/events.py rename to catalyst/pipeline/loaders/blaze/events.py index cc778d5c..b37136b3 100644 --- a/zipline/pipeline/loaders/blaze/events.py +++ b/catalyst/pipeline/loaders/blaze/events.py @@ -3,19 +3,19 @@ from datashape import istabular from .core import ( bind_expression_to_resources, ) -from zipline.pipeline.common import SID_FIELD_NAME, TS_FIELD_NAME, \ +from catalyst.pipeline.common import SID_FIELD_NAME, TS_FIELD_NAME, \ EVENT_DATE_FIELD_NAME -from zipline.pipeline.loaders.base import PipelineLoader -from zipline.pipeline.loaders.blaze.utils import load_raw_data -from zipline.pipeline.loaders.events import ( +from catalyst.pipeline.loaders.base import PipelineLoader +from catalyst.pipeline.loaders.blaze.utils import load_raw_data +from catalyst.pipeline.loaders.events import ( EventsLoader, required_event_fields, ) -from zipline.pipeline.loaders.utils import ( +from catalyst.pipeline.loaders.utils import ( check_data_query_args, ) -from zipline.utils.input_validation import ensure_timezone, optionally -from zipline.utils.preprocess import preprocess +from catalyst.utils.input_validation import ensure_timezone, optionally +from catalyst.utils.preprocess import preprocess class BlazeEventsLoader(PipelineLoader): diff --git a/zipline/pipeline/loaders/blaze/utils.py b/catalyst/pipeline/loaders/blaze/utils.py similarity index 91% rename from zipline/pipeline/loaders/blaze/utils.py rename to catalyst/pipeline/loaders/blaze/utils.py index ab186c82..b5e2f202 100644 --- a/zipline/pipeline/loaders/blaze/utils.py +++ b/catalyst/pipeline/loaders/blaze/utils.py @@ -1,6 +1,6 @@ -from zipline.pipeline.common import SID_FIELD_NAME, TS_FIELD_NAME -from zipline.pipeline.loaders.blaze.core import ffill_query_in_range -from zipline.pipeline.loaders.utils import ( +from catalyst.pipeline.common import SID_FIELD_NAME, TS_FIELD_NAME +from catalyst.pipeline.loaders.blaze.core import ffill_query_in_range +from catalyst.pipeline.loaders.utils import ( normalize_data_query_bounds, normalize_timestamp_to_query_time, ) diff --git a/zipline/pipeline/loaders/crypto_pricing_loader.py b/catalyst/pipeline/loaders/crypto_pricing_loader.py similarity index 95% rename from zipline/pipeline/loaders/crypto_pricing_loader.py rename to catalyst/pipeline/loaders/crypto_pricing_loader.py index 4a019543..eb21e057 100644 --- a/zipline/pipeline/loaders/crypto_pricing_loader.py +++ b/catalyst/pipeline/loaders/crypto_pricing_loader.py @@ -16,13 +16,13 @@ from numpy import ( uint32, ) -from zipline.data.us_equity_pricing import ( +from catalyst.data.us_equity_pricing import ( BcolzDailyBarReader, SQLiteAdjustmentReader, ) -from zipline.lib.adjusted_array import AdjustedArray -from zipline.errors import NoFurtherDataError -from zipline.utils.calendars import get_calendar +from catalyst.lib.adjusted_array import AdjustedArray +from catalyst.errors import NoFurtherDataError +from catalyst.utils.calendars import get_calendar from .base import PipelineLoader diff --git a/zipline/pipeline/loaders/earnings_estimates.py b/catalyst/pipeline/loaders/earnings_estimates.py similarity index 99% rename from zipline/pipeline/loaders/earnings_estimates.py rename to catalyst/pipeline/loaders/earnings_estimates.py index 52632133..afe8d874 100644 --- a/zipline/pipeline/loaders/earnings_estimates.py +++ b/catalyst/pipeline/loaders/earnings_estimates.py @@ -5,8 +5,8 @@ import pandas as pd from six import viewvalues from toolz import groupby -from zipline.lib.adjusted_array import AdjustedArray -from zipline.lib.adjustment import ( +from catalyst.lib.adjusted_array import AdjustedArray +from catalyst.lib.adjustment import ( Datetime641DArrayOverwrite, Datetime64Overwrite, Float641DArrayOverwrite, @@ -14,16 +14,16 @@ from zipline.lib.adjustment import ( Float64Overwrite, ) -from zipline.pipeline.common import ( +from catalyst.pipeline.common import ( EVENT_DATE_FIELD_NAME, FISCAL_QUARTER_FIELD_NAME, FISCAL_YEAR_FIELD_NAME, SID_FIELD_NAME, TS_FIELD_NAME, ) -from zipline.pipeline.loaders.base import PipelineLoader -from zipline.utils.numpy_utils import datetime64ns_dtype, float64_dtype -from zipline.pipeline.loaders.utils import ( +from catalyst.pipeline.loaders.base import PipelineLoader +from catalyst.utils.numpy_utils import datetime64ns_dtype, float64_dtype +from catalyst.pipeline.loaders.utils import ( ffill_across_cols, last_in_date_group ) diff --git a/zipline/pipeline/loaders/equity_pricing_loader.py b/catalyst/pipeline/loaders/equity_pricing_loader.py similarity index 95% rename from zipline/pipeline/loaders/equity_pricing_loader.py rename to catalyst/pipeline/loaders/equity_pricing_loader.py index ffafd021..d3457364 100644 --- a/zipline/pipeline/loaders/equity_pricing_loader.py +++ b/catalyst/pipeline/loaders/equity_pricing_loader.py @@ -16,13 +16,13 @@ from numpy import ( uint32, ) -from zipline.data.us_equity_pricing import ( +from catalyst.data.us_equity_pricing import ( BcolzDailyBarReader, SQLiteAdjustmentReader, ) -from zipline.lib.adjusted_array import AdjustedArray -from zipline.errors import NoFurtherDataError -from zipline.utils.calendars import get_calendar +from catalyst.lib.adjusted_array import AdjustedArray +from catalyst.errors import NoFurtherDataError +from catalyst.utils.calendars import get_calendar from .base import PipelineLoader diff --git a/zipline/pipeline/loaders/events.py b/catalyst/pipeline/loaders/events.py similarity index 98% rename from zipline/pipeline/loaders/events.py rename to catalyst/pipeline/loaders/events.py index d87a2ffd..e5f3f241 100644 --- a/zipline/pipeline/loaders/events.py +++ b/catalyst/pipeline/loaders/events.py @@ -5,13 +5,13 @@ from six import viewvalues from toolz import groupby, merge from .base import PipelineLoader -from zipline.pipeline.common import ( +from catalyst.pipeline.common import ( EVENT_DATE_FIELD_NAME, SID_FIELD_NAME, TS_FIELD_NAME, ) -from zipline.pipeline.loaders.frame import DataFrameLoader -from zipline.pipeline.loaders.utils import ( +from catalyst.pipeline.loaders.frame import DataFrameLoader +from catalyst.pipeline.loaders.utils import ( next_event_indexer, previous_event_indexer, ) diff --git a/zipline/pipeline/loaders/frame.py b/catalyst/pipeline/loaders/frame.py similarity index 95% rename from zipline/pipeline/loaders/frame.py rename to catalyst/pipeline/loaders/frame.py index d4323916..9f4bfec5 100644 --- a/zipline/pipeline/loaders/frame.py +++ b/catalyst/pipeline/loaders/frame.py @@ -13,9 +13,9 @@ from pandas import ( Index, Int64Index, ) -from zipline.lib.adjusted_array import AdjustedArray -from zipline.lib.adjustment import make_adjustment_from_labels -from zipline.utils.numpy_utils import as_column +from catalyst.lib.adjusted_array import AdjustedArray +from catalyst.lib.adjustment import make_adjustment_from_labels +from catalyst.utils.numpy_utils import as_column from .base import PipelineLoader ADJUSTMENT_COLUMNS = Index([ @@ -37,7 +37,7 @@ class DataFrameLoader(PipelineLoader): Parameters ---------- - column : zipline.pipeline.data.BoundColumn + column : catalyst.pipeline.data.BoundColumn The column whose data is loadable by this loader. baseline : pandas.DataFrame A DataFrame with index of type DatetimeIndex and columns of type @@ -50,7 +50,7 @@ class DataFrameLoader(PipelineLoader): A DataFrame with the following columns: sid : int value : any - kind : int (zipline.pipeline.loaders.frame.ADJUSTMENT_TYPES) + kind : int (catalyst.pipeline.loaders.frame.ADJUSTMENT_TYPES) start_date : datetime64 (can be NaT) end_date : datetime64 (must be set) apply_date : datetime64 (must be set) diff --git a/zipline/pipeline/loaders/synthetic.py b/catalyst/pipeline/loaders/synthetic.py similarity index 99% rename from zipline/pipeline/loaders/synthetic.py rename to catalyst/pipeline/loaders/synthetic.py index d9990c7d..8559f804 100644 --- a/zipline/pipeline/loaders/synthetic.py +++ b/catalyst/pipeline/loaders/synthetic.py @@ -17,12 +17,12 @@ from sqlite3 import connect as sqlite3_connect from .base import PipelineLoader from .frame import DataFrameLoader -from zipline.data.us_equity_pricing import ( +from catalyst.data.us_equity_pricing import ( SQLiteAdjustmentReader, SQLiteAdjustmentWriter, US_EQUITY_PRICING_BCOLZ_COLUMNS, ) -from zipline.utils.numpy_utils import ( +from catalyst.utils.numpy_utils import ( bool_dtype, datetime64ns_dtype, float64_dtype, diff --git a/zipline/pipeline/loaders/testing.py b/catalyst/pipeline/loaders/testing.py similarity index 91% rename from zipline/pipeline/loaders/testing.py rename to catalyst/pipeline/loaders/testing.py index cd4cd62f..c59cf3d6 100644 --- a/zipline/pipeline/loaders/testing.py +++ b/catalyst/pipeline/loaders/testing.py @@ -1,5 +1,5 @@ """ -Loaders for zipline.pipeline.data.testing datasets. +Loaders for catalyst.pipeline.data.testing datasets. """ from .synthetic import EyeLoader, SeededRandomLoader from ..data.testing import TestingDataSet diff --git a/zipline/pipeline/loaders/utils.py b/catalyst/pipeline/loaders/utils.py similarity index 98% rename from zipline/pipeline/loaders/utils.py rename to catalyst/pipeline/loaders/utils.py index 3033cfdc..f6ab10e2 100644 --- a/zipline/pipeline/loaders/utils.py +++ b/catalyst/pipeline/loaders/utils.py @@ -2,9 +2,9 @@ import datetime import numpy as np import pandas as pd -from zipline.pipeline.common import TS_FIELD_NAME, SID_FIELD_NAME -from zipline.utils.numpy_utils import categorical_dtype -from zipline.utils.pandas_utils import mask_between_time +from catalyst.pipeline.common import TS_FIELD_NAME, SID_FIELD_NAME +from catalyst.utils.numpy_utils import categorical_dtype +from catalyst.utils.pandas_utils import mask_between_time def is_sorted_ascending(a): diff --git a/zipline/pipeline/mixins.py b/catalyst/pipeline/mixins.py similarity index 98% rename from zipline/pipeline/mixins.py rename to catalyst/pipeline/mixins.py index 6271abcc..905946fa 100644 --- a/zipline/pipeline/mixins.py +++ b/catalyst/pipeline/mixins.py @@ -11,19 +11,19 @@ from numpy import ( ) from pandas import NaT as pd_NaT -from zipline.errors import ( +from catalyst.errors import ( WindowLengthNotPositive, UnsupportedDataType, NoFurtherDataError, ) -from zipline.utils.control_flow import nullctx -from zipline.utils.input_validation import expect_types -from zipline.utils.sharedoc import ( +from catalyst.utils.control_flow import nullctx +from catalyst.utils.input_validation import expect_types +from catalyst.utils.sharedoc import ( format_docstring, PIPELINE_ALIAS_NAME_DOC, PIPELINE_DOWNSAMPLING_FREQUENCY_DOC, ) -from zipline.utils.pandas_utils import nearest_unequal_elements +from catalyst.utils.pandas_utils import nearest_unequal_elements from .downsample_helpers import ( diff --git a/zipline/pipeline/pipeline.py b/catalyst/pipeline/pipeline.py similarity index 94% rename from zipline/pipeline/pipeline.py rename to catalyst/pipeline/pipeline.py index e7c6b4de..a00d278b 100644 --- a/zipline/pipeline/pipeline.py +++ b/catalyst/pipeline/pipeline.py @@ -1,6 +1,6 @@ -from zipline.errors import UnsupportedPipelineOutput -from zipline.utils.input_validation import ( +from catalyst.errors import UnsupportedPipelineOutput +from catalyst.utils.input_validation import ( expect_element, expect_types, optional, @@ -30,7 +30,7 @@ class Pipeline(object): ---------- columns : dict, optional Initial columns. - screen : zipline.pipeline.term.Filter, optional + screen : catalyst.pipeline.term.Filter, optional Initial screen. """ __slots__ = ('_columns', '_screen', '__weakref__') @@ -81,7 +81,7 @@ class Pipeline(object): Parameters ---------- - column : zipline.pipeline.Term + column : catalyst.pipeline.Term A Filter, Factor, or Classifier to add to the pipeline. name : str Name of the column to add. @@ -123,7 +123,7 @@ class Pipeline(object): Returns ------- - removed : zipline.pipeline.term.Term + removed : catalyst.pipeline.term.Term The removed term. """ return self.columns.pop(name) @@ -135,7 +135,7 @@ class Pipeline(object): Parameters ---------- - filter : zipline.pipeline.Filter + filter : catalyst.pipeline.Filter The filter to apply as a screen. overwrite : bool Whether to overwrite any existing screen. If overwrite is False @@ -165,7 +165,7 @@ class Pipeline(object): ---------- screen_name : str Name to supply for self.screen. - default_screen : zipline.pipeline.term.Term + default_screen : catalyst.pipeline.term.Term Term to use as a screen if self.screen is None. all_dates : pd.DatetimeIndex A calendar of dates to use to calculate starts and ends for each @@ -190,7 +190,7 @@ class Pipeline(object): ---------- screen_name : str Name to supply for self.screen. - default_screen : zipline.pipeline.term.Term + default_screen : catalyst.pipeline.term.Term Term to use as a screen if self.screen is None. """ return TermGraph( diff --git a/zipline/pipeline/sentinels.py b/catalyst/pipeline/sentinels.py similarity index 76% rename from zipline/pipeline/sentinels.py rename to catalyst/pipeline/sentinels.py index b0c3a5cb..0a3ae0c5 100644 --- a/zipline/pipeline/sentinels.py +++ b/catalyst/pipeline/sentinels.py @@ -1,5 +1,5 @@ -from zipline.utils.sentinel import sentinel +from catalyst.utils.sentinel import sentinel NotSpecified = sentinel( diff --git a/zipline/pipeline/term.py b/catalyst/pipeline/term.py similarity index 97% rename from zipline/pipeline/term.py rename to catalyst/pipeline/term.py index 284f536d..0f2c9100 100644 --- a/zipline/pipeline/term.py +++ b/catalyst/pipeline/term.py @@ -14,8 +14,8 @@ from numpy import ( ) from six import with_metaclass -from zipline.assets import Asset -from zipline.errors import ( +from catalyst.assets import Asset +from catalyst.errors import ( DTypeNotSpecified, InvalidOutputName, NonExistentAssetInTimeFrame, @@ -27,17 +27,17 @@ from zipline.errors import ( UnsupportedDType, WindowLengthNotSpecified, ) -from zipline.lib.adjusted_array import can_represent_dtype -from zipline.lib.labelarray import LabelArray -from zipline.utils.input_validation import expect_types -from zipline.utils.memoize import lazyval -from zipline.utils.numpy_utils import ( +from catalyst.lib.adjusted_array import can_represent_dtype +from catalyst.lib.labelarray import LabelArray +from catalyst.utils.input_validation import expect_types +from catalyst.utils.memoize import lazyval +from catalyst.utils.numpy_utils import ( bool_dtype, categorical_dtype, datetime64ns_dtype, default_missing_value_for_dtype, ) -from zipline.utils.sharedoc import ( +from catalyst.utils.sharedoc import ( templated_docstring, PIPELINE_ALIAS_NAME_DOC, PIPELINE_DOWNSAMPLING_FREQUENCY_DOC, @@ -364,7 +364,7 @@ class AssetExists(Term): See Also -------- - zipline.assets.AssetFinder.lifetimes + catalyst.assets.AssetFinder.lifetimes """ dtype = bool_dtype dataset = None @@ -413,7 +413,7 @@ class LoadableTerm(Term): """ A Term that should be loaded from an external resource by a PipelineLoader. - This is the base class for :class:`zipline.pipeline.data.BoundColumn`. + This is the base class for :class:`catalyst.pipeline.data.BoundColumn`. """ windowed = False inputs = () @@ -427,8 +427,8 @@ class ComputableTerm(Term): """ A Term that should be computed from a tuple of inputs. - This is the base class for :class:`zipline.pipeline.Factor`, - :class:`zipline.pipeline.Filter`, and :class:`zipline.pipeline.Classifier`. + This is the base class for :class:`catalyst.pipeline.Factor`, + :class:`catalyst.pipeline.Filter`, and :class:`catalyst.pipeline.Classifier`. """ inputs = NotSpecified outputs = NotSpecified @@ -682,9 +682,9 @@ class Slice(ComputableTerm): Parameters ---------- - term : zipline.pipeline.term.Term + term : catalyst.pipeline.term.Term The term from which to extract a column of data. - asset : zipline.assets.Asset + asset : catalyst.assets.Asset The asset corresponding to the column of `term` to be extracted. Notes diff --git a/zipline/pipeline/visualize.py b/catalyst/pipeline/visualize.py similarity index 96% rename from zipline/pipeline/visualize.py rename to catalyst/pipeline/visualize.py index ee93817e..276ef7c6 100644 --- a/zipline/pipeline/visualize.py +++ b/catalyst/pipeline/visualize.py @@ -12,9 +12,9 @@ from subprocess import Popen, PIPE from networkx import topological_sort from six import iteritems -from zipline.pipeline.data import BoundColumn -from zipline.pipeline import Filter, Factor, Classifier, Term -from zipline.pipeline.term import AssetExists +from catalyst.pipeline.data import BoundColumn +from catalyst.pipeline import Filter, Factor, Classifier, Term +from catalyst.pipeline.term import AssetExists class NoIPython(Exception): @@ -87,7 +87,7 @@ def _render(g, out, format_, include_asset_exists=False): Parameters ---------- - g : zipline.pipeline.graph.TermGraph + g : catalyst.pipeline.graph.TermGraph Graph to render. out : file-like object format_ : str {'png', 'svg'} diff --git a/zipline/protocol.py b/catalyst/protocol.py similarity index 98% rename from zipline/protocol.py rename to catalyst/protocol.py index 665d5242..5061a7bb 100644 --- a/zipline/protocol.py +++ b/catalyst/protocol.py @@ -16,10 +16,10 @@ from warnings import warn import pandas as pd -from zipline.assets import Asset, Future -from zipline.utils.input_validation import expect_types +from catalyst.assets import Asset, Future +from catalyst.utils.input_validation import expect_types from .utils.enum import enum -from zipline._protocol import BarData # noqa +from catalyst._protocol import BarData # noqa # Datasource type should completely determine the other fields of a diff --git a/zipline/resources/market_data/SPY_benchmark.csv b/catalyst/resources/market_data/SPY_benchmark.csv similarity index 100% rename from zipline/resources/market_data/SPY_benchmark.csv rename to catalyst/resources/market_data/SPY_benchmark.csv diff --git a/zipline/resources/market_data/treasury_curves.csv b/catalyst/resources/market_data/treasury_curves.csv similarity index 100% rename from zipline/resources/market_data/treasury_curves.csv rename to catalyst/resources/market_data/treasury_curves.csv diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20120913/add b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20120913/add similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20120913/add rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20120913/add diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20120913/delete b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20120913/delete similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20120913/delete rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20120913/delete diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20120919/add b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20120919/add similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20120919/add rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20120919/add diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20120919/delete b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20120919/delete similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20120919/delete rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20120919/delete diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20121012/add b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20121012/add similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20121012/add rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20121012/add diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20121012/delete b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20121012/delete similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20121012/delete rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20121012/delete diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20130605/add b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20130605/add similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20130605/add rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20130605/add diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20130605/delete b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20130605/delete similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20130605/delete rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20130605/delete diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20130916/add b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20130916/add similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20130916/add rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20130916/add diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20130916/delete b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20130916/delete similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20130916/delete rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20130916/delete diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20131002/add b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20131002/add similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20131002/add rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20131002/add diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20131002/delete b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20131002/delete similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20131002/delete rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20131002/delete diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20131009/add b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20131009/add similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20131009/add rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20131009/add diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20131009/delete b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20131009/delete similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20131009/delete rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20131009/delete diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20131121/add b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20131121/add similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20131121/add rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20131121/add diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20131121/delete b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20131121/delete similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20131121/delete rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20131121/delete diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20131227/add b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20131227/add similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20131227/add rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20131227/add diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20131227/delete b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20131227/delete similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20131227/delete rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20131227/delete diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20140410/add b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20140410/add similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20140410/add rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20140410/add diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20140410/delete b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20140410/delete similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20140410/delete rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20140410/delete diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20140923/add b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20140923/add similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20140923/add rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20140923/add diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20140923/delete b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20140923/delete similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20140923/delete rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20140923/delete diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20141119/add b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20141119/add similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20141119/add rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20141119/add diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20141119/delete b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20141119/delete similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20141119/delete rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20141119/delete diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20141226/add b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20141226/add similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20141226/add rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20141226/add diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20141226/delete b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20141226/delete similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20141226/delete rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20141226/delete diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20150123/add b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20150123/add similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20150123/add rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20150123/add diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20150123/delete b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20150123/delete similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20150123/delete rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20150123/delete diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20160826/add b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20160826/add similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20160826/add rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20160826/add diff --git a/zipline/resources/security_lists/leveraged_etf_list/20020103/20160826/delete b/catalyst/resources/security_lists/leveraged_etf_list/20020103/20160826/delete similarity index 100% rename from zipline/resources/security_lists/leveraged_etf_list/20020103/20160826/delete rename to catalyst/resources/security_lists/leveraged_etf_list/20020103/20160826/delete diff --git a/zipline/sources/__init__.py b/catalyst/sources/__init__.py similarity index 100% rename from zipline/sources/__init__.py rename to catalyst/sources/__init__.py diff --git a/zipline/sources/benchmark_source.py b/catalyst/sources/benchmark_source.py similarity index 99% rename from zipline/sources/benchmark_source.py rename to catalyst/sources/benchmark_source.py index ec477665..05d5c601 100644 --- a/zipline/sources/benchmark_source.py +++ b/catalyst/sources/benchmark_source.py @@ -15,7 +15,7 @@ import pandas as pd -from zipline.errors import ( +from catalyst.errors import ( InvalidBenchmarkAsset, BenchmarkAssetNotAvailableTooEarly, BenchmarkAssetNotAvailableTooLate diff --git a/zipline/sources/requests_csv.py b/catalyst/sources/requests_csv.py similarity index 99% rename from zipline/sources/requests_csv.py rename to catalyst/sources/requests_csv.py index 633ad253..2c40a2ee 100644 --- a/zipline/sources/requests_csv.py +++ b/catalyst/sources/requests_csv.py @@ -12,16 +12,16 @@ import pytz import requests from six import StringIO, iteritems, with_metaclass -from zipline.errors import ( +from catalyst.errors import ( MultipleSymbolsFound, SymbolNotFound, ZiplineError ) -from zipline.protocol import ( +from catalyst.protocol import ( DATASOURCE_TYPE, Event ) -from zipline.assets import Equity +from catalyst.assets import Equity logger = Logger('Requests Source Logger') diff --git a/zipline/sources/test_source.py b/catalyst/sources/test_source.py similarity index 99% rename from zipline/sources/test_source.py rename to catalyst/sources/test_source.py index 3934dd49..673e2373 100644 --- a/zipline/sources/test_source.py +++ b/catalyst/sources/test_source.py @@ -25,11 +25,11 @@ import itertools from six.moves import range -from zipline.protocol import ( +from catalyst.protocol import ( Event, DATASOURCE_TYPE ) -from zipline.gens.utils import hash_args +from catalyst.gens.utils import hash_args def create_trade(sid, price, amount, datetime, source_id="test_factory"): diff --git a/zipline/test_algorithms.py b/catalyst/test_algorithms.py similarity index 95% rename from zipline/test_algorithms.py rename to catalyst/test_algorithms.py index e77d5fde..8b8b337c 100644 --- a/zipline/test_algorithms.py +++ b/catalyst/test_algorithms.py @@ -19,7 +19,7 @@ Algorithm Protocol =================== For a class to be passed as a trading algorithm to the -:py:class:`zipline.lines.SimulatedTrading` zipline it must follow an +:py:class:`catalyst.lines.SimulatedTrading` catalyst it must follow an implementation protocol. Examples of this algorithm protocol are provided below. @@ -32,7 +32,7 @@ The algorithm must expose methods: sids. List must have a length between 1 and 10. If None is returned the filter will block all events. - - handle_data: method that accepts a :py:class:`zipline.protocol.BarData` + - handle_data: method that accepts a :py:class:`catalyst.protocol.BarData` of the current state of the simulation universe. An example data object: .. This outputs the table as an HTML table but for some reason there @@ -78,25 +78,25 @@ from nose.tools import assert_raises from six.moves import range from six import itervalues -from zipline.algorithm import TradingAlgorithm -from zipline.api import ( +from catalyst.algorithm import TradingAlgorithm +from catalyst.api import ( FixedSlippage, order, set_slippage, record, sid, ) -from zipline.errors import UnsupportedOrderParameters -from zipline.assets import Future, Equity -from zipline.finance.commission import PerShare, PerTrade -from zipline.finance.execution import ( +from catalyst.errors import UnsupportedOrderParameters +from catalyst.assets import Future, Equity +from catalyst.finance.commission import PerShare, PerTrade +from catalyst.finance.execution import ( LimitOrder, MarketOrder, StopLimitOrder, StopOrder, ) -from zipline.finance.controls import AssetDateBounds -from zipline.utils.math_utils import round_if_near_integer +from catalyst.finance.controls import AssetDateBounds +from catalyst.utils.math_utils import round_if_near_integer class TestAlgorithm(TradingAlgorithm): @@ -721,7 +721,7 @@ class InvalidOrderAlgorithm(TradingAlgorithm): self.asset = self.sid(kwargs.pop('sids')[0]) def handle_data(self, data): - from zipline.api import ( + from catalyst.api import ( order_percent, order_target, order_target_percent, @@ -828,7 +828,7 @@ def initialize(context): """ api_algo = """ -from zipline.api import (order, +from catalyst.api import (order, set_slippage, FixedSlippage, record, @@ -855,7 +855,7 @@ def handle_data(context, data): """ api_get_environment_algo = """ -from zipline.api import get_environment, order, symbol +from catalyst.api import get_environment, order, symbol def initialize(context): @@ -866,7 +866,7 @@ def handle_data(context, data): """ api_symbol_algo = """ -from zipline.api import (order, +from catalyst.api import (order, symbol) def initialize(context): @@ -877,7 +877,7 @@ def handle_data(context, data): """ call_order_in_init = """ -from zipline.api import (sid, order) +from catalyst.api import (sid, order) def initialize(context): order(sid(0), 10) @@ -906,7 +906,7 @@ def handle_data(context, data): """ call_all_order_methods = """ -from zipline.api import (order, +from catalyst.api import (order, order_value, order_percent, order_target, @@ -927,7 +927,7 @@ def handle_data(context, data): """ record_variables = """ -from zipline.api import record +from catalyst.api import record def initialize(context): context.stocks = [0, 1] @@ -939,7 +939,7 @@ def handle_data(context, data): """ record_float_magic = """ -from zipline.api import record +from catalyst.api import record def initialize(context): context.stocks = [0, 1] @@ -951,7 +951,7 @@ def handle_data(context, data): """ call_with_kwargs = """ -from zipline.api import symbol +from catalyst.api import symbol def initialize(context): pass @@ -963,7 +963,7 @@ def handle_data(context, data): """ call_without_kwargs = """ -from zipline.api import symbol +from catalyst.api import symbol def initialize(context): pass @@ -976,7 +976,7 @@ def handle_data(context, data): """ call_with_bad_kwargs_history = """ -from zipline.api import symbol +from catalyst.api import symbol def initialize(context): pass @@ -987,7 +987,7 @@ def handle_data(context, data): """ call_with_bad_kwargs_current = """ -from zipline.api import symbol +from catalyst.api import symbol def initialize(context): pass @@ -1005,7 +1005,7 @@ def handle_data(context, data): """ bad_type_history_fields = """ -from zipline.api import symbol +from catalyst.api import symbol def initialize(context): pass @@ -1015,7 +1015,7 @@ def handle_data(context, data): """ bad_type_history_bar_count = """ -from zipline.api import symbol +from catalyst.api import symbol def initialize(context): pass @@ -1025,7 +1025,7 @@ def handle_data(context, data): """ bad_type_history_frequency = """ -from zipline.api import symbol +from catalyst.api import symbol def initialize(context): pass @@ -1043,7 +1043,7 @@ def handle_data(context, data): """ bad_type_current_fields = """ -from zipline.api import symbol +from catalyst.api import symbol def initialize(context): pass @@ -1077,7 +1077,7 @@ def handle_data(context, data): """ bad_type_history_fields_kwarg = """ -from zipline.api import symbol +from catalyst.api import symbol def initialize(context): pass @@ -1088,7 +1088,7 @@ def handle_data(context, data): """ bad_type_history_bar_count_kwarg = """ -from zipline.api import symbol +from catalyst.api import symbol def initialize(context): pass @@ -1099,7 +1099,7 @@ def handle_data(context, data): """ bad_type_history_frequency_kwarg = """ -from zipline.api import symbol +from catalyst.api import symbol def initialize(context): pass @@ -1118,7 +1118,7 @@ def handle_data(context, data): """ bad_type_current_fields_kwarg = """ -from zipline.api import symbol +from catalyst.api import symbol def initialize(context): pass @@ -1136,7 +1136,7 @@ def handle_data(context, data): """ call_with_bad_kwargs_get_open_orders = """ -from zipline.api import symbol +from catalyst.api import symbol def initialize(context): pass @@ -1146,7 +1146,7 @@ def handle_data(context, data): """ call_with_good_kwargs_get_open_orders = """ -from zipline.api import symbol +from catalyst.api import symbol def initialize(context): pass @@ -1156,7 +1156,7 @@ def handle_data(context, data): """ call_with_no_kwargs_get_open_orders = """ -from zipline.api import symbol +from catalyst.api import symbol def initialize(context): pass @@ -1166,7 +1166,7 @@ def handle_data(context, data): """ empty_positions = """ -from zipline.api import record, schedule_function, time_rules, date_rules, \ +from catalyst.api import record, schedule_function, time_rules, date_rules, \ symbol def initialize(context): @@ -1180,7 +1180,7 @@ def test_history(context,data): """ set_benchmark_algo = """ -from zipline.api import symbol, set_benchmark +from catalyst.api import symbol, set_benchmark def initialize(context): set_benchmark(symbol('TEST')) diff --git a/zipline/testing/__init__.py b/catalyst/testing/__init__.py similarity index 98% rename from zipline/testing/__init__.py rename to catalyst/testing/__init__.py index 3911aacf..1aa3871c 100644 --- a/zipline/testing/__init__.py +++ b/catalyst/testing/__init__.py @@ -23,7 +23,7 @@ from .core import ( # noqa create_empty_splits_mergers_frame, create_minute_bar_data, create_minute_df_for_asset, - drain_zipline, + drain_catalyst, empty_asset_finder, empty_assets_db, empty_trading_env, diff --git a/zipline/testing/core.py b/catalyst/testing/core.py similarity index 96% rename from zipline/testing/core.py rename to catalyst/testing/core.py index 5d16fd8e..7cf83444 100644 --- a/zipline/testing/core.py +++ b/catalyst/testing/core.py @@ -26,35 +26,35 @@ from sqlalchemy import create_engine from testfixtures import TempDirectory from toolz import concat, curry -from zipline.assets import AssetFinder, AssetDBWriter -from zipline.assets.synthetic import make_simple_equity_info -from zipline.data.data_portal import DataPortal -from zipline.data.loader import get_benchmark_filename, INDEX_MAPPING -from zipline.data.minute_bars import ( +from catalyst.assets import AssetFinder, AssetDBWriter +from catalyst.assets.synthetic import make_simple_equity_info +from catalyst.data.data_portal import DataPortal +from catalyst.data.loader import get_benchmark_filename, INDEX_MAPPING +from catalyst.data.minute_bars import ( BcolzMinuteBarReader, BcolzMinuteBarWriter, US_EQUITIES_MINUTES_PER_DAY ) -from zipline.data.us_equity_pricing import ( +from catalyst.data.us_equity_pricing import ( BcolzDailyBarReader, BcolzDailyBarWriter, SQLiteAdjustmentWriter, ) -from zipline.finance.blotter import Blotter -from zipline.finance.trading import TradingEnvironment -from zipline.finance.order import ORDER_STATUS -from zipline.lib.labelarray import LabelArray -from zipline.pipeline.data import USEquityPricing -from zipline.pipeline.engine import SimplePipelineEngine -from zipline.pipeline.factors import CustomFactor -from zipline.pipeline.loaders.testing import make_seeded_random_loader -from zipline.utils import security_list -from zipline.utils.calendars import get_calendar -from zipline.utils.input_validation import expect_dimensions -from zipline.utils.numpy_utils import as_column, isnat -from zipline.utils.pandas_utils import timedelta_to_integral_seconds -from zipline.utils.paths import ensure_directory -from zipline.utils.sentinel import sentinel +from catalyst.finance.blotter import Blotter +from catalyst.finance.trading import TradingEnvironment +from catalyst.finance.order import ORDER_STATUS +from catalyst.lib.labelarray import LabelArray +from catalyst.pipeline.data import USEquityPricing +from catalyst.pipeline.engine import SimplePipelineEngine +from catalyst.pipeline.factors import CustomFactor +from catalyst.pipeline.loaders.testing import make_seeded_random_loader +from catalyst.utils import security_list +from catalyst.utils.calendars import get_calendar +from catalyst.utils.input_validation import expect_dimensions +from catalyst.utils.numpy_utils import as_column, isnat +from catalyst.utils.pandas_utils import timedelta_to_integral_seconds +from catalyst.utils.paths import ensure_directory +from catalyst.utils.sentinel import sentinel import numpy as np from numpy import float64 @@ -85,12 +85,12 @@ def str_to_seconds(s): return timedelta_to_integral_seconds(pd.Timestamp(s, tz='UTC') - EPOCH) -def drain_zipline(test, zipline): +def drain_catalyst(test, catalyst): output = [] transaction_count = 0 msg_counter = 0 # start the simulation - for update in zipline: + for update in catalyst: msg_counter += 1 output.append(update) if 'daily_perf' in update: @@ -127,18 +127,18 @@ def flatten_list(list): return [item for sublist in list for item in sublist] -def assert_single_position(test, zipline): +def assert_single_position(test, catalyst): - output, transaction_count = drain_zipline(test, zipline) + output, transaction_count = drain_catalyst(test, catalyst) - if 'expected_transactions' in test.zipline_test_config: + if 'expected_transactions' in test.catalyst_test_config: test.assertEqual( - test.zipline_test_config['expected_transactions'], + test.catalyst_test_config['expected_transactions'], transaction_count ) else: test.assertEqual( - test.zipline_test_config['order_count'], + test.catalyst_test_config['order_count'], transaction_count ) @@ -169,7 +169,7 @@ def assert_single_position(test, zipline): "Portfolio should have one position." ) - sid = test.zipline_test_config['sid'] + sid = test.catalyst_test_config['sid'] test.assertEqual( closing_positions[0]['sid'], sid, @@ -235,7 +235,7 @@ def all_pairs_matching_predicate(values, pred): Examples -------- - >>> from zipline.testing import all_pairs_matching_predicate + >>> from catalyst.testing import all_pairs_matching_predicate >>> from operator import eq, lt >>> list(all_pairs_matching_predicate(range(5), eq)) [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)] @@ -906,7 +906,7 @@ def subtest(iterator, *_names): """ Construct a subtest in a unittest. - Consider using ``zipline.testing.parameter_space`` when subtests + Consider using ``catalyst.testing.parameter_space`` when subtests are constructed over a single input or over the cross-product of multiple inputs. @@ -959,7 +959,7 @@ def subtest(iterator, *_names): See Also -------- - zipline.testing.parameter_space + catalyst.testing.parameter_space """ def dec(f): @wraps(f) @@ -1117,7 +1117,7 @@ def parameter_space(__fail_fast=False, **params): See Also -------- - zipline.testing.subtest + catalyst.testing.subtest """ def decorator(f): @@ -1319,14 +1319,14 @@ def read_compressed(path): return f.read() -zipline_git_root = abspath( +catalyst_git_root = abspath( join(realpath(dirname(__file__)), '..', '..'), ) @nottest def test_resource_path(*path_parts): - return os.path.join(zipline_git_root, 'tests', 'resources', *path_parts) + return os.path.join(catalyst_git_root, 'tests', 'resources', *path_parts) @contextmanager diff --git a/zipline/testing/fixtures.py b/catalyst/testing/fixtures.py similarity index 96% rename from zipline/testing/fixtures.py rename to catalyst/testing/fixtures.py index 15ad0099..96a2bc9d 100644 --- a/zipline/testing/fixtures.py +++ b/catalyst/testing/fixtures.py @@ -46,20 +46,20 @@ from ..utils import factory from ..utils.classproperty import classproperty from ..utils.final import FinalMeta, final -import zipline -from zipline.assets import Equity, Future -from zipline.finance.asset_restrictions import NoRestrictions -from zipline.pipeline import SimplePipelineEngine -from zipline.pipeline.data import USEquityPricing -from zipline.pipeline.loaders import USEquityPricingLoader -from zipline.pipeline.loaders.testing import make_seeded_random_loader -from zipline.protocol import BarData -from zipline.utils.calendars import ( +import catalyst +from catalyst.assets import Equity, Future +from catalyst.finance.asset_restrictions import NoRestrictions +from catalyst.pipeline import SimplePipelineEngine +from catalyst.pipeline.data import USEquityPricing +from catalyst.pipeline.loaders import USEquityPricingLoader +from catalyst.pipeline.loaders.testing import make_seeded_random_loader +from catalyst.protocol import BarData +from catalyst.utils.calendars import ( get_calendar, register_calendar) -from zipline.utils.paths import ensure_directory +from catalyst.utils.paths import ensure_directory -zipline_dir = os.path.dirname(zipline.__file__) +catalyst_dir = os.path.dirname(catalyst.__file__) class ZiplineTestCase(with_metaclass(FinalMeta, TestCase)): @@ -338,11 +338,11 @@ class WithAssetFinder(WithDefaultDateBounds): See Also -------- - zipline.testing.make_simple_equity_info - zipline.testing.make_jagged_equity_info - zipline.testing.make_rotating_equity_info - zipline.testing.make_future_info - zipline.testing.make_commodity_future_info + catalyst.testing.make_simple_equity_info + catalyst.testing.make_jagged_equity_info + catalyst.testing.make_rotating_equity_info + catalyst.testing.make_future_info + catalyst.testing.make_commodity_future_info """ ASSET_FINDER_EQUITY_SIDS = ord('A'), ord('B'), ord('C') ASSET_FINDER_EQUITY_SYMBOLS = None @@ -381,7 +381,7 @@ class WithAssetFinder(WithDefaultDateBounds): Returns ------- - asset_finder : zipline.assets.AssetFinder + asset_finder : catalyst.assets.AssetFinder """ return cls.enter_class_context(tmp_asset_finder( url=cls.make_asset_finder_db_url(), @@ -491,10 +491,10 @@ class WithTradingEnvironment(WithAssetFinder, See Also -------- - :class:`zipline.finance.trading.TradingEnvironment` + :class:`catalyst.finance.trading.TradingEnvironment` """ TRADING_ENV_FUTURE_CHAIN_PREDICATES = None - MARKET_DATA_DIR = os.path.join(zipline_dir, 'resources', 'market_data') + MARKET_DATA_DIR = os.path.join(catalyst_dir, 'resources', 'market_data') @classmethod def make_load_function(cls): @@ -512,7 +512,7 @@ class WithTradingEnvironment(WithAssetFinder, pd.DataFrame.from_csv(source_path).tz_localize('UTC') # The TradingEnvironment ordinarily uses cached benchmark returns - # and treasury curves data, but when running the zipline tests this + # and treasury curves data, but when running the catalyst tests this # cache is not always updated to include the appropriate dates # required by both the futures and equity calendars. In order to # create more reliable and consistent data throughout the entirety @@ -583,7 +583,7 @@ class WithSimParams(WithTradingEnvironment): See Also -------- - zipline.utils.factory.create_simulation_parameters + catalyst.utils.factory.create_simulation_parameters """ SIM_PARAMS_YEAR = None SIM_PARAMS_CAPITAL_BASE = 1.0e5 @@ -735,12 +735,12 @@ class WithEquityDailyBarData(WithTradingEnvironment): which will be written to the bcolz files that the class's ``BcolzDailyBarReader`` will read from. By default this creates some simple sythetic data with - :func:`~zipline.testing.create_daily_bar_data` + :func:`~catalyst.testing.create_daily_bar_data` See Also -------- WithEquityMinuteBarData - zipline.testing.create_daily_bar_data + catalyst.testing.create_daily_bar_data """ EQUITY_DAILY_BAR_USE_FULL_CALENDAR = False EQUITY_DAILY_BAR_START_DATE = alias('START_DATE') @@ -819,7 +819,7 @@ class WithBcolzEquityDailyBarReader(WithEquityDailyBarData, WithTmpDir): `cls.tmpdir.getpath(cls.BCOLZ_DAILY_BAR_PATH)`. - `cls.bcolz_daily_bar_ctable` is populated with data returned from `cls.make_equity_daily_bar_data`. By default this calls - :func:`zipline.pipeline.loaders.synthetic.make_equity_daily_bar_data`. + :func:`catalyst.pipeline.loaders.synthetic.make_equity_daily_bar_data`. - `cls.bcolz_equity_daily_bar_reader` is a daily bar reader pointing to the directory that was just written to. @@ -855,7 +855,7 @@ class WithBcolzEquityDailyBarReader(WithEquityDailyBarData, WithTmpDir): -------- WithBcolzEquityMinuteBarReader WithDataPortal - zipline.testing.create_daily_bar_data + catalyst.testing.create_daily_bar_data """ BCOLZ_DAILY_BAR_PATH = 'daily_equity_pricing.bcolz' BCOLZ_DAILY_BAR_READ_ALL_THRESHOLD = None @@ -948,12 +948,12 @@ class WithEquityMinuteBarData(_WithMinuteBarDataBase): make_equity_minute_bar_data() -> iterable[(int, pd.DataFrame)] Classmethod producing an iterator of (sid, minute_data) pairs. The default implementation invokes - zipline.testing.core.create_minute_bar_data. + catalyst.testing.core.create_minute_bar_data. See Also -------- WithEquityDailyBarData - zipline.testing.create_minute_bar_data + catalyst.testing.create_minute_bar_data """ EQUITY_MINUTE_BAR_LOOKBACK_DAYS = alias('MINUTE_BAR_LOOKBACK_DAYS') EQUITY_MINUTE_BAR_START_DATE = alias('MINUTE_BAR_START_DATE') @@ -1009,11 +1009,11 @@ class WithFutureMinuteBarData(_WithMinuteBarDataBase): which will be written to into the the format of the inherited class which writes the minute bar data for use by a reader. By default this creates some simple sythetic data with - :func:`~zipline.testing.create_minute_bar_data` + :func:`~catalyst.testing.create_minute_bar_data` See Also -------- - zipline.testing.create_minute_bar_data + catalyst.testing.create_minute_bar_data """ FUTURE_MINUTE_BAR_LOOKBACK_DAYS = alias('MINUTE_BAR_LOOKBACK_DAYS') FUTURE_MINUTE_BAR_START_DATE = alias('MINUTE_BAR_START_DATE') @@ -1053,7 +1053,7 @@ class WithBcolzEquityMinuteBarReader(WithEquityMinuteBarData, WithTmpDir): `cls.tmpdir.getpath(cls.BCOLZ_MINUTE_BAR_PATH)`. - `cls.bcolz_minute_bar_ctable` is populated with data returned from `cls.make_equity_minute_bar_data`. By default this calls - :func:`zipline.pipeline.loaders.synthetic.make_equity_minute_bar_data`. + :func:`catalyst.pipeline.loaders.synthetic.make_equity_minute_bar_data`. - `cls.bcolz_equity_minute_bar_reader` is a minute bar reader pointing to the directory that was just written to. @@ -1073,7 +1073,7 @@ class WithBcolzEquityMinuteBarReader(WithEquityMinuteBarData, WithTmpDir): -------- WithBcolzEquityDailyBarReader WithDataPortal - zipline.testing.create_minute_bar_data + catalyst.testing.create_minute_bar_data """ BCOLZ_EQUITY_MINUTE_BAR_PATH = 'minute_equity_pricing' @@ -1112,7 +1112,7 @@ class WithBcolzFutureMinuteBarReader(WithFutureMinuteBarData, WithTmpDir): `cls.tmpdir.getpath(cls.BCOLZ_MINUTE_BAR_PATH)`. - `cls.bcolz_minute_bar_ctable` is populated with data returned from `cls.make_equity_minute_bar_data`. By default this calls - :func:`zipline.pipeline.loaders.synthetic.make_equity_minute_bar_data`. + :func:`catalyst.pipeline.loaders.synthetic.make_equity_minute_bar_data`. - `cls.bcolz_equity_minute_bar_reader` is a minute bar reader pointing to the directory that was just written to. @@ -1132,7 +1132,7 @@ class WithBcolzFutureMinuteBarReader(WithFutureMinuteBarData, WithTmpDir): -------- WithBcolzEquityDailyBarReader WithDataPortal - zipline.testing.create_minute_bar_data + catalyst.testing.create_minute_bar_data """ BCOLZ_FUTURE_MINUTE_BAR_PATH = 'minute_future_pricing' OHLC_RATIOS_PER_SID = None @@ -1270,7 +1270,7 @@ class WithAdjustmentReader(WithBcolzEquityDailyBarReader): See Also -------- - zipline.testing.MockDailyBarReader + catalyst.testing.MockDailyBarReader """ @classmethod def _make_data(cls): @@ -1367,7 +1367,7 @@ class WithSeededRandomPipelineEngine(WithTradingSessions, WithAssetFinder): Fixture input. Random seed used to initialize the random state loader. seeded_random_loader : SeededRandomLoader Fixture output. Loader capable of providing columns for - zipline.pipeline.data.testing.TestingDataSet. + catalyst.pipeline.data.testing.TestingDataSet. seeded_random_engine : SimplePipelineEngine Fixture output. A pipeline engine that will use seeded_random_loader as its only data provider. @@ -1379,9 +1379,9 @@ class WithSeededRandomPipelineEngine(WithTradingSessions, WithAssetFinder): See Also -------- - zipline.pipeline.loaders.synthetic.SeededRandomLoader - zipline.pipeline.loaders.testing.make_seeded_random_loader - zipline.pipeline.engine.SimplePipelineEngine + catalyst.pipeline.loaders.synthetic.SeededRandomLoader + catalyst.pipeline.loaders.testing.make_seeded_random_loader + catalyst.pipeline.engine.SimplePipelineEngine """ SEEDED_RANDOM_PIPELINE_SEED = 42 diff --git a/zipline/testing/predicates.py b/catalyst/testing/predicates.py similarity index 97% rename from zipline/testing/predicates.py rename to catalyst/testing/predicates.py index e6d34e5f..4d1aa01d 100644 --- a/zipline/testing/predicates.py +++ b/catalyst/testing/predicates.py @@ -44,12 +44,12 @@ from six import iteritems, viewkeys, PY2 from toolz import dissoc, keyfilter import toolz.curried.operator as op -from zipline.testing.core import ensure_doctest -from zipline.dispatch import dispatch -from zipline.lib.adjustment import Adjustment -from zipline.lib.labelarray import LabelArray -from zipline.utils.functional import dzip_exact, instance -from zipline.utils.math_utils import tolerant_equals +from catalyst.testing.core import ensure_doctest +from catalyst.dispatch import dispatch +from catalyst.lib.adjustment import Adjustment +from catalyst.lib.labelarray import LabelArray +from catalyst.utils.functional import dzip_exact, instance +from catalyst.utils.math_utils import tolerant_equals @instance @@ -57,7 +57,7 @@ from zipline.utils.math_utils import tolerant_equals class wildcard(object): """An object that compares equal to any other object. - This is useful when using :func:`~zipline.testing.predicates.assert_equal` + This is useful when using :func:`~catalyst.testing.predicates.assert_equal` with a large recursive structure and some fields to be ignored. Examples diff --git a/zipline/testing/slippage.py b/catalyst/testing/slippage.py similarity index 82% rename from zipline/testing/slippage.py rename to catalyst/testing/slippage.py index 2bd90aa7..41672814 100644 --- a/zipline/testing/slippage.py +++ b/catalyst/testing/slippage.py @@ -1,6 +1,6 @@ -from zipline.assets import Equity -from zipline.finance.slippage import SlippageModel -from zipline.utils.sentinel import sentinel +from catalyst.assets import Equity +from catalyst.finance.slippage import SlippageModel +from catalyst.utils.sentinel import sentinel class TestingSlippage(SlippageModel): @@ -16,7 +16,7 @@ class TestingSlippage(SlippageModel): See also -------- - zipline.finance.slippage.SlippageModel + catalyst.finance.slippage.SlippageModel """ ALL = sentinel('ALL') diff --git a/zipline/utils/__init__.py b/catalyst/utils/__init__.py similarity index 100% rename from zipline/utils/__init__.py rename to catalyst/utils/__init__.py diff --git a/zipline/utils/algo_instance.py b/catalyst/utils/algo_instance.py similarity index 100% rename from zipline/utils/algo_instance.py rename to catalyst/utils/algo_instance.py diff --git a/zipline/utils/api_support.py b/catalyst/utils/api_support.py similarity index 91% rename from zipline/utils/api_support.py rename to catalyst/utils/api_support.py index 2fa577cc..dc707451 100644 --- a/zipline/utils/api_support.py +++ b/catalyst/utils/api_support.py @@ -15,13 +15,13 @@ from functools import wraps -import zipline.api -from zipline.utils.algo_instance import get_algo_instance, set_algo_instance +import catalyst.api +from catalyst.utils.algo_instance import get_algo_instance, set_algo_instance class ZiplineAPI(object): """ - Context manager for making an algorithm instance available to zipline API + Context manager for making an algorithm instance available to catalyst API functions within a scoped block. """ @@ -44,20 +44,20 @@ class ZiplineAPI(object): def api_method(f): # Decorator that adds the decorated class method as a callable - # function (wrapped) to zipline.api + # function (wrapped) to catalyst.api @wraps(f) def wrapped(*args, **kwargs): # Get the instance and call the method algo_instance = get_algo_instance() if algo_instance is None: raise RuntimeError( - 'zipline api method %s must be called during a simulation.' + 'catalyst api method %s must be called during a simulation.' % f.__name__ ) return getattr(algo_instance, f.__name__)(*args, **kwargs) - # Add functor to zipline.api - setattr(zipline.api, f.__name__, wrapped) - zipline.api.__all__.append(f.__name__) + # Add functor to catalyst.api + setattr(catalyst.api, f.__name__, wrapped) + catalyst.api.__all__.append(f.__name__) f.is_api_method = True return f diff --git a/zipline/utils/argcheck.py b/catalyst/utils/argcheck.py similarity index 99% rename from zipline/utils/argcheck.py rename to catalyst/utils/argcheck.py index 59a7cbbe..b86bb26e 100644 --- a/zipline/utils/argcheck.py +++ b/catalyst/utils/argcheck.py @@ -17,7 +17,7 @@ import inspect from itertools import chain from six.moves import map, zip_longest -from zipline.errors import ZiplineError +from catalyst.errors import ZiplineError Argspec = namedtuple('Argspec', ['args', 'starargs', 'kwargs']) diff --git a/zipline/utils/cache.py b/catalyst/utils/cache.py similarity index 98% rename from zipline/utils/cache.py rename to catalyst/utils/cache.py index a67bfcc6..c337f95d 100644 --- a/zipline/utils/cache.py +++ b/catalyst/utils/cache.py @@ -1,5 +1,5 @@ """ -Caching utilities for zipline +Caching utilities for catalyst """ from collections import MutableMapping import errno @@ -179,7 +179,7 @@ class dataframe_cache(MutableMapping): The syntax ``cache[:]`` will load all key:value pairs into memory as a dictionary. The cache uses a temporary file format that is subject to change between - versions of zipline. + versions of catalyst. """ def __init__(self, path=None, @@ -290,7 +290,7 @@ class working_file(object): @property def path(self): """Alias for ``name`` to be consistent with - :class:`~zipline.utils.cache.working_dir`. + :class:`~catalyst.utils.cache.working_dir`. """ return self._tmpfile.name diff --git a/zipline/utils/calendars/__init__.py b/catalyst/utils/calendars/__init__.py similarity index 100% rename from zipline/utils/calendars/__init__.py rename to catalyst/utils/calendars/__init__.py diff --git a/zipline/utils/calendars/_calendar_helpers.pyx b/catalyst/utils/calendars/_calendar_helpers.pyx similarity index 100% rename from zipline/utils/calendars/_calendar_helpers.pyx rename to catalyst/utils/calendars/_calendar_helpers.pyx diff --git a/zipline/utils/calendars/calendar_utils.py b/catalyst/utils/calendars/calendar_utils.py similarity index 90% rename from zipline/utils/calendars/calendar_utils.py rename to catalyst/utils/calendars/calendar_utils.py index fcc714d0..38e0d429 100644 --- a/zipline/utils/calendars/calendar_utils.py +++ b/catalyst/utils/calendars/calendar_utils.py @@ -1,17 +1,17 @@ -from zipline.errors import ( +from catalyst.errors import ( CalendarNameCollision, CyclicCalendarAlias, InvalidCalendarName, ) -from zipline.utils.calendars.exchange_calendar_open import OpenExchangeCalendar -from zipline.utils.calendars.exchange_calendar_cfe import CFEExchangeCalendar -from zipline.utils.calendars.exchange_calendar_ice import ICEExchangeCalendar -from zipline.utils.calendars.exchange_calendar_nyse import NYSEExchangeCalendar -from zipline.utils.calendars.exchange_calendar_cme import CMEExchangeCalendar -from zipline.utils.calendars.exchange_calendar_bmf import BMFExchangeCalendar -from zipline.utils.calendars.exchange_calendar_lse import LSEExchangeCalendar -from zipline.utils.calendars.exchange_calendar_tsx import TSXExchangeCalendar -from zipline.utils.calendars.us_futures_calendar import ( +from catalyst.utils.calendars.exchange_calendar_open import OpenExchangeCalendar +from catalyst.utils.calendars.exchange_calendar_cfe import CFEExchangeCalendar +from catalyst.utils.calendars.exchange_calendar_ice import ICEExchangeCalendar +from catalyst.utils.calendars.exchange_calendar_nyse import NYSEExchangeCalendar +from catalyst.utils.calendars.exchange_calendar_cme import CMEExchangeCalendar +from catalyst.utils.calendars.exchange_calendar_bmf import BMFExchangeCalendar +from catalyst.utils.calendars.exchange_calendar_lse import LSEExchangeCalendar +from catalyst.utils.calendars.exchange_calendar_tsx import TSXExchangeCalendar +from catalyst.utils.calendars.us_futures_calendar import ( QuantopianUSFuturesCalendar, ) @@ -43,7 +43,7 @@ class TradingCalendarDispatcher(object): A class for dispatching and caching trading calendars. Methods of a global instance of this class are provided by - zipline.utils.calendar_utils. + catalyst.utils.calendar_utils. Parameters ---------- @@ -70,13 +70,11 @@ class TradingCalendarDispatcher(object): Returns ------- - calendar : zipline.utils.calendars.TradingCalendar + calendar : catalyst.utils.calendars.TradingCalendar The desired calendar. """ canonical_name = self.resolve_alias(name) - print 'get_calendar(\'{name}\')'.format(name=canonical_name) - try: return self._calendars[canonical_name] except KeyError: diff --git a/zipline/utils/calendars/exchange_calendar_bmf.py b/catalyst/utils/calendars/exchange_calendar_bmf.py similarity index 100% rename from zipline/utils/calendars/exchange_calendar_bmf.py rename to catalyst/utils/calendars/exchange_calendar_bmf.py diff --git a/zipline/utils/calendars/exchange_calendar_cfe.py b/catalyst/utils/calendars/exchange_calendar_cfe.py similarity index 90% rename from zipline/utils/calendars/exchange_calendar_cfe.py rename to catalyst/utils/calendars/exchange_calendar_cfe.py index 088b84e3..7ef92fc8 100644 --- a/zipline/utils/calendars/exchange_calendar_cfe.py +++ b/catalyst/utils/calendars/exchange_calendar_cfe.py @@ -9,9 +9,9 @@ from pandas.tseries.holiday import ( ) from pytz import timezone -from zipline.utils.calendars import TradingCalendar -from zipline.utils.calendars.trading_calendar import HolidayCalendar -from zipline.utils.calendars.us_holidays import ( +from catalyst.utils.calendars import TradingCalendar +from catalyst.utils.calendars.trading_calendar import HolidayCalendar +from catalyst.utils.calendars.us_holidays import ( USMartinLutherKingJrAfter1998, USMemorialDay, USBlackFridayInOrAfter1993, diff --git a/zipline/utils/calendars/exchange_calendar_cme.py b/catalyst/utils/calendars/exchange_calendar_cme.py similarity index 100% rename from zipline/utils/calendars/exchange_calendar_cme.py rename to catalyst/utils/calendars/exchange_calendar_cme.py diff --git a/zipline/utils/calendars/exchange_calendar_ice.py b/catalyst/utils/calendars/exchange_calendar_ice.py similarity index 91% rename from zipline/utils/calendars/exchange_calendar_ice.py rename to catalyst/utils/calendars/exchange_calendar_ice.py index 511fae01..13cb68fd 100644 --- a/zipline/utils/calendars/exchange_calendar_ice.py +++ b/catalyst/utils/calendars/exchange_calendar_ice.py @@ -10,9 +10,9 @@ from pandas.tseries.holiday import ( from pandas.tslib import Timestamp from pytz import timezone -from zipline.utils.calendars import TradingCalendar -from zipline.utils.calendars.trading_calendar import HolidayCalendar -from zipline.utils.calendars.us_holidays import ( +from catalyst.utils.calendars import TradingCalendar +from catalyst.utils.calendars.trading_calendar import HolidayCalendar +from catalyst.utils.calendars.us_holidays import ( USNewYearsDay, Christmas, USMartinLutherKingJrAfter1998, diff --git a/zipline/utils/calendars/exchange_calendar_lse.py b/catalyst/utils/calendars/exchange_calendar_lse.py similarity index 100% rename from zipline/utils/calendars/exchange_calendar_lse.py rename to catalyst/utils/calendars/exchange_calendar_lse.py diff --git a/zipline/utils/calendars/exchange_calendar_nyse.py b/catalyst/utils/calendars/exchange_calendar_nyse.py similarity index 100% rename from zipline/utils/calendars/exchange_calendar_nyse.py rename to catalyst/utils/calendars/exchange_calendar_nyse.py diff --git a/zipline/utils/calendars/exchange_calendar_open.py b/catalyst/utils/calendars/exchange_calendar_open.py similarity index 91% rename from zipline/utils/calendars/exchange_calendar_open.py rename to catalyst/utils/calendars/exchange_calendar_open.py index 2a48584a..728fda60 100644 --- a/zipline/utils/calendars/exchange_calendar_open.py +++ b/catalyst/utils/calendars/exchange_calendar_open.py @@ -3,7 +3,7 @@ from pytz import timezone from .trading_calendar import TradingCalendar -from zipline.utils.memoize import lazyval +from catalyst.utils.memoize import lazyval class OpenExchangeCalendar(TradingCalendar): diff --git a/zipline/utils/calendars/exchange_calendar_tsx.py b/catalyst/utils/calendars/exchange_calendar_tsx.py similarity index 92% rename from zipline/utils/calendars/exchange_calendar_tsx.py rename to catalyst/utils/calendars/exchange_calendar_tsx.py index 6a2cce89..29b0d480 100644 --- a/zipline/utils/calendars/exchange_calendar_tsx.py +++ b/catalyst/utils/calendars/exchange_calendar_tsx.py @@ -8,10 +8,10 @@ from pandas.tseries.holiday import ( ) from pytz import timezone -from zipline.utils.calendars.trading_calendar import TradingCalendar, \ +from catalyst.utils.calendars.trading_calendar import TradingCalendar, \ HolidayCalendar -from zipline.utils.calendars.us_holidays import Christmas -from zipline.utils.calendars.exchange_calendar_lse import ( +from catalyst.utils.calendars.us_holidays import Christmas +from catalyst.utils.calendars.exchange_calendar_lse import ( WeekendChristmas, BoxingDay, WeekendBoxingDay diff --git a/zipline/utils/calendars/trading_calendar.py b/catalyst/utils/calendars/trading_calendar.py similarity index 99% rename from zipline/utils/calendars/trading_calendar.py rename to catalyst/utils/calendars/trading_calendar.py index b8587843..d30eec33 100644 --- a/zipline/utils/calendars/trading_calendar.py +++ b/catalyst/utils/calendars/trading_calendar.py @@ -27,18 +27,18 @@ from pandas import ( DatetimeIndex, ) from pandas.tseries.offsets import CustomBusinessDay -from zipline.utils.calendars._calendar_helpers import ( +from catalyst.utils.calendars._calendar_helpers import ( next_divider_idx, previous_divider_idx, is_open, minutes_to_session_labels, ) -from zipline.utils.input_validation import ( +from catalyst.utils.input_validation import ( attrgetter, coerce, preprocess, ) -from zipline.utils.memoize import lazyval +from catalyst.utils.memoize import lazyval start_default = pd.Timestamp('1990-01-01', tz='UTC') end_base = pd.Timestamp('today', tz='UTC') @@ -104,7 +104,7 @@ class TradingCalendar(with_metaclass(ABCMeta)): ) # Simple cache to avoid recalculating the same minute -> session in - # "next" mode. Analysis of current zipline code paths show that + # "next" mode. Analysis of current catalyst code paths show that # `minute_to_session_label` is often called consecutively with the same # inputs. self._minute_to_session_label_cache = LRU(1) diff --git a/zipline/utils/calendars/us_futures_calendar.py b/catalyst/utils/calendars/us_futures_calendar.py similarity index 90% rename from zipline/utils/calendars/us_futures_calendar.py rename to catalyst/utils/calendars/us_futures_calendar.py index c5bf1637..d4ffe107 100644 --- a/zipline/utils/calendars/us_futures_calendar.py +++ b/catalyst/utils/calendars/us_futures_calendar.py @@ -4,11 +4,11 @@ from pandas import Timedelta, Timestamp from pandas.tseries.holiday import GoodFriday from pytz import timezone -from zipline.utils.calendars import TradingCalendar -from zipline.utils.calendars.trading_calendar import ( +from catalyst.utils.calendars import TradingCalendar +from catalyst.utils.calendars.trading_calendar import ( HolidayCalendar, end_default ) -from zipline.utils.calendars.us_holidays import ( +from catalyst.utils.calendars.us_holidays import ( USNewYearsDay, Christmas ) @@ -43,7 +43,7 @@ class QuantopianUSFuturesCalendar(TradingCalendar): # XXX: Override the default TradingCalendar start and end dates with ones # further in the future. This is a stopgap for memory issues caused by # upgrading to pandas 18. This calendar is the most severely affected, - # since it has the most total minutes of any of the zipline calendars. + # since it has the most total minutes of any of the catalyst calendars. def __init__(self, start=Timestamp('2000-01-01', tz='UTC'), end=end_default): diff --git a/zipline/utils/calendars/us_holidays.py b/catalyst/utils/calendars/us_holidays.py similarity index 96% rename from zipline/utils/calendars/us_holidays.py rename to catalyst/utils/calendars/us_holidays.py index afaf40f5..07e047bf 100644 --- a/zipline/utils/calendars/us_holidays.py +++ b/catalyst/utils/calendars/us_holidays.py @@ -16,7 +16,7 @@ from dateutil.relativedelta import ( ) from pandas.tseries.offsets import Day -from zipline.utils.calendars.trading_calendar import ( +from catalyst.utils.calendars.trading_calendar import ( MONDAY, TUESDAY, WEDNESDAY, @@ -26,7 +26,7 @@ from zipline.utils.calendars.trading_calendar import ( # These have the same definition, but are used in different places because the # NYSE closed at 2:00 PM on Christmas Eve until 1993. -from zipline.utils.pandas_utils import july_5th_holiday_observance +from catalyst.utils.pandas_utils import july_5th_holiday_observance ChristmasEveBefore1993 = Holiday( 'Christmas Eve', diff --git a/zipline/utils/classproperty.py b/catalyst/utils/classproperty.py similarity index 100% rename from zipline/utils/classproperty.py rename to catalyst/utils/classproperty.py diff --git a/zipline/utils/cli.py b/catalyst/utils/cli.py similarity index 100% rename from zipline/utils/cli.py rename to catalyst/utils/cli.py diff --git a/zipline/utils/compat.py b/catalyst/utils/compat.py similarity index 100% rename from zipline/utils/compat.py rename to catalyst/utils/compat.py diff --git a/zipline/utils/context_tricks.py b/catalyst/utils/context_tricks.py similarity index 100% rename from zipline/utils/context_tricks.py rename to catalyst/utils/context_tricks.py diff --git a/zipline/utils/control_flow.py b/catalyst/utils/control_flow.py similarity index 100% rename from zipline/utils/control_flow.py rename to catalyst/utils/control_flow.py diff --git a/zipline/utils/data.py b/catalyst/utils/data.py similarity index 100% rename from zipline/utils/data.py rename to catalyst/utils/data.py diff --git a/zipline/utils/date_utils.py b/catalyst/utils/date_utils.py similarity index 100% rename from zipline/utils/date_utils.py rename to catalyst/utils/date_utils.py diff --git a/zipline/utils/deprecate.py b/catalyst/utils/deprecate.py similarity index 100% rename from zipline/utils/deprecate.py rename to catalyst/utils/deprecate.py diff --git a/zipline/utils/dummy.py b/catalyst/utils/dummy.py similarity index 100% rename from zipline/utils/dummy.py rename to catalyst/utils/dummy.py diff --git a/zipline/utils/enum.py b/catalyst/utils/enum.py similarity index 100% rename from zipline/utils/enum.py rename to catalyst/utils/enum.py diff --git a/zipline/utils/events.py b/catalyst/utils/events.py similarity index 98% rename from zipline/utils/events.py rename to catalyst/utils/events.py index e22e2006..7bb810b3 100644 --- a/zipline/utils/events.py +++ b/catalyst/utils/events.py @@ -23,9 +23,9 @@ import pandas as pd import pytz from toolz import curry -from zipline.utils.input_validation import preprocess -from zipline.utils.memoize import lazyval -from zipline.utils.sentinel import sentinel +from catalyst.utils.input_validation import preprocess +from catalyst.utils.memoize import lazyval +from catalyst.utils.sentinel import sentinel from .context_tricks import nop_context @@ -334,7 +334,7 @@ class AfterOpen(StatelessRule): Example that triggers after 30 minutes of the market opening: >>> AfterOpen(minutes=30) # doctest: +ELLIPSIS - + """ def __init__(self, offset=None, **kwargs): self.offset = _build_offset( @@ -390,7 +390,7 @@ class BeforeClose(StatelessRule): Example that triggers for the last 30 minutes every day: >>> BeforeClose(minutes=30) # doctest: +ELLIPSIS - + """ def __init__(self, offset=None, **kwargs): self.offset = _build_offset( diff --git a/zipline/utils/factory.py b/catalyst/utils/factory.py similarity index 93% rename from zipline/utils/factory.py rename to catalyst/utils/factory.py index a529ed06..1009e23c 100644 --- a/zipline/utils/factory.py +++ b/catalyst/utils/factory.py @@ -21,18 +21,18 @@ import pandas as pd import numpy as np from datetime import timedelta, datetime -from zipline.assets import Asset -from zipline.finance.transaction import Transaction -from zipline.protocol import Event, DATASOURCE_TYPE -from zipline.sources import SpecificEquityTrades -from zipline.finance.trading import SimulationParameters -from zipline.sources.test_source import create_trade -from zipline.data.loader import ( # For backwards compatibility +from catalyst.assets import Asset +from catalyst.finance.transaction import Transaction +from catalyst.protocol import Event, DATASOURCE_TYPE +from catalyst.sources import SpecificEquityTrades +from catalyst.finance.trading import SimulationParameters +from catalyst.sources.test_source import create_trade +from catalyst.data.loader import ( # For backwards compatibility load_from_yahoo, load_bars_from_yahoo, ) -from zipline.utils.calendars import get_calendar -from zipline.utils.input_validation import expect_types +from catalyst.utils.calendars import get_calendar +from catalyst.utils.input_validation import expect_types __all__ = ['load_from_yahoo', 'load_bars_from_yahoo'] diff --git a/zipline/utils/final.py b/catalyst/utils/final.py similarity index 100% rename from zipline/utils/final.py rename to catalyst/utils/final.py diff --git a/zipline/utils/functional.py b/catalyst/utils/functional.py similarity index 100% rename from zipline/utils/functional.py rename to catalyst/utils/functional.py diff --git a/zipline/utils/input_validation.py b/catalyst/utils/input_validation.py similarity index 98% rename from zipline/utils/input_validation.py rename to catalyst/utils/input_validation.py index a1999184..299481ae 100644 --- a/zipline/utils/input_validation.py +++ b/catalyst/utils/input_validation.py @@ -22,8 +22,8 @@ from six import iteritems, string_types, PY3 from toolz import valmap, complement, compose import toolz.curried.operator as op -from zipline.utils.functional import getattrs -from zipline.utils.preprocess import call, preprocess +from catalyst.utils.functional import getattrs +from catalyst.utils.preprocess import call, preprocess if PY3: @@ -139,7 +139,7 @@ def ensure_dtype(func, argname, arg): Examples -------- >>> import numpy as np - >>> from zipline.utils.preprocess import preprocess + >>> from catalyst.utils.preprocess import preprocess >>> @preprocess(dtype=ensure_dtype) ... def foo(dtype): ... return dtype @@ -165,7 +165,7 @@ def ensure_timezone(func, argname, arg): Examples -------- - >>> from zipline.utils.preprocess import preprocess + >>> from catalyst.utils.preprocess import preprocess >>> @preprocess(tz=ensure_timezone) ... def foo(tz): ... return tz @@ -193,7 +193,7 @@ def ensure_timestamp(func, argname, arg): Examples -------- - >>> from zipline.utils.preprocess import preprocess + >>> from catalyst.utils.preprocess import preprocess >>> @preprocess(ts=ensure_timestamp) ... def foo(ts): ... return ts diff --git a/zipline/utils/math_utils.py b/catalyst/utils/math_utils.py similarity index 100% rename from zipline/utils/math_utils.py rename to catalyst/utils/math_utils.py diff --git a/zipline/utils/memoize.py b/catalyst/utils/memoize.py similarity index 98% rename from zipline/utils/memoize.py rename to catalyst/utils/memoize.py index f0c77f3d..04187313 100644 --- a/zipline/utils/memoize.py +++ b/catalyst/utils/memoize.py @@ -17,7 +17,7 @@ class lazyval(object): Example ------- - >>> from zipline.utils.memoize import lazyval + >>> from catalyst.utils.memoize import lazyval >>> class C(object): ... def __init__(self): ... self.count = 0 @@ -67,7 +67,7 @@ class classlazyval(lazyval): Example ------- - >>> from zipline.utils.memoize import classlazyval + >>> from catalyst.utils.memoize import classlazyval >>> class C(object): ... count = 0 ... @classlazyval diff --git a/zipline/utils/metautils.py b/catalyst/utils/metautils.py similarity index 100% rename from zipline/utils/metautils.py rename to catalyst/utils/metautils.py diff --git a/zipline/utils/numpy_utils.py b/catalyst/utils/numpy_utils.py similarity index 100% rename from zipline/utils/numpy_utils.py rename to catalyst/utils/numpy_utils.py diff --git a/zipline/utils/pandas_utils.py b/catalyst/utils/pandas_utils.py similarity index 100% rename from zipline/utils/pandas_utils.py rename to catalyst/utils/pandas_utils.py diff --git a/zipline/utils/paths.py b/catalyst/utils/paths.py similarity index 71% rename from zipline/utils/paths.py rename to catalyst/utils/paths.py index 79e0e28a..6ba10a29 100644 --- a/zipline/utils/paths.py +++ b/catalyst/utils/paths.py @@ -1,8 +1,8 @@ """ -Canonical path locations for zipline data. +Canonical path locations for catalyst data. Paths are rooted at $ZIPLINE_ROOT if that environment variable is set. -Otherwise default to expanduser(~/.zipline) +Otherwise default to expanduser(~/.catalyst) """ from errno import EEXIST import os @@ -104,9 +104,9 @@ def modified_since(path, dt): return exists(path) and last_modified_time(path) > dt -def zipline_root(environ=None): +def catalyst_root(environ=None): """ - Get the root directory for all zipline-managed files. + Get the root directory for all catalyst-managed files. For testing purposes, this accepts a dictionary to interpret as the os environment. @@ -119,69 +119,69 @@ def zipline_root(environ=None): Returns ------- root : string - Path to the zipline root dir. + Path to the catalyst root dir. """ if environ is None: environ = os.environ root = environ.get('ZIPLINE_ROOT', None) if root is None: - root = expanduser('~/.zipline') + root = expanduser('~/.catalyst') return root -def zipline_path(paths, environ=None): +def catalyst_path(paths, environ=None): """ - Get a path relative to the zipline root. + Get a path relative to the catalyst root. Parameters ---------- paths : list[str] List of requested path pieces. environ : dict, optional - An environment dict to forward to zipline_root. + An environment dict to forward to catalyst_root. Returns ------- newpath : str - The requested path joined with the zipline root. + The requested path joined with the catalyst root. """ - return join(zipline_root(environ=environ), *paths) + return join(catalyst_root(environ=environ), *paths) def default_extension(environ=None): """ - Get the path to the default zipline extension file. + Get the path to the default catalyst extension file. Parameters ---------- environ : dict, optional - An environment dict to forwart to zipline_root. + An environment dict to forwart to catalyst_root. Returns ------- default_extension_path : str - The file path to the default zipline extension file. + The file path to the default catalyst extension file. """ - return zipline_path(['extension.py'], environ=environ) + return catalyst_path(['extension.py'], environ=environ) def data_root(environ=None): """ - The root directory for zipline data files. + The root directory for catalyst data files. Parameters ---------- environ : dict, optional - An environment dict to forward to zipline_root. + An environment dict to forward to catalyst_root. Returns ------- data_root : str - The zipline data root. + The catalyst data root. """ - return zipline_path(['data'], environ=environ) + return catalyst_path(['data'], environ=environ) def ensure_data_root(environ=None): @@ -193,38 +193,38 @@ def ensure_data_root(environ=None): def data_path(paths, environ=None): """ - Get a path relative to the zipline data directory. + Get a path relative to the catalyst data directory. Parameters ---------- paths : iterable[str] List of requested path pieces. environ : dict, optional - An environment dict to forward to zipline_root. + An environment dict to forward to catalyst_root. Returns ------- newpath : str - The requested path joined with the zipline data root. + The requested path joined with the catalyst data root. """ - return zipline_path(['data'] + list(paths), environ=environ) + return catalyst_path(['data'] + list(paths), environ=environ) def cache_root(environ=None): """ - The root directory for zipline cache files. + The root directory for catalyst cache files. Parameters ---------- environ : dict, optional - An environment dict to forward to zipline_root. + An environment dict to forward to catalyst_root. Returns ------- cache_root : str - The zipline cache root. + The catalyst cache root. """ - return zipline_path(['cache'], environ=environ) + return catalyst_path(['cache'], environ=environ) def ensure_cache_root(environ=None): @@ -236,18 +236,18 @@ def ensure_cache_root(environ=None): def cache_path(paths, environ=None): """ - Get a path relative to the zipline cache directory. + Get a path relative to the catalyst cache directory. Parameters ---------- paths : iterable[str] List of requested path pieces. environ : dict, optional - An environment dict to forward to zipline_root. + An environment dict to forward to catalyst_root. Returns ------- newpath : str - The requested path joined with the zipline cache root. + The requested path joined with the catalyst cache root. """ - return zipline_path(['cache'] + list(paths), environ=environ) + return catalyst_path(['cache'] + list(paths), environ=environ) diff --git a/zipline/utils/pool.py b/catalyst/utils/pool.py similarity index 92% rename from zipline/utils/pool.py rename to catalyst/utils/pool.py index c39a3df9..b39bee2c 100644 --- a/zipline/utils/pool.py +++ b/catalyst/utils/pool.py @@ -4,7 +4,7 @@ from toolz import compose, identity class ApplyAsyncResult(object): """An object that boxes results for calls to - :meth:`~zipline.utils.pool.SequentialPool.apply_async`. + :meth:`~catalyst.utils.pool.SequentialPool.apply_async`. Parameters ---------- @@ -37,7 +37,7 @@ class ApplyAsyncResult(object): Notes ----- - In the :class:`~zipline.utils.pool.SequentialPool` case, this is always + In the :class:`~catalyst.utils.pool.SequentialPool` case, this is always ``True``. """ return True @@ -47,9 +47,9 @@ class ApplyAsyncResult(object): Notes ----- - In the :class:`~zipline.utils.pool.SequentialPool` case, this is a nop + In the :class:`~catalyst.utils.pool.SequentialPool` case, this is a nop because the function is computed eagerly in the same thread as the - call to :meth:`~zipline.utils.pool.SequentialPool.apply_async`. + call to :meth:`~catalyst.utils.pool.SequentialPool.apply_async`. """ pass diff --git a/zipline/utils/preprocess.py b/catalyst/utils/preprocess.py similarity index 100% rename from zipline/utils/preprocess.py rename to catalyst/utils/preprocess.py diff --git a/zipline/utils/range.py b/catalyst/utils/range.py similarity index 99% rename from zipline/utils/range.py rename to catalyst/utils/range.py index 9e966bab..92859931 100644 --- a/zipline/utils/range.py +++ b/catalyst/utils/range.py @@ -3,7 +3,7 @@ import operator as op from six import PY2 from toolz import peek -from zipline.utils.functional import foldr +from catalyst.utils.functional import foldr if PY2: diff --git a/zipline/utils/run_algo.py b/catalyst/utils/run_algo.py similarity index 92% rename from zipline/utils/run_algo.py rename to catalyst/utils/run_algo.py index d100fd88..eb8cb4bb 100644 --- a/zipline/utils/run_algo.py +++ b/catalyst/utils/run_algo.py @@ -14,15 +14,15 @@ except: PYGMENTS = False from toolz import valfilter, concatv -from zipline.algorithm import TradingAlgorithm -from zipline.data.bundles.core import load -from zipline.data.data_portal import DataPortal -from zipline.finance.trading import TradingEnvironment -from zipline.pipeline.data import USEquityPricing, CryptoPricing -from zipline.pipeline.loaders import USEquityPricingLoader, CryptoPricingLoader -from zipline.utils.calendars import get_calendar -from zipline.utils.factory import create_simulation_parameters -import zipline.utils.paths as pth +from catalyst.algorithm import TradingAlgorithm +from catalyst.data.bundles.core import load +from catalyst.data.data_portal import DataPortal +from catalyst.finance.trading import TradingEnvironment +from catalyst.pipeline.data import USEquityPricing, CryptoPricing +from catalyst.pipeline.loaders import USEquityPricingLoader, CryptoPricingLoader +from catalyst.utils.calendars import get_calendar +from catalyst.utils.factory import create_simulation_parameters +import catalyst.utils.paths as pth class _RunAlgoError(click.ClickException, ValueError): @@ -66,7 +66,7 @@ def _run(handle_data, environ): """Run a backtest for the given algorithm. - This is shared between the cli and :func:`zipline.run_algo`. + This is shared between the cli and :func:`catalyst.run_algo`. """ if algotext is not None: if local_namespace: @@ -114,7 +114,6 @@ def _run(handle_data, if bundle is not None: bundles = bundle.split(',') - print 'bundles: {0}'.format(bundles) def get_trading_env_and_data(bundles): env = data = None @@ -163,7 +162,6 @@ def _run(handle_data, ) if b == 'catalyst': - print 'creating crypto pricing loader...' return CryptoPricingLoader( bundle_data.equity_daily_bar_reader, CryptoPricing, @@ -183,7 +181,6 @@ def _run(handle_data, env, data = get_trading_env_and_data(bundles) def choose_loader(column): - print 'finding pricing loader...' for loader in loaders: if column in loader.columns: return loader @@ -191,7 +188,6 @@ def _run(handle_data, "No PipelineLoader registered for column %s." % column ) - print 'env: {0}'.format(env) else: env = TradingEnvironment(environ=environ) choose_loader = None @@ -222,7 +218,7 @@ def _run(handle_data, if output == '-': click.echo(str(perf)) - elif output != os.devnull: # make the zipline magic not write any data + elif output != os.devnull: # make the catalyst magic not write any data perf.to_pickle(output) return perf @@ -239,7 +235,7 @@ def load_extensions(default, extensions, strict, environ, reload=False): Parameters ---------- default : bool - Load the default exension (~/.zipline/extension.py)? + Load the default exension (~/.catalyst/extension.py)? extension : iterable[str] The paths to the extensions to load. If the path ends in ``.py`` it is treated as a script and executed. If it does not end in ``.py`` it is @@ -263,7 +259,7 @@ def load_extensions(default, extensions, strict, environ, reload=False): if ext in _loaded_extensions and not reload: continue try: - # load all of the zipline extensionss + # load all of the catalyst extensionss if ext.endswith('.py'): run_path(ext, run_name='') else: @@ -337,7 +333,7 @@ def run_algorithm(start, current time. This argument is mutually exclusive with ``data``. default_extension : bool, optional - Should the default zipline extension be loaded. This is found at + Should the default catalyst extension be loaded. This is found at ``$ZIPLINE_ROOT/extension.py`` extensions : iterable[str], optional The names of any other extensions to load. Each element may either be @@ -357,7 +353,7 @@ def run_algorithm(start, See Also -------- - zipline.data.bundles.bundles : The available data bundles. + catalyst.data.bundles.bundles : The available data bundles. """ load_extensions(default_extension, extensions, strict_extensions, environ) diff --git a/zipline/utils/security_list.py b/catalyst/utils/security_list.py similarity index 93% rename from zipline/utils/security_list.py rename to catalyst/utils/security_list.py index 2a72952c..b488067e 100644 --- a/zipline/utils/security_list.py +++ b/catalyst/utils/security_list.py @@ -5,16 +5,16 @@ import os.path import pandas as pd import pytz -import zipline +import catalyst -from zipline.errors import SymbolNotFound -from zipline.finance.asset_restrictions import SecurityListRestrictions -from zipline.zipline_warnings import ZiplineDeprecationWarning +from catalyst.errors import SymbolNotFound +from catalyst.finance.asset_restrictions import SecurityListRestrictions +from catalyst.catalyst_warnings import ZiplineDeprecationWarning DATE_FORMAT = "%Y%m%d" -zipline_dir = os.path.dirname(zipline.__file__) -SECURITY_LISTS_DIR = os.path.join(zipline_dir, 'resources', 'security_lists') +catalyst_dir = os.path.dirname(catalyst.__file__) +SECURITY_LISTS_DIR = os.path.join(catalyst_dir, 'resources', 'security_lists') class SecurityList(object): diff --git a/zipline/utils/sentinel.py b/catalyst/utils/sentinel.py similarity index 100% rename from zipline/utils/sentinel.py rename to catalyst/utils/sentinel.py diff --git a/zipline/utils/serialization_utils.py b/catalyst/utils/serialization_utils.py similarity index 96% rename from zipline/utils/serialization_utils.py rename to catalyst/utils/serialization_utils.py index 9532c155..ba3754ee 100644 --- a/zipline/utils/serialization_utils.py +++ b/catalyst/utils/serialization_utils.py @@ -17,8 +17,8 @@ from six import BytesIO import pickle from functools import partial -from zipline.assets import AssetFinder -from zipline.finance.trading import TradingEnvironment +from catalyst.assets import AssetFinder +from catalyst.finance.trading import TradingEnvironment # Label for the serialization version field in the state returned by # __getstate__. diff --git a/zipline/utils/sharedoc.py b/catalyst/utils/sharedoc.py similarity index 100% rename from zipline/utils/sharedoc.py rename to catalyst/utils/sharedoc.py diff --git a/zipline/utils/simfactory.py b/catalyst/utils/simfactory.py similarity index 81% rename from zipline/utils/simfactory.py rename to catalyst/utils/simfactory.py index be814494..d8155df3 100644 --- a/zipline/utils/simfactory.py +++ b/catalyst/utils/simfactory.py @@ -1,11 +1,11 @@ -import zipline.utils.factory as factory -from zipline.testing.core import create_data_portal_from_trade_history +import catalyst.utils.factory as factory +from catalyst.testing.core import create_data_portal_from_trade_history -from zipline.test_algorithms import TestAlgorithm -from zipline.utils.calendars import get_calendar +from catalyst.test_algorithms import TestAlgorithm +from catalyst.utils.calendars import get_calendar -def create_test_zipline(**config): +def create_test_catalyst(**config): """ :param config: A configuration object that is a dict with: @@ -16,15 +16,15 @@ def create_test_zipline(**config): - trade_count - the number of trades to simulate, defaults to 101 to ensure all orders are processed. - algorithm - optional parameter providing an algorithm. defaults - to :py:class:`zipline.test.algorithms.TestAlgorithm` + to :py:class:`catalyst.test.algorithms.TestAlgorithm` - trade_source - optional parameter to specify trades, if present. - If not present :py:class:`zipline.sources.SpecificEquityTrades` + If not present :py:class:`catalyst.sources.SpecificEquityTrades` is the source, with daily frequency in trades. - slippage: optional parameter that configures the - :py:class:`zipline.gens.tradingsimulation.TransactionSimulator`. + :py:class:`catalyst.gens.tradingsimulation.TransactionSimulator`. Expects an object with a simulate mehod, such as - :py:class:`zipline.gens.tradingsimulation.FixedSlippage`. - :py:mod:`zipline.finance.trading` + :py:class:`catalyst.gens.tradingsimulation.FixedSlippage`. + :py:mod:`catalyst.finance.trading` """ assert isinstance(config, dict) @@ -34,7 +34,7 @@ def create_test_zipline(**config): try: sid_list = [config['sid']] except KeyError: - raise Exception("simfactory create_test_zipline() requires " + raise Exception("simfactory create_test_catalyst() requires " "argument 'sid_list' or 'sid'") concurrent_trades = config.get('concurrent_trades', False) diff --git a/zipline/utils/sqlite_utils.py b/catalyst/utils/sqlite_utils.py similarity index 100% rename from zipline/utils/sqlite_utils.py rename to catalyst/utils/sqlite_utils.py diff --git a/zipline/utils/tradingcalendar.py b/catalyst/utils/tradingcalendar.py similarity index 97% rename from zipline/utils/tradingcalendar.py rename to catalyst/utils/tradingcalendar.py index 6f5698d4..46398b08 100644 --- a/zipline/utils/tradingcalendar.py +++ b/catalyst/utils/tradingcalendar.py @@ -20,11 +20,11 @@ from datetime import datetime from dateutil import rrule from functools import partial -# from zipline.zipline_warnings import ZiplineDeprecationWarning +# from catalyst.catalyst_warnings import ZiplineDeprecationWarning # IMPORTANT: This module is deprecated and is only here for temporary backwards -# compatibility. Look at the `zipline.utils.calendars.trading_schedule` -# module, as well as the calendar definitions in `zipline.utils.calendars`. +# compatibility. Look at the `catalyst.utils.calendars.trading_schedule` +# module, as well as the calendar definitions in `catalyst.utils.calendars`. # TODO: The new calendar API is currently in flux, so the deprecation # warning for this module is currently disabled. Re-enable once @@ -32,8 +32,8 @@ from functools import partial # # warnings.warn( # "The `tradingcalendar` module is deprecated. See the " -# "`zipline.utils.calendars.trading_schedule` module, as well as the " -# "calendar definitions in `zipline.utils.calendars`.", +# "`catalyst.utils.calendars.trading_schedule` module, as well as the " +# "calendar definitions in `catalyst.utils.calendars`.", # category=ZiplineDeprecationWarning, # stacklevel=1, # ) diff --git a/etc/conda_build_matrix.py b/etc/conda_build_matrix.py index 5c0a0296..7d4832ec 100644 --- a/etc/conda_build_matrix.py +++ b/etc/conda_build_matrix.py @@ -6,11 +6,11 @@ import click py_versions = ('2.7', '3.4', '3.5') npy_versions = ('1.9', '1.10') -zipline_path = os.path.join( +catalyst_path = os.path.join( os.path.dirname(__file__), '..', 'conda', - 'zipline', + 'catalyst', ) @@ -19,7 +19,7 @@ def mkargs(py_version, npy_version, output=False): 'args': [ 'conda', 'build', - zipline_path, + catalyst_path, '-c', 'quantopian', '--python=%s' % py_version, '--numpy=%s' % npy_version, diff --git a/etc/docker_cmd.sh b/etc/docker_cmd.sh index 8dd87a45..30308a61 100755 --- a/etc/docker_cmd.sh +++ b/etc/docker_cmd.sh @@ -3,7 +3,7 @@ # # generate configuration, cert, and password if this is the first run # -if [ ! -f /var/tmp/zipline_init ] ; then +if [ ! -f /var/tmp/catalyst_init ] ; then jupyter notebook --generate-config if [ ! -f ${SSL_CERT_PEM} ] ; then openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ @@ -11,7 +11,7 @@ if [ ! -f /var/tmp/zipline_init ] ; then -keyout ${SSL_CERT_KEY} -out ${SSL_CERT_PEM} fi echo "c.NotebookApp.password = ${PW_HASH}" >> ${CONFIG_PATH} - touch /var/tmp/zipline_init + touch /var/tmp/catalyst_init fi jupyter notebook -y --no-browser --notebook-dir=${PROJECT_DIR} \ diff --git a/etc/gen_type_stubs.py b/etc/gen_type_stubs.py index beb4461f..7f815041 100644 --- a/etc/gen_type_stubs.py +++ b/etc/gen_type_stubs.py @@ -2,7 +2,7 @@ import inspect from operator import attrgetter from textwrap import dedent -from zipline import api, TradingAlgorithm +from catalyst import api, TradingAlgorithm def main(): @@ -12,14 +12,14 @@ def main(): # explicitly importing. stub.write(dedent("""\ import collections - from zipline.assets import Asset, Equity, Future - from zipline.assets.futures import FutureChain - from zipline.finance.asset_restrictions import Restrictions - from zipline.finance.cancel_policy import CancelPolicy - from zipline.pipeline import Pipeline - from zipline.protocol import Order - from zipline.utils.events import EventRule - from zipline.utils.security_list import SecurityList + from catalyst.assets import Asset, Equity, Future + from catalyst.assets.futures import FutureChain + from catalyst.finance.asset_restrictions import Restrictions + from catalyst.finance.cancel_policy import CancelPolicy + from catalyst.pipeline import Pipeline + from catalyst.protocol import Order + from catalyst.utils.events import EventRule + from catalyst.utils.security_list import SecurityList """)) diff --git a/etc/git-hooks/pre-commit b/etc/git-hooks/pre-commit index c0642c84..2081fb02 100755 --- a/etc/git-hooks/pre-commit +++ b/etc/git-hooks/pre-commit @@ -18,7 +18,7 @@ set -e stash_result=$(git stash --keep-index) # Run flake8 linting -flake8 zipline tests +flake8 catalyst tests # Run unit tests nosetests -x diff --git a/etc/rebuild-cython.sh b/etc/rebuild-cython.sh index 49ffa1a7..4ed4a4e3 100755 --- a/etc/rebuild-cython.sh +++ b/etc/rebuild-cython.sh @@ -1,8 +1,8 @@ #!/bin/bash if [[ "$OSTYPE" == "darwin"* ]]; then - find -E zipline tests -regex '.*\.(c|so)' -exec rm {} + + find -E catalyst tests -regex '.*\.(c|so)' -exec rm {} + else - find zipline tests -regex '.*\.\(c\|so\)' -exec rm {} + + find catalyst tests -regex '.*\.\(c\|so\)' -exec rm {} + fi python setup.py build_ext --inplace diff --git a/etc/requirements.txt b/etc/requirements.txt index d05d16e4..17832707 100644 --- a/etc/requirements.txt +++ b/etc/requirements.txt @@ -42,7 +42,7 @@ contextlib2==0.4.0 # networkx requires decorator decorator==4.0.0 -# Graph algorithms used by zipline.pipeline +# Graph algorithms used by catalyst.pipeline networkx==1.9.1 # NumericalExpression pipeline terms. diff --git a/setup.cfg b/setup.cfg index 7b516d6b..5849db9e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -4,7 +4,7 @@ detailed-errors=1 with-ignore-docstrings=1 with-timer=1 timer-top-n=15 -cover-package=zipline +cover-package=catalyst with-doctest=1 testmatch=(?:^|[\\b_\\.-])[Tt]est(?!ing) @@ -17,7 +17,7 @@ description-file = README.rst [versioneer] VCS=git style=pep440 -versionfile_source=zipline/_version.py -versionfile_build=zipline/_version.py +versionfile_source=catalyst/_version.py +versionfile_build=catalyst/_version.py tag_prefix= -parentdir_prefix= zipline- +parentdir_prefix= catalyst- diff --git a/setup.py b/setup.py index 61f3d673..591d068f 100644 --- a/setup.py +++ b/setup.py @@ -81,39 +81,39 @@ class LazyBuildExtCommandClass(dict): def window_specialization(typename): """Make an extension for an AdjustedArrayWindow specialization.""" return Extension( - 'zipline.lib._{name}window'.format(name=typename), - ['zipline/lib/_{name}window.pyx'.format(name=typename)], - depends=['zipline/lib/_windowtemplate.pxi'], + 'catalyst.lib._{name}window'.format(name=typename), + ['catalyst/lib/_{name}window.pyx'.format(name=typename)], + depends=['catalyst/lib/_windowtemplate.pxi'], ) ext_modules = [ - Extension('zipline.assets._assets', ['zipline/assets/_assets.pyx']), - Extension('zipline.assets.continuous_futures', - ['zipline/assets/continuous_futures.pyx']), - Extension('zipline.lib.adjustment', ['zipline/lib/adjustment.pyx']), - Extension('zipline.lib._factorize', ['zipline/lib/_factorize.pyx']), + Extension('catalyst.assets._assets', ['catalyst/assets/_assets.pyx']), + Extension('catalyst.assets.continuous_futures', + ['catalyst/assets/continuous_futures.pyx']), + Extension('catalyst.lib.adjustment', ['catalyst/lib/adjustment.pyx']), + Extension('catalyst.lib._factorize', ['catalyst/lib/_factorize.pyx']), window_specialization('float64'), window_specialization('int64'), window_specialization('int64'), window_specialization('uint8'), window_specialization('label'), - Extension('zipline.lib.rank', ['zipline/lib/rank.pyx']), - Extension('zipline.data._equities', ['zipline/data/_equities.pyx']), - Extension('zipline.data._adjustments', ['zipline/data/_adjustments.pyx']), - Extension('zipline._protocol', ['zipline/_protocol.pyx']), - Extension('zipline.gens.sim_engine', ['zipline/gens/sim_engine.pyx']), + Extension('catalyst.lib.rank', ['catalyst/lib/rank.pyx']), + Extension('catalyst.data._equities', ['catalyst/data/_equities.pyx']), + Extension('catalyst.data._adjustments', ['catalyst/data/_adjustments.pyx']), + Extension('catalyst._protocol', ['catalyst/_protocol.pyx']), + Extension('catalyst.gens.sim_engine', ['catalyst/gens/sim_engine.pyx']), Extension( - 'zipline.data._minute_bar_internal', - ['zipline/data/_minute_bar_internal.pyx'] + 'catalyst.data._minute_bar_internal', + ['catalyst/data/_minute_bar_internal.pyx'] ), Extension( - 'zipline.utils.calendars._calendar_helpers', - ['zipline/utils/calendars/_calendar_helpers.pyx'] + 'catalyst.utils.calendars._calendar_helpers', + ['catalyst/utils/calendars/_calendar_helpers.pyx'] ), Extension( - 'zipline.data._resample', - ['zipline/data/_resample.pyx'] + 'catalyst.data._resample', + ['catalyst/data/_resample.pyx'] ), ] @@ -278,24 +278,24 @@ conditional_arguments = { } setup( - name='zipline', - url="http://zipline.io", + name='catalyst', + url='https://enigma.co', version=versioneer.get_version(), cmdclass=LazyBuildExtCommandClass(versioneer.get_cmdclass()), description='A backtester for financial algorithms.', entry_points={ 'console_scripts': [ - 'zipline = zipline.__main__:main', + 'catalyst = catalyst.__main__:main', ], }, - author='Quantopian Inc.', - author_email='opensource@quantopian.com', - packages=find_packages(include=['zipline', 'zipline.*']), + author='Enigma MPC, Inc.', + author_email='dev@enigma.co', + packages=find_packages(include=['catalyst', 'catalyst.*']), ext_modules=ext_modules, include_package_data=True, package_data={root.replace(os.sep, '.'): ['*.pyi', '*.pyx', '*.pxi', '*.pxd'] - for root, dirnames, filenames in os.walk('zipline') + for root, dirnames, filenames in os.walk('catalyst') if '__pycache__' not in root}, license='Apache 2.0', classifiers=[ diff --git a/vagrant_init.sh b/vagrant_init.sh index 397385aa..5f692d0f 100644 --- a/vagrant_init.sh +++ b/vagrant_init.sh @@ -7,8 +7,8 @@ # no effort is made to use virtualenv/virtualenvwrapper # It is assumed that you have "vagrant up" -# from the root of the zipline github checkout. -# This will put the zipline code in the +# from the root of the catalyst github checkout. +# This will put the catalyst code in the # /vagrant folder in the system. set -e @@ -42,12 +42,12 @@ cd ../ echo "Installing pip and setuptools..." | tee -a "$VAGRANT_LOG" wget https://bootstrap.pypa.io/get-pip.py 2>&1 | tee -a "$VAGRANT_LOG" python get-pip.py 2>&1 >> "$VAGRANT_LOG" | tee -a "$VAGRANT_LOG" -echo "Installing zipline python dependencies..." | tee -a "$VAGRANT_LOG" +echo "Installing catalyst python dependencies..." | tee -a "$VAGRANT_LOG" /vagrant/etc/ordered_pip.sh /vagrant/etc/requirements.txt 2>&1 | tee -a "$VAGRANT_LOG" -echo "Installing zipline extra python dependencies..." | tee -a "$VAGRANT_LOG" +echo "Installing catalyst extra python dependencies..." | tee -a "$VAGRANT_LOG" pip install -r /vagrant/etc/requirements_dev.txt -r /vagrant/etc/requirements_blaze.txt 2>&1 | tee -a "$VAGRANT_LOG" -echo "Installing zipline package itself..." | tee -a "$VAGRANT_LOG" +echo "Installing catalyst package itself..." | tee -a "$VAGRANT_LOG" # Clean out any cython assets. The pip install re-builds them. find /vagrant/ -type f -name '*.c' -exec rm {} + pip install -e /vagrant[all] 2>&1 | tee -a "$VAGRANT_LOG" -echo "Finished! zipline repo is in '/vagrant'." | tee -a "$VAGRANT_LOG" +echo "Finished! catalyst repo is in '/vagrant'." | tee -a "$VAGRANT_LOG" diff --git a/zipline/data/bundles/catalyst.py b/zipline/data/bundles/catalyst.py deleted file mode 100644 index f7b2ca2a..00000000 --- a/zipline/data/bundles/catalyst.py +++ /dev/null @@ -1,44 +0,0 @@ -import tarfile - -from .quandl import ( - ONE_MEGABYTE, - download_with_progress, - download_without_progress, -) - -from . import core as bundles - -CATALYST_URL = ( - 'https://s3.amazonaws.com/quantopian-public-zipline-data/quandl' -) - -@bundles.register( - 'catalyst', - calendar_name='NYSE', - minutes_per_day=390, - create_writers=False, -) -def catalyst_bundle(environ, - asset_db_writer, - minute_bar_writer, - daily_bar_writer, - adjustment_writer, - calendar, - start_session, - end_session, - cache, - show_progress, - output_dir): - if show_progress: - data = download_with_progress( - CATALYST_URL, - chunk_size=ONE_MEGABYTE, - label="Downloading Bundle: catalyst", - ) - else: - data = download_without_progress(CATALYST_URL) - - with tarfile.open('r', fileobj=data) as tar: - if show_progress: - print("Writing data to %s." % output_dir) - tar.extractall(output_dir)