# MFPro NAV Master - Data Dictionary

As of 2026-10-03. Canonical source: https://mfpro.tigzig.com/dashboard#docs/dictionary

Daily NAVs for every Indian mutual fund scheme in AMFI's public records: all scheme types (open-ended, closed-ended, interval), April 2006 onward, including matured schemes. Source: AMFI official files (daily NAVAll.txt plus the historical NAV archives). Updated 3x daily.

## Coverage

| Item | Value |
|---|---|
| NAV rows | Over 37 million, growing daily |
| Schemes | Over 38,000 (about 8,700 active, the rest matured or merged) |
| Date span | 2006-04-01 to present |
| Scheme types | Open Ended, Close Ended, Interval |
| AMCs | About 75, including defunct houses (ABN AMRO, Fortis, Standard Chartered, Benchmark) |
| Update cadence | 3x daily from AMFI, with a 7-day lookback across all scheme types |

## Known caveats (read before analysis)

- Old-style schemes (pre-SEBI-2018 categories like Income or Growth) have a blank category_sub by design; AMFI never assigned them a modern sub-category. Filter on category_group_clean instead.
- SEBI reissued the entire categorization framework on 26 February 2026 (new category names, a Life Cycle Funds category, Solution Oriented discontinued). Fund houses re-filed their schemes through late August 2026, and the raw category fields still hold a mix of old and new vocabulary. Scheme categories and names in scheme_meta follow the latest AMFI filing, and every change is recorded.
- Closed-ended schemes in the early era (roughly pre-2010) often published NAVs once a week. Gaps of about 7 days in those series come from that weekly publishing.
- Where AMFI's daily file and its historical archive disagreed on a NAV (9 records out of about 27,900 overlapping), the daily file's value was kept. Two of the nine were maturity-day par resets in the archive feed for dividend-payout FMPs; the daily file had the real accrued NAV.
- NAV values are stored to 4 decimal places. Most fund houses file 4 decimals; a few (Kotak and Bandhan among them) file up to 8, which are rounded to 4 here.
- About 50 schemes have only 1-2 NAV rows in AMFI's records (flagged is_stale = true). They are kept in the data.
- NAVs are not adjusted for unit splits or face value changes. When a fund splits its units, the NAV drops in one day (for example DSP Silver ETF from 228.73 to 23.30 on 28 Aug 2026). A return computed across such a date is wrong unless it is adjusted.
- Some liquid and overnight funds file NAVs dated on the next holiday or weekend before that date arrives. These rows are kept as AMFI publishes them, so the latest date in the data can be a day or two after today.
- NAVs of exactly 0.00 and a few negative values are kept as filed in the history. Since March 2026 the daily sync does not store new 0.00 values. Segregated portfolios are filed at 0.00 every day, so their series stop on 9 Mar 2026, and about 20 segregated codes are in the scheme master with no NAV at all. A segregated portfolio is a separate pool a fund creates when a bond it holds is downgraded or defaults; its unit holders are paid only if that bond later recovers. See the Anomalies section of the Data Quality page in MFPro.

## Table: nav_master

NAV history (one row per scheme per day). Grain: One row per (scheme_code, date), with no duplicates (checked at every build). The SQLite download has indexes on scheme_code and on date, and no primary key.

| Field | Type | Description |
|---|---|---|
| scheme_code | INTEGER | AMFI's numeric scheme identifier (4-7 digits). Stable for the life of a scheme plan+option. Join key to scheme_meta. |
| date | VARCHAR | NAV declaration date as text in ISO form, YYYY-MM-DD, in every download format. Text in this form sorts and compares correctly as a date. |
| nav | DECIMAL(18,4) | Net Asset Value per unit in rupees, as published by AMFI, stored to 4 decimals. Type by format: DECIMAL(18,4) in parquet, REAL in SQLite (since 2026-10-03; earlier SQLite files held text), plain numbers in CSV and TSV. |
| scheme_name | VARCHAR | Scheme name as it appeared in AMFI's file on that date. Names can change over a scheme's life; use the scheme master's scheme_name for the current canonical name. |
| isin | VARCHAR | ISIN (Div Payout / Growth variant) as published on that date. Empty when AMFI publishes none, mostly on older rows. For lookups use the scheme master's isin; the NAV API resolves any of a scheme's ISINs, including the reinvestment ISIN and prior ISINs. |

## Table: scheme_master

