MF NAV Attribution
Read-only. reference/READ-ONLY-POLICY.md (hard rule) and
reference/RESEARCH-STANDARDS.md (disclosure, data efficiency) apply.
This produces an estimate. NAV is struck once daily after market
close off the AMC's own valuation — say that up top, every time. No
broker MCP carries a fund's holdings-with-weights either; INDmoney's
fund-details capability is the only broker source of fund facts, so
expect to fall back to the AMC factsheet via WebSearch/WebFetch.
Steps
Establish the fund and the clock. Fund from the user; note "now"
as the anchor for both live prices and holdings staleness.
Pull the last disclosed portfolio — monthly factsheet (AMC site,
Value Research, Morningstar), date-anchored. Report the disclosure
date prominently: factsheets run 15-45 days stale and weights drift
after a large flow or an active manager's trade. Compute the coverage
gap (100% − Σ listed weights) — unpriced long-tail equity plus
cash/debt — and carry it explicitly rather than treating it as zero.
Classify constituents: listed Indian equity (live via LTP);
international equity (out of live-pricing scope — take last %move
from the web, labelled); commodities (no broker has spot — use the
matching domestic ETF's LTP as proxy and say so); cash/debt sleeve
(~0% intraday unless the fund is debt-heavy and rates moved, then
direction only, no invented number).
Batch-price the listed names — resolve symbols once via the
symbol-search capability, then one batched LTP/quote call, never one
per holding. Per name: (LTP − prev close) / prev close.
Weight and sum. contribution = weight% × %change per name;
sum, plus the commodity proxy, holding the coverage gap at 0 as a
stated assumption. Where that gap exceeds ~15-20%, give a range —
gap flat vs. gap moving with the broad market.
Present a table sorted by |contribution|: name, weight%,
%change, contribution. Then the summed estimate, coverage %, and the
disclosure date restated, closing with: estimate off a [date]
portfolio, not the published NAV — check the AMC or AMFI after close.
Disclosure block only if a view rides on top (e.g. "is this dip a
buy"); a bare mechanical estimate carries no view. Formal version:
reference/templates/mf-nav-attribution.md.
ETFs are the wrong target — their live price already arbitrages
in constituent moves, so quote the LTP instead of reconstructing it.
Fund quality questions (fees, alpha, overlap) go to
mutual-fund-analysis.
1---2name: mf-nav-attribution3description: Estimate today's mutual fund NAV move before the AMC publishes it — last-disclosed holdings weighted by each constituent's live % change. Use when the user asks how a fund is moving today or what its NAV will do. Read-only; an estimate, never the published NAV.4---56# MF NAV Attribution78Read-only. `reference/READ-ONLY-POLICY.md` (hard rule) and9`reference/RESEARCH-STANDARDS.md` (disclosure, data efficiency) apply.1011This produces an **estimate**. NAV is struck once daily after market12close off the AMC's own valuation — say that up top, every time. No13broker MCP carries a fund's holdings-with-weights either; INDmoney's14fund-details capability is the only broker source of fund facts, so15expect to fall back to the AMC factsheet via `WebSearch`/`WebFetch`.1617## Steps18191. **Establish the fund and the clock.** Fund from the user; note "now"20 as the anchor for both live prices and holdings staleness.21222. **Pull the last disclosed portfolio** — monthly factsheet (AMC site,23 Value Research, Morningstar), date-anchored. Report the **disclosure24 date** prominently: factsheets run 15-45 days stale and weights drift25 after a large flow or an active manager's trade. Compute the coverage26 gap (`100% − Σ listed weights`) — unpriced long-tail equity plus27 cash/debt — and carry it explicitly rather than treating it as zero.28293. **Classify constituents**: listed Indian equity (live via LTP);30 international equity (out of live-pricing scope — take last %move31 from the web, labelled); commodities (no broker has spot — use the32 matching domestic ETF's LTP as proxy and say so); cash/debt sleeve33 (~0% intraday unless the fund is debt-heavy and rates moved, then34 direction only, no invented number).35364. **Batch-price the listed names** — resolve symbols once via the37 symbol-search capability, then one batched LTP/quote call, never one38 per holding. Per name: `(LTP − prev close) / prev close`.39405. **Weight and sum.** `contribution = weight% × %change` per name;41 sum, plus the commodity proxy, holding the coverage gap at 0 as a42 stated assumption. Where that gap exceeds ~15-20%, give a range —43 gap flat vs. gap moving with the broad market.44456. **Present** a table sorted by |contribution|: name, weight%,46 %change, contribution. Then the summed estimate, coverage %, and the47 disclosure date restated, closing with: estimate off a [date]48 portfolio, not the published NAV — check the AMC or AMFI after close.49 Disclosure block only if a view rides on top (e.g. "is this dip a50 buy"); a bare mechanical estimate carries no view. Formal version:51 `reference/templates/mf-nav-attribution.md`.52537. **ETFs are the wrong target** — their live price already arbitrages54 in constituent moves, so quote the LTP instead of reconstructing it.55 Fund quality questions (fees, alpha, overlap) go to56 `mutual-fund-analysis`.