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

646 B

1DateDividends
22013-03-010.0
32013-04-010.0
42013-05-010.0
52013-06-030.0
62013-07-010.0
72013-09-030.0
82013-10-010.0
92013-11-010.0
102013-12-020.0
112014-01-020.0
122014-02-030.0
132014-03-030.0
142014-04-010.0
152014-05-010.0
162016-11-010.0
172016-12-010.0
182017-11-010.005
192018-01-020.009
202018-03-010.013
212018-06-010.017
222018-07-020.006
232018-08-010.027
242018-09-040.036
252018-10-010.014
262018-11-010.025
272018-12-030.043
282019-01-020.053
292019-02-010.042
302019-03-010.049
312019-04-010.043
322019-05-010.054
332019-06-030.065
342019-07-010.048
352019-08-010.047
362019-09-030.049
372019-10-010.036
382019-11-010.035
392019-12-020.023
402020-01-020.029