Table: scheme_master. Grain: One row per scheme. The scheme-level master: identifiers, names, categories, plan and option, dates, flags, TXIC, plus each scheme's latest quarterly AAUM and latest NAV. Downloadable as a single small file from the Data & API tab (Download Scheme Master) or GET /mf/v1/download?format=latest. Naming note: the download file is amfi_nav_master_latest.csv / .parquet, and the underlying table appears as scheme_meta in the API's schema; all of these are one and the same dataset.

| Field | Type | Description |
|---|---|---|
| scheme_code | INTEGER | AMFI scheme code. Primary key. |
| scheme_name | VARCHAR | Current scheme name, following the latest AMFI filing. Fund houses are renaming schemes to match the SEBI Feb-2026 true-to-label rule, and this field updates with each filing; nav_master.scheme_name keeps the name as it appeared on each date. |
| amc | VARCHAR | Asset Management Company name, as listed by AMFI. 70+ AMCs including defunct houses. |
| scheme_type | VARCHAR | One of exactly three values: 'Open Ended Schemes', 'Close Ended Schemes', 'Interval Fund Schemes'. From the AMFI header prefix. |
| category | VARCHAR | Full raw category text from the AMFI header (audit field). Modern: 'Equity Scheme - Large Cap Fund'. Old-style: single words like 'Income'. Prefer the clean fields below. |
| category_group | VARCHAR | Raw group text before mapping (audit field). About 26 distinct values. AMFI re-filed schemes under new group headers in the SEBI Feb-2026 recategorization, so old and new group names coexist. For analysis use category_group_clean. |
| category_sub | VARCHAR | SEBI sub-category (e.g. 'Large Cap Fund', 'Liquid Fund'). About 75 distinct values. Old 2017 names and new SEBI Feb-2026 names (e.g. 'Short Duration Fund' and 'Short Term Fund') coexist, stored as filed. BLANK for ambiguous old-style schemes by design; those rows will not appear in sub-category filters. |
| category_group_clean | VARCHAR | RECOMMENDED category field. Exactly 4 values: Equity Scheme, Debt Scheme, Hybrid Scheme, Other Scheme. Every raw group name, old or new, maps in deterministically (Income -> Debt, Growth -> Equity, Balanced -> Hybrid, the new Income/Debt Oriented Schemes -> Debt, etc.). Solution Oriented (discontinued by SEBI in Feb 2026) and Fund of Funds map to Other Scheme; their schemes stay fully findable via category_group and category_sub. |
| isin | VARCHAR | ISIN of the Div Payout / Growth variant. Usually one scheme_code per ISIN, but about 800 ISINs appear on two scheme codes: an old matured scheme and its successor, for example after a fund house takeover. The NAV API returns the active scheme for such an ISIN. Can be blank for old matured schemes. All of a scheme's ISINs resolve on the NAV API: this one, the reinvestment ISIN (isin2), and prior ISINs of schemes whose ISIN changed - each returns the same full NAV series. |
| isin2 | VARCHAR | Div Reinvestment ISIN, present only where the IDCW plan has a distinct reinvestment unit class (about 7,000 schemes). AMFI files it as a second ISIN column and writes '-' when absent. Same scheme_code and same NAV series as isin - payout and reinvestment are sub-options of the same IDCW plan and belong to the same fund. Blank for most schemes. |
| first_date | VARCHAR | First NAV date on record for this scheme. Text in ISO form, YYYY-MM-DD. |
| last_date | VARCHAR | Most recent NAV date on record. For matured schemes this is their final NAV date. Text in ISO form, YYYY-MM-DD. |
| is_tracked | BOOLEAN | TRUE for the 104 funds with additional analytics in the MFPro app. App-internal convenience flag; not included in the download file. |
| is_stale | BOOLEAN | TRUE only for the ~50 schemes that have only 1-2 NAV rows in all of AMFI's records (data orphans). Everything else is FALSE, including matured schemes with real history. |
| txic_code | VARCHAR | TigZig scheme identifier: a short human-readable code (AMC + type + category + keyword + plan + option, e.g. AX.O.MC.D.G displayed with dots). Deterministic and unique. See the TXIC docs section. |
| scheme_plan | VARCHAR | 'Direct', 'Regular', or 'Other' (classified from the scheme name; pre-2013 schemes predate the Direct/Regular split and classify as Other). |
| scheme_option | VARCHAR | 'Growth', 'IDCW', 'Bonus', or 'Other' (classified from the scheme name). AMFI names carry traps the classifier handles: 'Growth Plan - Bonus Option' is a Bonus option, a Dividend Yield fund's Growth variant is Growth, and 'Unclaimed IDCW Plan - Growth' (an unclaimed-amounts pool) is Growth. A fund can have several active variants at one scheme code each, so one fund may appear as separate Growth, IDCW and Bonus rows; the rarely held Bonus variants have near-zero AAUM. For fund-level counts, count funds by name. |
| is_active | BOOLEAN | TRUE if the scheme published a NAV within the last 45 days. Recomputed on every sync. Use this to filter live vs matured/merged schemes. |
| aaum_cr_quarterly_avg | DOUBLE | Latest available quarterly Average AUM in Rupees Crore for this scheme. Renamed from `aaum_cr` on 2026-08-12 (manifest schema_version 2). It is an AVERAGE of daily net assets across the quarter, for this plan and option only. The AUM figure in the MFPro app is a different number: the whole fund's AUM on one date, which is not in this file. What AAUM is and is not (the daily-average definition, new-fund understatement, per-variant grain) is explained in full on the How the Data Is Built page, Scheme AUM section. |
| aaum_quarter | VARCHAR | The AMFI quarter label the AAUM comes from, as filed, e.g. 'June-2026'. Schemes can be on different latest quarters while AMFI publishes a new quarter progressively. |
| aaum_quarter_end | VARCHAR | The same quarter as an ISO date (June-2026 becomes 2026-06-30). Sort and filter on this and display the label; the label alone sorts alphabetically and puts March after June. Text in ISO form, YYYY-MM-DD. |
| nav_date | VARCHAR | Date of the scheme's latest NAV. For matured schemes this is their final NAV date. Text in ISO form, YYYY-MM-DD. |
| nav | DECIMAL(18,4) | The scheme's latest NAV. For matured schemes this is the final NAV, frozen; check nav_date before treating it as current. In the parquet download nav is a DECIMAL type. |

