How We Built the Portfolio Overlap Calculator: The Formula, the Data, and Why Our Number Differs From Other Tools

Shashank Agrawal
Shashank AgrawalPortfolioPublished 28 Jul 2026
Text	Portfolio overlap calculator showing the four-part breakdown of overlap, overweight, exclusive holdings, and cash for two mutual fund schemes

Most portfolio overlap calculators in India return a single number. You pick two mutual fund schemes, you get "47% overlap", and you are left to work out what to do about it on your own.

We built ours differently. This post documents the whole thing: the gap we set out to fill, the formula we chose and why, the data pipeline behind it, and the specific engineering decisions that make our output disagree with other calculators on the same pair of funds.

We are publishing the methodology because a number you cannot audit is not research. If you want to check our work, everything below is reproducible from publicly disclosed data.

You can use the tool here: Portfolio Overlap Calculator.

Part 1: The Idea

The demand was obvious. The supply was thin.

Indian investors search for overlap tools constantly. Aggregate monthly search volume across the overlap keyword cluster runs into five figures, and the query patterns are unusually specific. People are not asking "what is diversification". They are asking:

  • how to check overlap between two mutual funds
  • how much portfolio overlap is acceptable
  • how to check if my mutual funds are overlapping
  • how much overlap is too much

These are decision-stage questions. The searcher already owns the funds. They want to know whether to keep both.

The tools available to answer them had three consistent limitations.

LimitationWhat it looks like in practice
Category locksSeveral tools only let you compare within the same category. You cannot check your flexi cap against your large cap, which is exactly where duplication hides.
Two funds onlyMost calculators cap you at a pairwise comparison. Real portfolios have four to six schemes, and overlap between six funds is not the sum of fifteen pairs.
Number without structureYou get a percentage and a list of common stocks. You do not get the shape of the difference: which fund is overweight where, and how much of each fund is genuinely its own.

The third one is the real gap. A 45% overlap where the remaining 55% is spread across 60 unique names is a completely different portfolio from a 45% overlap where one fund is a concentrated 12-stock book. Same headline number. Opposite decision.

The design brief

We wrote three requirements before writing any code.

1. The output must decompose, not just summarise. If a user is deciding which of two funds to exit, the tool has to show where the funds actually diverge, not only where they agree.

2. It must handle the real portfolio, not the demo portfolio. That means mutual funds, exchange traded funds (ETFs), and directly held stocks in the same calculation. A user holding a Nifty 50 ETF, two flexi cap funds, and ₹4 lakh of direct equity has an overlap problem that a two-fund comparison cannot see.

3. It must be honest about its inputs. Overlap is calculated from month-end disclosed portfolios. That data has a lag and a known set of edge cases. Any tool that hides this is selling precision it does not have.

Part 2: The Methodology

The core formula

Portfolio overlap is the shared exposure between two portfolios, measured as the sum of the minimum weight held in common for every stock that appears in both.

Overlap = Σ min(w_A,i , w_B,i)

Where w_A,i is the percentage weight of stock i in Fund A and w_B,i is its weight in Fund B, summed across every stock held by either fund.

Worked through a five-stock example:

StockWeight in Fund AWeight in Fund Bmin(A, B)Contribution to overlap
HDFC Bank8.0%6.0%6.0%6.0%
ICICI Bank5.0%7.0%5.0%5.0%
Infosys4.0%4.0%4.0%4.0%
Reliance6.0%0.0%0.0%0.0%
Bharti Airtel0.0%3.0%0.0%0.0%
Total overlap 15.0%

Two properties matter here.

Overlap is symmetric. Fund A vs Fund B and Fund B vs Fund A return the identical number, because min(a, b) equals min(b, a). If a tool gives you two different overlap percentages depending on which fund you list first, it is measuring something else, usually the count of common stocks as a share of one fund's holdings.

Overlap is weight-based, not count-based. Twelve common stocks that together account for 3% of both funds is not meaningful duplication. Four common stocks at 22% is. Counting names instead of weights is the single most common error in overlap analysis.

The four-part decomposition

This is where our output departs from a standard overlap tool. Instead of returning one number, we resolve each fund's entire portfolio into four parts that sum to 100%.

