def resolve(self, asset_finder, start_date, end_date): """ Resolve inputs into values to be passed to TradingAlgorithm. Returns a pair of ``(benchmark_sid, benchmark_returns)`` with at most one non-None value. Both values may be None if no benchmark source has been configured. Parameters ---------- asset_finder : zipline.assets.AssetFinder Asset finder for the algorithm to be run. start_date : pd.Timestamp Start date of the algorithm to be run. end_date : pd.Timestamp End date of the algorithm to be run. Returns ------- benchmark_sid : int Sid to use as benchmark. benchmark_returns : pd.Series Series of returns to use as benchmark. """ if self.benchmark_returns is not None: benchmark_sid = None benchmark_returns = self.benchmark_returns elif self.benchmark_file is not None: benchmark_sid = None benchmark_returns = get_benchmark_returns_from_file( self.benchmark_file, ) elif self.benchmark_sid is not None: benchmark_sid = self.benchmark_sid benchmark_returns = None elif self.no_benchmark: benchmark_sid = None benchmark_returns = self._zero_benchmark_returns( start_date=start_date, end_date=end_date, ) else: benchmark_sid = None benchmark_returns = None return benchmark_sid, benchmark_returns
def resolve(self, asset_finder, start_date, end_date): """ Resolve inputs into values to be passed to TradingAlgorithm. Returns a pair of ``(benchmark_sid, benchmark_returns)`` with at most one non-None value. Both values may be None if no benchmark source has been configured. Parameters ---------- asset_finder : zipline.assets.AssetFinder Asset finder for the algorithm to be run. start_date : pd.Timestamp Start date of the algorithm to be run. end_date : pd.Timestamp End date of the algorithm to be run. Returns ------- benchmark_sid : int Sid to use as benchmark. benchmark_returns : pd.Series Series of returns to use as benchmark. """ if self.benchmark_returns is not None: benchmark_sid = None benchmark_returns = self.benchmark_returns elif self.benchmark_file is not None: benchmark_sid = None benchmark_returns = get_benchmark_returns_from_file( self.benchmark_file, ) elif self.benchmark_sid is not None: benchmark_sid = self.benchmark_sid benchmark_returns = None elif self.benchmark_symbol is not None: try: asset = asset_finder.lookup_symbol( self.benchmark_symbol, as_of_date=end_date, ) benchmark_sid = asset.sid benchmark_returns = None except SymbolNotFound: raise _RunAlgoError( "Symbol %s as a benchmark not found in this bundle.") else: if not self.no_benchmark: log.warn("No benchmark configured. " "Assuming algorithm calls set_benchmark.") log.warn( "Pass --benchmark-sid, --benchmark-symbol, or" " --benchmark-file to set a source of benchmark returns.") log.warn( "Pass --no-benchmark to use a dummy benchmark " "of zero returns.", ) benchmark_sid = None benchmark_returns = None else: benchmark_sid = None benchmark_returns = self._zero_benchmark_returns( start_date=start_date, end_date=end_date, ) return benchmark_sid, benchmark_returns