Compares the holdings of two ETFs side by side. Returns overlap statistics (shared holdings count, exclusive counts) and per-holding detail showing weights in both portfolios. Uses CUSIP matching on the most recent N-PORT filing for each fund.
symbol1 string required First Fund ticker symbol (ETF or mutual fund)
symbol2 string required Second Fund ticker symbol (ETF or mutual fund)
curl 'https://api.stockfit.io/v1/api/fund/overlap?symbol1=VTI&symbol2=VOO' \
-H 'Authorization: Bearer YOUR_API_TOKEN'Portfolio overlap analysis
symbol1 string symbol2 string reportDate1 string Report date for the first ETF
reportDate2 string Report date for the second ETF
overlapCount integer Number of holdings in both portfolios
onlyIn1Count integer Holdings only in the first ETF
onlyIn2Count integer Holdings only in the second ETF
overlapWeight1 number Percentage of first fund's portfolio in shared holdings
overlapWeight2 number Percentage of second fund's portfolio in shared holdings
holdings array of object Per-holding overlap detail (sorted by combined weight)
cusip string name string mappedSymbol string | null weight1 number | null Weight in first ETF (%)
weight2 number | null Weight in second ETF (%)
value1 number | null Position value in first ETF (USD)
value2 number | null Position value in second ETF (USD)
overlapStatus string (enum) Whether the holding appears in both portfolios or only one
both, only_1, only_2{
"symbol1": "VTI",
"symbol2": "VOO",
"reportDate1": "2025-12-31",
"reportDate2": "2025-12-31",
"overlapCount": 498,
"onlyIn1Count": 3150,
"onlyIn2Count": 5,
"overlapWeight1": 82.5,
"overlapWeight2": 99.8,
"holdings": [
{
"cusip": "67066G104",
"name": "NVIDIA Corp",
"mappedSymbol": "NVDA",
"weight1": 6.12,
"weight2": 7.75,
"value1": 0,
"value2": 0,
"overlapStatus": "both"
}
]
}Symbol not found or not a fund (ETF or mutual fund)
error string Human-readable error message
{}Feature not available on current plan
error string Human-readable error message
{}