'Compute and cache a recarry of asset lifetimes.'

def _compute_asset_lifetimes(self):

    equities_cols = self.equities.c
    buf = np.array(tuple(sa.select((equities_cols.sid, equities_cols.start_date, equities_cols.end_date)).execute()), dtype='<f8')
    lifetimes = np.recarray(buf=buf, shape=(len(buf),), dtype=[('sid', '<f8'), ('start', '<f8'), ('end', '<f8')])
    start = lifetimes.start
    end = lifetimes.end
    start[np.isnan(start)] = 0
    end[np.isnan(end)] = np.iinfo(int).max
    return lifetimes.astype([('sid', '<i8'), ('start', '<i8'), ('end', '<i8')])
