f/reports/xcheck_official/cvsix.json
Greg Pomerantz e20b2e30cb Double-listing: layout-agnostic invariants, whole-dump sweep, bulk corrections
Yahoo changed the shape of its event feed between downloads: a 2026-08
re-download of CVIX/JLPSX shows it no longer returns capitalGain events at
all (the dividend stream still carries the year-end rows), while stale
tickers now return no events at all. File-specific remove ops therefore
break silently on the next re-download, so the double-listing fix is now
expressed as layout-agnostic invariants applied at bundle assembly
(idempotent, hold for full and incremental builds):

  dedup: [[date, amount]]      keep at most one copy of a same-date/
      same-amount cross-file pair (the capitalGain copy when both present)
  drop_capg_copy: [date]       the capitalGain row on that date is the
      spurious copy of the dividend row

- data.py: apply_invariants() at bundle assembly + pure dedupe_event_rows()
  shared with verify_official and tests (8 new test cases, 22 passing)
- JLPSX/CVSIX corrections rewritten with the invariants (2019-08-08 now
  keeps the dividend amount per the verified same-date pattern)
- scripts/scan_double_listing.py: whole-dump sweep -> reports/double_listing/
  6,421 symbols scanned: 1,218 with same-amount pairs (6,589), 1,631 with
  differing-amount pairs (12,366, reported only - not distinguishable from
  legitimate same-day div+capg without per-fund official data), 83 with
  repeated within-file rows (ingest keep-last already collapses them)
- scripts/apply_dedup_corrections.py: bulk 'dedup' corrections for the
  1,218 same-amount symbols (1,212 new files; the 6 verified funds keep
  their explicit, official-verified corrections)
- scripts/check_corrections.py: integrity check for every correction op
  against the actual (frozen) files - caught a mis-filed CVSIX entry
2026-08-31 21:00:36 -04:00

104 lines
1.5 KiB
JSON

{
"symbol": "cvsix",
"name": "Calamos Market Neutral Income A",
"verdict": "ok",
"class": "?",
"mean_rel_err": 0.0384,
"nav_check": {
"date": "2021-10-29",
"official": 14.63,
"local": 14.63,
"rel": 0.0,
"ok": true
},
"periods": [
{
"period": "current",
"end": "2026-04-30",
"official": 0.16,
"local": 0.159,
"diff": 0.001,
"ok": true,
"unbounded": false
},
{
"period": "fy",
"end": "2025-10-31",
"official": 0.25,
"local": 0.252,
"diff": -0.002,
"ok": true,
"unbounded": false
},
{
"period": "fy",
"end": "2024-10-31",
"official": 0.79,
"local": 0.792,
"diff": -0.002,
"ok": true,
"unbounded": false
},
{
"period": "fy",
"end": "2023-10-31",
"official": 0.2,
"local": 0.198,
"diff": 0.002,
"ok": true,
"unbounded": false
},
{
"period": "fy",
"end": "2022-10-31",
"official": 0.03,
"local": 0.026,
"diff": 0.004,
"ok": true,
"unbounded": false
},
{
"period": "fy",
"end": "2021-10-31",
"official": 0.06,
"local": 16.306,
"diff": -16.246,
"ok": false,
"unbounded": true
}
],
"other_classes": [
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?"
],
"filing": {
"accession": "0001104659-26-080185",
"doc": "tm2618831d1_ncsrs.htm",
"period_end": "2026-04-30",
"display": "CALAMOS INVESTMENT TRUST/IL (CIK 0000826732)",
"ciks": [
"0000826732"
],
"score": 19.313068
},
"how": "ticker",
"n_bytes": 25711754
}