fundlab/xcheck.py - for each screen candidate, resolve the fund's OWN registrant CIK (browse-edgar; the 497-cover CIK is the family/trust), get the exact series name for the ticker (the only reliable disambiguator between sibling funds), walk the 4 most recent NPORT-P filing dates, and parse holdings from the interactive NPORT XML (primary_doc.xml at the accession root - NOT the XSL-rendered view the submissions API points at). Exact seriesName match > best htm exhibit parse. Buckets from the authoritative assetCat+issuerCat codes (ABS-O, ABS-CBDO, DBT+UST/CORP/MUN/NUSS, LON, STIV, RA, EC+RF=fund, ...), not position-name keywords. Resumable; raw filings cached under nport_cache/raw/ (gitignored). nport.py - _SECTION gains the "INVESTMENT PORTFOLIO (unaudited)" variant (NPORT-EX Sch-F files); find_section/build gain a frac token-tolerance param (Yahoo names drift from filing names); CMBS/ABS bucket gains CLO/CBDO/DAC terms. app Fund Lab - "N-PORT cross-check" expander: per-candidate table (as-of, n, t5, top code-bucket, #1 position) + per-fund holdings detail. RESEARCH.md - cross-check verdicts. 21/22 resolved (qcmmrx is an MMF, no holdings). The screen's top names are REAL: - hmezx/mervx = genuine merger arb (equity in deal targets + escrow) - egrix = 100% wrapper in one macro managed portfolio (underlying not NPORT-disclosed); etsix = fund of EV internal multi-strat accounts - wmnux = discounted/zero-coupon corporate bonds + equity swaps (the "equity names" are bond issuers/swap underlyings) - scfzx/rctix/aflix = securitized credit/CLO/distressed/levered loans - hicox/fhmix/usmsx/btmix (munis), aguax/femdx (EM sovereign), anglx (agency MBS), lpxax (rotated out of prefs into bank/financial debt) = genuine missing-factor exposures the 35-sleeve model lacks - fhcox/dultx/safex = short-duration carry (a short-duration sleeve would explain them) tests/test_fundlab.py - test_xcheck (14 checks): parse_interactive, code buckets, name-match normalization, series-name disambiguation. Also: untrack fundlab/streamlit.log; gitignore raw/ + xcheck_run.log. 84 fundlab / 32 app / 14 data tests pass.
51 lines
713 B
JSON
51 lines
713 B
JSON
{
|
|
"sym": "etsix",
|
|
"as_of": "June 30, 2026",
|
|
"net_assets": null,
|
|
"n_positions": 2,
|
|
"categories": [
|
|
{
|
|
"name": "Unaudited) Affiliated Investment Funds",
|
|
"pct": 2.0
|
|
},
|
|
{
|
|
"name": "Asset-Backed Securities",
|
|
"pct": 9.6
|
|
},
|
|
{
|
|
"name": "Class A,",
|
|
"pct": 5.24
|
|
},
|
|
{
|
|
"name": "Class C,",
|
|
"pct": 5.68
|
|
},
|
|
{
|
|
"name": "Class D,",
|
|
"pct": 6.75
|
|
},
|
|
{
|
|
"name": "DRR,",
|
|
"pct": 6.89
|
|
}
|
|
],
|
|
"buckets": [
|
|
{
|
|
"name": "Other",
|
|
"value": 86081415.0,
|
|
"pct": 100.0
|
|
}
|
|
],
|
|
"top": [
|
|
{
|
|
"text": "(identified cost $86,079,389)",
|
|
"value": 86079389.0,
|
|
"cat": "Affiliated Investment Funds"
|
|
},
|
|
{
|
|
"text": "June 30, 2026",
|
|
"value": 2026.0,
|
|
"cat": ""
|
|
}
|
|
]
|
|
} |