From 96dc1c37217123213a30290929d178a0982de306 Mon Sep 17 00:00:00 2001 From: Nathan Wolfe Date: Mon, 27 Jun 2016 16:45:16 -0400 Subject: [PATCH] BUG: Generate sim_params within run_algorithm, fix it for raw data Previously, run_algorithm caused an error if run on raw (non-bundle) data, because of uninitialized variables. Initializing those variables to None to allow run_algorithm to work with Panel data, etc. Also, run_algorithm did not create sim_params for the TradingAlgorithm instance it created; this kicked the can to TradingAlgorithm, which gets default sim_params with data_frequency 'daily'. To support minute bars, changing run_algorithm to create its own sim_params with the data_frequency specified in its arguments. --- zipline/utils/run_algo.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/zipline/utils/run_algo.py b/zipline/utils/run_algo.py index 8c590737..d72c3c96 100644 --- a/zipline/utils/run_algo.py +++ b/zipline/utils/run_algo.py @@ -21,6 +21,7 @@ from zipline.finance.trading import TradingEnvironment from zipline.pipeline.data import USEquityPricing from zipline.pipeline.loaders import USEquityPricingLoader from zipline.utils.calendars import get_calendar +from zipline.utils.factory import create_simulation_parameters import zipline.utils.paths as pth @@ -150,14 +151,21 @@ def _run(handle_data, raise ValueError( "No PipelineLoader registered for column %s." % column ) + else: + env = None + choose_loader = None perf = TradingAlgorithm( namespace=namespace, capital_base=capital_base, - start=start, - end=end, env=env, get_pipeline_loader=choose_loader, + sim_params=create_simulation_parameters( + start=start, + end=end, + capital_base=capital_base, + data_frequency=data_frequency, + ), **{ 'initialize': initialize, 'handle_data': handle_data, @@ -314,8 +322,8 @@ def run_algorithm(start, load_extensions(default_extension, extensions, strict_extensions, environ) non_none_data = valfilter(bool, { - 'data': data, - 'bundle': bundle, + 'data': data is not None, + 'bundle': bundle is not None, }) if not non_none_data: # if neither data nor bundle are passed use 'quantopian-quandl'