q.label.vertical_barriers maps each event to its maximum allowed outcome time. Integer horizons count observations; timedelta-like horizons choose the first observed timestamp at or beyond the requested duration.
Events without enough future data receive a missing barrier rather than being silently shortened.
A 10-bar horizon advances over available observations. A 30-day horizon uses elapsed calendar time and then snaps forward to the next observation. The two contracts intentionally differ around weekends, holidays, and missing sessions.