v2.12.0 — discovery shelves
Discovery now shows real choices, honestly bounded — and refuses to pick a bet for you.
What's new
Shelf-aware discovery. When you're light in a role, --discover shows a shelf of ≥3 genuinely comparable funds (e.g. the intermediate-treasury sleeve IEF / VGIT / GOVT) and names the role's other shelves with counts instead of hiding or ranking them (also here: long (9) · short (4)). Drill one with --discover treasury:long; see a role's full per-shelf menu with --discover treasury.
Satellites are never flagged as a gap. Not holding a tech or theme bet is a stance, not a hole. --discover sector-equity hands you the map of shelves (tech · semis · clean-energy · …) and refuses to shortlist — picking the sector is your decision, not the tool's.
core vs tilt. Every universe fund is tagged core (a plain blend / investment-grade / diversified sleeve) or tilt (a style, single region, or high-yield lean). Gaps surface core funds first, so a junk-bond fund can no longer fill a "corporate-bond gap" by size accident.
New own-drawdown screen check. --screen reports a candidate's own worst fall versus your book's, and warns when it's deeper. Long treasuries and junk bonds pass the correlation test yet carry equity-scale drawdowns of their own — the number now says so (TLT: −23.8% over the demo window, deeper than the whole book's −9.8%).
MCP. discover_gaps gains optional role / flavor arguments and shelf fields — fully additive, no breaking change for existing clients.
Vocabulary. thematic-equity merged into sector-equity (13 roles) — structurally identical satellite twins.
Data fixes
IEF correctly labeled 7–10y intermediate (and stays the treasury preset default); mortgage funds (MTBA / LMBS) re-roled to bond-aggregate; the ARK funds filed under an innovation shelf; a mislabeled high-beta fund dropped.
Compatibility
Presets, onboarding, and allocation proposals are byte-identical to v2.11.4 (golden-pinned). A custom universe without the new core / flavor columns behaves exactly as before.
Install (Claude Desktop / CLI)
Attached: the wheel and the .mcpb bundle. Claude Desktop config route (works on the free plan):
{
"mcpServers": {
"asset-management": {
"command": "uvx",
"args": ["--from",
"https://github.com/disin7c9/asset-management/releases/download/v2.12.0/asset_management-2.12.0-py3-none-any.whl",
"asset-management-mcp"],
"env": { "ASSET_BOOK": "C:\\path\\to\\your\\transactions.csv" }
}
}
}Validated: holdings reconciled to the cent against a broker export, risk stats to 4 decimals against quantstats. 660 tests, strict mypy, ruff clean.