code: def run(ctx,
          algofile,
          algotext,
          define,
          data_frequency,
          capital_base,
          bundle,
          bundle_timestamp,
          start,
          end,
          output,
          trading_calendar,
          print_algo,
          metrics_set,
          local_namespace,
          blotter):
      
      # check that the start and end dates are passed correctly
      if start is None and end is None:
          # check both at the same time to avoid the case where a user
          # does not pass either of these and then passes the first only
          # to be told they need to pass the second argument also
          ctx.fail(
              "must specify dates with '-s' / '--start' and '-e' / '--end'",
          )
      if start is None:
          ctx.fail("must specify a start date with '-s' / '--start'")
      if end is None:
          ctx.fail("must specify an end date with '-e' / '--end'")
  
      if (algotext is not None) == (algofile is not None):
          ctx.fail(
              "must specify exactly one of '-f' / '--algofile' or"
              " '-t' / '--algotext'",
          )
  
      trading_calendar = get_calendar(trading_calendar)
  
      perf = _run(
          initialize=None,
          handle_data=None,
          before_trading_start=None,
          analyze=None,
          algofile=algofile,
          algotext=algotext,
          defines=define,
          data_frequency=data_frequency,
          capital_base=capital_base,
          bundle=bundle,
          bundle_timestamp=bundle_timestamp,
          start=start,
          end=end,
          output=output,
          trading_calendar=trading_calendar,
          print_algo=print_algo,
          metrics_set=metrics_set,
          local_namespace=local_namespace,
          environ=os.environ,
          blotter=blotter,
          benchmark_returns=None,
      )
  
      if output == '-':
          click.echo(str(perf))
      elif output != os.devnull:  # make the zipline magic not write any data
          perf.to_pickle(output)
  
      return perf
docs: Run a backtest for the given algorithm.