SegmentDefinitionWhat it tells you
Overlap`Σ min(w_A, w_B)`Genuine duplication. Identical for both funds.
OverweightExcess weight beyond the overlap on shared names, `w_A − w_B` where positiveThe fund's conviction on stocks both funds own
ExclusivesStocks held only by this fund, summed by weightThe fund's independent contribution to your portfolio
CashEverything not in equity: cash, money market, arbitrage, otherThe part of the fund that is not making a stock call at all

Because both bars are normalised to 100%, they are directly comparable, and the overlap block is the same width on each. What differs is everything to the right of it.

A live comparison of two banking sector funds shows why the breakdown matters more than the headline:

SegmentHDFC Banking & Financial ServicesICICI Prudential Banking & Financial Services
Overlap62.6%62.6%
Overweight10.8%5.6%
Exclusives24.9% (17 stocks)27.4% (26 stocks)
Cash and non-equity1.6%4.3%

62.6% overlap on 17 shared holdings is high, which is unsurprising for two funds restricted to the same sector. The useful part is underneath. HDFC's differentiation comes from heavier positioning on shared names (10.8% overweight, nearly double ICICI's), while ICICI's comes from a wider set of names the other fund does not hold at all (26 exclusive stocks against 17). Same headline number, two different strategies for beating the same benchmark.

Including cash as an explicit fourth segment is a deliberate choice. IF a fund is holding 4.3% outside equity, THEN that is 4.3% of your money not participating in either the overlap or the differentiation, and it belongs in the picture rather than being quietly normalised away.

Below the bars, the tool lists every shared holding with both funds' weights, the overlap contribution, and each fund's overweight on that name, plus the full exclusive list for each side. The decision you are trying to make is "what do I lose if I drop one of these", and that question is answered by the exclusives list, not by the overlap percentage.

Why this connects to Active Share

The overlap formula is the mirror image of a well-established academic measure. Active Share, introduced by Martijn Cremers and Antti Petajisto in a 2009 paper in The Review of Financial Studies, is defined as half the sum of absolute weight differences between a portfolio and its benchmark:

Active Share = ½ × Σ |w_fund,i − w_index,i|

When both portfolios are fully invested and normalised to 100%, the two measures are complements:

Overlap = 100% − Active Share

That relationship is useful and testable. IF you compare an active fund against its own benchmark index fund using our calculator, THEN the overlap figure you get is effectively 100 − Active Share for that fund. An overlap above 80% against the benchmark is the standard signature of closet indexing: you are paying an active expense ratio for a portfolio that mostly replicates a low-cost index.

Reference material on Active Share is available at the University of Notre Dame Active Share project and in Petajisto's own write-up of the measure.

The N-fund problem, and why we ship a matrix

Pairwise overlap does not aggregate. If Fund A and Fund B overlap 40%, and Fund B and Fund C overlap 40%, you cannot conclude anything reliable about the three-fund portfolio. The same stock may be counted repeatedly across pairs, or a stock shared by all three may be undercounted. There is no arithmetic that turns ten pairwise numbers into one portfolio number.

There are two honest responses to this. One is to compute a true portfolio-level score. The other is to show every pair and refuse to fake an aggregate. The tool does the second, and the reason is a data constraint worth being explicit about.

A genuine portfolio overlap score requires knowing how much money you have in each fund. Overlap between a fund holding ₹50,000 and a fund holding ₹5 lakh is not a symmetric problem, and any single score that ignores investment amounts is measuring a portfolio nobody owns. The public calculator takes no login and asks for no holdings, so it does not have those amounts and does not invent them.

What Compare 5 returns instead is the full overlap matrix: all ten pairs across five funds, each cell carrying its own percentage and threshold reading, with the diagonal showing each fund's holding count and top positions. Nothing is averaged, and nothing is hidden behind a single figure.

Reading it takes a moment longer than reading one number, and it tells you more. In a five-fund large cap comparison, the cells cluster between 43% and 59%: every pair moderate to high, which is the structural signature of a category where the investable universe is narrow. The lowest cell in the grid is the pair doing the most diversification work, and the highest is the pair where one fund is redundant. Those are two different decisions, and a single blended score would hide both.

The portfolio-level score, and where it lives. The weighted construction is real and it runs where the investment amounts exist: inside the app, once holdings are linked. Each unit is compared against the investment-weighted combination of everything else you hold:

w_rest,i = Σ ( w_unit,i × investment_unit / total_investment_excluding_target )