## Table: scheme_details_latest

scheme_details_latest: one row per scheme, with daily AUM, scheme document details and TER (download and /details endpoint). Grain: One row per AMFI scheme code in the scheme universe that has been linked to at least one of: a daily AUM figure from AMFI, a Scheme Summary Document, or a TER. About 50 rows keep only their identifiers and category, because the link no longer carries any of the three; /mf/v1/schemes/{code}/details returns NO_DETAILS for them. Latest values only. Fund-level values (daily AUM, scheme document, TER) repeat on each plan and option row of the same fund. To add up AUM, keep only rows where fund_dedup_flag is true, or group by amfi_ssd_fund_id first. Each block has its own date column, because each source is refreshed on its own schedule. Blank means the source has no value for this scheme. Columns without a prefix describe the scheme. Every column with a prefix (amfi_daily_, ssd_, ter_) describes the fund and names its source.

| Field | Type | Description |
|---|---|---|
| scheme_code | INTEGER | AMFI's numeric scheme code. The primary key, and the same key used by every other MF file and endpoint. |
| isin | VARCHAR | ISIN for the growth or payout option, as AMFI lists it. Blank where AMFI lists none. |
| isin2 | VARCHAR | ISIN for the reinvestment option, as AMFI lists it. Blank where AMFI lists none. |
| scheme_name | VARCHAR | Scheme name from AMFI's NAV file, the same as in scheme_master. |
| fund_name_latest | VARCHAR | The fund's current name, from AMFI's daily NAV file. The same name the MFPro Fund page shows. ssd_fund_name is the name as filed in the scheme document and can be older. Blank only where the scheme has no NAV in the last 30 days. |
| amc | VARCHAR | Fund house, the same as in scheme_master. |
| category_group_clean | VARCHAR | Category group, one of Equity Scheme, Debt Scheme, Hybrid Scheme or Other Scheme, the same as in scheme_master. |
| category_sub | VARCHAR | SEBI sub-category, the same as in scheme_master. |
| scheme_plan | VARCHAR | Direct, Regular or Other, the same as in scheme_master. |
| is_active | BOOLEAN | True if the scheme published a NAV within the last 45 days, the same as in scheme_master. |
| amfi_ssd_fund_id | VARCHAR | AMFI's identifier for the fund's Scheme Summary Document. One document covers all plans and options of a fund, so this groups the rows of one fund. Blank where the scheme has no linked document. |
| fund_dedup_flag | BOOLEAN | True on exactly one row per fund among rows with a daily AUM: the fund's lowest scheme_code. Added by us so fund-level values are counted once. To total AUM, add amfi_daily_fund_aum_cr_all_plans only where this is true. It does not mark a main plan. Blank where the row has no daily AUM. |
| amfi_daily_fund_name | VARCHAR | Fund name under which AMFI's daily fund performance data publishes the AUM. It usually matches fund_name_latest, with small differences in spelling or notes. |
| amfi_daily_fund_aum_cr_all_plans | DOUBLE | Assets under management of the whole fund on amfi_daily_aum_date, all plans and options together, in Rs crore. From AMFI's daily fund performance data. The same figure appears on every plan row of the fund. Each AMFI fund is linked to our schemes by its NAVs, never by name. Blank where the fund is not in AMFI's daily data or could not be linked. |
| amfi_daily_aum_date | DATE | The AMFI report date the AUM comes from. |
| amfi_daily_aum_flag | VARCHAR | AMFI's mark beside the AUM, as published. '^' means the figure is the latest one the fund house shared, and it can be a few days older than amfi_daily_aum_date. '**' appears on some funds, mostly overnight and liquid funds, and AMFI does not state its meaning. Blank when AMFI shows no mark. |
| amfi_daily_riskometer | VARCHAR | The fund's riskometer level in AMFI's daily data, on SEBI's six-level scale. |
| amfi_daily_riskometer_benchmark | VARCHAR | The riskometer level of the fund's benchmark in AMFI's daily data. |
| amfi_daily_benchmark | VARCHAR | The fund's benchmark from AMFI's daily data, written in one standard spelling. Fund houses and AMFI write the same index in many ways, for example 'Nifty 500 TRI', 'NIFTY 500 Total Return Index' and 'Nifty500 (TRI)'. All of these become one name, using AMFI's own spelling of that index where AMFI has one. Only spelling is changed, never the index. Where the name matches no known index, it is the filed name with spacing and notes tidied. amfi_daily_benchmark_filed always has the name exactly as filed. |
| amfi_daily_benchmark_filed | VARCHAR | The fund's benchmark exactly as AMFI's daily data shows it. |
| ssd_doc_date | TIMESTAMP | Date of the Scheme Summary Document on AMFI's server (its last modified time). The ssd_ fields are as of this date. Documents are checked daily. |
| ssd_fund_name | VARCHAR | Fund name as filed in the Scheme Summary Document. |
| ssd_fund_type | VARCHAR | Open ended, close ended or interval, as filed. |
| ssd_sebi_category | VARCHAR | SEBI category as filed in the document. It can use older wording than category_sub. |
| ssd_option_names | VARCHAR | Plans and options as listed in the document. |
| ssd_fund_managers | VARCHAR | Fund managers as filed, in the form 'Name (since YYYY-MM-DD); Name (since YYYY-MM-DD)'. The /details endpoint returns them as a list with each manager's role. |
| ssd_allotment_date | DATE | Allotment (launch) date as filed. Blank where absent or not a readable date. |
| ssd_nfo_open_date | DATE | New fund offer opening date as filed. Blank where absent or not a readable date. |
| ssd_nfo_close_date | DATE | New fund offer closing date as filed. Blank where absent or not a readable date. |
| ssd_reopen_date | DATE | Date the fund reopened for continuous sale, as filed. Blank where absent or not a readable date. |
| ssd_maturity_date | DATE | Maturity date as filed. Usually blank for open-ended funds; a few open-ended documents file a date here, shown as filed. |
| ssd_benchmark_tier1_filed | VARCHAR | Tier 1 benchmark exactly as filed. |
| ssd_benchmark_tier1_std | VARCHAR | Tier 1 benchmark in the same standard spelling as amfi_daily_benchmark, with the same rule for names that match no known index. |
| ssd_benchmark_tier2_filed | VARCHAR | Tier 2 benchmark exactly as filed. Optional; most funds do not file one. |
| ssd_benchmark_tier2_std | VARCHAR | Tier 2 benchmark in the same standard spelling. Blank where none is filed or it is filed as not applicable. |
| ssd_riskometer | VARCHAR | Current riskometer as filed in the document. A document on SEBI's older five-level scale is shown as filed. |
| ssd_riskometer_level | VARCHAR | The riskometer level read from ssd_riskometer. Blank where the filed text is not a recognisable level. |
| ssd_potential_risk_class | VARCHAR | Potential Risk Class (debt funds), as filed. |
| ssd_objective | VARCHAR | Investment objective, as filed. |
| ssd_asset_allocation | VARCHAR | Permitted asset allocation, as filed. |
| ssd_exit_load | VARCHAR | Exit load, as filed. |
| ssd_min_application_amount | VARCHAR | Minimum application amount, as filed. |
| ssd_min_additional_amount | VARCHAR | Minimum additional purchase amount, as filed. |
| ssd_terms_sip | VARCHAR | SIP terms as filed, in the form 'Label: value | Label: value'. |
| ssd_terms_redemption | VARCHAR | Redemption terms as filed, in the same form. |
| ssd_terms_other | VARCHAR | Other filed terms such as swing pricing, in the same form. |
| ssd_face_value | VARCHAR | Face value per unit, as filed. |
| ssd_expense_actual | VARCHAR | Expense ratio text as filed in the document, with the month it refers to. The current TER is in the ter_ columns. |
| ssd_side_pocketing | VARCHAR | Side pocketing details, as filed. |
| ssd_custodian | VARCHAR | Custodian, as filed. |
| ssd_auditor | VARCHAR | Auditor, as filed. |
| ssd_registrar | VARCHAR | Registrar and transfer agent, as filed. |
| ssd_listing_details | VARCHAR | Stock exchange listing details, as filed. |
| ssd_status | VARCHAR | Status of the document at AMFI. |
| ssd_withheld_fields | VARCHAR | Names of ssd_ fields left blank for this fund because the filed document places values against the wrong labels. The Data Quality page lists these documents. |
| ter_date | DATE | Effective date of the TER values below, as filed in AMFI's TER data. Fund houses file changes ahead of time, so this date can be a few days after today. |
| ter_regular | DOUBLE | Total expense ratio of the Regular plan, percent. Found only by the exact SEBI scheme code in the fund's Scheme Summary Document. Blank where the fund does not offer a Regular plan, or where no exact match exists. SEBI revised the expense rules in April 2026, so TER from before and after that date is defined differently. From April 2026 TER is the base expense ratio plus brokerage, transaction costs and statutory levies. AMFI defines the brokerage, transaction and statutory parts as annualised running daily averages that restart each month. Statutory levies include STT, stamp duty and GST on trades, so a new fund buying heavily, or an arbitrage fund, can show a total far above its base expense ratio. Many websites show only the base expense ratio, which is in the ter_ber_ columns here. |
| ter_direct | DOUBLE | Total expense ratio of the Direct plan, percent. Same matching. Blank where the fund does not offer a Direct plan, or where no exact match exists. |
| ter_ber_regular | DOUBLE | Base expense ratio (the fund house's fee) of the Regular plan, percent. From April 2026 this is the BER filed under SEBI's revised expense rules; on older filings it is the base TER as then filed. Check ter_date. Blank where the plan is not offered. |
| ter_ber_direct | DOUBLE | Base expense ratio of the Direct plan, percent. Same rules as ter_ber_regular. |

## Table: data_quality

data_quality: the exception lists behind the Data Quality page (download only). Grain: One row per exception: an AMFI daily fund performance row that is not linked or is flagged, or a scheme with no usable Scheme Summary Document. Refreshed with scheme_details_latest. The same lists appear on the MFPro Data Quality page.

| Field | Type | Description |
|---|---|---|
| source | VARCHAR | Which link the row is about: amfi_daily_aum_link (AMFI's daily fund performance data to our schemes) or scheme_document_link (our schemes to Scheme Summary Documents). |
| as_of | DATE | Date of the AMFI report or the scheme document check the row comes from. |
| scheme_code | INTEGER | AMFI scheme code, where the row is about one scheme. Blank for AMFI fund rows that are not linked to a scheme. |
| name | VARCHAR | Fund name from AMFI's daily data, or scheme name for scheme document rows. |
| category | VARCHAR | Sub-category from AMFI's daily data, where present. |
| issue_code | VARCHAR | Short code for the kind of exception, for filtering. |
| issue | VARCHAR | The exception in words. |
| status | VARCHAR | held: the AMFI row is not linked to any scheme. conflict: linked, and two sources disagree (benchmark or riskometer). review: linked, flagged for a check. documented: a known case with a recorded reason. |
| detail | VARCHAR | The specifics, such as both benchmark names or both riskometers. |

## Access

- API: https://api.tigzig.com/mf/v1/ (self-describing catalog; single and bulk NAV, search, downloads)
- Docs: https://www.tigzig.com/apis/mf-nav
- Bulk downloads: Full NAV dataset in csv.gz, tsv.gz, parquet and sqlite, plus the scheme_master latest snapshot (format=latest is a plain CSV of about 10 MB; the csv.gz and parquet versions are 1 to 2 MB), via the Data & API tab or GET /mf/v1/download. scheme_details_latest (parquet or csv.gz) and data_quality (csv or json) via GET /mf/v1/download/{dataset}.
- Scheme details: GET /mf/v1/schemes/{code}/details for one scheme (scheme code or ISIN), or /mf/v1/details?schemes=a,b,c for up to 50. Returns the scheme_details_latest fields grouped by source.
- AI-agent quickref: https://www.tigzig.com/ai/apis/mf-nav.md
