'Compute `pipeline`, providing values for at least `start_date`.
Produces a DataFrame containing data for days between `start_date` and
`end_date`, where `end_date` is defined by:
`end_date = min(start_date + chunksize trading days,
simulation_end)`
Returns
(data, valid_until) : tuple (pd.DataFrame, pd.Timestamp)
See Also
PipelineEngine.run_pipeline'

def _run_pipeline(self, pipeline, start_session, chunksize):

    sessions = self.trading_calendar.all_sessions
    start_date_loc = sessions.get_loc(start_session)
    sim_end_session = self.sim_params.end_session
    end_loc = min((start_date_loc + chunksize), sessions.get_loc(sim_end_session))
    end_session = sessions[end_loc]
    return (self.engine.run_pipeline(pipeline, start_session, end_session), end_session)