Overlap is then computed between the target unit and that synthetic rest-of-portfolio, and the portfolio score is the investment-weighted average across units. Comparing against the rest rather than the total is what makes it answer the real question: "if I remove this fund, how much unique exposure do I lose?" A fund compared against a total that includes itself always looks more redundant than it is.

That construction also generalises past mutual funds. Each fund and each ETF is one unit, and all directly held stocks collapse into a single combined unit, which is the only way to see that your Nifty 50 ETF and your active large cap fund are largely the same book, or that your direct holdings are already inside the funds you own.

Part 3: The Execution

Where the data comes from

Every number in the calculator traces back to a regulatory disclosure, not a scraped estimate.

Under SEBI rules, mutual funds must disclose full portfolios of all schemes on a monthly basis, on their own website and on the AMFI website, within 10 days of the close of each month, in a downloadable spreadsheet format. Debt schemes disclose fortnightly, within 5 days of each fortnight. The requirement is documented in SEBI's FAQs for Mutual Fund Investors, and the consolidated portfolio files are published on the AMFI website.

Two practical consequences follow, and both are limitations we state rather than hide.

There is a lag. An overlap number calculated in the second week of a month reflects positions as of the previous month end. If a fund manager rotated heavily in the interim, the tool cannot see it.

Disclosure is a snapshot, not a policy. A fund's month-end portfolio is one observation of a strategy. Comparing two funds across a single month tells you where they were, not necessarily where they intend to be.

The parsing mistake we made first, and how we caught it

Our first pass on the same two flexi cap schemes returned 24.42% overlap across 21 shared stocks. The current engine returns 23.3% across 12. Same funds, same disclosure month. One of those numbers was wrong, and the way we found out is worth documenting, because the same failure is invisible in any tool that only shows you a percentage.

Here is what the two runs implied about the underlying portfolios:

RunOverlapShared stocksJM total holdingsPPFAS total holdings
First pass24.42%2175149
Current engine23.3%127540

The JM count is identical in both. The entire discrepancy sits on one side of the comparison, and that asymmetry is the diagnostic. A stock identity problem, where "HDFC Bank Limited" and "HDFC Bank Ltd" fail to match, would show up on both funds at once and would push the shared count down, not up. A one-sided inflation from 40 holdings to 149 is a different failure: the parser was reading rows that are not equity holdings.

A SEBI-mandated monthly portfolio file is not a clean list of stocks. It contains section headers, subtotal and grand total rows, money market instruments, arbitrage legs, treasury bills, and cash equivalents, all in the same sheet as the equity holdings. Parag Parikh Flexi Cap held 11.9% in money market instruments and 1.9% in arbitrage positions in that month's disclosure. Our first parser ingested those rows as if they were stock positions. They then generated matches that do not exist, which is why the broken run reported higher overlap than the correct one.

Two fixes, in order:

1. Scope to equity holdings before anything else. Filter on instrument type and identifier format, drop every subtotal and section header row, and reconcile the surviving rows against the fund's declared equity percentage. IF the parsed holdings do not sum to the disclosed equity total, THEN the parse is wrong and the comparison must not run.

2. Match on ISIN, not name. The International Securities Identification Number is unique per security and present in every disclosure file. Name normalisation, stripping "Limited", "Ltd", and "Ltd.", is retained only as a fallback for rows with a missing identifier.

The reconciliation check in step one is the part most implementations skip. Without it, a parsing failure does not throw an error. It quietly returns a plausible-looking percentage, and a 24% reading looks exactly as trustworthy as a 23% reading.

IF an overlap tool does not tell you how many holdings it parsed per fund, THEN you cannot tell a real result from a parse that silently ate the cash section.

The normalisation problem

Fund portfolios do not sum to 100% equity. This breaks naive implementations.

Scheme (Feb 2026 disclosure)EquityMoney marketArbitrageOther
Scheme A97.4%0.0%0.0%2.6%
Scheme B80.0%11.9%1.9%6.2%

If you sum min(w_A, w_B) across raw disclosed weights, the maximum achievable overlap between these two schemes is capped at 80%, purely because one of them holds a fifth of its assets outside equity. The overlap number then encodes a cash allocation decision as if it were a stock selection decision.

We calculate overlap on disclosed weights and do not rescale either fund to a notional 100% equity. Rescaling would produce a higher, cleaner-looking number that answers a question nobody asked: how much these two funds would overlap if both were fully invested. They are not, and the cash position is a real allocation decision.

