fundlab/rocdetect.py: for a fund's latest N-CSR annual report, parses the per-share "Financial Highlights" distribution table (NII / gains / (tax) return of capital / total), with whitespace normalization, dollar-basis and fiscal-year-column rejection, per-column arithmetic placement of short rows (NII+gains+ROC==total), and family-report disambiguation by current-NAV match. SEC 503 backoff, per-fund cache in roc_cache/. Verified over the 38 core funds: - HMEZX: 18.3% of 5y distributions were return of capital (0.62 + 0.37 per share in 2 of 5 fiscal years) - reinforces the IRA placement. - 17 funds verified zero ROC (AFLIX, ANGLX, ATESX, BTMIX, the EV macro funds, FHCOX/FHMIX, LCORX/LCRIX, PMAIX/PMFKX, SVARX, WMNUX). - 14 unverified (non-standard report layouts - prototype parser), PMORX/QCMMRX tickers not EDGAR-resolvable. Also verified (form-type history on EDGAR): CVSIX, QSPNX, MBXIX, ATRFX, ATESX, EAGMX, PBAIX, WISEX, EBSAX all file NPORT-P + N-CSR + 497 -> registered RICs, not pass-throughs; the whole 497-filer universe is registered, so no candidate can pass through capital losses. Proof case for ROC: PGSIX per-share table shows a tax return-of-capital line and NAV eroded 11.87 -> 7.88 (-34%) over 5 fiscal years while paying out every year. RESEARCH.md: full write-up. No app change (analysis artifact).
40 lines
435 B
JSON
40 lines
435 B
JSON
{
|
|
"sym": "BTMIX",
|
|
"cik": "0001282693",
|
|
"trust": "BAIRD FUNDS INC",
|
|
"filing": "2026-03-04",
|
|
"table": {
|
|
"nii": [
|
|
-0.31,
|
|
-0.29,
|
|
-0.25,
|
|
-0.13,
|
|
-0.09
|
|
],
|
|
"gains": [],
|
|
"roc": [
|
|
0.0,
|
|
0.0,
|
|
0.0,
|
|
0.0,
|
|
0.0
|
|
],
|
|
"tot": [
|
|
-0.31,
|
|
-0.29,
|
|
-0.25,
|
|
-0.13,
|
|
-0.09
|
|
],
|
|
"nav": [
|
|
10.09,
|
|
9.96,
|
|
9.96,
|
|
9.83,
|
|
10.38
|
|
],
|
|
"ncols": 5
|
|
},
|
|
"roc_share_5y": -0.0,
|
|
"nav_change_5y": -0.028
|
|
} |