jgrusewski
882dd0e7eb
feat(bybit): loud close cross-section freshness guard (no more silent freeze)
...
Add bybit_close_cross_section_staleness() + wire it into
refresh_bybit_warehouse: after the nightly ingests, compute the newest
'close' day whose cross-section covers >= min_fraction of the universe and,
if it lags today by more than max_lag_days (~2), emit a loud context.log.error
(the data-layer analog of the tracker re-inception guard). Does NOT hard-crash
— the run completes and the staleness numbers are returned in the summary for
monitoring. The Dagster bybit_warehouse_refresh asset passes context.log.error.
Requiring a HEALTHY symbol count (not just any row on the newest day) means a
single brand-new symbol landing today cannot mask an otherwise-frozen book —
the exact silent freeze the perp symbol-skip caused (close had 2 symbols on
06-30 vs 296 for spot_close).
Also adds the forward-track perp-leg date-resume advance test (mirrors the
spot-leg test) and the two freshness-guard tests.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-01 11:06:43 +02:00
..
2026-06-18 09:09:01 +02:00
2026-06-18 23:54:17 +02:00
2026-06-27 12:06:50 +02:00
2026-06-18 18:39:24 +02:00
2026-06-18 18:39:24 +02:00
2026-06-19 00:22:46 +02:00
2026-06-19 00:18:14 +02:00
2026-06-19 08:12:51 +02:00
2026-06-19 23:16:17 +02:00
2026-06-26 14:44:30 +02:00
2026-06-24 14:12:22 +02:00
2026-06-24 14:39:12 +02:00
2026-06-27 09:49:37 +02:00
2026-06-23 23:31:11 +02:00
2026-06-23 20:15:56 +02:00
2026-06-24 08:29:30 +02:00
2026-06-24 18:10:36 +02:00
2026-06-24 08:48:33 +02:00
2026-07-01 11:06:43 +02:00
2026-06-28 11:29:35 +02:00
2026-06-23 22:45:14 +02:00
2026-06-23 19:53:43 +02:00
2026-06-23 23:31:11 +02:00
2026-06-24 14:12:22 +02:00
2026-06-24 19:05:07 +02:00
2026-06-24 11:46:40 +02:00
2026-07-01 11:06:32 +02:00
2026-06-23 23:31:11 +02:00
2026-06-25 18:20:52 +02:00
2026-06-23 23:31:11 +02:00
2026-06-28 11:29:35 +02:00
2026-06-26 22:18:09 +02:00
2026-06-24 19:05:07 +02:00
2026-06-24 19:05:07 +02:00
2026-06-28 11:29:35 +02:00
2026-06-24 19:05:07 +02:00
2026-06-24 16:54:38 +02:00
2026-06-25 21:38:26 +02:00
2026-06-25 21:38:26 +02:00
2026-06-25 16:32:53 +02:00
2026-06-28 13:45:10 +02:00
2026-06-26 00:46:10 +02:00
2026-06-25 16:32:53 +02:00
2026-06-24 17:53:52 +02:00
2026-06-24 14:12:22 +02:00
2026-06-24 15:00:48 +02:00
2026-06-27 09:18:52 +02:00
2026-06-25 01:39:07 +02:00
2026-06-24 08:29:30 +02:00
2026-06-24 13:05:37 +02:00
2026-06-28 16:17:52 +02:00
2026-06-28 14:23:47 +02:00
2026-06-26 22:46:40 +02:00
2026-06-24 08:29:30 +02:00
2026-06-28 11:29:35 +02:00
2026-06-24 13:49:08 +02:00
2026-06-24 18:38:57 +02:00
2026-06-26 08:44:28 +02:00
2026-06-15 11:16:25 +02:00
2026-06-27 09:18:52 +02:00
2026-06-25 22:25:08 +02:00
2026-06-26 00:40:12 +02:00
2026-06-24 22:24:56 +02:00
2026-06-14 17:39:29 +02:00
2026-06-19 19:38:19 +02:00
2026-06-22 12:23:33 +02:00
2026-06-25 23:16:18 +02:00
2026-06-18 23:02:00 +02:00
2026-06-22 15:00:00 +02:00
2026-06-20 22:53:03 +02:00
2026-06-23 10:53:15 +02:00
2026-06-26 15:58:16 +02:00
2026-06-28 13:54:06 +02:00
2026-06-28 12:34:12 +02:00
2026-06-28 13:54:06 +02:00
2026-06-13 09:35:18 +02:00
2026-06-14 23:40:56 +02:00
2026-06-24 19:44:25 +02:00
2026-06-18 10:16:27 +02:00
2026-06-18 18:48:41 +02:00
2026-06-16 22:27:26 +02:00
2026-06-09 13:52:32 +02:00
2026-06-13 02:01:04 +02:00
2026-06-14 12:30:07 +02:00
2026-07-01 09:43:33 +02:00
2026-06-26 00:46:10 +02:00
2026-06-26 00:46:10 +02:00
2026-06-19 23:22:15 +02:00
2026-06-19 20:11:02 +02:00
2026-06-26 15:29:19 +02:00
2026-06-22 12:31:37 +02:00
2026-06-17 01:37:29 +02:00
2026-06-23 13:38:51 +02:00
2026-06-16 08:38:29 +02:00
2026-06-26 20:48:07 +02:00
2026-06-15 11:40:39 +02:00
2026-06-28 14:39:58 +02:00
2026-06-27 16:12:37 +02:00
2026-06-23 19:32:08 +02:00
2026-06-23 19:32:08 +02:00
2026-06-22 10:17:46 +02:00
2026-06-22 10:05:21 +02:00
2026-06-22 22:11:11 +02:00
2026-06-22 17:00:42 +02:00
2026-06-22 09:59:02 +02:00
2026-06-28 21:29:02 +02:00
2026-06-21 21:06:51 +02:00
2026-06-25 16:32:53 +02:00
2026-06-21 21:19:59 +02:00
2026-06-22 08:15:31 +02:00
2026-06-28 23:32:37 +02:00
2026-06-21 23:39:40 +02:00
2026-06-23 18:36:26 +02:00
2026-06-23 15:44:16 +02:00
2026-06-18 20:56:50 +02:00
2026-06-22 10:11:39 +02:00
2026-06-26 09:25:27 +02:00
2026-06-09 16:22:59 +02:00
2026-06-26 00:46:10 +02:00
2026-06-24 18:20:11 +02:00
2026-06-09 12:21:47 +02:00
2026-06-27 09:18:52 +02:00
2026-06-25 10:39:42 +02:00
2026-06-22 15:25:22 +02:00
2026-06-26 12:16:10 +02:00
2026-06-26 11:35:58 +02:00
2026-06-26 12:57:18 +02:00
2026-06-23 01:17:38 +02:00
2026-06-21 10:22:43 +02:00
2026-06-16 08:50:25 +02:00
2026-06-16 17:35:51 +02:00
2026-06-16 17:45:46 +02:00
2026-06-23 22:04:43 +02:00
2026-06-26 00:32:46 +02:00
2026-06-19 20:11:02 +02:00
2026-06-23 01:17:38 +02:00
2026-06-28 11:29:35 +02:00
2026-06-24 09:34:45 +02:00
2026-06-24 09:34:45 +02:00
2026-06-24 09:34:45 +02:00
2026-06-20 20:21:20 +02:00
2026-06-21 22:23:51 +02:00
2026-06-24 20:40:09 +02:00
2026-06-24 20:01:34 +02:00
2026-06-15 19:20:30 +02:00
2026-06-26 00:32:46 +02:00
2026-06-15 00:34:55 +02:00
2026-06-23 16:33:25 +02:00
2026-06-27 14:30:54 +02:00
2026-06-23 22:34:13 +02:00
2026-06-26 08:44:28 +02:00
2026-06-28 21:48:33 +02:00
2026-06-28 21:31:51 +02:00
2026-06-22 12:37:37 +02:00
2026-06-19 07:45:45 +02:00
2026-06-26 00:46:10 +02:00