N-PORT cross-check: verify top candidates' actual holdings

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.
This commit is contained in:
Greg Pomerantz 2026-08-27 12:43:17 -04:00
parent f68b239b9a
commit a09861f39f
26 changed files with 8046 additions and 26 deletions

3
.gitignore vendored
View File

@ -5,4 +5,7 @@ __pycache__/
settings.json
funds.json
fundlab/nport_cache/*.html
fundlab/nport_cache/raw/
fundlab/universe_cache/
fundlab/xcheck_run.log
fundlab/streamlit.log

59
app.py
View File

@ -778,6 +778,65 @@ with tab_fundlab:
except Exception as e: # noqa: BLE001
st.warning(f"cluster view unavailable: {e}")
# ---- N-PORT cross-check: what the top candidates actually hold ----
with st.expander(
"N-PORT cross-check - what the top candidates actually hold"):
_XC = _dc.RESULTS.parent / "xcheck_report.json"
if not _XC.exists():
st.info("No cross-check on file yet "
"(run `python -m fundlab.xcheck`).")
else:
from fundlab.xcheck import _fnum as _xfnum
_x = json.loads(_XC.read_text())
_x = {k: v for k, v in _x.items() if not v.get("error")}
st.caption(
"Each candidate's returns said 'alpha'; this checks the "
"filing. Holdings pulled from the fund's own NPORT-P, "
"matched by exact series name (so a sibling fund's "
"book is never shown). Buckets are keyword guesses on "
"position names - read the top positions.")
_xrows = []
for _s, _r in _x.items():
_b = ", ".join(f"{b['name']} {b['pct']:.0f}%"
for b in _r.get("buckets", [])[:3])
_top = _r.get("top", [{}])[0]
_tn = (_top.get("name") or _top.get("title")
or _top.get("text") or "")[:40]
_xrows.append({
"fund": _s.upper(), "as of": _r.get("as_of", ""),
"n": _r.get("n_positions", 0),
"t5": _r.get("t5"),
"top bucket": _b or "", "#1 position": _tn,
"note": _r.get("note", "")[:60]})
_xrows.sort(key=lambda r: -abs(r["t5"] or 0))
st.dataframe(pd.DataFrame(_xrows), width="stretch")
_xp = st.selectbox(
"fund holdings detail", list(_x.keys()),
key="fl_xc_pick")
_xr = _x[_xp]
st.markdown(f"**{_xp.upper()}** - {_xr.get('name','')} "
f"(as of {_xr.get('as_of')}, "
f"{_xr.get('n_positions')} positions, "
f"source: {_xr.get('src','')})")
if _xr.get("note"):
st.warning(_xr["note"])
if _xr.get("categories"):
st.dataframe(
pd.DataFrame(_xr["categories"]), width="stretch")
_xtop = []
for _p in _xr.get("top", []):
if "pct" in _p:
_pct = _xfnum(_p.get("pct"))
_xtop.append({
"pos": f"{_pct:+.2f}%" if _pct is not None else "?",
"name": (_p.get("name") or _p.get("title") or "")
[:60], "cat": _p.get("asset_cat", "")})
else:
_xtop.append({"pos": f"${_p['value']:,.0f}",
"name": _p.get("text", "")[:60],
"cat": _p.get("cat", "")})
st.dataframe(pd.DataFrame(_xtop), width="stretch")
_f = _FUNDS.get(_fl_pick, {})
_man = _MAN.get(_fl_pick, {})
st.subheader(f"{_f.get('name', _fl_pick)} · {_fl_pick.upper()}")

View File

@ -121,14 +121,94 @@ not a gate.
stats.
### Next iterations
1. [x] **Add missing factors + cluster by return driver** (this
iteration - fundlab/factors.py + fundlab/cluster.py).
2. N-PORT holdings cross-check on the top ~15 candidates (the v1
16-fund pipeline: edgar NPORT fetch + category buckets) to confirm
what the alpha funds actually hold.
1. [x] **Add missing factors + cluster by return driver**
(fundlab/factors.py + fundlab/cluster.py).
2. [x] **N-PORT holdings cross-check on the top candidates**
(fundlab/xcheck.py) - results below.
3. CEF universe (485/N-2 filers) - separate pass; CEFs have
premium/discount dynamics the NAV screen can't see.
### N-PORT cross-check (fundlab/xcheck.py, 2026-08-27)
21 of 22 top candidates resolved to their ACTUAL holdings (qcmmrx =
money-market account, no holdings to parse).
Pipeline hard-won facts:
- The fund's NPORT is usually filed under the fund's OWN registrant
(browse-edgar ticker->CIK), not the 497-cover family/trust CIK
(EV: trust 1552324 vs fund 745463). covers.json of the own CIK gives
the exact series name -> the ONLY reliable disambiguator between
sibling funds ("...Absolute Return Fund" vs "...Advantage Fund" share
6 of 7 words; token-overlap alone can't tell them apart).
- Big trusts file dozens of NPORT-Ps per quarter (one per fund); a
flat newest-30 window misses the fund's own filing. Take all filings
on the 4 most recent distinct dates.
- The submissions API points at the XSL-RENDERED view
(xslFormNPORT-P_X01/primary_doc.xml, a 5-20MB HTML page); the raw
schema data (seriesName/invstOrSec/netAssets) sits at
accession-root primary_doc.xml (5KB-1.5MB). Strip the xsl prefix.
- The raw file is malformed XHTML (CSS in <style>) - strict ET fails;
regex field extraction on the fixed schema works.
- nport._SECTION needed an "INVESTMENT PORTFOLIO (unaudited)" variant
(NPORT-EX Sch-F files); find_section got a frac token-tolerance
param (Yahoo names drift from filing names).
- EDGAR FTS lags ~1yr on recent NPORTs - don't use it for discovery.
- assetCat codes (ABS-O, ABS-CBDO, DBT, DIR, LON, STIV, RA, DE...) mix
asset types within a code - bucket by position NAME keywords, show
the raw code per row.
VERDICTS (screen t5 = 5y alpha t, full-sleeve R2):
Genuine idiosyncratic alpha (holdings confirm the returns story):
- hmezx t5+7.1: MERGER ARB - 73% equity in deal targets (Hologic,
Clearwater, Sealed Air, OneStream, Air Lease, CSG, EA, Semrush,
Masimo) + 22% escrow. Textbook.
- mervx t5+2.7: MERGER ARB - 83% equity targets + GS escrow.
- egrix t5+4.9: MACRO WRAPPER - 100% in "Global Macro Absolute Return
Advantage Portfolio" (managed acct; underlying NOT disclosed in
NPORT). Structure confirms pure macro; alpha is the SMA's.
- etsix t5+4.1: FOF of EV internal accounts - 76% "Global
Opportunities Portfolio" (multi-strat), 13% macro, +HI/EM.
Opaque but genuinely multi-strat.
- wmnux t5+6.9: ALTERNATIVE CREDIT - 67 discounted/zero-coupon
corporate bonds (Centrus 0%, Datadog 0%, Ormat 2.5%, N. Oil 3.6%) +
61 equity SWAPS (BNP counterparty: Tetra Tech, Akamai, AeroVironment,
Synaptics, Etsy...) = synthetic equity overlay. The "equity names" in
the book are bond issuers / swap underlyings, not stock holdings.
Alpha = credit selection + synthetic equity, not any sleeve.
- scfzx t5+8.4: SECURITIZED CREDIT - 672 pos: CLOs (Aurium, TikeHau,
Palmer Sq, Harot) + CMBS + ABS. Missing-factor sleeve.
- coiax t5+7.0: PRIVATE CREDIT / bank loans - 32% in 3 unlisted loan
blocks (RA) + bank ABS. Missing factor.
- rctix t5+5.6: DISTRESSED/turnaround credit - DISH DBS, Puerto Rico
GDB Debt Recovery, PR Commonwealth, Deutsche Bank, Cablevision,
Avant credit-card ABS. Genuinely idio credit.
Missing-factor (real assets absent from the 35-sleeve set; alpha =
exposure, not skill):
- hicox t5+3.0 (Colorado munis 98%), fhmix t5+3.4 (muni microshort),
usmsx t5+2.9 (ultrashort muni, 1092 pos), btmix t5+2.8 (short muni,
1832 pos), aguax t5+3.7 (EM developing-world debt: Ghana, Argentina,
Kenya, Angola + 46% EM equity), femdx t5+3.0 (EM sovereign: Brazil,
Ethiopia, Turkiye, Mexico, Venezuela), lpxax t5+2.6 (now mostly
bank/financial corporate debt - Truist, Citi, UBS, RBC, Enbridge,
HSBC, TD, Goldman - only 17 prefs remain; rotated out of prefs),
anglx t5+2.4 (agency MBS 63% + CMBS + senior loans),
aflix t5+3.9 (levered loans: Energy Transfer, Caesars, Nissan,
Aramark - semi-transparent), dmszx t5+3.5 (FOF + direct CLOs -
semi-transparent).
Short-duration CARRY artifacts (alpha ~= carry; a short-duration sleeve
would explain them - lower priority as complements):
- fhcox t5+6.3 (short bank notes: StanChart, MUFG, BNP, SG),
dultx t5+2.9 (ultrashort bank debt: Santander, Telstra, HSBC),
safex t5+2.7 (88% T-bills/Treas + MMF - pure cash carry).
CONCLUSION: the screen's top candidates are REAL - the highest t5 names
(hmezx, mervx, egrix, wmnux, scfzx, coiax, rctix) hold exactly what
their returns imply, and none is a data artifact. The "missing-factor"
funds (munis, EM debt, preferreds, agency MBS, securitized credit,
private credit) are genuine exposures the model lacks sleeves for.
The 3 carry funds are genuine but their excess is short-duration
carry, not alpha. Output: fundlab/xcheck_report.json +
fundlab/xcheck_run.log; app shows it under Fund Lab.
### Factor screen + clusters (iteration 2, 2026-08-27)
Design (per user: overinclusive, NO portfolio-corr screening - high
corr funds are REPLACEMENTS; group funds by return driver):

View File

@ -34,10 +34,12 @@ MANIFEST = Path(__file__).parent / "nport_manifest.json"
_MONTHS = ("January|February|March|April|May|June|July|August|September|"
"October|November|December")
# "<Fund name> ... Schedule of Investments" (variants)
# "<Fund name> ... Schedule of Investments" (variants; NPORT-EX / Sch-F
# exhibit files use "INVESTMENT PORTFOLIO (unaudited)" instead)
_SECTION = re.compile(
r"(?:CONSOLIDATED\s+)?(?:SCHEDULE\s+OF\s+(?:PORTFOLIO\s+)?INVESTMENTS|"
r"PORTFOLIO\s+OF\s+INVESTMENTS)",
r"PORTFOLIO\s+OF\s+INVESTMENTS|"
r"INVESTMENT\s+PORTFOLIO\s*\(?unaudited\)?)",
re.I)
# category: "NAME — 12.3%" / "NAME (12.3%)" / "NAME: 12.3%" / "NAME 12.3%"
@ -84,15 +86,21 @@ def rows(html: str) -> list[str]:
return out
def find_section(text: str, tokens: list[str]) -> tuple[int, int] | None:
def find_section(text: str, tokens: list[str],
frac: float = 1.0) -> tuple[int, int] | None:
"""Locate the fund's own SOI section (possibly in a multi-fund file).
``tokens`` are case-insensitive words that must appear in the section
header (a window around the "Schedule of Investments" phrase, which
contains or follows the fund name). The section extends over all
subsequent headers of the SAME fund (page-continuation footers) and
ends at the first header that no longer names all of the fund's
tokens.
ends at the first header that no longer names the fund.
``frac`` relaxes the all-tokens gate: a header counts as the fund's
if >= frac of the tokens are present (Yahoo names often drift from
filing names - "Absolute Return Advantage Fund" vs "... Return
Fund" - and an all-tokens gate truncates the section at the first
continuation page).
"""
hits = list(_SECTION.finditer(text))
if not hits:
@ -110,7 +118,10 @@ def find_section(text: str, tokens: list[str]) -> tuple[int, int] | None:
def names_fund(m: re.Match) -> bool:
window = (text[max(0, m.start() - 150): m.start()]
+ text[m.end(): m.end() + 80]).lower()
return all(t in window for t in tokens)
if not tokens:
return False
hit = sum(1 for t in tokens if t in window)
return hit >= max(1, int(round(frac * len(tokens))))
best = None
for i, m in enumerate(hits):
@ -229,7 +240,7 @@ _B_RE = [
("Commodities", r"\b(gold|silver|copper|crude|natural gas|oil|energy|agricultur|commodit|palladium|platinum|wheat|corn)\b"),
("Fund holdings", r"\b(fund|etf)\b, ?class |class [a-z0-9]{1,2}\b|\bexchange[- ]trad(?:ed)? (fund|funds|etf)|\b(open[- ]end|closed[- ]end) fund|\bmoney market fund\b|\bETF\b|\bFund\b(?!s of Investments)"),
("Agency MBS", r"\bmortgage\b|\bgnma\b|\bfhlmc\b|\bfnma\b|\bagency\b|\bmbs\b"),
("CMBS / ABS", r"\bcmo\b|commercial mortgage|collateralized mortgage|abs (?:trust|securitization)|asset[- ]?backed"),
("CMBS / ABS / CLO", r"\bcmo\b|commercial mortgage|collateralized (?:mortgage|loan)|\bclo\b|\bcbdo\b|\bdac\b|\btrust 20|abs (?:trust|securitization)|asset[- ]?backed"),
("High yield", r"high[- ]?yield"),
("US govt", r"treasur|us govt|u\.s\. government|t-bill"),
("IG credit / munis", r"corporate|sovereign|senior note|notes,|bonds,|munici|nonconvertible"),
@ -249,11 +260,13 @@ def classify(text: str, category: str) -> str:
return "Other"
def build(sym: str, fund_tokens: list[str], force: bool = False) -> dict | None:
def build(sym: str, fund_tokens: list[str], force: bool = False,
frac: float = 1.0) -> dict | None:
"""Parse the cached SOI for ``sym``; returns the snapshot (or None).
``fund_tokens`` identifies this fund's section inside multi-fund
family files (e.g. ["mortgage", "opportunities"]).
family files (e.g. ["mortgage", "opportunities"]). ``frac`` is
passed to find_section (token-match tolerance).
"""
html_path = CACHE / f"{sym}.html"
json_path = CACHE / f"{sym}.json"
@ -271,7 +284,7 @@ def build(sym: str, fund_tokens: list[str], force: bool = False) -> dict | None:
for r in rs:
row_starts.append(pos)
pos += len(r) + 1
sec = find_section(stream, fund_tokens)
sec = find_section(stream, fund_tokens, frac=frac)
if sec is None:
return None
seg = parse_section(stream, *sec, rs, row_starts)

View File

@ -0,0 +1,245 @@
{
"sym": "aflix",
"as_of": "April 30, 2026",
"net_assets": 226928491.0,
"n_positions": 21,
"categories": [
{
"name": "ASSET BACKED SECURITIES",
"pct": 15.0
},
{
"name": "CLO",
"pct": 15.0
},
{
"name": "COLLATERALIZED MORTGAGE OBLIGATIONS",
"pct": 0.0
},
{
"name": "CORPORATE BONDS",
"pct": 65.6
},
{
"name": "ASSET MANAGEMENT",
"pct": 5.4
},
{
"name": "AUTOMOTIVE",
"pct": 10.3
},
{
"name": "BANKING",
"pct": 18.6
},
{
"name": "BIOTECH & PHARMA",
"pct": 1.4
},
{
"name": "COMMERCIAL SUPPORT SERVICES",
"pct": 0.7
},
{
"name": "ELECTRIC UTILITIES",
"pct": 7.1
},
{
"name": "ENTERTAINMENT CONTENT",
"pct": 0.4
},
{
"name": "HEALTH CARE FACILITIES & SERVICES",
"pct": 0.4
},
{
"name": "INSTITUTIONAL FINANCIAL SERVICES",
"pct": 2.1
},
{
"name": "LEISURE FACILITIES & SERVICES",
"pct": 6.5
},
{
"name": "OIL & GAS PRODUCERS",
"pct": 3.7
},
{
"name": "REAL ESTATE INVESTMENT TRUSTS",
"pct": 0.6
},
{
"name": "SPECIALTY FINANCE",
"pct": 8.0
},
{
"name": "TRANSPORTATION & LOGISTICS",
"pct": 0.4
},
{
"name": "TERM LOANS",
"pct": 11.7
},
{
"name": "ADVERTISING & MARKETING",
"pct": 0.2
},
{
"name": "CONTAINERS & PACKAGING",
"pct": 0.6
},
{
"name": "DISCRETIONARY",
"pct": 1.3
},
{
"name": "SEMICONDUCTORS",
"pct": 0.3
},
{
"name": "U.S. GOVERNMENT & AGENCIES",
"pct": 3.1
},
{
"name": "TREASURY BILLS",
"pct": 3.1
},
{
"name": "OTHER ASSETS IN EXCESS OF LIABILITIES",
"pct": 1.6
},
{
"name": "Percentage rounds to less than",
"pct": 0.1
}
],
"buckets": [
{
"name": "US govt",
"value": 232125182.0,
"pct": 51.54499246003661
},
{
"name": "IG credit / munis",
"value": 147661804.0,
"pct": 32.78931871258761
},
{
"name": "Agency MBS",
"value": 43865906.0,
"pct": 9.740725993367986
},
{
"name": "Other",
"value": 26682186.0,
"pct": 5.924962834007792
}
],
"top": [
{
"text": "TOTAL INVESTMENTS - 98.4% (Cost $225,152,344)",
"value": 225152344.0,
"cat": "TREASURY BILLS"
},
{
"text": "TOTAL CORPORATE BONDS (Cost $147,661,804)",
"value": 147661804.0,
"cat": "TRANSPORTATION & LOGISTICS"
},
{
"text": "TOTAL ASSET BACKED SECURITIES (Cost $34,162,120)",
"value": 34162120.0,
"cat": "COLLATERALIZED MORTGAGE OBLIGATIONS"
},
{
"text": "TOTAL TERM LOANS (Cost $26,663,952)",
"value": 26663952.0,
"cat": "TRANSPORTATION & LOGISTICS"
},
{
"text": "TOTAL COLLATERALIZED MORTGAGE OBLIGATIONS (Cost $9,691,630)",
"value": 9691630.0,
"cat": "COLLATERALIZED MORTGAGE OBLIGATIONS"
},
{
"text": "TOTAL U.S. GOVERNMENT & AGENCIES (Cost $6,972,838)",
"value": 6972838.0,
"cat": "TREASURY BILLS"
},
{
"text": "April 30, 2026",
"value": 2026.0,
"cat": ""
},
{
"text": "April 30, 2026",
"value": 2026.0,
"cat": "COLLATERALIZED MORTGAGE OBLIGATIONS"
},
{
"text": "April 30, 2026",
"value": 2026.0,
"cat": "COLLATERALIZED MORTGAGE OBLIGATIONS"
},
{
"text": "April 30, 2026",
"value": 2026.0,
"cat": "COLLATERALIZED MORTGAGE OBLIGATIONS"
},
{
"text": "April 30, 2026",
"value": 2026.0,
"cat": "COLLATERALIZED MORTGAGE OBLIGATIONS"
},
{
"text": "April 30, 2026",
"value": 2026.0,
"cat": "COLLATERALIZED MORTGAGE OBLIGATIONS"
},
{
"text": "April 30, 2026",
"value": 2026.0,
"cat": "COLLATERALIZED MORTGAGE OBLIGATIONS"
},
{
"text": "April 30, 2026",
"value": 2026.0,
"cat": "AUTOMOTIVE"
},
{
"text": "April 30, 2026",
"value": 2026.0,
"cat": "BIOTECH & PHARMA"
},
{
"text": "April 30, 2026",
"value": 2026.0,
"cat": "LEISURE FACILITIES & SERVICES"
},
{
"text": "April 30, 2026",
"value": 2026.0,
"cat": "SPECIALTY FINANCE"
},
{
"text": "April 30, 2026",
"value": 2026.0,
"cat": "SEMICONDUCTORS"
},
{
"text": "06/22/2026",
"value": 2026.0,
"cat": "NET ASSETS"
},
{
"text": "07/01/2026",
"value": 2026.0,
"cat": "NET ASSETS"
},
{
"text": "06/22/2026",
"value": 2026.0,
"cat": "NET ASSETS"
}
]
}

View File

@ -0,0 +1,472 @@
{
"sym": "aguax",
"as_of": "April 30, 2026",
"net_assets": null,
"n_positions": 201,
"categories": [
{
"name": "Value Angola",
"pct": 4.4
},
{
"name": "Foreign Corporate Obligations",
"pct": 0.8
},
{
"name": "Foreign Sovereign Obligations",
"pct": 3.6
},
{
"name": "Argentina",
"pct": 4.4
},
{
"name": "Armenia",
"pct": 0.7
},
{
"name": "Azerbaijan",
"pct": 0.2
},
{
"name": "Credit-Linked Notes",
"pct": 0.2
},
{
"name": "Value Bahamas",
"pct": 0.1
},
{
"name": "Benin",
"pct": 1.3
},
{
"name": "Bosnia and Herzegovina",
"pct": 0.0
},
{
"name": "Cameroon",
"pct": 1.6
},
{
"name": "Congo",
"pct": 2.1
},
{
"name": "Costa Rica",
"pct": 0.1
},
{
"name": "Value Dominican Republic",
"pct": 0.7
},
{
"name": "Ecuador",
"pct": 3.1
},
{
"name": "Egypt",
"pct": 2.7
},
{
"name": "El Salvador",
"pct": 1.8
},
{
"name": "Value Gabon",
"pct": 0.6
},
{
"name": "Georgia",
"pct": 0.9
},
{
"name": "Ghana",
"pct": 4.2
},
{
"name": "Iraq",
"pct": 0.3
},
{
"name": "Ivory Coast",
"pct": 3.1
},
{
"name": "Value Ivory Coast",
"pct": 3.1
},
{
"name": "Jamaica",
"pct": 0.5
},
{
"name": "Kazakhstan",
"pct": 3.9
},
{
"name": "Kenya",
"pct": 3.4
},
{
"name": "Value Kenya",
"pct": 3.4
},
{
"name": "Kyrgyzstan",
"pct": 2.5
},
{
"name": "Democratic Republic",
"pct": 0.8
},
{
"name": "Value Lebanon",
"pct": 1.2
},
{
"name": "Luxembourg",
"pct": 0.4
},
{
"name": "Malawi",
"pct": 0.5
},
{
"name": "Mauritius",
"pct": 0.1
},
{
"name": "Mongolia",
"pct": 1.3
},
{
"name": "Value Mozambique",
"pct": 1.7
},
{
"name": "Netherlands",
"pct": 0.7
},
{
"name": "Nigeria",
"pct": 4.4
},
{
"name": "Value Nigeria",
"pct": 4.4
},
{
"name": "Pakistan",
"pct": 1.6
},
{
"name": "Papua New Guinea",
"pct": 0.5
},
{
"name": "Paraguay",
"pct": 2.1
},
{
"name": "Rwanda",
"pct": 0.2
},
{
"name": "Value Senegal",
"pct": 1.2
},
{
"name": "South Africa",
"pct": 0.1
},
{
"name": "Sri Lanka",
"pct": 1.4
},
{
"name": "Supranational",
"pct": 3.6
},
{
"name": "Value Supranational",
"pct": 3.6
},
{
"name": "Suriname",
"pct": 1.7
},
{
"name": "Tajikistan",
"pct": 0.1
},
{
"name": "Togo",
"pct": 0.2
},
{
"name": "Trinidad and Tobago",
"pct": 0.2
},
{
"name": "Tunisia",
"pct": 0.4
},
{
"name": "Value Uganda",
"pct": 3.5
},
{
"name": "Ukraine",
"pct": 1.2
},
{
"name": "United Kingdom",
"pct": 0.8
},
{
"name": "United States",
"pct": 4.8
},
{
"name": "Corporate Obligations",
"pct": 4.8
},
{
"name": "Value United States",
"pct": 4.8
},
{
"name": "Uruguay",
"pct": 1.4
},
{
"name": "Uzbekistan",
"pct": 3.0
}
],
"buckets": [
{
"name": "Fund holdings",
"value": 1598620821.0,
"pct": 49.750233274392635
},
{
"name": "IG credit / munis",
"value": 1585526407.0,
"pct": 49.34272566374863
},
{
"name": "Other",
"value": 29143858.0,
"pct": 0.9069778867941906
},
{
"name": "US govt",
"value": 2030.0,
"pct": 6.317506454334931e-05
}
],
"top": [
{
"text": "TOTAL INVESTMENTS - 97.9% (Cost $1,598,620,821)",
"value": 1598620821.0,
"cat": "Government Money Market Select Fund,"
},
{
"text": "SHORT-TERM INVESTMENTS - 11.1% (Cost $187,933,735)",
"value": 187933735.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total United States (Cost $80,767,472)",
"value": 80767472.0,
"cat": "Corporate Obligations"
},
{
"text": "Total Nigeria (Cost $70,741,220)",
"value": 70741220.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Argentina (Cost $69,268,500)",
"value": 69268500.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Ghana (Cost $69,242,885)",
"value": 69242885.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Angola (Cost $66,354,237)",
"value": 66354237.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Kazakhstan (Cost $63,043,429)",
"value": 63043429.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Supranational (Cost $61,113,413)",
"value": 61113413.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Uganda (Cost $59,915,361)",
"value": 59915361.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Zambia (Cost $55,821,142)",
"value": 55821142.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Kenya (Cost $55,702,605)",
"value": 55702605.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Ivory Coast (Cost $48,786,290)",
"value": 48786290.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Uzbekistan (Cost $47,617,720)",
"value": 47617720.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Egypt (Cost $47,131,022)",
"value": 47131022.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Ecuador (Cost $47,105,428)",
"value": 47105428.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Kyrgyzstan (Cost $41,882,273)",
"value": 41882273.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Congo (Cost $33,674,654)",
"value": 33674654.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Paraguay (Cost $31,083,218)",
"value": 31083218.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total El Salvador (Cost $29,550,204)",
"value": 29550204.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Pakistan (Cost $28,708,952)",
"value": 28708952.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Mozambique (Cost $28,343,263)",
"value": 28343263.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Suriname (Cost $27,956,100)",
"value": 27956100.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Cameroon (Cost $26,050,774)",
"value": 26050774.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Senegal (Cost $24,111,192)",
"value": 24111192.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Sri Lanka (Cost $23,305,790)",
"value": 23305790.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Uruguay (Cost $21,493,036)",
"value": 21493036.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Benin (Cost $21,467,966)",
"value": 21467966.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Mongolia (Cost $21,289,927)",
"value": 21289927.0,
"cat": "Foreign Corporate Obligations"
},
{
"text": "Total Ukraine (Cost $20,186,470)",
"value": 20186470.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Lebanon (Cost $19,032,808)",
"value": 19032808.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "For the period ended April 30, 2026, eight credit-linked notes were fair valued at $15,757,223 by the",
"value": 15757223.0,
"cat": "TOTAL NET ASSETS"
},
{
"text": "Total Georgia (Cost $14,085,191)",
"value": 14085191.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total United Kingdom (Cost $13,682,516)",
"value": 13682516.0,
"cat": "Foreign Corporate Obligations"
},
{
"text": "Total Lao People\u2019s Democratic Republic (Cost $13,535,194)",
"value": 13535194.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Venezuela (Cost $13,512,831)",
"value": 13512831.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Dominican Republic (Cost $12,067,180)",
"value": 12067180.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Armenia (Cost $11,636,202)",
"value": 11636202.0,
"cat": "Foreign Sovereign Obligations"
},
{
"text": "Total Malawi (Cost $10,922,710)",
"value": 10922710.0,
"cat": "Credit-Linked Notes"
},
{
"text": "Total Gabon (Cost $10,803,399)",
"value": 10803399.0,
"cat": "Foreign Sovereign Obligations"
}
]
}

View File

@ -0,0 +1,472 @@
{
"sym": "anglx",
"as_of": "October 31, 2025",
"net_assets": 281892996.0,
"n_positions": 167,
"categories": [
{
"name": "ASSET-BACKED SECURITIES",
"pct": 24.5
},
{
"name": "Par Value Automobile",
"pct": 7.8
},
{
"name": "Class A,",
"pct": 6.4
},
{
"name": "Class D,",
"pct": 6.82
},
{
"name": "Class C,",
"pct": 4.25
},
{
"name": "Class E,",
"pct": 5.2
},
{
"name": "Class B,",
"pct": 0.75
},
{
"name": "Consumer",
"pct": 15.3
},
{
"name": "ABC,",
"pct": 8.8
},
{
"name": "AA, Class A,",
"pct": 1.97
},
{
"name": "Credit Card",
"pct": 0.4
},
{
"name": "Equipment",
"pct": 0.5
},
{
"name": "Fiber",
"pct": 0.5
},
{
"name": "CORPORATE OBLIGATIONS",
"pct": 22.8
},
{
"name": "Par Value Basic Materials",
"pct": 1.1
},
{
"name": "ArcelorMittal SA,",
"pct": 6.55
},
{
"name": "Cabot Corp.,",
"pct": 3.4
},
{
"name": "Consolidated Energy Finance SA,",
"pct": 6.5
},
{
"name": "CVR Partners LP / CVR Nitrogen Finance Corp.,",
"pct": 6.13
},
{
"name": "FMC Corp.,",
"pct": 3.2
},
{
"name": "Methanex Corp.,",
"pct": 5.13
},
{
"name": "Mosaic Global Holdings, Inc.,",
"pct": 7.3
},
{
"name": "Communications",
"pct": 0.4
},
{
"name": "LLC / Directv Financing Co.-Obligor, Inc.,",
"pct": 5.88
},
{
"name": "Juniper Networks, Inc.,",
"pct": 1.2
},
{
"name": "Nexstar Media, Inc.,",
"pct": 5.63
},
{
"name": "LLC,",
"pct": 7.63
},
{
"name": "Consumer, Cyclical",
"pct": 4.0
},
{
"name": "American Axle & Manufacturing, Inc.,",
"pct": 6.5
},
{
"name": "Beazer Homes USA, Inc.,",
"pct": 5.88
},
{
"name": "BorgWarner, Inc.,",
"pct": 2.65
},
{
"name": "Carnival Corp.,",
"pct": 4.0
},
{
"name": "Delta Air Lines, Inc.",
"pct": 7.38
},
{
"name": "Ford Motor Credit Co. LLC,",
"pct": 2.9
},
{
"name": "General Motors Co.,",
"pct": 5.35
},
{
"name": "General Motors Financial Co., Inc.",
"pct": 5.4
},
{
"name": "Mattel, Inc.,",
"pct": 3.38
},
{
"name": "Meritage Homes Corp.,",
"pct": 5.13
},
{
"name": "Newell Brands, Inc.,",
"pct": 8.5
},
{
"name": "Royal Caribbean Cruises Ltd.",
"pct": 4.25
},
{
"name": "Southwest Airlines Co.,",
"pct": 3.0
},
{
"name": "Toll Brothers Finance Corp.,",
"pct": 4.88
},
{
"name": "United Airlines, Inc.,",
"pct": 4.38
},
{
"name": "Consumer, Non-cyclical",
"pct": 1.9
},
{
"name": "Ashtead Capital, Inc.,",
"pct": 1.5
},
{
"name": "Conagra Brands, Inc.,",
"pct": 1.38
},
{
"name": "HCA, Inc.",
"pct": 5.25
},
{
"name": "Keurig Dr Pepper, Inc.,",
"pct": 5.1
},
{
"name": "Kraft Heinz Foods Co.,",
"pct": 3.0
},
{
"name": "Universal Health Services, Inc.,",
"pct": 1.65
},
{
"name": "Energy",
"pct": 2.5
},
{
"name": "LP / Archrock Partners Finance Corp.,",
"pct": 6.88
},
{
"name": "Continental Resources, Inc.",
"pct": 2.27
},
{
"name": "EQT Corp.",
"pct": 3.13
},
{
"name": "Occidental Petroleum Corp.",
"pct": 3.2
},
{
"name": "ONEOK, Inc.",
"pct": 5.0
},
{
"name": "Ovintiv, Inc.",
"pct": 5.38
},
{
"name": "PBF Holding Co. LLC / PBF Finance Corp.,",
"pct": 6.0
},
{
"name": "LP / Targa Resources Partners Finance Corp.,",
"pct": 5.0
},
{
"name": "Venture Global LNG, Inc.,",
"pct": 8.13
}
],
"buckets": [
{
"name": "Fund holdings",
"value": 2084610557.0,
"pct": 87.54563999435358
},
{
"name": "IG credit / munis",
"value": 261763160.0,
"pct": 10.993047738433944
},
{
"name": "Other",
"value": 31834037.0,
"pct": 1.336907334279096
},
{
"name": "Equity (US)",
"value": 2962293.0,
"pct": 0.12440493293337651
}
],
"top": [
{
"text": "TOTAL INVESTMENTS - 102.2% ( Cost $1,174,539,227 )",
"value": 1174539227.0,
"cat": "Government Obligations Fund - Class U,"
},
{
"text": "TOTAL ASSET-BACKED SECURITIES (Cost $281,214,393)",
"value": 281214393.0,
"cat": "Parent, Inc. Series 2023-1, Class A2,"
},
{
"text": "TOTAL CORPORATE OBLIGATIONS (Cost $261,763,160)",
"value": 261763160.0,
"cat": "Pacific Gas and Electric Co.,"
},
{
"text": "TOTAL COMMERCIAL MORTGAGE-BACKED SECURITIES \u2013 U.S. GOVERNMENT AGENCY (Cost $242,101,955)",
"value": 242101955.0,
"cat": "Series 2019-M28, Class AV,"
},
{
"text": "TOTAL COLLATERALIZED LOAN OBLIGATIONS (Cost $181,613,939)",
"value": 181613939.0,
"cat": "Woodmont Trust Series 2019-6A, Class BR,"
},
{
"text": "TOTAL RESIDENTIAL MORTGAGE-BACKED SECURITIES (Cost $109,117,106)",
"value": 109117106.0,
"cat": "Series 2025-CES3, Class A1,"
},
{
"text": "TOTAL SHORT-TERM INVESTMENTS (Cost $65,457,515)",
"value": 65457515.0,
"cat": "Government Obligations Fund - Class U,"
},
{
"text": "The average monthly notional value of long and short futures contracts during the period ended October 31, 2025, was 103,719 and ($30,027,407), respectively.",
"value": 30027407.0,
"cat": "TOTAL NET ASSETS"
},
{
"text": "TOTAL RESIDENTIAL MORTGAGE-BACKED SECURITIES - U.S. GOVERNMENT AGENCY CREDIT RISK TRANSFER (Cost $16,594,384)",
"value": 16594384.0,
"cat": "Series 2025-HQA1, Class M1,"
},
{
"text": "TOTAL COMMERCIAL MORTGAGE-BACKED SECURITIES (Cost $13,827,983)",
"value": 13827983.0,
"cat": "Mortgage Trust Series 2025-VTT, Class C,"
},
{
"text": "TOTAL COMMON STOCKS (Cost $2,848,792)",
"value": 2848792.0,
"cat": "Financial"
},
{
"text": "Security is exempt from registration pursuant to Regulation S under the Securities Act of 1933, as amended. As of October 31, 2025, the value of these securitie",
"value": 1749895.0,
"cat": "TOTAL NET ASSETS"
},
{
"text": "Series KF132, Class AS, 4.70% (30 day avg SOFR US + 0.39%), 02/25/2032",
"value": 2032.0,
"cat": "Series KF132, Class AS,"
},
{
"text": "Series KF134, Class AS, 4.72% (30 day avg SOFR US + 0.41%), 03/25/2032",
"value": 2032.0,
"cat": "Series KF134, Class AS,"
},
{
"text": "Series KF136, Class AS, 4.72% (30 day avg SOFR US + 0.41%), 04/25/2032",
"value": 2032.0,
"cat": "Series KF136, Class AS,"
},
{
"text": "Series KF141, Class AS, 4.88% (30 day avg SOFR US + 0.57%), 07/25/2032",
"value": 2032.0,
"cat": "Series KF141, Class AS,"
},
{
"text": "Series KF166, Class AS, 4.91% (30 day avg SOFR US + 0.60%), 01/25/2032",
"value": 2032.0,
"cat": "Series KF166, Class AS,"
},
{
"text": "Series K-F101, Class AS, 4.51% (30 day avg SOFR US + 0.20%), 01/25/2031",
"value": 2031.0,
"cat": "Series K-F101, Class AS,"
},
{
"text": "Series K-F102, Class AS, 4.51% (30 day avg SOFR US + 0.20%), 01/25/2031",
"value": 2031.0,
"cat": "Series K-F102, Class AS,"
},
{
"text": "Series K-F103, Class AS, 4.55% (30 day avg SOFR US + 0.24%), 01/25/2031",
"value": 2031.0,
"cat": "Series K-F103, Class AS,"
},
{
"text": "Series K-F104, Class AS, 4.56% (30 day avg SOFR US + 0.25%), 01/25/2031",
"value": 2031.0,
"cat": "Series K-F104, Class AS,"
},
{
"text": "Series K-F105, Class AS, 4.56% (30 day avg SOFR US + 0.25%), 02/25/2031",
"value": 2031.0,
"cat": "Series K-F105, Class AS,"
},
{
"text": "Series K-F106, Class AS, 4.56% (30 day avg SOFR US + 0.25%), 01/25/2031",
"value": 2031.0,
"cat": "Series K-F106, Class AS,"
},
{
"text": "Series K-F108, Class AS, 4.56% (30 day avg SOFR US + 0.25%), 02/25/2031",
"value": 2031.0,
"cat": "Series K-F108, Class AS,"
},
{
"text": "Series K-F109, Class AS, 4.55% (30 day avg SOFR US + 0.24%), 03/25/2031",
"value": 2031.0,
"cat": "Series K-F109, Class AS,"
},
{
"text": "Series K-F112, Class AS, 4.54% (30 day avg SOFR US + 0.23%), 04/25/2031",
"value": 2031.0,
"cat": "Series K-F112, Class AS,"
},
{
"text": "Series K-F114, Class AS, 4.53% (30 day avg SOFR US + 0.22%), 05/25/2031",
"value": 2031.0,
"cat": "Series K-F114, Class AS,"
},
{
"text": "Series K-F115, Class AS, 4.52% (30 day avg SOFR US + 0.21%), 06/25/2031",
"value": 2031.0,
"cat": "Series K-F115, Class AS,"
},
{
"text": "Series K-F119, Class AS, 0.26% (30 day avg SOFR US + 0.21%), 07/25/2031",
"value": 2031.0,
"cat": "Series K-F119, Class AS,"
},
{
"text": "Series K-F120, Class AS, 0.00% (30 day avg SOFR US + 0.20%), 08/25/2031",
"value": 2031.0,
"cat": "Series K-F120, Class AS,"
},
{
"text": "Series K-F122, Class AS, 4.50% (30 day avg SOFR US + 0.19%), 09/25/2031",
"value": 2031.0,
"cat": "Series K-F122, Class AS,"
},
{
"text": "Series KF124, Class AS, 4.53% (30 day avg SOFR US + 0.22%), 10/25/2031",
"value": 2031.0,
"cat": "Series KF124, Class AS,"
},
{
"text": "Series KF126, Class AS, 4.55% (30 day avg SOFR US + 0.24%), 11/25/2031",
"value": 2031.0,
"cat": "Series KF126, Class AS,"
},
{
"text": "Series KF155, Class AS, 4.98% (30 day avg SOFR US + 0.67%), 02/25/2030",
"value": 2030.0,
"cat": "Series KF155, Class AS,"
},
{
"text": "Series KF160, Class AS, 5.01% (30 day avg SOFR US + 0.70%), 10/25/2030",
"value": 2030.0,
"cat": "Series KF160, Class AS,"
},
{
"text": "Series KF82, Class AS, 4.73% (30 day avg SOFR US + 0.42%), 06/25/2030",
"value": 2030.0,
"cat": "Series KF82, Class AS,"
},
{
"text": "Series KF85, Class AS, 4.64% (30 day avg SOFR US + 0.33%), 08/25/2030",
"value": 2030.0,
"cat": "Series KF85, Class AS,"
},
{
"text": "Series KF88, Class AL, 4.75% (30 day avg SOFR US + 0.44%), 09/25/2030",
"value": 2030.0,
"cat": "Series KF88, Class AL,"
},
{
"text": "Series KF91, Class AS, 4.69% (30 day avg SOFR US + 0.38%), 10/25/2030",
"value": 2030.0,
"cat": "Series KF91, Class AS,"
},
{
"text": "Series KF94, Class AL, 4.72% (30 day avg SOFR US + 0.41%), 11/25/2030",
"value": 2030.0,
"cat": "Series KF94, Class AL,"
}
]
}

View File

@ -0,0 +1,482 @@
{
"sym": "btmix",
"as_of": "September 30, 2025",
"net_assets": null,
"n_positions": 72,
"categories": [
{
"name": "MUNICIPAL BONDS",
"pct": 100.0
},
{
"name": "Par Value Alabama",
"pct": 3.1
},
{
"name": "Corrections Institution Finance Authority,",
"pct": 5.0
},
{
"name": "Facilities Financing Authority-Birmingham AL,",
"pct": 5.0
},
{
"name": "Black Belt Energy Gas District",
"pct": 4.0
},
{
"name": "Chilton County Health Care Authority,",
"pct": 3.0
},
{
"name": "City of Mobile AL,",
"pct": 5.0
},
{
"name": "Clarke-Mobile Counties Gas District,",
"pct": 5.0
},
{
"name": "County of Jefferson AL Sewer Revenue,",
"pct": 5.25
},
{
"name": "Houston County Board of Education,",
"pct": 2.0
},
{
"name": "Board of the City of Mobile Alabama,",
"pct": 3.92
},
{
"name": "Public Educational Building Authority,",
"pct": 5.0
},
{
"name": "Jacksonville State University,",
"pct": 5.0
},
{
"name": "County Public Facilities Authority/AL,",
"pct": 3.75
},
{
"name": "Energy Authority A Cooperative District",
"pct": 5.0
},
{
"name": "State of Alabama Docks Department,",
"pct": 5.0
},
{
"name": "University of South Alabama,",
"pct": 5.0
},
{
"name": "Alaska",
"pct": 0.2
},
{
"name": "Alaska Municipal Bond Bank Authority,",
"pct": 5.25
},
{
"name": "Municipality of Anchorage AK,",
"pct": 5.5
},
{
"name": "Arizona",
"pct": 1.8
},
{
"name": "Arizona Industrial Development Authority",
"pct": 5.0
},
{
"name": "Glendale Industrial Development Authority",
"pct": 4.0
},
{
"name": "Authority of the City of Phoenix Arizona,",
"pct": 5.0
},
{
"name": "Development Authority of the County of Pima,",
"pct": 4.0
},
{
"name": "County Industrial Development Authority,",
"pct": 5.0
},
{
"name": "Cartwright Elementary",
"pct": 5.0
},
{
"name": "Salt Verde Financial Corp.,",
"pct": 5.25
},
{
"name": "Town of Marana AZ Pledged Excise Revenue",
"pct": 5.0
},
{
"name": "Arkansas",
"pct": 0.5
},
{
"name": "Arkadelphia Water & Sewer System,",
"pct": 5.0
},
{
"name": "Arkansas Development Finance Authority,",
"pct": 5.0
},
{
"name": "Batesville Public Facilities Board,",
"pct": 5.0
},
{
"name": "City of Heber Springs AR Sales & Use Tax,",
"pct": 1.63
},
{
"name": "City of Marion AR Sales & Use Tax Revenue,",
"pct": 5.0
},
{
"name": "West Memphis AR Public Utility System Revenue",
"pct": 3.0
},
{
"name": "California",
"pct": 4.0
},
{
"name": "Community Choice Financing Authority",
"pct": 5.0
},
{
"name": "California Housing Finance Agency",
"pct": 3.75
},
{
"name": "California Municipal Finance Authority,",
"pct": 4.0
},
{
"name": "Pollution Control Financing Authority,",
"pct": 5.0
},
{
"name": "California Public Finance Authority,",
"pct": 6.5
},
{
"name": "California State University,",
"pct": 3.13
},
{
"name": "City of Los Angeles Department of Airports,",
"pct": 5.0
},
{
"name": "El Dorado Irrigation District,",
"pct": 5.0
},
{
"name": "Freddie Mac Multifamily ML Certificates",
"pct": 2.88
},
{
"name": "Inglewood Unified School District,",
"pct": 5.5
},
{
"name": "Los Alamitos Unified School District,",
"pct": 6.05
},
{
"name": "Los Angeles Department of Water & Power,",
"pct": 5.0
},
{
"name": "Water & Power Water System Revenue",
"pct": 5.0
},
{
"name": "Los Angeles Unified School District/CA,",
"pct": 5.25
},
{
"name": "Mayers Memorial Hospital District",
"pct": 0.0
},
{
"name": "Morongo Unified School District,",
"pct": 5.5
},
{
"name": "Needles Unified School District,",
"pct": 0.0
},
{
"name": "Orland Unified School District,",
"pct": 0.0
},
{
"name": "Paradise Unified School District",
"pct": 5.0
},
{
"name": "California Medical Center Pooled Revenue,",
"pct": 5.0
},
{
"name": "River Islands Public Financing Authority",
"pct": 5.0
},
{
"name": "Sacramento City Unified School District/CA,",
"pct": 5.5
},
{
"name": "Comm-San Francisco International Airport,",
"pct": 5.75
}
],
"buckets": [
{
"name": "Other",
"value": 632713442.0,
"pct": 50.00329866973938
},
{
"name": "IG credit / munis",
"value": 624991176.0,
"pct": 49.39300853273108
},
{
"name": "Cash & T-bills",
"value": 7616423.0,
"pct": 0.6019253721877975
},
{
"name": "Equity (US)",
"value": 14210.0,
"pct": 0.0011230152971793456
},
{
"name": "Agency MBS",
"value": 4098.0,
"pct": 0.000323864650798097
},
{
"name": "Fund holdings",
"value": 4056.0,
"pct": 0.0003205453937620989
}
],
"top": [
{
"text": "TOTAL INVESTMENTS - 101.2% ( Cost $632,601,512 )",
"value": 632601512.0,
"cat": "Tax-Free Cash Trust - Class Premier,"
},
{
"text": "TOTAL MUNICIPAL BONDS (Cost $624,985,089)",
"value": 624985089.0,
"cat": "Sublette County Hospital District,"
},
{
"text": "TOTAL MONEY MARKET FUNDS (Cost $7,616,423)",
"value": 7616423.0,
"cat": "Tax-Free Cash Trust - Class Premier,"
},
{
"text": "New Jersey Housing & Mortgage Finance Agency, 5.00%, 10/01/2063",
"value": 2063.0,
"cat": "New Jersey Housing & Mortgage Finance Agency,"
},
{
"text": "South Dakota Housing Development Authority, 6.25%, 05/01/2056",
"value": 2056.0,
"cat": "South Dakota Housing Development Authority,"
},
{
"text": "6.50%, 05/21/2053",
"value": 2053.0,
"cat": "Utah Charter School Finance Authority,"
},
{
"text": "5.00%, 06/01/2052",
"value": 2052.0,
"cat": "County of Phelps MO,"
},
{
"text": "4.50%, 10/21/2052",
"value": 2052.0,
"cat": "Utah Charter School Finance Authority,"
},
{
"text": "6.00%, 12/21/2052",
"value": 2052.0,
"cat": "Utah Charter School Finance Authority,"
},
{
"text": "4.22%, 03/01/2050",
"value": 2050.0,
"cat": "State of Washington,"
},
{
"text": "3.50%, 08/21/2047",
"value": 2047.0,
"cat": "Utah Charter School Finance Authority,"
},
{
"text": "Miami-Dade County Housing Finance Authority, 4.88%, 03/01/2046",
"value": 2046.0,
"cat": "Miami-Dade County Housing Finance Authority,"
},
{
"text": "3.00%, 02/21/2046",
"value": 2046.0,
"cat": "Idaho Health Facilities Authority,"
},
{
"text": "Connecticut Housing Finance Authority, 4.80%, 05/01/2043",
"value": 2043.0,
"cat": "Connecticut Housing Finance Authority,"
},
{
"text": "Atlanta Urban Residential Finance Authority, 4.75%, 05/01/2043",
"value": 2043.0,
"cat": "Atlanta Urban Residential Finance Authority,"
},
{
"text": "4.70%, 01/01/2043",
"value": 2043.0,
"cat": "Ohio Air Quality Development Authority,"
},
{
"text": "Indiana Housing & Community Development Authority, 4.55%, 11/01/2041",
"value": 2041.0,
"cat": "Housing & Community Development Authority,"
},
{
"text": "Monroe County Industrial Development Corp., 4.84%, 11/01/2040",
"value": 2040.0,
"cat": "Monroe County Industrial Development Corp.,"
},
{
"text": "Regional Transportation District, 4.00%, 07/15/2039",
"value": 2039.0,
"cat": "Regional Transportation District,"
},
{
"text": "2.25%, 09/25/2037",
"value": 2037.0,
"cat": "El Dorado Irrigation District,"
},
{
"text": "4.38%, 09/20/2036",
"value": 2036.0,
"cat": "California"
},
{
"text": "2.88%, 07/25/2036",
"value": 2036.0,
"cat": "El Dorado Irrigation District,"
},
{
"text": "2.33%, 07/01/2036",
"value": 2036.0,
"cat": "Educational Facilities Financing Authority,"
},
{
"text": "5.00%, 03/01/2036",
"value": 2036.0,
"cat": "Mississippi Business Finance Corp.,"
},
{
"text": "4.38%, 09/20/2036",
"value": 2036.0,
"cat": "New Hampshire"
},
{
"text": "3.75%, 03/25/2035",
"value": 2035.0,
"cat": "California"
},
{
"text": "5.00%, 05/01/2035",
"value": 2035.0,
"cat": "Chicago IL Wastewater Transmission Revenue,"
},
{
"text": "FHLMC Multifamily VRD Certificates, 2.55%, 06/15/2035",
"value": 2035.0,
"cat": "FHLMC Multifamily VRD Certificates,"
},
{
"text": "5.00%, 09/01/2035",
"value": 2035.0,
"cat": "County Educational Facilities Authority,"
},
{
"text": "5.00%, 06/01/2035",
"value": 2035.0,
"cat": "New Memphis Arena Public Building Authority,"
},
{
"text": "Missouri Joint Municipal Electric Utility Commission, 5.00%, 06/01/2034",
"value": 2034.0,
"cat": "Joint Municipal Electric Utility Commission,"
},
{
"text": "5.00%, 09/01/2034",
"value": 2034.0,
"cat": "County Educational Facilities Authority,"
},
{
"text": "4.00%, 10/01/2034",
"value": 2034.0,
"cat": "State of Washington,"
},
{
"text": "5.00%, 09/01/2033",
"value": 2033.0,
"cat": "County Public Facilities Authority/AL,"
},
{
"text": "5.00%, 12/01/2033",
"value": 2033.0,
"cat": "Gwinnett County School District,"
},
{
"text": "5.00%, 05/01/2033",
"value": 2033.0,
"cat": "Chicago IL Wastewater Transmission Revenue,"
},
{
"text": "5.25%, 10/01/2033",
"value": 2033.0,
"cat": "Fall River Vocational School District,"
},
{
"text": "4.50%, 10/01/2033",
"value": 2033.0,
"cat": "New Hampshire"
},
{
"text": "Caddo County Educational Facilities Authority, 5.00%, 09/01/2033",
"value": 2033.0,
"cat": "County Educational Facilities Authority,"
},
{
"text": "Winnebago County Community Unit School District No 320 South Beloit, 5.00%, 02/01/2032",
"value": 2032.0,
"cat": "Unit School District No 320 South Beloit,"
}
]
}

View File

@ -0,0 +1,25 @@
{
"HMEZX": "0001354917",
"EGRIX": "0000745463",
"HICOX": "0000810744",
"ETSIX": "0000745463",
"SCFZX": "0000887991",
"WMNUX": "0001545440",
"COIAX": "0000804239",
"FHCOX": "0001707560",
"RCTIX": "0001516523",
"AFLIX": "0001552947",
"FHMIX": "0001707560",
"DULTX": "0000230173",
"USMSX": "0001659326",
"BTMIX": "0001282693",
"SAFEX": "0001257927",
"QCMMRX": "777535",
"MERVX": "0001208133",
"COIAAX": "1003632",
"AGUAX": "0000809593",
"DMSZX": "0001688680",
"ANGLX": "0001612930",
"FEMDX": "0001124459",
"LPXAX": "0001652200"
}

View File

@ -0,0 +1,197 @@
{
"sym": "dultx",
"as_of": "December 31, 2025",
"net_assets": 137207249.0,
"n_positions": 9,
"categories": [
{
"name": "Agency Commercial Mortgage-Backed Securities",
"pct": 8.65
},
{
"name": "Collateralized Loan Obligations",
"pct": 3.12
},
{
"name": "Floor",
"pct": 1.5
},
{
"name": "Corporate Bonds",
"pct": 4.93
},
{
"name": "Banking",
"pct": 0.81
},
{
"name": "Fifth Third Bank",
"pct": 3.85
},
{
"name": "Capital Goods",
"pct": 1.67
},
{
"name": "Consumer Cyclical",
"pct": 1.61
},
{
"name": "Ford Motor Credit",
"pct": 6.95
},
{
"name": "General Motors Financial",
"pct": 5.4
},
{
"name": "Finance Companies",
"pct": 0.84
},
{
"name": "AerCap Ireland Capital DAC",
"pct": 2.45
},
{
"name": "Non-Agency Asset-Backed Securities",
"pct": 38.92
},
{
"name": "Agency Collateralized Mortgage Obligations",
"pct": 5.21
},
{
"name": "Commercial Papers",
"pct": 31.5
},
{
"name": "Hyundai Capital America",
"pct": 3.92
},
{
"name": "Consumer Non-Cyclical",
"pct": 4.36
},
{
"name": "Electric",
"pct": 3.64
},
{
"name": "Financial Services",
"pct": 1.82
},
{
"name": "Technology",
"pct": 2.55
},
{
"name": "Number of shares Short-Term Investments",
"pct": 7.52
},
{
"name": "Money Market Mutual Funds",
"pct": 0.63
},
{
"name": "Shares (seven-day effective yield",
"pct": 3.65
},
{
"name": "Class I (seven-day effective yield",
"pct": 3.67
},
{
"name": "Class (seven-day effective yield",
"pct": 3.69
},
{
"name": "US Treasury Obligations",
"pct": 6.89
},
{
"name": "US Treasury Bill",
"pct": 3.85
},
{
"name": "Total Value of Securities",
"pct": 99.85
},
{
"name": "Other Assets Net of Liabilities",
"pct": 0.15
},
{
"name": "Shares Outstanding",
"pct": 100.0
}
],
"buckets": [
{
"name": "Other",
"value": 301462906.0,
"pct": 92.56534369069341
},
{
"name": "US govt",
"value": 10320012.0,
"pct": 3.168799340347632
},
{
"name": "Agency MBS",
"value": 7141960.0,
"pct": 2.1929662617436083
},
{
"name": "CMBS / ABS / CLO",
"value": 6750903.0,
"pct": 2.0728907072153455
}
],
"top": [
{
"text": "(cost $136,729,276)",
"value": 136729276.0,
"cat": "Total Value of Securities"
},
{
"text": "(cost $53,258,312)",
"value": 53258312.0,
"cat": "Series 2023-C A3"
},
{
"text": "Security exempt from registration under Rule 144A of the Securities Act of 1933, as amended. At December 31, 2025, the aggregate value of Rule 144A securities w",
"value": 52217229.0,
"cat": "Applicable to 13,771,409 Shares Outstanding"
},
{
"text": "(cost $43,209,660)",
"value": 43209660.0,
"cat": "Technology"
},
{
"text": "(cost $11,764,308)",
"value": 11764308.0,
"cat": "Series 2019-K734 B 144A"
},
{
"text": "(cost $10,320,012)",
"value": 10320012.0,
"cat": "US Treasury Obligations"
},
{
"text": "(cost $7,141,960)",
"value": 7141960.0,
"cat": "Agency Collateralized Mortgage Obligations"
},
{
"text": "(cost $6,750,903)",
"value": 6750903.0,
"cat": "AerCap Ireland Capital DAC"
},
{
"text": "(cost $4,284,121)",
"value": 4284121.0,
"cat": "Floor"
}
]
}

View File

@ -0,0 +1,51 @@
{
"sym": "egrix",
"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": ""
}
]
}

View File

@ -0,0 +1,51 @@
{
"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": ""
}
]
}

View File

@ -0,0 +1,136 @@
{
"sym": "fhcox",
"as_of": "March 31, 2026",
"net_assets": 2253184259.0,
"n_positions": 10,
"categories": [
{
"name": "COMMON STOCKS",
"pct": 84.2
},
{
"name": "Communication Services",
"pct": 4.0
},
{
"name": "Consumer Discretionary",
"pct": 12.7
},
{
"name": "Consumer Staples",
"pct": 4.0
},
{
"name": "Energy",
"pct": 3.1
},
{
"name": "Financials",
"pct": 14.0
},
{
"name": "Health Care",
"pct": 12.8
},
{
"name": "Industrials",
"pct": 10.6
},
{
"name": "Information Technology",
"pct": 17.4
},
{
"name": "Materials",
"pct": 3.8
},
{
"name": "Real Estate",
"pct": 1.4
},
{
"name": "Utilities",
"pct": 0.4
},
{
"name": "INVESTMENT COMPANY",
"pct": 9.9
},
{
"name": "Government Obligations Fund, Premier Shares,",
"pct": 3.58
},
{
"name": "TOTAL INVESTMENT IN SECURITIES",
"pct": 94.1
},
{
"name": "OTHER ASSETS AND LIABILITIES - NET",
"pct": 5.9
}
],
"buckets": [
{
"name": "Other",
"value": 5297631647.0,
"pct": 95.95430424751474
},
{
"name": "Fund holdings",
"value": 223362631.0,
"pct": 4.045695752485256
}
],
"top": [
{
"text": "(IDENTIFIED COST $1,858,065,759)",
"value": 1858065759.0,
"cat": "TOTAL INVESTMENT IN SECURITIES"
},
{
"text": "(PROCEEDS $1,804,850,606)",
"value": 1804850606.0,
"cat": "OTHER ASSETS AND LIABILITIES - NET"
},
{
"text": "(IDENTIFIED COST $1,634,703,128)",
"value": 1634703128.0,
"cat": "Utilities"
},
{
"text": "(IDENTIFIED COST $223,362,631)",
"value": 223362631.0,
"cat": "Government Obligations Fund, Premier Shares,"
},
{
"text": "3/31/2026",
"value": 2026.0,
"cat": "OTHER ASSETS AND LIABILITIES - NET"
},
{
"text": "3/31/2026",
"value": 2026.0,
"cat": "OTHER ASSETS AND LIABILITIES - NET"
},
{
"text": "Value as of 3/31/2026",
"value": 2026.0,
"cat": "OTHER ASSETS AND LIABILITIES - NET"
},
{
"text": "Shares Held as of 3/31/2026",
"value": 2026.0,
"cat": "OTHER ASSETS AND LIABILITIES - NET"
},
{
"text": "12/31/2025",
"value": 2025.0,
"cat": "OTHER ASSETS AND LIABILITIES - NET"
},
{
"text": "Value as of 12/31/2025",
"value": 2025.0,
"cat": "OTHER ASSETS AND LIABILITIES - NET"
}
]
}

View File

@ -0,0 +1,368 @@
{
"sym": "fhmix",
"as_of": "May 31, 2026",
"net_assets": 307154620.0,
"n_positions": 131,
"categories": [
{
"name": "CORPORATE BONDS",
"pct": 33.4
},
{
"name": "Aerospace/Auto",
"pct": 0.5
},
{
"name": "Banking",
"pct": 10.8
},
{
"name": "Consumer Products",
"pct": 0.5
},
{
"name": "Electric Power",
"pct": 1.0
},
{
"name": "Finance - Automotive",
"pct": 7.8
},
{
"name": "Finance - Retail",
"pct": 1.0
},
{
"name": "Health Care",
"pct": 1.5
},
{
"name": "Insurance",
"pct": 3.0
},
{
"name": "Mining",
"pct": 1.0
},
{
"name": "Pharmaceuticals and Health Care",
"pct": 1.6
},
{
"name": "Retail",
"pct": 1.0
},
{
"name": "Software",
"pct": 1.0
},
{
"name": "Technology",
"pct": 2.3
},
{
"name": "Utility - Electric",
"pct": 0.4
},
{
"name": "ASSET-BACKED SECURITIES",
"pct": 32.7
},
{
"name": "Auto Receivables",
"pct": 23.6
},
{
"name": "Credit Card",
"pct": 2.8
},
{
"name": "Equipment Lease",
"pct": 3.0
},
{
"name": "Other",
"pct": 3.3
},
{
"name": "OTHER REPURCHASE AGREEMENTS",
"pct": 19.6
},
{
"name": "S.A.,",
"pct": 3.66
},
{
"name": "MUFG Securities Americas, Inc.,",
"pct": 3.77
},
{
"name": "Societe Generale, Paris,",
"pct": 3.72
},
{
"name": "Standard Chartered Bank,",
"pct": 3.67
},
{
"name": "REPURCHASE AGREEMENT",
"pct": 11.7
},
{
"name": "COMMERCIAL PAPER",
"pct": 3.3
},
{
"name": "Utility - Natural Gas",
"pct": 3.3
},
{
"name": "TOTAL INVESTMENT IN SECURITIES",
"pct": 100.7
}
],
"buckets": [
{
"name": "Other",
"value": 8896072429.0,
"pct": 62.574456826839345
},
{
"name": "IG credit / munis",
"value": 2040622219.0,
"pct": 14.353618179461947
},
{
"name": "CMBS / ABS / CLO",
"value": 2000612030.0,
"pct": 14.072188833624706
},
{
"name": "Agency MBS",
"value": 969300136.0,
"pct": 6.818000864590477
},
{
"name": "Equity (US)",
"value": 300044609.0,
"pct": 2.110496354637581
},
{
"name": "Commodities",
"value": 10008109.0,
"pct": 0.07039645748581194
},
{
"name": "Fund holdings",
"value": 115718.0,
"pct": 0.0008139536916857307
},
{
"name": "Equity (intl)",
"value": 4056.0,
"pct": 2.852966844810076e-05
}
],
"top": [
{
"text": "medium-term notes and sovereign debt securities with a market value of $2,040,622,219",
"value": 2040622219.0,
"cat": "OTHER REPURCHASE AGREEMENTS"
},
{
"text": "securities provided as collateral for $2,000,610,000 on 6/1/2026, in which asset-backed",
"value": 2000610000.0,
"cat": "OTHER REPURCHASE AGREEMENTS"
},
{
"text": "BNP Paribas S.A., 3.66%, dated 5/29/2026, interest in a $2,000,000,000 joint collateralized",
"value": 2000000000.0,
"cat": "OTHER REPURCHASE AGREEMENTS"
},
{
"text": "was $1,281,411,245.",
"value": 1281411245.0,
"cat": "REPURCHASE AGREEMENT"
},
{
"text": "repurchase securities provided as collateral for $1,250,378,125 on 6/1/2026. The securities",
"value": 1250378125.0,
"cat": "REPURCHASE AGREEMENT"
},
{
"text": "Interest in $1,250,000,000 joint repurchase agreement 3.63%, dated 5/29/2026 under",
"value": 1250000000.0,
"cat": "REPURCHASE AGREEMENT"
},
{
"text": "mortgage obligations, corporate bonds, medium-term notes with a market value of $816,253,267",
"value": 816253267.0,
"cat": "OTHER REPURCHASE AGREEMENTS"
},
{
"text": "repurchase securities provided as collateral for $800,248,000 on 6/1/2026, in which",
"value": 800248000.0,
"cat": "OTHER REPURCHASE AGREEMENTS"
},
{
"text": "Societe Generale, Paris, 3.72%, dated 5/29/2026, interest in a $800,000,000 joint",
"value": 800000000.0,
"cat": "OTHER REPURCHASE AGREEMENTS"
},
{
"text": "(IDENTIFIED COST $308,874,916)",
"value": 308874916.0,
"cat": "TOTAL INVESTMENT IN SECURITIES"
},
{
"text": "value of $306,096,421 have",
"value": 306096421.0,
"cat": "OTHER REPURCHASE AGREEMENTS"
},
{
"text": "repurchase securities provided as collateral for $300,094,250 on 6/1/2026, in which",
"value": 300094250.0,
"cat": "OTHER REPURCHASE AGREEMENTS"
},
{
"text": "MUFG Securities Americas, Inc., 3.77%, dated 5/29/2026, interest in a $300,000,000",
"value": 300000000.0,
"cat": "OTHER REPURCHASE AGREEMENTS"
},
{
"text": "Agency securities with a market value of $153,046,869 have been received as collateral",
"value": 153046869.0,
"cat": "OTHER REPURCHASE AGREEMENTS"
},
{
"text": "repurchase securities provided as collateral for $150,045,875 on 6/1/2026, in which",
"value": 150045875.0,
"cat": "OTHER REPURCHASE AGREEMENTS"
},
{
"text": "Standard Chartered Bank, 3.67%, dated 5/29/2026, interest in a $150,000,000 joint",
"value": 150000000.0,
"cat": "OTHER REPURCHASE AGREEMENTS"
},
{
"text": "(IDENTIFIED COST $102,362,266)",
"value": 102362266.0,
"cat": "Utility - Electric"
},
{
"text": "(IDENTIFIED COST $100,389,650)",
"value": 100389650.0,
"cat": "Other"
},
{
"text": "(IDENTIFIED COST $60,216,000)",
"value": 60216000.0,
"cat": "OTHER REPURCHASE AGREEMENTS"
},
{
"text": "(IDENTIFIED COST $35,907,000)",
"value": 35907000.0,
"cat": "REPURCHASE AGREEMENT"
},
{
"text": "(IDENTIFIED COST $10,000,000)",
"value": 10000000.0,
"cat": "Utility - Natural Gas"
},
{
"text": "1/18/2040",
"value": 2040.0,
"cat": "Auto Receivables"
},
{
"text": "Wheels Fleet Lease Funding LLC 2025-3A, Class A1, 4.080%, 9/18/2040",
"value": 2040.0,
"cat": "Auto Receivables"
},
{
"text": "Huntington National Bank, Class B1, 4.503%, 2/20/2034",
"value": 2034.0,
"cat": "Auto Receivables"
},
{
"text": "Santander Bank Auto Credit-Linked Notes 2025-A, Class D, 5.150%, 1/16/2034",
"value": 2034.0,
"cat": "Auto Receivables"
},
{
"text": "Ally Bank Auto Credit-Linked Notes 2025-A, Class D, 4.991%, 6/15/2033",
"value": 2033.0,
"cat": "Auto Receivables"
},
{
"text": "Ally Bank Auto Credit-Linked Notes 2025-B, Class D, 4.942%, 9/15/2033",
"value": 2033.0,
"cat": "Auto Receivables"
},
{
"text": "ARI Fleet Lease Trust 2024-B, Class A2, 5.540%, 4/15/2033",
"value": 2033.0,
"cat": "Auto Receivables"
},
{
"text": "Chase Auto Credit Linked Notes 2025-1, Class C, 4.851%, 2/25/2033",
"value": 2033.0,
"cat": "Auto Receivables"
},
{
"text": "Securitized Term Auto Receivables Trust 2026-A, Class B, 4.284%, 3/25/2033",
"value": 2033.0,
"cat": "Auto Receivables"
},
{
"text": "The Huntington National Bank 2025-1, Class B, 4.957%, 3/21/2033",
"value": 2033.0,
"cat": "Auto Receivables"
},
{
"text": "Truist Bank Auto Credit-Linked Notes Series 2025-1, Class B, 4.728%, 9/26/2033",
"value": 2033.0,
"cat": "Auto Receivables"
},
{
"text": "Ally Bank Auto Credit-Linked Notes 2024-A, Class B, 5.827%, 5/17/2032",
"value": 2032.0,
"cat": "Auto Receivables"
},
{
"text": "Drive Auto Receivables Trust 2025-2, Class B, 4.140%, 9/15/2032",
"value": 2032.0,
"cat": "Auto Receivables"
},
{
"text": "Securitized Term Auto Receivables Trust 2025-B, Class C, 5.121%, 12/29/2032",
"value": 2032.0,
"cat": "Auto Receivables"
},
{
"text": "Securitized Term Auto Receivables Trust 2025-B, Class D, 5.463%, 12/29/2032",
"value": 2032.0,
"cat": "Auto Receivables"
},
{
"text": "HPEFS Equipment Trust 2025-1A, Class B, 4.510%, 9/20/2032",
"value": 2032.0,
"cat": "Equipment Lease"
},
{
"text": "Santander Drive Auto Receivables Trust 2025-1, Class B, 4.880%, 3/17/2031",
"value": 2031.0,
"cat": "Auto Receivables"
},
{
"text": "SBNA Auto Receivables Trust 2025-SF1, Class D, 5.340%, 9/15/2031",
"value": 2031.0,
"cat": "Auto Receivables"
},
{
"text": "Securitized Term Auto Receivables Trust 2025-A, Class B, 5.038%, 7/25/2031",
"value": 2031.0,
"cat": "Auto Receivables"
}
]
}

View File

@ -0,0 +1,287 @@
{
"sym": "hicox",
"as_of": "December 31, 2025",
"net_assets": 1948524338.0,
"n_positions": 496,
"categories": [
{
"name": "Principal Value Colorado Municipal Bonds",
"pct": 56.7
},
{
"name": "Colorado",
"pct": 100.0
},
{
"name": "Other Municipal Bonds",
"pct": 8.4
},
{
"name": "South Dakota",
"pct": 59.3
},
{
"name": "Utah",
"pct": 32.7
},
{
"name": "Puerto Rico",
"pct": 6.0
},
{
"name": "Washington",
"pct": 1.0
},
{
"name": "Ohio",
"pct": 0.8
},
{
"name": "California",
"pct": 0.2
},
{
"name": "Short-Term Municipal Bonds",
"pct": 4.0
},
{
"name": "Oregon",
"pct": 7.5
},
{
"name": "Capital Appreciation and Zero Coupon Bonds",
"pct": 2.6
},
{
"name": "Colorado Taxable Certificates/Notes/Bonds",
"pct": 0.3
},
{
"name": "Other Assets",
"pct": 0.1
},
{
"name": "Other assets net of liabilities",
"pct": 27.9
}
],
"buckets": [
{
"name": "Other",
"value": 3010408218.0,
"pct": 68.18216496187222
},
{
"name": "IG credit / munis",
"value": 1404832685.0,
"pct": 31.817789128989105
},
{
"name": "Equity (intl)",
"value": 2027.0,
"pct": 4.590913868469747e-05
}
],
"top": [
{
"text": "Total investments, at value (amortized cost $1,471,423,324)",
"value": 1471423324.0,
"cat": "Utah"
},
{
"text": "Colorado (amortized cost $1,152,445,022)",
"value": 1152445022.0,
"cat": "Colorado"
},
{
"text": "Colorado Municipal Bonds (amortized cost $1,152,445,022)",
"value": 1152445022.0,
"cat": "Colorado"
},
{
"text": "Other Municipal Bonds (amortized cost $170,970,555)",
"value": 170970555.0,
"cat": "California"
},
{
"text": "South Dakota (amortized cost $106,046,089)",
"value": 106046089.0,
"cat": "South Dakota"
},
{
"text": "Short-Term Municipal Bonds (amortized cost $81,417,108)",
"value": 81417108.0,
"cat": "South Dakota"
},
{
"text": "Colorado (amortized cost $72,292,108)",
"value": 72292108.0,
"cat": "Colorado"
},
{
"text": "Colorado (amortized cost $58,399,292)",
"value": 58399292.0,
"cat": "Colorado"
},
{
"text": "Colorado Capital Appreciation and Zero Coupon Bonds (amortized cost $58,399,292)",
"value": 58399292.0,
"cat": "Colorado"
},
{
"text": "Utah (amortized cost $52,805,667)",
"value": 52805667.0,
"cat": "Utah"
},
{
"text": "Puerto Rico (amortized cost $9,020,722)",
"value": 9020722.0,
"cat": "Puerto Rico"
},
{
"text": "Colorado (amortized cost $7,191,347)",
"value": 7191347.0,
"cat": "Colorado"
},
{
"text": "Colorado Taxable Certificates/Notes/Bonds (amortized cost $7,191,347)",
"value": 7191347.0,
"cat": "Colorado"
},
{
"text": "Oregon (amortized cost $5,815,000)",
"value": 5815000.0,
"cat": "Oregon"
},
{
"text": "South Dakota (amortized cost $3,310,000)",
"value": 3310000.0,
"cat": "South Dakota"
},
{
"text": "Washington (amortized cost $1,587,130)",
"value": 1587130.0,
"cat": "Washington"
},
{
"text": "Ohio (amortized cost $1,275,000)",
"value": 1275000.0,
"cat": "Ohio"
},
{
"text": "Utah (amortized cost $1,000,000)",
"value": 1000000.0,
"cat": "Utah"
},
{
"text": "Other Assets (amortized cost $1,000,000)",
"value": 1000000.0,
"cat": "Utah"
},
{
"text": "California (amortized cost $235,948)",
"value": 235948.0,
"cat": "California"
},
{
"text": "12/1/2061",
"value": 2061.0,
"cat": "Colorado"
},
{
"text": "Puerto Rico / Sales Tax - Series A - 2058",
"value": 2058.0,
"cat": "Puerto Rico"
},
{
"text": "7/1/2058",
"value": 2058.0,
"cat": "Puerto Rico"
},
{
"text": "Puerto Rico / Sales Tax - Series A - 2058",
"value": 2058.0,
"cat": "Puerto Rico"
},
{
"text": "7/1/2058",
"value": 2058.0,
"cat": "Puerto Rico"
},
{
"text": "12/15/2057",
"value": 2057.0,
"cat": "Colorado"
},
{
"text": "3/1/2056",
"value": 2056.0,
"cat": "Utah"
},
{
"text": "Copperleaf MD #5 - Series A - 2055",
"value": 2055.0,
"cat": "Colorado"
},
{
"text": "12/1/2055",
"value": 2055.0,
"cat": "Colorado"
},
{
"text": "Deer Creek Villas MD - Series A - 2055",
"value": 2055.0,
"cat": "Colorado"
},
{
"text": "12/1/2055",
"value": 2055.0,
"cat": "Colorado"
},
{
"text": "Eastern Hills MD #10 - Series A - 2055",
"value": 2055.0,
"cat": "Colorado"
},
{
"text": "12/1/2055",
"value": 2055.0,
"cat": "Colorado"
},
{
"text": "12/15/2055",
"value": 2055.0,
"cat": "Colorado"
},
{
"text": "Elora MD - Series A - 2055",
"value": 2055.0,
"cat": "Colorado"
},
{
"text": "12/1/2055",
"value": 2055.0,
"cat": "Colorado"
},
{
"text": "Fields MD #1 - Series A - 2055",
"value": 2055.0,
"cat": "Colorado"
},
{
"text": "12/1/2055",
"value": 2055.0,
"cat": "Colorado"
},
{
"text": "Fields MD #1 - Series B - 2055",
"value": 2055.0,
"cat": "Colorado"
},
{
"text": "12/15/2055",
"value": 2055.0,
"cat": "Colorado"
}
]
}

View File

@ -0,0 +1,334 @@
{
"sym": "hmezx",
"as_of": "September 30, 2025",
"net_assets": null,
"n_positions": 38,
"categories": [
{
"name": "Day USD-LIBOR plus",
"pct": 0.61
},
{
"name": "Common Stock",
"pct": 83.3
},
{
"name": "COMMUNICATION SERVICES",
"pct": 10.0
},
{
"name": "CONSUMER DISCRETIONARY",
"pct": 6.4
},
{
"name": "CONSUMER STAPLES",
"pct": 0.8
},
{
"name": "ENERGY",
"pct": 2.0
},
{
"name": "FINANCIALS",
"pct": 14.6
},
{
"name": "HEALTHCARE",
"pct": 10.1
},
{
"name": "INDUSTRIALS",
"pct": 18.2
},
{
"name": "INFORMATION TECHNOLOGY",
"pct": 11.8
},
{
"name": "REAL ESTATE",
"pct": 5.8
},
{
"name": "UTILITIES",
"pct": 3.6
},
{
"name": "Corporate Obligations",
"pct": 7.9
},
{
"name": "Senior Loans(g)",
"pct": 7.1
},
{
"name": "MATERIALS",
"pct": 0.0
},
{
"name": "Asset-Backed Securities",
"pct": 0.6
},
{
"name": "OTHER ASSET-BACKED SECURITIES",
"pct": 0.6
},
{
"name": "Purchased Put Options(a)",
"pct": 0.1
},
{
"name": "Units Warrants",
"pct": 0.1
},
{
"name": "SPECIAL PURPOSE ACQUISITION COMPANIES",
"pct": 0.1
},
{
"name": "Rights",
"pct": 0.1
},
{
"name": "Repurchase Agreements(j)(k)",
"pct": 0.1
},
{
"name": "Shares Cash Equivalents",
"pct": 0.5
},
{
"name": "MONEY MARKET FUND(l)",
"pct": 0.5
},
{
"name": "Other Assets & Liabilities, Net",
"pct": 14.6
},
{
"name": "Month rates were",
"pct": 4.31
},
{
"name": "Day GBP-SONIA plus",
"pct": 0.53
},
{
"name": "Day EUR-ESTR plus",
"pct": 0.55
}
],
"buckets": [
{
"name": "Other",
"value": 2822453101.0,
"pct": 99.486101142866
},
{
"name": "CMBS / ABS / CLO",
"value": 7147462.0,
"pct": 0.25193443504689483
},
{
"name": "Fund holdings",
"value": 6030197.0,
"pct": 0.21255296976975604
},
{
"name": "US govt",
"value": 1401819.0,
"pct": 0.04941145231734048
}
],
"top": [
{
"text": "(Cost $1,117,557,796)",
"value": 1117557796.0,
"cat": "Total Investments"
},
{
"text": "(Cost $931,426,247)",
"value": 931426247.0,
"cat": "UTILITIES"
},
{
"text": "As of September 30, 2025, $191,100,296 in cash was segregated or on deposit with the brokers to cover",
"value": 191100296.0,
"cat": "SOFR 1 Month and SOFR 3 Month rates were"
},
{
"text": "(Proceeds $155,215,342)",
"value": 155215342.0,
"cat": "Total Investments"
},
{
"text": "(Proceeds $147,461,845)",
"value": 147461845.0,
"cat": "Total Investments"
},
{
"text": "as collateral was $96,201,214.",
"value": 96201214.0,
"cat": "Net Assets"
},
{
"text": "(Cost $88,645,903)",
"value": 88645903.0,
"cat": "INFORMATION TECHNOLOGY"
},
{
"text": "(Cost $81,058,529)",
"value": 81058529.0,
"cat": "MATERIALS"
},
{
"text": "(Proceeds $7,753,497)",
"value": 7753497.0,
"cat": "Total Investments"
},
{
"text": "Total Asset-Backed Securities (Cost $7,145,437)",
"value": 7145437.0,
"cat": "OTHER ASSET-BACKED SECURITIES"
},
{
"text": "(Cost $6,028,257)",
"value": 6028257.0,
"cat": "MONEY MARKET FUND(l)"
},
{
"text": "(Cost $1,374,293)",
"value": 1374293.0,
"cat": "Repurchase Agreements(j)(k)"
},
{
"text": "loaned was $1,664,176. The loaned securities were secured with cash and/or securities collateral of $1,374,293. Collateral is calculated based on prior day\u2019s pr",
"value": 1374293.0,
"cat": "Net Assets"
},
{
"text": "securities as of September 30, 2025 was $1,374,293.",
"value": 1374293.0,
"cat": "SOFR 1 Month and SOFR 3 Month rates were"
},
{
"text": "(Cost $1,266,630)",
"value": 1266630.0,
"cat": "COMPANIES"
},
{
"text": "(Cost $612,500)",
"value": 612500.0,
"cat": "Purchased Put Options(a)"
},
{
"text": "$328,495 (collateralized by U.S. Treasury Obligations, ranging in par value $19 - $40,323, 0.000% - 4.104%, 11/15/2025 \u2013 8/15/2055; with total market value $335",
"value": 335065.0,
"cat": "Repurchase Agreements(j)(k)"
},
{
"text": "$328,494 (collateralized by U.S. Treasury Obligations, ranging in par value $82 - $14,533, 0.000% - 6.625%, 11/18/2025 \u2013 8/15/2055; with total market value $335",
"value": 335025.0,
"cat": "Repurchase Agreements(j)(k)"
},
{
"text": "$311,451 (collateralized by U.S. Treasury Obligations, ranging in par value $20,858 - $287,909, 4.125% - 4.500%, 12/31/2031 \u2013 5/31/2032; with total market value",
"value": 317643.0,
"cat": "Repurchase Agreements(j)(k)"
},
{
"text": "price $220,855 (collateralized by U.S. Treasury Obligations, ranging in par value $608 - $85,413, 0.000% - 4.000%, 7/15/2026 \u2013 8/15/2054; with total market valu",
"value": 225246.0,
"cat": "Repurchase Agreements(j)(k)"
},
{
"text": "$185,159 (collateralized by U.S. Treasury Obligations, ranging in par value $22 - $44,261, 0.000% - 4.750%, 10/23/2025 \u2013 8/15/2055; with total market value $188",
"value": 188840.0,
"cat": "Repurchase Agreements(j)(k)"
},
{
"text": "5.60%, 10/15/2054",
"value": 2054.0,
"cat": "INFORMATION TECHNOLOGY"
},
{
"text": "10.75%, 11/30/2029",
"value": 2029.0,
"cat": "COMMUNICATION SERVICES"
},
{
"text": "12/17/2029",
"value": 2029.0,
"cat": "COMMUNICATION SERVICES"
},
{
"text": "07/18/2029",
"value": 2029.0,
"cat": "MATERIALS"
},
{
"text": "09/24/2026",
"value": 2026.0,
"cat": ""
},
{
"text": "09/24/2026",
"value": 2026.0,
"cat": ""
},
{
"text": "8/20/2026",
"value": 2026.0,
"cat": "SOFR 1 Month and SOFR 3 Month rates were"
},
{
"text": "9/1/2026",
"value": 2026.0,
"cat": "SOFR 1 Month and SOFR 3 Month rates were"
},
{
"text": "9/16/2026",
"value": 2026.0,
"cat": "SOFR 1 Month and SOFR 3 Month rates were"
},
{
"text": "8/20/2026",
"value": 2026.0,
"cat": "SOFR 1 Month and SOFR 3 Month rates were"
},
{
"text": "8/17/2026",
"value": 2026.0,
"cat": "SOFR 1 Month and SOFR 3 Month rates were"
},
{
"text": "As of September 30, 2025",
"value": 2025.0,
"cat": ""
},
{
"text": "As of September 30, 2025",
"value": 2025.0,
"cat": "OTHER ASSET-BACKED SECURITIES"
},
{
"text": "As of September 30, 2025",
"value": 2025.0,
"cat": "Total Investments"
},
{
"text": "As of September 30, 2025",
"value": 2025.0,
"cat": "SOFR 1 Month and SOFR 3 Month rates were"
},
{
"text": "December 2025",
"value": 2025.0,
"cat": "SOFR 1 Month and SOFR 3 Month rates were"
},
{
"text": "by the Board of Trustees (the \u201cBoard\u201d). The Board has designated the Investment Adviser as \u201cvaluation designee\u201d for the Fund pursuant to Rule 2a-5 of the Invest",
"value": 1940.0,
"cat": "Net Assets"
}
]
}

View File

@ -0,0 +1,287 @@
{
"sym": "lpxax",
"as_of": "July 31, 2025",
"net_assets": 1755728990.0,
"n_positions": 5,
"categories": [
{
"name": "EXCHANGE-TRADED",
"pct": 3.0
},
{
"name": "BANKING",
"pct": 0.8
},
{
"name": "FINANCIAL SERVICES",
"pct": 0.6
},
{
"name": "INSURANCE",
"pct": 0.7
},
{
"name": "Athene Holding Ltd.,",
"pct": 6.35
},
{
"name": "Lincoln National Corp.,",
"pct": 9.0
},
{
"name": "Reinsurance Group of America, Inc.,",
"pct": 5.75
},
{
"name": "UTILITIES",
"pct": 0.9
},
{
"name": "OVER-THE-COUNTER",
"pct": 81.1
},
{
"name": "Abanca Corp. Bancaria SA,",
"pct": 6.0
},
{
"name": "Banco BPM SpA,",
"pct": 6.25
},
{
"name": "Banco de Sabadell SA,",
"pct": 6.5
},
{
"name": "Banco Santander SA,",
"pct": 4.75
},
{
"name": "Bank of America Corp.,",
"pct": 6.25
},
{
"name": "Bank of Montreal,",
"pct": 7.7
},
{
"name": "Bank of Nova Scotia,",
"pct": 7.35
},
{
"name": "Value BNP Paribas SA,",
"pct": 7.75
},
{
"name": "BNP Paribas SA,",
"pct": 8.5
},
{
"name": "Canadian Imperial Bank of Commerce,",
"pct": 7.0
},
{
"name": "Charles Schwab Corp.,",
"pct": 4.0
},
{
"name": "Citigroup, Inc.,",
"pct": 6.25
},
{
"name": "ACB,",
"pct": 6.25
},
{
"name": "Commerzbank AG,",
"pct": 7.5
},
{
"name": "Coventry Building Society,",
"pct": 8.75
},
{
"name": "Credit Agricole SA,",
"pct": 7.25
},
{
"name": "Credit Suisse Group AG,",
"pct": 7.5
},
{
"name": "Erste Group Bank AG,",
"pct": 7.0
},
{
"name": "Farm Credit Bank of Texas,",
"pct": 5.7
},
{
"name": "First Horizon Bank,",
"pct": 5.44
},
{
"name": "Floor",
"pct": 3.75
},
{
"name": "Goldman Sachs Group, Inc.,",
"pct": 7.5
},
{
"name": "PLC,",
"pct": 6.0
},
{
"name": "ING Groep NV,",
"pct": 5.75
},
{
"name": "Intesa Sanpaolo SpA,",
"pct": 7.7
},
{
"name": "Julius Baer Group Ltd.,",
"pct": 7.5
},
{
"name": "Landesbank Baden-Wuerttemberg,",
"pct": 6.75
},
{
"name": "Bank Corp.,",
"pct": 5.4
},
{
"name": "Nationwide Building Society,",
"pct": 7.5
},
{
"name": "Piraeus Financial Holdings SA,",
"pct": 6.75
},
{
"name": "PNC Financial Services Group, Inc.,",
"pct": 6.0
},
{
"name": "Royal Bank of Canada,",
"pct": 6.75
},
{
"name": "Societe Generale SA,",
"pct": 6.75
},
{
"name": "State Street Corp.,",
"pct": 6.7
},
{
"name": "Swedbank AB,",
"pct": 7.75
},
{
"name": "Toronto-Dominion Bank,",
"pct": 7.25
},
{
"name": "Truist Financial Corp.,",
"pct": 5.23
},
{
"name": "UBS Group AG,",
"pct": 6.85
},
{
"name": "Wells Fargo & Co.,",
"pct": 3.9
},
{
"name": "CONSUMER DISCRETIONARY PRODUCTS",
"pct": 0.6
},
{
"name": "Volkswagen International Finance NV,",
"pct": 7.5
},
{
"name": "ENERGY",
"pct": 0.6
},
{
"name": "OMV AG,",
"pct": 4.37
},
{
"name": "SARL,",
"pct": 4.5
},
{
"name": "Capital DAC/AerCap Global Aviation Trust,",
"pct": 6.95
},
{
"name": "Ally Financial, Inc.,",
"pct": 4.7
},
{
"name": "ILFC E-Capital Trust I,",
"pct": 6.43
},
{
"name": "Nomura Holdings, Inc.,",
"pct": 7.0
},
{
"name": "HEALTH CARE",
"pct": 0.8
},
{
"name": "CVS Health Corp.,",
"pct": 7.0
},
{
"name": "Allianz SE,",
"pct": 3.5
}
],
"buckets": [
{
"name": "Commodities",
"value": 3352730714.0,
"pct": 98.51567674738132
},
{
"name": "Equity (US)",
"value": 50515170.0,
"pct": 1.4843232526186756
}
],
"top": [
{
"text": "(Identified cost\u2014$1,701,622,942)",
"value": 1701622942.0,
"cat": "WEC Energy Group, Inc.,"
},
{
"text": "(Identified cost\u2014$1,395,998,797)",
"value": 1395998797.0,
"cat": "NextEra Energy Capital Holdings, Inc.,"
},
{
"text": "(Identified cost\u2014$249,101,966)",
"value": 249101966.0,
"cat": "WEC Energy Group, Inc.,"
},
{
"text": "cost\u2014$50,515,170)",
"value": 50515170.0,
"cat": "Reinsurance Group of America, Inc.,"
},
{
"text": "(Identified cost\u2014$6,007,009)",
"value": 6007009.0,
"cat": "WEC Energy Group, Inc.,"
}
]
}

View File

@ -0,0 +1,352 @@
{
"sym": "rctix",
"as_of": "December 31, 2025",
"net_assets": 1815329634.0,
"n_positions": 18,
"categories": [
{
"name": "ASSET-BACKED SECURITIES",
"pct": 45.4
},
{
"name": "Step to",
"pct": 12.31
},
{
"name": "Floor) (a)(b)",
"pct": 8.86
},
{
"name": "Floor) (a)(b)(d)",
"pct": 7.63
},
{
"name": "BA (a)",
"pct": 3.42
},
{
"name": "BANK DEBTS (b)",
"pct": 10.5
},
{
"name": "Floor)",
"pct": 9.42
},
{
"name": "CORPORATE BONDS",
"pct": 17.2
},
{
"name": "Ahead DB Holdings LLC (a)",
"pct": 6.63
},
{
"name": "AMC Networks, Inc. (a)",
"pct": 10.25
},
{
"name": "Anywhere Real Estate Group LLC (a)",
"pct": 5.25
},
{
"name": "Ardagh Metal Packaging Finance U.S.A. LLC (a)",
"pct": 4.0
},
{
"name": "Brand Industrial Services, Inc. (a)",
"pct": 10.38
},
{
"name": "Brookfield Property REIT, Inc. (a)",
"pct": 5.75
},
{
"name": "Champ Acquisition Corp. (a)",
"pct": 8.38
},
{
"name": "CTR Partnership L.P. (a)",
"pct": 3.88
},
{
"name": "DISH DBS Corp.",
"pct": 7.75
},
{
"name": "FMC Corp.",
"pct": 4.5
},
{
"name": "Freedom Funding Center LLC (a)(m)",
"pct": 12.0
},
{
"name": "Frontier Communications Holdings LLC (a)",
"pct": 8.75
},
{
"name": "HAH Group Holding Co. LLC (a)",
"pct": 9.75
},
{
"name": "Hewlett Packard Enterprise Co.",
"pct": 4.85
},
{
"name": "HOA Royalty Co. LLC (a)(d)",
"pct": 4.72
},
{
"name": "LABL, Inc. (a)",
"pct": 10.5
},
{
"name": "Martin Midstream Partners L.P. (a)",
"pct": 11.5
},
{
"name": "L.P.",
"pct": 0.99
},
{
"name": "Pagaya US Holdings Co. LLC (a)",
"pct": 8.88
},
{
"name": "Sealed Air Corp. (a)",
"pct": 7.25
},
{
"name": "Shutterfly Finance LLC (a)(m)",
"pct": 8.5
},
{
"name": "TKC Holdings, Inc. (a)",
"pct": 10.5
},
{
"name": "VICI Properties L.P. (a)",
"pct": 4.25
},
{
"name": "SLM Corp.",
"pct": 3.13
},
{
"name": "Staples, Inc. (a)",
"pct": 10.75
},
{
"name": "FOREIGN ISSUER BONDS",
"pct": 3.2
},
{
"name": "PLC (a)",
"pct": 9.0
},
{
"name": "Latam Airlines Group S.A. (a)",
"pct": 7.88
},
{
"name": "Pembroke Olive Downs Pty Ltd.",
"pct": 11.5
},
{
"name": "Seagate Data Storage Technology Pte Ltd. (a)",
"pct": 8.25
},
{
"name": "PLC",
"pct": 10.75
},
{
"name": "MORTGAGE-BACKED SECURITIES",
"pct": 12.7
},
{
"name": "PRIVATE",
"pct": 6.2
},
{
"name": "Home Equity",
"pct": 3.1
},
{
"name": "Floor) (b)(g)",
"pct": 4.31
},
{
"name": "Floor) (b)(d)(g)",
"pct": 3.99
},
{
"name": "Floor) (b)(d)",
"pct": 4.25
},
{
"name": "Floating,",
"pct": 5.79
},
{
"name": "Cap) (b)(g)(h)",
"pct": 1.47
},
{
"name": "Commercial Mortgage-Backed Securities",
"pct": 3.1
},
{
"name": "GOVERNMENT AGENCIES",
"pct": 6.5
},
{
"name": "SOFR,",
"pct": 6.1
},
{
"name": "Day Average SOFR) (b)(g)(h)",
"pct": 1.58
},
{
"name": "Cap) (b)",
"pct": 11.19
},
{
"name": "Day Average SOFR) (b)(h)",
"pct": 0.03
},
{
"name": "OTHER",
"pct": 0.0
},
{
"name": "GOVERNMENT OBLIGATIONS",
"pct": 0.6
},
{
"name": "Treasury Note",
"pct": 4.25
},
{
"name": "MUNICIPAL BONDS",
"pct": 4.4
},
{
"name": "Commonwealth Puerto Rico Taxable Revenue Bond",
"pct": 7.5
},
{
"name": "Commonwealth of Puerto Rico (p)",
"pct": 0.0
},
{
"name": "PR Custodial Trust (g)(p)",
"pct": 0.0
}
],
"buckets": [
{
"name": "Other",
"value": 1965344232.0,
"pct": 50.41881596853151
},
{
"name": "US govt",
"value": 1932693027.0,
"pct": 49.58118403146849
}
],
"top": [
{
"text": "(Cost $1,832,839,506)",
"value": 1832839506.0,
"cat": "Treasury Portfolio (Premier Class),"
},
{
"text": "(Cost $831,642,533)",
"value": 831642533.0,
"cat": "Step to"
},
{
"text": "(Cost $321,543,847)",
"value": 321543847.0,
"cat": "Step to"
},
{
"text": "(Cost $232,329,829)",
"value": 232329829.0,
"cat": "Floating,"
},
{
"text": "(Cost $198,523,212)",
"value": 198523212.0,
"cat": "Step to"
},
{
"text": "(Cost $119,411,219)",
"value": 119411219.0,
"cat": "Floating,"
},
{
"text": "(Cost $99,851,496)",
"value": 99851496.0,
"cat": "Treasury Portfolio (Premier Class),"
},
{
"text": "(Cost $81,720,612)",
"value": 81720612.0,
"cat": "Floating,"
},
{
"text": "(Cost $57,134,313)",
"value": 57134313.0,
"cat": "Step to"
},
{
"text": "(Cost $56,956,176)",
"value": 56956176.0,
"cat": "Floating,"
},
{
"text": "(Cost $55,962,434)",
"value": 55962434.0,
"cat": "Floating,"
},
{
"text": "(Cost $10,093,664)",
"value": 10093664.0,
"cat": "Floating,"
},
{
"text": "Freddie Mac REMICS Series 5564",
"value": 5564.0,
"cat": "Floating,"
},
{
"text": "Freddie Mac REMICS Series 5386",
"value": 5386.0,
"cat": "Floating,"
},
{
"text": "Freddie Mac REMICS Series 5370",
"value": 5370.0,
"cat": "Floating,"
},
{
"text": "Freddie Mac REMICS Series 5240",
"value": 5240.0,
"cat": "Floating,"
},
{
"text": "Freddie Mac REMICS Series 4833",
"value": 4833.0,
"cat": "Floating,"
},
{
"text": "(d) Security valued pursuant to Level 3 unobservable inputs. As of December 31, 2025,",
"value": 2025.0,
"cat": "Treasury Portfolio (Premier Class),"
}
]
}

View File

@ -0,0 +1,21 @@
{
"sym": "scfzx",
"as_of": "December 31, 2025",
"net_assets": null,
"n_positions": 1,
"categories": [],
"buckets": [
{
"name": "Other",
"value": 2025.0,
"pct": 100.0
}
],
"top": [
{
"text": "as of December 31, 2025",
"value": 2025.0,
"cat": ""
}
]
}

View File

@ -0,0 +1,482 @@
{
"sym": "usmsx",
"as_of": "May 31, 2026",
"net_assets": 2604801.0,
"n_positions": 911,
"categories": [
{
"name": "Municipal Bonds",
"pct": 91.4
},
{
"name": "Alabama",
"pct": 2.0
},
{
"name": "Rev.,",
"pct": 5.0
},
{
"name": "Series A, Rev.,",
"pct": 5.0
},
{
"name": "GO,",
"pct": 5.0
},
{
"name": "Rev., VRDO,",
"pct": 2.85
},
{
"name": "Alaska",
"pct": 1.0
},
{
"name": "Arizona",
"pct": 1.0
},
{
"name": "COP,",
"pct": 5.0
},
{
"name": "Arkansas",
"pct": 0.1
},
{
"name": "Rev., GNMA / FNMA / FHLMC,",
"pct": 2.88
},
{
"name": "California",
"pct": 0.9
},
{
"name": "Rev., AMBAC,",
"pct": 5.0
},
{
"name": "Rev., AMT,",
"pct": 2.8
},
{
"name": "Colorado",
"pct": 2.1
},
{
"name": "TD Bank NA,",
"pct": 2.8
},
{
"name": "Connecticut",
"pct": 3.0
},
{
"name": "City of Bristol, GO, BAN,",
"pct": 4.0
},
{
"name": "GO, BAN,",
"pct": 4.0
},
{
"name": "Series B, Rev.,",
"pct": 5.0
},
{
"name": "Delaware",
"pct": 0.8
},
{
"name": "District of Columbia",
"pct": 1.1
},
{
"name": "GO, VRDO,",
"pct": 1.72
},
{
"name": "Florida",
"pct": 2.4
},
{
"name": "COP, A.G.,",
"pct": 5.0
},
{
"name": "Rev., A.G.,",
"pct": 5.25
},
{
"name": "Series A, Rev., AMT,",
"pct": 5.0
},
{
"name": "Miami-Dade, Aviation System Series B, Rev.,",
"pct": 5.0
},
{
"name": "Royal Bank of Canada,",
"pct": 2.8
},
{
"name": "A, COP,",
"pct": 5.0
},
{
"name": "Georgia",
"pct": 0.4
},
{
"name": "Guam",
"pct": 0.0
},
{
"name": "Hawaii",
"pct": 0.0
},
{
"name": "D, GO,",
"pct": 5.0
},
{
"name": "Honolulu Wastewater System Series A, Rev.,",
"pct": 4.0
},
{
"name": "A, GO,",
"pct": 5.0
},
{
"name": "FK, GO,",
"pct": 5.0
},
{
"name": "FH, GO,",
"pct": 5.0
},
{
"name": "Illinois",
"pct": 1.7
},
{
"name": "General Airport, Senior Lien Series A, Rev.,",
"pct": 5.0
},
{
"name": "Series C, Rev.,",
"pct": 5.0
},
{
"name": "GO, NATL - RE,",
"pct": 6.0
},
{
"name": "Indiana",
"pct": 1.8
},
{
"name": "Purdue University Series EE, Rev.,",
"pct": 5.0
},
{
"name": "Iowa",
"pct": 1.1
},
{
"name": "Kansas",
"pct": 0.7
},
{
"name": "Kentucky",
"pct": 0.7
},
{
"name": "Revitalization Projects Series B, Rev.,",
"pct": 5.0
},
{
"name": "Louisiana",
"pct": 0.4
},
{
"name": "Maine",
"pct": 0.4
},
{
"name": "Maryland",
"pct": 0.2
},
{
"name": "Massachusetts",
"pct": 3.4
},
{
"name": "City of Brockton, GO, BAN,",
"pct": 5.0
},
{
"name": "C, GO, A.G.,",
"pct": 5.25
},
{
"name": "Cotuit Fire District, GO, BAN,",
"pct": 4.0
},
{
"name": "Valley Regional Transit Authority, Rev., RAN,",
"pct": 4.25
},
{
"name": "Middlesex Regional School District, GO, BAN,",
"pct": 4.0
},
{
"name": "Town of Hatfield, GO, BAN,",
"pct": 4.0
},
{
"name": "Town of Nahant, GO, BAN,",
"pct": 4.25
},
{
"name": "Town of Orange, GO, BAN,",
"pct": 4.0
}
],
"buckets": [
{
"name": "Other",
"value": 6885533.0,
"pct": 94.62912377878096
},
{
"name": "Fund holdings",
"value": 352310.0,
"pct": 4.841859969083341
},
{
"name": "Equity (US)",
"value": 18225.0,
"pct": 0.2504694670504496
},
{
"name": "IG credit / munis",
"value": 8103.0,
"pct": 0.11136099267543445
},
{
"name": "Commodities",
"value": 6083.0,
"pct": 0.08359976779522
},
{
"name": "Agency MBS",
"value": 6082.0,
"pct": 0.08358602461458624
}
],
"top": [
{
"text": "(Cost $2,717,888)",
"value": 2717888.0,
"cat": "Total Investments"
},
{
"text": "(Cost $2,377,731)",
"value": 2377731.0,
"cat": "Series B-2, Rev.,"
},
{
"text": "(Cost $340,157)",
"value": 340157.0,
"cat": "Tax Free Money Market Fund Class IM Shares,"
},
{
"text": "4.00%, 1/1/2033",
"value": 2033.0,
"cat": "County of Winnebago Series 2016E, GO,"
},
{
"text": "Rev., 5.00%, 2/1/2031",
"value": 2031.0,
"cat": "Rev.,"
},
{
"text": "Series 2016A, Rev., 4.00%, 7/1/2031",
"value": 2031.0,
"cat": "Series 2016A, Rev.,"
},
{
"text": "Series 2019B, GO, 5.00%, 11/1/2031",
"value": 2031.0,
"cat": "Series 2019B, GO,"
},
{
"text": "Series 2026-1, Rev., 5.00%, 11/1/2031",
"value": 2031.0,
"cat": "Series 2026-1, Rev.,"
},
{
"text": "Series 2016D, Rev., 5.00%, 11/15/2031",
"value": 2031.0,
"cat": "Series 2016D, Rev.,"
},
{
"text": "Series 2025C, Rev., 5.00%, 3/15/2031",
"value": 2031.0,
"cat": "Series 2025C, Rev.,"
},
{
"text": "Series 2017A, GO, 4.00%, 4/1/2031",
"value": 2031.0,
"cat": "Series 2017A, GO,"
},
{
"text": "South Carolina Public Service Authority Series 2016A, Rev., 5.00%, 12/1/2031",
"value": 2031.0,
"cat": "Public Service Authority Series 2016A, Rev.,"
},
{
"text": "City of Georgetown, Combination Tax Series 2026, GO, 5.00%, 8/15/2031",
"value": 2031.0,
"cat": "Georgetown, Combination Tax Series 2026, GO,"
},
{
"text": "Series 2025, GO, 5.00%, 3/1/2031",
"value": 2031.0,
"cat": "Series 2025, GO,"
},
{
"text": "City of Salt Lake City Series 2021A, Rev., AMT, 5.00%, 7/1/2031",
"value": 2031.0,
"cat": "Salt Lake City Series 2021A, Rev., AMT,"
},
{
"text": "Series 2017B, Rev., 5.00%, 7/1/2030",
"value": 2030.0,
"cat": "Series 2017B, Rev.,"
},
{
"text": "Series 2024C, Rev., 5.00%, 7/1/2030",
"value": 2030.0,
"cat": "Series 2024C, Rev.,"
},
{
"text": "Series 2026, COP, 5.00%, 12/1/2030",
"value": 2030.0,
"cat": "Series 2026, COP,"
},
{
"text": "Series 2025D, GO, 5.00%, 8/15/2030",
"value": 2030.0,
"cat": "Series 2025D, GO,"
},
{
"text": "10/1/2030",
"value": 2030.0,
"cat": "Authority Aviation Series 2024A, Rev., AMT,"
},
{
"text": "City of Atlanta Water and Wastewater, Subordinate Lien Series 2026, Rev., 5.00%, 11/1/2030",
"value": 2030.0,
"cat": "Subordinate Lien Series 2026, Rev.,"
},
{
"text": "City of Springfield Electric, Senior Lien Series 2024, Rev., 5.00%, 3/1/2030",
"value": 2030.0,
"cat": "Electric, Senior Lien Series 2024, Rev.,"
},
{
"text": "County of Winnebago Series 2016E, GO, 3.63%, 12/30/2030",
"value": 2030.0,
"cat": "County of Winnebago Series 2016E, GO,"
},
{
"text": "Series 2025, Rev., 5.00%, 7/1/2030",
"value": 2030.0,
"cat": "Series 2025, Rev.,"
},
{
"text": "Series 2026-2, Rev., 5.00%, 11/1/2030",
"value": 2030.0,
"cat": "Series 2026-2, Rev.,"
},
{
"text": "Michigan State Building Authority Series 2016I, Rev., 5.00%, 10/15/2030",
"value": 2030.0,
"cat": "State Building Authority Series 2016I, Rev.,"
},
{
"text": "Series 2024A, Rev., 3.70%, 4/1/2030",
"value": 2030.0,
"cat": "Series 2024A, Rev.,"
},
{
"text": "12/15/2030",
"value": 2030.0,
"cat": "Rev.,"
},
{
"text": "Series 2026B, Subseries B-1, GO, 5.00%, 8/1/2030",
"value": 2030.0,
"cat": "Series 2026B, Subseries B-1, GO,"
},
{
"text": "Series 2025F, Subseries F-1, Rev., 5.00%, 11/1/2030",
"value": 2030.0,
"cat": "Series 2025F, Subseries F-1, Rev.,"
},
{
"text": "Series 2026A, Rev., 5.00%, 3/15/2030",
"value": 2030.0,
"cat": "Series 2026A, Rev.,"
},
{
"text": "Series 177TH, Rev., AMT, 4.00%, 7/15/2030",
"value": 2030.0,
"cat": "Series 177TH, Rev., AMT,"
},
{
"text": "Series 2025A, GO, 5.00%, 6/15/2030",
"value": 2030.0,
"cat": "Series 2025A, GO,"
},
{
"text": "Series 2025B, GO, 5.00%, 11/1/2030",
"value": 2030.0,
"cat": "Series 2025B, GO,"
},
{
"text": "Series 2025A, GO, 5.00%, 3/1/2030",
"value": 2030.0,
"cat": "Series 2025A, GO,"
},
{
"text": "Series 2018, Rev., 5.00%, 6/1/2030",
"value": 2030.0,
"cat": "Series 2018, Rev.,"
},
{
"text": "Rev., 5.00%, 4/1/2030",
"value": 2030.0,
"cat": "Rev.,"
},
{
"text": "City of Corpus Christi Series 2025A, GO, 5.00%, 3/1/2030",
"value": 2030.0,
"cat": "City of Corpus Christi Series 2025A, GO,"
},
{
"text": "Series 2018B, Rev., 5.00%, 7/1/2030",
"value": 2030.0,
"cat": "Series 2018B, Rev.,"
},
{
"text": "Series 2016, Rev., 5.00%, 2/1/2030",
"value": 2030.0,
"cat": "Series 2016, Rev.,"
}
]
}

View File

@ -0,0 +1,130 @@
{
"sym": "wmnux",
"as_of": "February 28, 2026",
"net_assets": null,
"n_positions": 0,
"categories": [
{
"name": "Net Assets Communications",
"pct": 7.0
},
{
"name": "Entertainment Content",
"pct": 3.7
},
{
"name": "Internet Media & Services",
"pct": 3.3
},
{
"name": "Consumer Discretionary",
"pct": 12.8
},
{
"name": "Automotive",
"pct": 1.6
},
{
"name": "Home Construction",
"pct": 1.1
},
{
"name": "Leisure Facilities & Services",
"pct": 2.9
},
{
"name": "Retail - Discretionary",
"pct": 7.2
},
{
"name": "Consumer Staples",
"pct": 4.2
},
{
"name": "Retail - Consumer Staples",
"pct": 4.2
},
{
"name": "Financials",
"pct": 12.5
},
{
"name": "Asset Management",
"pct": 4.1
},
{
"name": "Institutional Financial Services",
"pct": 4.0
},
{
"name": "Specialty Finance",
"pct": 4.4
},
{
"name": "Health Care",
"pct": 6.4
},
{
"name": "Health Care Facilities & Services",
"pct": 6.4
},
{
"name": "Industrials",
"pct": 29.2
},
{
"name": "Commercial Support Services",
"pct": 2.9
},
{
"name": "Electrical Equipment",
"pct": 4.9
},
{
"name": "Engineering & Construction",
"pct": 5.8
},
{
"name": "Industrial Support Services",
"pct": 8.3
},
{
"name": "Machinery",
"pct": 3.7
},
{
"name": "Transportation & Logistics",
"pct": 3.6
},
{
"name": "Materials",
"pct": 4.6
},
{
"name": "Chemicals",
"pct": 4.6
},
{
"name": "Technology",
"pct": 22.0
},
{
"name": "Semiconductors",
"pct": 5.0
},
{
"name": "Software",
"pct": 2.7
},
{
"name": "Technology Hardware",
"pct": 12.8
},
{
"name": "Technology Services",
"pct": 1.5
}
],
"buckets": [],
"top": []
}

View File

@ -63,5 +63,89 @@
"url": "https://anchor-capital.com/wp-content/uploads/2024/10/anchor-soi-5.31.26.pdf",
"filed": "2026-05-31",
"note": "Schedule of Investments (unaudited) from the adviser's website; the fund's own recent EDGAR N-PORTs cover only the Income fund. Composition: QQQ 65.2% + SPY 29.3% + MMF 0.6%; 'other assets in excess of liabilities' 4.9% indicates an options overlay."
},
"hmezx": {
"url": "https://www.sec.gov/Archives/edgar/data/1354917/000204825126004762/primary_doc.xml",
"filed": "2026-06-01"
},
"egrix": {
"url": "https://www.sec.gov/Archives/edgar/data/745463/000141036826064358/primary_doc.xml",
"filed": "2026-06-24"
},
"hicox": {
"url": "https://www.sec.gov/Archives/edgar/data/810744/000119312526247714/primary_doc.xml",
"filed": "2026-05-29"
},
"scfzx": {
"url": "https://www.sec.gov/Archives/edgar/data/887991/000094040026034728/primary_doc.xml",
"filed": "2026-08-26"
},
"etsix": {
"url": "https://www.sec.gov/Archives/edgar/data/745463/000141036826064371/primary_doc.xml",
"filed": "2026-06-24"
},
"wmnux": {
"url": "https://www.sec.gov/Archives/edgar/data/1545440/000091047226009666/primary_doc.xml",
"filed": "2026-06-25"
},
"coiax": {
"url": "https://www.sec.gov/Archives/edgar/data/804239/000204825126004571/primary_doc.xml",
"filed": "2026-05-29"
},
"fhcox": {
"url": "https://www.sec.gov/Archives/edgar/data/1707560/000170756026000148/primary_doc.xml",
"filed": "2026-07-27"
},
"rctix": {
"url": "https://www.sec.gov/Archives/edgar/data/1516523/000206657826001957/primary_doc.xml",
"filed": "2026-05-29"
},
"aflix": {
"url": "https://www.sec.gov/Archives/edgar/data/1552947/000091047226010046/primary_doc.xml",
"filed": "2026-06-29"
},
"fhmix": {
"url": "https://www.sec.gov/Archives/edgar/data/1707560/000170756026000149/primary_doc.xml",
"filed": "2026-07-27"
},
"dultx": {
"url": "https://www.sec.gov/Archives/edgar/data/230173/000094040026034423/primary_doc.xml",
"filed": "2026-08-26"
},
"usmsx": {
"url": "https://www.sec.gov/Archives/edgar/data/1659326/000207169126017013/primary_doc.xml",
"filed": "2026-07-28"
},
"btmix": {
"url": "https://www.sec.gov/Archives/edgar/data/1282693/000119312526351309/primary_doc.xml",
"filed": "2026-08-14"
},
"safex": {
"url": "https://www.sec.gov/Archives/edgar/data/1257927/000100472626004071/primary_doc.xml",
"filed": "2026-05-28"
},
"mervx": {
"url": "https://www.sec.gov/Archives/edgar/data/1208133/000094040026022206/primary_doc.xml",
"filed": "2026-05-29"
},
"aguax": {
"url": "https://www.sec.gov/Archives/edgar/data/809593/000141036826067719/primary_doc.xml",
"filed": "2026-06-26"
},
"dmszx": {
"url": "https://www.sec.gov/Archives/edgar/data/1688680/000100371526002697/primary_doc.xml",
"filed": "2026-07-20"
},
"anglx": {
"url": "https://www.sec.gov/Archives/edgar/data/1612930/000119312526285138/primary_doc.xml",
"filed": "2026-06-26"
},
"femdx": {
"url": "https://www.sec.gov/Archives/edgar/data/1124459/000207169126014416/primary_doc.xml",
"filed": "2026-06-24"
},
"lpxax": {
"url": "https://www.sec.gov/Archives/edgar/data/1652200/000141036826065480/primary_doc.xml",
"filed": "2026-06-24"
}
}

View File

@ -1,11 +0,0 @@
Collecting usage statistics. To deactivate, set browser.gatherUsageStats to false.
2026-08-27 06:56:40.082 Uvicorn server started on :::8599
You can now view your Streamlit app in your browser.
Local URL: http://localhost:8599
Network URL: http://192.168.3.6:8599
External URL: http://100.33.61.109:8599

481
fundlab/xcheck.py Normal file
View File

@ -0,0 +1,481 @@
"""N-PORT holdings cross-check for the screen's top candidates.
For each candidate:
1. ticker -> the fund's OWN registrant CIK (browse-edgar; the 497-cover
CIK is the family/trust and is the fallback) cached in
nport_cache/cik_map.json;
2. exact series name for the ticker from the 497 covers (disambiguates
sibling funds like "... Absolute Return Fund" vs "... Advantage
Fund", which share 6 of 7 name words);
3. walk the fund's recent NPORT-Ps (submissions API):
- interactive XML primaries -> parse_interactive(), match on the
exact seriesName (this is also the only route for wrapper funds
whose whole book is one managed portfolio, e.g. egrix);
- standalone SOI htm exhibits -> nport.build() section matching;
4. keep the best result and record what the fund actually holds.
Usage: python -m fundlab.xcheck [sym ...] (default: built-in list)
Output: fundlab/xcheck_report.json + console table.
"""
from __future__ import annotations
import json
import re
import time
import xml.etree.ElementTree as ET
from pathlib import Path
from . import edgar, nport
HERE = Path(__file__).parent
COVERS = HERE / "universe_cache" / "covers.json"
REPORT = HERE / "xcheck_report.json"
MANIFEST = HERE / "nport_manifest.json"
RAW = nport.CACHE / "raw"
CIKMAP = nport.CACHE / "cik_map.json"
MAX_FILE_MB = 20 # skip pathologically large exhibits
MAX_FILINGS = 30
# top candidates from the v2 screen + named missing-factor funds
DEFAULT = [
"scfzx", "hmezx", "coiax", "wmnux", "fhcox", "rctix", "egrix",
"etsix", "aflix", "fhmix", "hicox", "dultx", "usmsx", "btmix",
"safex", "qcmmrx", "mervx", "aguax", "dmszx", "anglx", "femdx",
"lpxax",
]
_STOP = {"fund", "funds", "inc", "ltd", "llc", "company", "class",
"series", "the", "and", "of", "for", "trust", "portfolio",
"account", "shares", "share"}
# ------------------------------------------------------------------ CIKs
def ticker_to_cik() -> dict[str, str]:
"""ticker -> 497-cover CIK (the family/trust registrant)."""
cov = json.loads(COVERS.read_text())
out: dict[str, str] = {}
for cik, info in cov.items():
for ser in info.get("series", []):
for tk in ser.get("tickers", []):
out.setdefault(tk.lower(), cik)
return out
def resolve_cik(ticker: str, cover_cik: str | None) -> str | None:
"""The fund's OWN registrant CIK (its NPORT filer), cached.
The 497-cover CIK is the family/trust; the fund's NPORTs are often
filed under the fund's own registrant (e.g. Eaton Vance: trust CIK
1552324 vs the fund's 745463). browse-edgar resolves the ticker to
its direct registrant.
"""
m = json.loads(CIKMAP.read_text()) if CIKMAP.exists() else {}
tk = ticker.upper()
if tk in m:
return m[tk]
own: str | None = None
try:
own = edgar.ticker_to_company(tk)[0]
except Exception:
pass
cik = own or cover_cik
m[tk] = cik
CIKMAP.write_text(json.dumps(m, indent=1))
return cik
def series_name_for(ticker: str, own_cik: str | None,
cover_cik: str | None) -> str | None:
"""Exact series name for the ticker, from the 497 covers.
This is the reliable disambiguator between sibling funds whose
Yahoo names differ by one word.
"""
cov = json.loads(COVERS.read_text())
for cik in dict.fromkeys(filter(None, (own_cik, cover_cik))):
for ser in cov.get(cik, {}).get("series", []):
if ticker.upper() in [t.upper() for t in ser.get("tickers", [])]:
return ser["name"]
return None
def _tokens(name: str) -> list[str]:
"""Section-finder tokens: the fund's own identifying words."""
words = re.sub(r"[^A-Za-z ]", " ", name.lower()).split()
words = [w for w in words if w not in _STOP and len(w) > 3]
return words[-3:] or words
def _norm_name(s: str) -> str:
s = s.lower().replace("&", " and ")
s = re.sub(r"[^a-z0-9 ]", "", s)
return re.sub(r"\s+", "", s)
def _name_match(series: str | None, target: str) -> int:
"""0 = no, 1 = containment/token-overlap, 2 = exact (normalized).
Normalization absorbs the common cover-vs-filing drift: "&" vs
"and", punctuation, spacing ("Fund,Inc." vs "Fund, Inc."). Token
overlap catches one-word drift ("...Return Fund" vs "...Return
Advantage Fund"); it only matters when no exact match exists, and
xml_exact always outranks it.
"""
if not series or not target:
return 0
a, b = _norm_name(series), _norm_name(target)
if a == b:
return 2
if min(len(a), len(b)) >= 12 and (a in b or b in a):
return 1
wa = set(re.sub(r"[^a-z0-9]+", " ", series.lower()).split())
wb = set(re.sub(r"[^a-z0-9]+", " ", target.lower()).split())
if wa and wb and len(wa & wb) / min(len(wa), len(wb)) >= 0.7:
return 1
return 0
# ------------------------------------------------------------------ XML
def parse_interactive(text: str) -> dict | None:
"""Parse an interactive NPORT-P XML (primary_doc.xml).
Returns {name, net_assets, positions:[{name, val_usd, pct,
asset_cat, issuer_cat, country, profile}]} or None if the document
is not an investment-level NPORT form.
"""
try:
root = ET.fromstring(text)
except ET.ParseError:
return None
def first(name: str) -> str | None:
for e in root.iter():
if e.tag.split("}", 1)[-1] == name and (e.text or "").strip():
return e.text.strip()
return None
name = first("seriesName")
invs = [e for e in root.iter() if e.tag.split("}", 1)[-1]
== "invstOrSec"]
if not name or not invs:
return None
positions = []
for inv in invs:
def f(n: str, _inv=inv) -> str | None:
for e in _inv.iter():
if e.tag.split("}", 1)[-1] == n:
return (e.text or "").strip()
return None
positions.append({
"name": f("name"), "title": f("title"),
"val_usd": f("valUSD"), "pct": f("pctVal"),
"asset_cat": f("assetCat"), "issuer_cat": f("issuerCat"),
"country": f("invCountry"), "profile": f("payoffProfile"),
})
return {"name": name, "net_assets": first("netAssets"),
"positions": positions}
def _fnum(s: str | None) -> float | None:
try:
return float(s)
except (TypeError, ValueError):
return None
# NPORT Part C asset-category (C.4.a) + issuer-category (C.4.b) codes
# are authoritative - they classify the instrument, unlike position-name
# keywords (a bank note's "inc/corp" issuer name reads as "equity").
_ASSET = {
"STIV": "Cash/MMF (short-term)", "RA": "Repurchase agreement",
"EC": "Equity (common)", "EP": "Preferred stock", "DBT": None, # see issuer
"LON": "Loan (leveraged/private credit)", "COMM": "Commodity",
"RE": "Real estate", "SN": "Structured note",
"ABS-CBDO": "CLO (collateralized debt)", "ABS-MBS": "MBS (mortgage-backed)",
"ABS-CP": "ABS commercial paper", "ABS-O": "ABS other (CLO/CMBS/AB)",
"ABS-APCP": "ABS auto/personal loan", "ABS-HE": "ABS home equity",
"ABS-CO": "ABS credit card",
}
_DEBT_BY_ISSUER = {
"UST": "US Treasury", "USGA": "US agency", "USGSE": "US GSE (Fed/FF)",
"MUN": "Municipal bond", "NUSS": "Foreign sovereign",
"CORP": "Corporate bond", "PF": "Private fund", "RF": "Fund/ETF",
}
def xml_bucket(p: dict) -> str:
a = (p.get("asset_cat") or "").upper()
i = (p.get("issuer_cat") or "").upper()
# open-end fund / ETF shares file as EC (equity) with issuer RF
if a in ("EC", "EP") and i == "RF":
return "Fund/ETF holdings"
if a in _ASSET and _ASSET[a] is not None:
return _ASSET[a]
if a == "DBT":
return _DEBT_BY_ISSUER.get(i, "Debt")
if a.startswith("D"): # DCO DCR DE DFE DIR DO = derivatives
return "Derivative / hedge"
return f"{a or 'Other'}"
def xml_snapshot(d: dict) -> dict:
"""Shape an XML parse like nport.build's snapshot (for the report)."""
buckets: dict[str, float] = {}
for p in d["positions"]:
v = _fnum(p["val_usd"]) or 0.0
buckets[xml_bucket(p)] = buckets.get(xml_bucket(p), 0.0) + v
total = sum(buckets.values()) or 1.0
pos = sorted(d["positions"],
key=lambda p: -abs(_fnum(p["val_usd"]) or 0.0))
return {
"n_positions": len(d["positions"]),
"net_assets": _fnum(d["net_assets"]),
"buckets": [{"name": k, "value": v, "pct": 100.0 * v / total}
for k, v in sorted(buckets.items(),
key=lambda kv: -abs(kv[1]))],
"top": pos[:15],
}
# ------------------------------------------------------------------ fetch
def _soi_ok(text: str) -> bool:
return bool(re.search(r"(?i)schedule of (portfolio )?investments",
text) or
re.search(r"(?i)portfolio of investments", text) or
re.search(r"(?i)investment portfolio", text))
def _accession_docs(cik: str, f: dict) -> list[tuple[str, str, str, str]]:
"""(url, text, kind) for each candidate document in the accession.
kind is 'xml' (interactive NPORT primary) or 'htm' (SOI exhibit).
Everything is cached under nport_cache/raw/.
"""
base = f"https://www.sec.gov/Archives/edgar/data/{int(cik)}"
acc = f["accession"].replace("-", "")
try:
idx = json.loads(edgar.sec_get(f"{base}/{acc}/index.json",
timeout=60))
items = idx["directory"]["item"]
if isinstance(items, dict):
items = [items]
cands = [(it["name"], int(it.get("size") or 0)) for it in items]
htms = [(n, s) for n, s in cands
if n.lower().endswith((".htm", ".html"))
and "index" not in n.lower()]
pdoc = f["doc"]
# NPORT interactive filings: the submissions API points at the
# XSL-rendered view (xslFormNPORT-P_X01/primary_doc.xml - a huge
# HTML page); the raw schema data sits at the accession root
if pdoc.lower().endswith(".xml") and "/" in pdoc:
pdoc = pdoc.split("/")[-1]
doc = (pdoc, 0) if any(n == pdoc for n, _ in cands) \
or pdoc.lower().endswith((".htm", ".html", ".xml")) else None
except Exception:
htms, doc = [], None
out: list[tuple[str, str, str]] = []
def take(fn: str, size: int) -> None:
if size and size > MAX_FILE_MB * 1e6:
return
url = f"{base}/{acc}/{fn}"
c = RAW / f"{acc}_{fn.replace('/', '__')}"
try:
if c.exists():
text = c.read_text()
else:
text = edgar.sec_get(url, timeout=180).decode(
"utf-8", "ignore")
RAW.mkdir(parents=True, exist_ok=True)
c.write_text(text)
except Exception:
return
kind = "xml" if fn.lower().endswith(".xml") else "htm"
if kind == "xml" or _soi_ok(text):
out.append((url, text, kind, f["filed"]))
for n, s in htms:
take(n, s)
if doc:
take(*doc)
return out
def fetch_docs(cik: str, filings: list[dict]) -> list[tuple[str, str, str, str]]:
out: list[tuple[str, str, str, str]] = []
for f in filings:
out.extend(_accession_docs(cik, f))
return out
# ------------------------------------------------------------------ run
def run(syms: list[str] | None = None, force: bool = False) -> dict:
syms = [s.lower() for s in (syms or DEFAULT)]
t2c = ticker_to_cik()
fr = json.loads((HERE / "factor_results.json").read_text())
man = json.loads(MANIFEST.read_text()) if MANIFEST.exists() else {}
report: dict[str, dict] = {}
if not force and REPORT.exists():
try:
report = json.loads(REPORT.read_text())
except Exception:
report = {}
def _done(r: dict | None) -> bool:
return bool(r) and not r.get("error") and r.get("n_positions")
for sym in syms:
if not force and _done(report.get(sym)):
print(f" [{len(report)}/{len(syms)}] {sym.upper()} cached, skip",
flush=True)
continue
meta = fr.get(sym, {})
ticker = (meta.get("ticker") or sym).upper()
cover_cik = t2c.get(sym)
cik = resolve_cik(ticker, cover_cik)
target = series_name_for(ticker, cik, cover_cik) \
or meta.get("name", "")
rec = {"sym": sym, "name": target, "t5": meta.get("alpha_t_5y"),
"r2": (meta.get("full") or {}).get("r2")}
if not cik:
rec["error"] = "no CIK (covers.json or browse-edgar)"
report[sym] = rec
continue
rec["cik"] = cik
try:
all_f = edgar.cik_recent_filings(cik, "NPORT-P", 200)
except Exception as e:
rec["error"] = f"filings: {e}"
report[sym] = rec
continue
if not all_f:
rec["error"] = "no NPORT-P filings found"
report[sym] = rec
continue
# large trusts file dozens of NPORTs per quarter (one per fund);
# take every filing on the 4 most recent distinct dates instead
# of a flat newest-30 window (which misses a fund's own filing)
dates: list[str] = []
for f in all_f:
if f["filed"] not in dates:
dates.append(f["filed"])
if len(dates) == 4:
break
keep = set(dates)
filings = [f for f in all_f if f["filed"] in keep]
docs = fetch_docs(cik, filings)
# --- pick: exact seriesName match in an XML > best HTM parse >
# containment XML match
xml_exact = xml_contain = None
htm_best: tuple[int, dict, str, str] | None = None
for url, text, kind, filed in docs:
if kind == "xml":
d = parse_interactive(text)
if not d:
continue
m = _name_match(d["name"], target)
if m == 2 and xml_exact is None:
xml_exact = (d, url, filed)
elif m == 1 and xml_contain is None:
xml_contain = (d, url, filed)
else:
tokens = _tokens(target)
(nport.CACHE / f"{sym}.html").write_text(text)
for tok in ([tokens, [tokens[-1]]] if len(tokens) > 1
else [tokens]):
snap = nport.build(sym, tok, force=True, frac=0.66)
if snap and (htm_best is None
or snap["n_positions"] > htm_best[0]):
htm_best = (snap["n_positions"], snap, url, filed)
chosen = None
if xml_exact:
d, url, filed = xml_exact
snap = xml_snapshot(d)
rec["src"] = "interactive NPORT XML (exact series match)"
if (len(d["positions"]) == 1
and (_fnum(d["positions"][0]["pct"]) or 0) >= 95):
rec["note"] = ("100% of NAV in ONE managed portfolio - "
"underlying positions not disclosed in "
"the fund's NPORT")
chosen = (snap, url, filed)
elif htm_best and htm_best[0] >= 5:
chosen = (htm_best[1], htm_best[2], htm_best[3])
rec["src"] = "SOI htm exhibit"
elif xml_contain:
d, url, filed = xml_contain
rec["src"] = "interactive NPORT XML (series name containment)"
chosen = (xml_snapshot(d), url, filed)
if not chosen:
rec["error"] = ("no matching NPORT document parsed"
if not docs else
f"weak parse ({htm_best[0] if htm_best else 0} "
"positions)")
report[sym] = rec
REPORT.write_text(json.dumps(report, indent=1))
print(f" [{len(report)}/{len(syms)}] {sym.upper()} ERROR "
f"{rec['error']}", flush=True)
continue
snap, url, filed = chosen
rec["soi_url"] = url
rec["as_of"] = snap.get("as_of") or filed
man[sym] = {"url": url, "filed": filed}
rec["net_assets"] = snap.get("net_assets")
rec["n_positions"] = snap["n_positions"]
rec["categories"] = snap.get("categories", [])[:15]
rec["buckets"] = snap["buckets"][:12]
rec["top"] = snap["top"][:10]
report[sym] = rec
REPORT.write_text(json.dumps(report, indent=1))
print(f" [{len(report)}/{len(syms)}] {sym.upper()} ok "
f"(n={rec['n_positions']}, {rec.get('src', '')[:40]})",
flush=True)
time.sleep(0.15)
MANIFEST.write_text(json.dumps(man, indent=1))
REPORT.write_text(json.dumps(report, indent=1))
return report
def _print(rpt: dict) -> None:
for sym, r in rpt.items():
print(f"\n{'=' * 74}\n{sym.upper()} {r.get('name', '')}")
t5, r2 = r.get("t5"), r.get("r2")
stats = f" screen: t5={t5:+.1f} R2={r2:.2f}" if t5 else ""
print(f" as-of {r.get('as_of')} n={r.get('n_positions', 0)}{stats}")
if r.get("src"):
print(f" source: {r['src']}")
if r.get("note"):
print(f" NOTE: {r['note']}")
if r.get("error"):
print(f" ERROR: {r['error']}")
continue
if r.get("categories"):
print(" categories (as reported):")
for c in r["categories"][:12]:
print(f" {c['pct']:6.2f}% {c['name'][:58]}")
print(" keyword buckets (positions by $):")
for b in r.get("buckets", [])[:8]:
print(f" {b['pct']:6.1f}% {b['name']}")
print(" top positions (by |value|):")
for p in r.get("top", [])[:10]:
if "pct" in p: # xml
pc = _fnum(p.get("pct"))
pcs = f"{pc:+.2f}%" if pc is not None else "?"
nm = (p.get("name") or p.get("title") or "")[:52]
cat = p.get("asset_cat") or ""
print(f" {pcs:>9} {nm} [{cat}]")
else: # htm
print(f" ${p['value']:>14,.0f} {p['text'][:58]}")
if __name__ == "__main__":
import sys
args = sys.argv[1:]
force = "-f" in args or "--force" in args
syms = [a for a in args if not a.startswith("-")]
_print(run(syms or None, force=force))

2848
fundlab/xcheck_report.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -382,6 +382,76 @@ def test_curated() -> None:
all("seeks" in v["objective"].lower() for v in cur.values()))
def test_xcheck() -> None:
print("xcheck", flush=True)
import fundlab.xcheck as xc
xml = (
"<root><seriesName>Acme Global Macro Absolute Return Fund</seriesName>"
"<netAssets>1000000.00</netAssets>"
"<invstOrSecs>"
"<invstOrSec><name>Foo Corp 0%, Due 12/01/2029</name>"
"<title>Foo Corp 0%</title><valUSD>500000.00</valUSD>"
"<pctVal>50.0</pctVal><assetCat>DBT</assetCat>"
"<issuerCat>CORP</issuerCat></invstOrSec>"
"<invstOrSec><name>Bar ETF</name><title>Bar ETF</title>"
"<valUSD>300000.00</valUSD><pctVal>30.0</pctVal>"
"<assetCat>EC</assetCat><issuerCat>RF</issuerCat></invstOrSec>"
"<invstOrSec><name>UST 2yr</name><title>UST</title>"
"<valUSD>200000.00</valUSD><pctVal>20.0</pctVal>"
"<assetCat>DBT</assetCat><issuerCat>UST</issuerCat></invstOrSec>"
"</invstOrSecs></root>"
)
d = xc.parse_interactive(xml)
check("parse_interactive name", d is not None
and d["name"] == "Acme Global Macro Absolute Return Fund",
str(d and d.get("name")))
check("parse_interactive n positions", d is not None
and len(d["positions"]) == 3, str(d and len(d["positions"])))
check("parse_interactive net assets",
d is not None and abs(xc._fnum(d["net_assets"]) - 1e6) < 1e-6,
str(d and d.get("net_assets")))
check("parse_interactive non-NPORT -> None",
xc.parse_interactive("<a>b</a>") is None, "")
# code-based buckets
check("bucket DBT/UST", xc.xml_bucket({"asset_cat": "DBT",
"issuer_cat": "UST"})
== "US Treasury", "")
check("bucket DBT/CORP", xc.xml_bucket({"asset_cat": "DBT",
"issuer_cat": "CORP"})
== "Corporate bond", "")
check("bucket ABS-CBDO", xc.xml_bucket({"asset_cat": "ABS-CBDO",
"issuer_cat": "CORP"})
== "CLO (collateralized debt)", "")
check("bucket EC/RF = fund holding", xc.xml_bucket({"asset_cat": "EC",
"issuer_cat": "RF"})
== "Fund/ETF holdings", "")
check("bucket DE = derivative", xc.xml_bucket({"asset_cat": "DE",
"issuer_cat": "CORP"})
== "Derivative / hedge", "")
check("bucket STIV", xc.xml_bucket({"asset_cat": "STIV",
"issuer_cat": "RF"})
== "Cash/MMF (short-term)", "")
# name-match normalization
check("name match exact", xc._name_match(
"Cohen & Steers Low Duration Preferred and Income Fund, Inc.",
"Cohen & Steers Low Duration Preferred & Income Fund,Inc.") == 2, "")
check("name match containment", xc._name_match(
"Eaton Vance Global Macro Absolute Return Fund",
"Eaton Vance Global Macro Absolute Return Advantage Fund") == 1, "")
check("name match none", xc._name_match(
"NexPoint Merger Arbitrage Fund",
"NexPoint Event Driven Fund") == 0, "")
# series-name lookup from covers (cached)
t2c = xc.ticker_to_cik()
s = xc.series_name_for("EGRIX", "0000745463", t2c.get("egrix"))
check("series_name_for EGRIX disambiguates Advantage", s is not None
and s.endswith("Advantage Fund"), str(s))
def main() -> int:
test_pool()
test_text_and_objective()
@ -393,6 +463,7 @@ def main() -> int:
test_universe()
test_overnight()
test_curated()
test_xcheck()
test_edgar_live()
print(f"\n{PASS} passed, {FAIL} failed")
return 1 if FAIL else 0