So instead of hiding the gap, the tool shows it. Cash and non-equity is the fourth segment on each fund's bar, which is why both bars close at 100% and why a fund carrying 4.3% outside equity visibly has less room for either overlap or differentiation than one carrying 1.6%.

The consequence is that our overlap figure runs slightly conservative for any cash-heavy fund, and that is the correct direction to be wrong in. IF a scheme is holding a large money market or arbitrage position, THEN part of its low overlap reading is an allocation decision rather than genuinely different stock selection, and the segment on the bar tells you how much.

Cross-category and cross-asset by default

Two deliberate choices distinguish the implementation:

No category restriction. You can compare a large cap against a flexi cap, an active fund against an index fund, or a mid cap against a small cap. Category locks in other tools remove precisely the comparisons where hidden duplication lives, because the large cap sleeve of a flexi cap fund is usually the same stocks as a dedicated large cap fund.

Two-fund and five-fund modes. Compare 2 gives the full four-part decomposition with shared and exclusive holdings listed stock by stock. Compare 5 gives the complete overlap matrix across all ten pairs. Twelve category presets (Large Cap top 5 by assets under management, Flexi Cap top 5 by five-year returns, and similar) and twelve AMC presets load a comparison in one click, and every fund in the selector displays its scheme ISIN so you know exactly which plan is being compared.

Reading the thresholds

Thresholds are conventions, not laws, and we say so on the tool. The bands we use:

Overlap between two equity fundsReadingAction
Below 25%LowThe funds are genuinely different. Both can coexist.
25% to 50%ModerateNormal for same-category funds. Acceptable if quality and cost differ meaningfully.
Above 50%HighClose substitutes. Keep one, chosen on quality, then cost.
Above 80% vs benchmarkCloset indexingYou are paying active fees for index-like exposure.

Two caveats. Zero overlap is not a goal: quality large caps appear in most equity portfolios, and a fund with no common holdings at all is usually taking uncompensated risk. And large cap funds structurally overlap more than other categories, because the investable universe is narrow by definition. A 55% overlap between two large cap funds and a 55% overlap between two small cap funds mean very different things.

What we deliberately left out

  • We do not rank funds inside the tool. Overlap tells you two funds are similar. It does not tell you which is better. That requires rolling returns, risk-adjusted performance, expense ratio, and manager consistency, which sit in a separate analysis.
  • We do not treat overlap as a sell signal on its own. Exit loads, short-term and long-term capital gains, and the tax cost of switching all sit between "this fund is redundant" and "sell this fund".
  • We do not model sector-level overlap yet. Two funds can hold entirely different stocks and still be 70% banking. That is a real form of concentration and it is on the roadmap, not in the current release.

How this compares to other overlap tools in India

CapabilityNovelty WealthTypical Indian overlap tools
Cross-category comparisonYesFrequently restricted to same category
Number of funds compared2, or 5 as a full 10-pair matrixUsually 2, occasionally 3
Output structureFour-part decomposition per fund (overlap, overweight, exclusives, cash) plus stock-level tablesOverlap % plus list of common stocks
Stock matchingISIN-based, name fallback
Rarely disclosed
Cash and non-equity handlingShown as an explicit segment on both barsRarely disclosed
Direct stocks and ETFs in the same analysisSupported in the portfolio modelGenerally mutual funds only
Advisory follow-throughSEBI-registered investment adviser on the same platformData output only

For context on how other tools frame the same problem, PrimeInvestor's overlap tool covers two or three pure equity funds across categories, and Business Today's tool covers two equity or hybrid funds using equity, preferred stock, and REIT holdings only. Both are useful. Neither decomposes the non-overlapping portion, which is the part that tells you what you would actually lose by exiting a fund.

What overlap does not tell you

A methodology post is incomplete without its own limitations. Overlap analysis is one input, not a verdict.

  1. It ignores conviction over time. Two funds at 60% overlap this month may have arrived there from opposite directions, one adding a position and the other exiting it.
  2. It ignores sector concentration. Different stocks, same sector, same risk.
  3. It ignores position sizing philosophy. A 40-stock book and a 75-stock book with the same overlap percentage carry different concentration risk.
  4. It is blind to everything outside equity. Cash, arbitrage, debt, and international allocations are excluded from the overlap number itself.
  5. It says nothing about quality. Redundancy is a reason to choose. It is not a reason to choose one fund over the other.

