'Parameters
fields : list of str
\'open\', \'high\', \'low\', \'close\', or \'volume\'
start_dt: Timestamp
Beginning of the window range.
end_dt: Timestamp
End of the window range.
sids : list of int
The asset identifiers in the window.
Returns
list of np.ndarray
A list with an entry per field of ndarrays with shape
(minutes in range, sids) with a dtype of float64, containing the
values for the respective field over start and end dt range.'

def load_raw_arrays(self, columns, start_date, end_date, assets):

    rolls_by_asset = {}
    tc = self.trading_calendar
    start_session = tc.minute_to_session_label(start_date)
    end_session = tc.minute_to_session_label(end_date)
    for asset in assets:
        rf = self._roll_finders[asset.roll_style]
        rolls_by_asset[asset] = rf.get_rolls(asset.root_symbol, start_session, end_session, asset.offset)
    sessions = tc.sessions_in_range(start_date, end_date)
    minutes = tc.minutes_in_range(start_date, end_date)
    num_minutes = len(minutes)
    shape = (num_minutes, len(assets))
    results = []
    partitions_by_asset = {}
    for asset in assets:
        partitions = []
        partitions_by_asset[asset] = partitions
        rolls = rolls_by_asset[asset]
        start = start_date
        for roll in rolls:
            (sid, roll_date) = roll
            start_loc = minutes.searchsorted(start)
            if (roll_date is not None):
                (_, end) = tc.open_and_close_for_session((roll_date - sessions.freq))
                end_loc = minutes.searchsorted(end)
            else:
                end = end_date
                end_loc = (len(minutes) - 1)
            partitions.append((sid, start, end, start_loc, end_loc))
            if (roll[(-1)] is not None):
                (start, _) = tc.open_and_close_for_session(tc.minute_to_session_label(minutes[(end_loc + 1)]))
    for column in columns:
        if (column != 'volume'):
            out = np.full(shape, np.nan)
        else:
            out = np.zeros(shape, dtype=np.uint32)
        for (i, asset) in enumerate(assets):
            partitions = partitions_by_asset[asset]
            for (sid, start, end, start_loc, end_loc) in partitions:
                if (column != 'sid'):
                    result = self._bar_reader.load_raw_arrays([column], start, end, [sid])[0][:, 0]
                else:
                    result = int(sid)
                out[start_loc:(end_loc + 1), i] = result
        results.append(out)
    return results
