f/fundlab/funds_curated.json
Greg Pomerantz e9f8dfc462 fundlab: EDGAR investment-objective fetcher + curated fallback
- edgar.py: SEC FTS + submissions API; strict cover-gate extraction
  (name in title position or (TICKER) on the cover; underlying-reference
  names like leveraged wrappers rejected); 4-pass fetch (ticker->CIK
  filings, name search, annual reports, ticker search); keyword category
  classifier. Returns None rather than a wrong fund's objective.
- fundinfo.py CLI: curated -> cached -> EDGAR resolution into funds.json
- funds_curated.json: human-verified objectives for 13 benchmark-pool
  funds (iShares/Vanguard family-trust classes the scraper can't reach)
- tests: 26 checks incl. live EDGAR fetch of VTSAX
2026-08-25 18:15:48 -04:00

68 lines
3.2 KiB
JSON

{
"agg": {
"name": "iShares Core U.S. Aggregate Bond ETF",
"objective": "The Fund seeks to track the investment results of an index composed of the total US investment-grade bond market.",
"category": "fixed_income"
},
"bnd": {
"name": "Vanguard Total Bond Market ETF",
"objective": "The Fund seeks to track the performance of a broad, market-weighted bond index.",
"category": "fixed_income"
},
"efa": {
"name": "iShares MSCI EAFE ETF",
"objective": "The Fund seeks to track the investment performance of an index composed of large- and mid-cap stocks from developed markets outside the US.",
"category": "equity"
},
"gld": {
"name": "SPDR Gold Shares",
"objective": "The Trust seeks to reflect, before fees and expenses, the performance of the price of gold bullion.",
"category": "alternatives"
},
"iwm": {
"name": "iShares Russell 2000 ETF",
"objective": "The Fund seeks through investments in the underlying index to provide investment results that, before fees and expenses, generally correspond to the price and yield performance of an index of small-capitalization US stocks.",
"category": "equity"
},
"qqq": {
"name": "Invesco QQQ Trust, Series 1",
"objective": "The Fund seeks to track, before fees and expenses, the investment results of the Nasdaq-100 Index.",
"category": "equity"
},
"schd": {
"name": "Schwab U.S. Dividend Equity ETF",
"objective": "The Fund seeks to track the performance of the Dow Jones US Dividend 100 Index, before fees and expenses.",
"category": "equity"
},
"shv": {
"name": "iShares 0-1 Year Treasury Bond ETF",
"objective": "The Fund seeks to track the investment results of the ICE Short US Treasury Securities Index, which measures the performance of public obligations of the US Treasury that have a remaining maturity of less than or equal to one year.",
"category": "fixed_income"
},
"slv": {
"name": "iShares Silver Trust",
"objective": "The Trust seeks to reflect, before fees and expenses, generally the performance of the price of silver, less the Trust's expenses.",
"category": "alternatives"
},
"vea": {
"name": "Vanguard FTSE Developed Markets Index Fund ETF Shares",
"objective": "The Fund seeks to track, before fees and expenses, the investment performance of an index representative of the large- and mid-capitalization stocks of companies in developed markets.",
"category": "equity"
},
"vtsax": {
"name": "Vanguard Total Stock Market Index Fund",
"objective": "The Fund seeks to track the performance of a benchmark index that measures the investment return of the overall stock market.",
"category": "equity"
},
"vti": {
"name": "Vanguard Total Stock Market Index Fund ETF Shares",
"objective": "The Fund seeks to track the performance of a benchmark index that measures the investment return of the overall stock market.",
"category": "equity"
},
"vwo": {
"name": "Vanguard FTSE Emerging Markets Index Fund ETF Shares",
"objective": "The Fund seeks to track, before fees and expenses, the investment performance of an index representative of stocks of companies in emerging markets.",
"category": "equity"
}
}