f/overrides/event-backup/ctt-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

675 B

1DateDividends
22014-02-260.110000
32014-05-280.110000
42014-08-270.125000
52014-11-240.125000
62015-02-260.125000
72015-05-270.125000
82015-08-260.125000
92015-11-240.125000
102016-02-250.125000
112016-05-250.135000
122016-08-260.135000
132016-11-160.135000
142017-02-240.135000
152017-05-260.135000
162017-08-280.135000
172017-11-290.135000
182018-02-270.135000
192018-05-300.135000
202018-08-290.135000
212018-11-290.135000
222019-02-270.135000
232019-05-300.135000
242019-08-290.135000
252019-11-250.135000
262020-02-270.135000
272020-05-280.135000
282020-08-280.135000
292020-11-270.135000
302021-02-250.135000
312021-05-270.135000
322021-08-300.135000
332021-11-290.075000
342022-02-250.075000