Once you know two funds are redundant, the next decision is which one to keep, and that runs on returns, cost, and consistency. Our XIRR calculator handles the returns side for irregular cash flows, and the portfolio management and mutual funds knowledge sections cover the rest.

Try it on your own portfolio

The calculator is live, needs no login, and runs on the latest disclosed monthly portfolios. Compare two funds for a clean read, or five for a portfolio-level view.

Check your portfolio overlap

If the result surprises you, that is the normal outcome. The next step is deciding what to do about it, which is where a SEBI-registered investment adviser is more useful than another calculator.

Frequently asked questions

Q1: What formula does the Portfolio Overlap Calculator use?

It sums the minimum weight held in common for every stock present in both portfolios: Overlap = Σ min(w_A, w_B). If Fund A holds 8% in HDFC Bank and Fund B holds 6%, the shared exposure is 6% and the remaining 2% is recorded as Fund A's overweight. Because the minimum function is symmetric, the result does not change based on which fund you select first.

Q2: Why do different overlap calculators give different numbers for the same two funds?

Three reasons, in order of impact. First, instrument scoping: a monthly disclosure file mixes equity holdings with money market instruments, arbitrage legs, and subtotal rows, and a parser that ingests those rows generates matches that do not exist. Our own first pass did exactly this and reported a fund as holding 149 positions when it held 40. Second, the disclosure month used, since a tool refreshing on a different schedule is comparing different snapshots. Third, normalisation: some tools rescale weights to 100% equity and some use raw disclosed weights, which changes the result for any fund holding meaningful cash.

Q3: How much portfolio overlap is acceptable?

Below 25% is low and the funds are genuinely different. Between 25% and 50% is moderate and normal for two funds in the same category. Above 50% the funds are close substitutes and holding both adds tracking complexity without diversification. Large cap funds overlap structurally higher because the investable universe is narrower, so read the threshold against the category.

Q4: Is overlap the same as Active Share?

They are complements. Active Share, defined by Cremers and Petajisto in 2009, is half the sum of absolute weight differences between a portfolio and its benchmark. When both portfolios are fully invested, Overlap = 100% − Active Share. Running an active fund against its benchmark index fund in the calculator gives you a practical read on how active the manager actually is.

Q5: Where does the holdings data come from?

Monthly portfolio disclosures published by asset management companies. SEBI requires full portfolio disclosure for every scheme, on the AMC website and the AMFI website, within 10 days of each month end, in a downloadable spreadsheet format. That means the tool reflects the most recent disclosed month, not live positions.

Q6: Can I compare funds from different categories?

Yes. Cross-category comparison is where most hidden duplication sits, because the large cap portion of a flexi cap fund typically holds the same stocks as a dedicated large cap fund. The calculator applies no category restriction.

Q7: Why does Compare 5 show a matrix instead of one portfolio overlap score?

Because a single portfolio score requires knowing how much money you hold in each fund, and the public calculator asks for no holdings and no login. Ten pairwise readings across five funds is the most that can be said honestly from fund selection alone. The matrix also carries more information than an average would: the lowest cell identifies the pair doing the most diversification work, and the highest identifies the redundant pair. A blended score hides both.

Q8: Can I check overlap across mutual funds, ETFs, and direct stocks together?

Not on the public calculator, which compares mutual fund schemes. Multi-asset overlap needs to know what you actually hold and how much, so it runs in the app once your holdings are linked. There, each fund and each ETF is one unit and all directly held stocks form a single combined unit, measured against the investment-weighted combination of everything else. That is the only way to see that a Nifty 50 ETF and an active large cap fund are largely the same book.

Q9: Does high overlap mean I should sell a fund?

No. High overlap means one of the two funds is likely redundant. Which one to exit depends on fund quality, expense ratio, and manager consistency, and whether to exit at all depends on exit loads and capital gains tax. Overlap identifies the candidate. It does not make the decision.

Novelty Wealth is operated by FW Fintech Private Limited, a SEBI-registered investment adviser (INA000019415, BASL2191). Investments in securities markets are subject to market risks. Read all related documents carefully before investing. This post is educational and is not a recommendation to buy or sell any security or scheme.