'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, fields, start_dt, end_dt, sids):

    start_idx = self._find_position_of_minute(start_dt)
    end_idx = self._find_position_of_minute(end_dt)
    num_minutes = ((end_idx - start_idx) + 1)
    results = []
    indices_to_exclude = self._exclusion_indices_for_range(start_idx, end_idx)
    if (indices_to_exclude is not None):
        for (excl_start, excl_stop) in indices_to_exclude:
            length = ((excl_stop - excl_start) + 1)
            num_minutes -= length
    shape = (num_minutes, len(sids))
    for field in fields:
        if (field != 'volume'):
            out = np.full(shape, np.nan)
        else:
            out = np.zeros(shape, dtype=np.uint32)
        for (i, sid) in enumerate(sids):
            carray = self._open_minute_file(field, sid)
            values = carray[start_idx:(end_idx + 1)]
            if (indices_to_exclude is not None):
                for (excl_start, excl_stop) in indices_to_exclude[::(-1)]:
                    excl_slice = np.s_[(excl_start - start_idx):((excl_stop - start_idx) + 1)]
                    values = np.delete(values, excl_slice)
            where = (values != 0)
            if (field != 'volume'):
                out[:len(where), i][where] = (values[where] * self._ohlc_ratio_inverse_for_sid(sid))
            else:
                out[:len(where), i][where] = values[where]
        results.append(out)
    return results
