From 7aa04a2e1722cd71010efa013dc40d79a199e7b2 Mon Sep 17 00:00:00 2001 From: Scott Sanderson Date: Tue, 10 Nov 2015 11:07:25 -0500 Subject: [PATCH] ENH: Add pipeline.engine_from_files. --- zipline/pipeline/__init__.py | 42 ++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/zipline/pipeline/__init__.py b/zipline/pipeline/__init__.py index 6cddb7ea..451466b5 100644 --- a/zipline/pipeline/__init__.py +++ b/zipline/pipeline/__init__.py @@ -1,16 +1,54 @@ +from zipline.assets import AssetFinder + from .classifier import Classifier +from .engine import SimplePipelineEngine from .factors import Factor, CustomFactor from .filters import Filter from .term import Term from .graph import TermGraph from .pipeline import Pipeline +from .loaders import USEquityPricingLoader -__all__ = [ + +def engine_from_files(daily_bar_path, + adjustments_path, + asset_db_path, + calendar): + """ + Construct a SimplePipelineEngine from local filesystem resources. + + Parameters + ---------- + daily_bar_path : str + Path to pass to `BcolzDailyBarReader`. + adjustments_path : str + Path to pass to SQLiteAdjustmentReader. + asset_db_path : str + Path to pass to `AssetFinder`. + calendar : pd.DatetimeIndex + Calendar to use for the loader. + """ + loader = USEquityPricingLoader.from_files(daily_bar_path, adjustments_path) + + if not asset_db_path.startswith("sqlite:"): + asset_db_path = "sqlite:///" + asset_db_path + asset_finder = AssetFinder(asset_db_path) + + return SimplePipelineEngine( + lambda _: loader, + calendar, + asset_finder, + ) + + +__all__ = ( 'Classifier', 'CustomFactor', + 'engine_from_files', 'Factor', 'Filter', 'Pipeline', + 'SimplePipelineEngine', 'Term', 'TermGraph', -] +)