JLPSX showed a bogus +29.3%/-22.9% 3-day wiggle in Dec 2020: Yahoo dated
the 6.824 year-end cap-gain distribution on the 12-11 record date but the
market went ex-div on 12-14 (close 30.10 -> 23.22), so the raw Adj Close
column pre-applied the adjustment 3 days before the price actually fell.
New 'history' correction op ({date: {col: value}}) patches individual OHLC
cells at bundle assembly (full build, incremental, and correction-changed
recompute paths); check_corrections validates dates/columns; 4 new tests.
scripts/scan_adj_misalign.py finds the artifact set-wide: 481 hits on 278
symbols, overwhelmingly December year-end distributions of value funds
(JLPSX's class of fund). scripts/fix_adj_misalign.py repairs it
arithmetic-only (rescale adj in [event, ex-div) by (1-f); cumulative
returns unchanged, cross-checked implied dist vs the price drop). Applied
to the only curated-fund hit (JLPSX) and its sister class JLPYX (implied
dist 6.824 both = official amount; ex-div 2020-12-14). The remaining ~276
symbols are reported in reports/adj_misalign/scan.md for a bulk run.
76 lines
2.8 KiB
JSON
76 lines
2.8 KiB
JSON
{
|
|
"symbol": "jlpsx",
|
|
"name": "JPMorgan U.S. Large Cap Core Plus Fund (I shares)",
|
|
"note": "Yahoo listed the year-end capital-gain distribution in BOTH the dividend and capitalGains event files. Expressed as layout-agnostic invariants because a 2026-08 re-download shows Yahoo no longer returns capitalGain events for this fund at all (the dividend stream still carries the year-end rows): 'dedup' keeps at most one copy of each (date, amount) (the capitalGain copy when both files carry it; the lone dividend copy otherwise); 'drop_capg_copy' drops the spurious capitalGain row on a date where the dividend row is the true distribution (any amount). Official per-share data (JPMorgan 497, filed 2025-11-03, Class I, FYE June 30): FY2025 1.37, FY2024 2.03, FY2023 4.86, FY2022 6.78, FY2021 6.89 - local sums after dedup match every one (1.368, 2.029, 4.859, 6.785, 6.889). 2006-12-15 (div 0.207 vs capg 0.141) and 2019-08-08 (div 4.138 vs capg 4.077) keep the dividend amount per the pattern confirmed on all other verified same-date pairs; pre-2012 years have no official totals (the 2021 497 is delisted from SEC Archives) - mechanism-inferred. 'history' patches the 2020-12-11 Adj Close cell: Yahoo dated the 6.824 distribution on the 12-11 record date but the market went ex-div on 2020-12-14 (close 30.10 -> 23.22, i.e. -6.88), so the raw Adj Close column spiked +29.3% on 12-11 and snapped back -22.9% on 12-14; setting 12-11 to the 12-10 value (11.247889) removes the bogus 3-day wiggle (cumulative return unchanged). adj-close repair: Yahoo dated a distribution on 2020-12-11 (record date) but the price went ex-div on 2020-12-14 (close 30.10 -> 23.22, drop ~6.824); the raw Adj Close column spiked +29.3% on 2020-12-11 and snapped back later. Cells in [2020-12-11, 2020-12-14) rescaled by (1-f) so the adjusted path is smooth; cumulative returns are unchanged. Mechanism: scripts/fix_adj_misalign.py, scan: reports/adj_misalign/scan.md.",
|
|
"verified": [
|
|
"FY2021-FY2025 exact match against 497 filed 2025-11-03 (accession 0001193125-25-261054, CIK 0000763852)"
|
|
],
|
|
"dedup": [
|
|
[
|
|
"2007-12-17",
|
|
0.654
|
|
],
|
|
[
|
|
"2012-12-13",
|
|
0.981
|
|
],
|
|
[
|
|
"2013-12-12",
|
|
2.312
|
|
],
|
|
[
|
|
"2014-12-12",
|
|
2.133
|
|
],
|
|
[
|
|
"2015-12-11",
|
|
2.415
|
|
],
|
|
[
|
|
"2016-12-14",
|
|
1.235
|
|
],
|
|
[
|
|
"2017-12-13",
|
|
4.123
|
|
],
|
|
[
|
|
"2018-12-12",
|
|
4.117
|
|
],
|
|
[
|
|
"2019-12-12",
|
|
1.517
|
|
],
|
|
[
|
|
"2020-12-11",
|
|
6.824
|
|
],
|
|
[
|
|
"2021-12-13",
|
|
6.785
|
|
],
|
|
[
|
|
"2022-12-13",
|
|
4.841
|
|
],
|
|
[
|
|
"2023-12-13",
|
|
1.989
|
|
],
|
|
[
|
|
"2024-12-12",
|
|
1.347
|
|
]
|
|
],
|
|
"drop_capg_copy": [
|
|
"2006-12-15",
|
|
"2019-08-08"
|
|
],
|
|
"history": {
|
|
"2020-12-11": {
|
|
"Adj Close": 11.247889
|
|
}
|
|
}
|
|
}
|