f/overrides/event-backup/bmeax-dividend.csv
Greg Pomerantz 3c5bee96ce Clean multi-vintage 'ctime' files: 1,065 files, 2.2M stale rows
Some dump files carry a trailing 'ctime' column: an older pipeline
appended a FULL re-download of the symbol per download (up to ~28
vintages per date, 2019-2022). The consumer keeps the last row per date,
so it silently used stale (~2021) vintages where Yahoo later revised
values. scripts/clean_multivintage.py keeps, per date, the rows from the
newest ctime (event files keep distinct same-day amounts; history/split
keep the single newest row), drops the ctime column, sorts by date.
Applied to the data root and overrides/frozen (which carried the same
artifact): 1,065 files, 2,202,712 stale rows dropped.

Also: stripped 3 UTF-8 BOMs (teg/lo/krft), refreshed the event backup
with the cleaned files, and re-ran the double-listing scan: category C
(83 symbols, 18,636 repeated within-file rows) is fully explained by the
multi-vintage artifact and is now gone; A (6,589 pairs, corrected) and
B (12,366 pairs, open review list) are unchanged. Whole-set structural
QC after cleaning: 0 duplicate dates, 3 syms/15 rows of OHLC invariant
violations, 15 syms/2,897 rows of non-positive prices (mostly
long-delisted tickers), 8 unsorted files (reader sorts).
2026-08-31 22:25:02 -04:00

535 B

1DateDividends
21999-11-100.0
32000-11-130.0
42001-12-210.29
52002-10-310.044
62010-12-020.0
72011-12-120.0
82012-12-130.052
92013-12-130.0
102014-12-120.0
112015-12-110.0
122016-12-060.061
132017-07-200.0
142017-10-120.07
152017-12-040.278
162018-04-110.319
172018-07-190.284
182018-10-110.27
192018-12-060.267
202019-04-100.243
212019-07-180.223
222019-10-100.318
232019-12-050.26
242020-04-080.0
252020-04-300.081
262020-06-300.089
272020-07-310.094
282020-08-310.124
292020-09-300.131
302020-10-300.1
312020-11-300.106
322020-12-310.128
332021-01-290.093