VGT, SMH, QQQ, VUG: how much of your tech is the same
VGT and SMH were 41.3% the same money on issuer files of Sept. 30 and Oct. 29, 2026: 79.9% of SMH sits in companies VGT holds, 20.0% in five chip companies based abroad. Ten tech and growth ETFs measured both ways, each file dated.
· 8 min read

Short answer: the Vanguard Information Technology ETF (VGT) and the VanEck Semiconductor ETF (SMH) were 41.3% the same money on their issuers’ files of September 30 and October 29, 2026. Read from SMH’s side, 79.9% of it sits in 20 companies VGT also holds, and 20.0% in five chip companies based outside the US.
That 41.3% is the VGT vs SMH overlap both ways: for each company both funds hold, the smaller of its two weights, added up. Read one way, the figure is how much of one fund sits in companies the other holds, at any weight: 79.9% of SMH, 41.3% of VGT. When the bigger fund holds every shared company at the smaller weight, its one-way figure equals the overlap. We measured both readings for ten tech and growth ETFs, each on a dated issuer file. The four in the title:
| Pair | Companies in both | Both ways | One way | The other way |
|---|---|---|---|---|
| VGT and SMH | 20 | 41.3% | 79.9% of SMH | 41.3% of VGT |
| VGT and QQQ | 38 | 53.9% | 78.6% of VGT | 56.4% of QQQ |
| VGT and VUG | 48 | 59.1% | 76.3% of VGT | 59.4% of VUG |
| SMH and QQQ | 21 | 32.0% | 84.8% of SMH | 32.0% of QQQ |
| SMH and VUG | 14 | 26.9% | 63.8% of SMH | 26.9% of VUG |
| QQQ and VUG | 55 | 60.3% | 81.2% of VUG | 73.7% of QQQ |
VGT and VUG are read on Vanguard’s month-end files of September 30. SMH and QQQ are read on VanEck’s and Invesco’s files of October 29. So four of the six pairs compare files 29 days apart. To measure your own funds, the checker is under “Check your own funds”, further down.
VGT and SMH: what you own twice, and what SMH adds
Nvidia leads both funds, and three companies make most of what they share:
Together they make 26.2% of the 41.3% the funds share. Any mix of the two funds keeps between 17.6% and 19.6% of the money in Nvidia alone.
What SMH adds. Five SMH holdings have no line in VGT, all chip companies based outside the US, and they are 20.0% of the fund: TSMC (TSM) 9.5%, ASML 4.5%, SK hynix 4.2%, Arm 1.0% and STMicroelectronics 0.9%. That is what a VGT holder buys with SMH and can’t get from VGT: those five names, and more weight on the chipmakers both funds hold.
What VGT adds. From VGT’s side, 58.4% of the fund is in 298 companies SMH does not hold, led by Apple at 15.9% and Microsoft at 11.2%: software, devices and services, not chips.
Read SMH next to VGT as a tilt: four of every five dollars you put in SMH go to companies VGT already holds, and one in five buys the five chip companies VGT doesn’t hold.
The dates. The two files are 29 days apart: Vanguard posts month-end holdings only, VanEck daily ones. In our study of 1,431 ETF pairs, two funds on the same index read a median 99.7% alike on files of the same day and 96.6% on files 16 days apart: a month of price moves shifts a pair by a few points, not by tens.
Ten tech and growth ETFs, side by side
The other six are the funds people pair with these four: the Technology Select Sector SPDR (XLK), the iShares Semiconductor ETF (SOXX), the Invesco NASDAQ 100 ETF (QQQM), the Vanguard Mega Cap Growth ETF (MGK), the iShares Expanded Tech-Software Sector ETF (IGV) and the Fidelity MSCI Information Technology Index ETF (FTEC).
| Fund | File | Holdings | Top 10 holdings | Magnificent 7 | Closest of the ten |
|---|---|---|---|---|---|
| VGT | Vanguard, Sept. 30 | 318 | 63.6% | 44.7% | FTEC, 95.1% |
| SMH | VanEck, Oct. 29 | 25 | 68.0% | 19.6% | SOXX, 70.9% |
| QQQ | Invesco, Oct. 29 | 101 | 46.4% | 37.7% | MGK, 62.1% |
| VUG | Vanguard, Sept. 30 | 135 | 63.1% | 56.1% | MGK, 87.0% |
| XLK | State Street, Oct. 29 | 76 | 64.6% | 41.1% | VGT, 84.7% |
| SOXX | iShares, Oct. 30 | 30 | 61.0% | 8.0% | SMH, 70.9% |
| QQQM | Invesco, Oct. 29 | 102 | 46.5% | 37.7% | MGK, 62.1% |
| MGK | Vanguard, Sept. 30 | 52 | 64.4% | 56.9% | VUG, 87.0% |
| IGV | iShares, Oct. 30 | 106 | 59.8% | 8.8% | XLK, 22.5% |
| FTEC | SEC N-PORT, July 31 | 281 | 62.2% | 44.2% | VGT, 95.1% |
“Top 10 holdings” is the weight of each fund’s ten largest lines; the Magnificent 7 are defined in the next section. QQQ and QQQM are two Invesco funds on the same Nasdaq-100 index, 99.8% alike, so each one’s closest match leaves the other out, and the grid counts 44 distinct pairs. Of those, 21 share half their money or more and 6 share under 20%.

The most alike are VGT and FTEC at 95.1%, two funds on MSCI indexes of US information technology stocks, even with FTEC’s file 91 days older than the newest; then VUG and MGK at 87.0% and VGT and XLK at 84.7%. The least alike: SOXX and IGV hold no company in common, SMH and IGV share 4.3%, QQQ and IGV 14.4%.
How much of the Magnificent 7 each fund holds
The Magnificent 7 are Apple, Microsoft, Nvidia, Amazon, Alphabet, Meta Platforms and Tesla. Their weight in each fund, company by company:

VGT holds three of them, at 44.7%: Amazon, Alphabet, Meta and Tesla are classified outside information technology, so a technology fund leaves them out. QQQ holds all seven at 37.7%, less than VUG’s 56.1%, and its ten largest lines make 46.4%, the lightest top 10 of the ten funds; SMH’s make 68.0%, the heaviest. QQQ and VUG share 60.3% of their money, and 81.2% of VUG sits in companies QQQ holds. QQQ against XLK is on QQQ vs XLK.
SMH vs SOXX
The two semiconductor funds share 23 companies and 70.9% of their money: 95.6% of SMH sits in companies SOXX holds and 92.8% of SOXX in SMH’s. The gap is how much each puts in the leader: Nvidia is 19.6% of SMH and 8.0% of SOXX. Returns, fees and risk are on SMH vs SOXX, and how closely the two moved over a year is in our study of look-alike ETF pairs.
Check your own funds
Add the funds you hold: the checker measures every pair on the issuers’ full files, both ways.
your two most alike funds
??.?%Two funds can hold the same companies at nearly the same weights.
three funds many readers hold
Each pair has its own page on the ETF overlap tool, with every shared company and both file dates: VGT and SMH, QQQ and VUG, SMH and SOXX. Those pages read the site’s own copy of each file, refreshed every month and dated on the page, so their figures can differ from the ones here by a point or two. With three funds or more, the portfolio X-ray adds up each company across all of them, and you can import your positions from a broker screenshot or CSV. The grid is free to reuse with a link: download the table (CSV). Related reads: how to check ETF overlap, the method; which ETFs are the same fund; and is my portfolio diversified?
How we measured
Data. The ten funds’ full holdings files, as each issuer published them: Vanguard’s for VGT, VUG and MGK of September 30, 2026; SMH, QQQ, XLK and QQQM of October 29, 2026; SOXX and IGV of October 30, 2026. FTEC is read from its SEC Form N-PORT, the holdings report funds file with the SEC, for July 31, 2026, filed September 23, 2026.
Method. Overlap both ways is the sum, over companies both funds hold, of the smaller weight; weights are shares of each fund’s net assets. One way is the sum of a fund’s weights in the companies the other holds. Companies are matched on their ISIN (the 12-character security code), or one derived from the CUSIP. The Magnificent 7 count Alphabet’s two share classes.
Limits.
- The files are up to 91 days apart (FTEC’s N-PORT against SOXX and IGV); between Vanguard’s month-end and the others’, 29 or 30 days.
- Cash, futures and other lines that are not stocks are left out: at most 0.4% of a fund (MGK).
- IGV and FTEC have no pages on our overlap tool; they are measured here for this study.
- Overlap says what you own twice, not how two funds move together.
What would change the result: Vanguard’s next month-end files, and the weights of the largest companies, which move with their prices.
Reproduce it
reproduce.py reads the ten files exactly as we measured them, published with this article (each row carries its fund’s file date and issuer source), measures the 45 pairs, then checks our VGT file against the one the site serves for VGT. We ran it on November 3, 2026, on this article’s files before publication: every figure matched, and our VGT file is the site’s to the fourth decimal.
Show the code
# Reproduces https://portfolio-terminal.com/blog/vgt-smh-qqq-vug-tech-etf-overlap
# pip install requests
# Reads the ten funds' holdings as we measured them (one dated issuer file per fund, FTEC from its
# SEC N-PORT, each with its source on its rows), measures all 45 pairs both ways, then checks our
# copy of VGT line by line against the one the site serves on its VGT holdings page.
import csv, requests
SITE = "https://portfolio-terminal.com"
UA = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 Chrome/128.0.0.0 Safari/537.36"}
FUNDS = "VGT SMH QQQ VUG XLK SOXX QQQM MGK IGV FTEC".split()
SAME_INDEX = {("QQQ", "QQQM")} # two Invesco funds on the Nasdaq-100, counted once
# The Magnificent 7 by ISIN; Alphabet counts both share classes.
MAG7 = {"US0378331005", "US5949181045", "US67066G1040", "US0231351067", "US02079K3059", "US02079K1079", "US30303M1027", "US88160R1014"}
def get(path):
lines = requests.get(SITE + path, headers=UA, timeout=60).text.splitlines()
return [line for line in lines if not line.startswith("#")]
W, DATE, NAME = {f: {} for f in FUNDS}, {}, {}
for row in csv.DictReader(get("/blog-sources/tech-etf-overlap-holdings.csv")):
f, i = row["fund"], row["isin_or_id"]
W[f][i] = W[f].get(i, 0.0) + float(row["weight_pct"]) / 100
DATE[f], NAME[i] = row["file_date"], row["ticker"] or row["name"]
def measure(a, b):
both = W[a].keys() & W[b].keys()
return sum(min(W[a][i], W[b][i]) for i in both), sum(W[a][i] for i in both), sum(W[b][i] for i in both), len(both)
pct = lambda v: f"{v * 100:.1f}%"
print("files: " + " ".join(f"{f} {DATE[f]}" for f in FUNDS))
o, vgt_in_smh, smh_in_vgt, n = measure("VGT", "SMH")
print(f"VGT/SMH: overlap {pct(o)}, VGT in SMH's companies {pct(vgt_in_smh)}, SMH in VGT's {pct(smh_in_vgt)}, {n} companies in both")
outside = sorted(((w, i) for i, w in W["SMH"].items() if i not in W["VGT"]), reverse=True)
print(f"SMH outside VGT: {pct(sum(w for w, _ in outside))} = " + ", ".join(f"{NAME[i]} {pct(w)}" for w, i in outside))
pairs = []
for x, a in enumerate(FUNDS):
for b in FUNDS[x + 1:]:
if (a, b) not in SAME_INDEX:
pairs.append((measure(a, b)[0], a, b))
pairs.sort(reverse=True)
print(f"{len(pairs)} distinct pairs; QQQ/QQQM (same index) {pct(measure('QQQ', 'QQQM')[0])}")
print("most alike: " + ", ".join(f"{a}/{b} {pct(v)}" for v, a, b in pairs[:3]))
print("least alike: " + ", ".join(f"{a}/{b} {pct(v)}" for v, a, b in pairs[::-1][:3]))
print(f"pairs under 20%: {sum(v < 0.2 for v, _, _ in pairs)}, at 50% or more: {sum(v >= 0.5 for v, _, _ in pairs)}")
print("Mag 7: " + " ".join(f"{f} {pct(sum(w for i, w in W[f].items() if i in MAG7))}" for f in FUNDS))
print("top 10: " + " ".join(f"{f} {pct(sum(sorted(W[f].values(), reverse=True)[:10]))}" for f in FUNDS))
# Our VGT file against the site's VGT page, the same Vanguard file of September 30, 2026.
site = get("/etf/vgt/holdings.csv")
served = {}
for row in csv.DictReader(site):
served[row["isin_or_id"]] = served.get(row["isin_or_id"], 0.0) + float(row["weight_pct"]) / 100
gap = max(abs(served.get(i, 0.0) - W["VGT"].get(i, 0.0)) for i in served.keys() | W["VGT"].keys())
print(f"VGT on the site: {len(served)} lines, ours {len(W['VGT'])}, largest weight gap {gap * 100:.3f} points (the site rounds weights to 4 decimals)")files: VGT 2026-09-30 SMH 2026-10-29 QQQ 2026-10-29 VUG 2026-09-30 XLK 2026-10-29 SOXX 2026-10-30 QQQM 2026-10-29 MGK 2026-09-30 IGV 2026-10-30 FTEC 2026-07-31
VGT/SMH: overlap 41.3%, VGT in SMH's companies 41.3%, SMH in VGT's 79.9%, 20 companies in both
SMH outside VGT: 20.0% = TSM 9.5%, ASML 4.5%, SKHY 4.2%, ARM 1.0%, STM 0.9%
44 distinct pairs; QQQ/QQQM (same index) 99.8%
most alike: VGT/FTEC 95.1%, VUG/MGK 87.0%, VGT/XLK 84.7%
least alike: SOXX/IGV 0.0%, SMH/IGV 4.3%, QQQ/IGV 14.4%
pairs under 20%: 6, at 50% or more: 21
Mag 7: VGT 44.7% SMH 19.6% QQQ 37.7% VUG 56.1% XLK 41.1% SOXX 8.0% QQQM 37.7% MGK 56.9% IGV 8.8% FTEC 44.2%
top 10: VGT 63.6% SMH 68.0% QQQ 46.4% VUG 63.1% XLK 64.6% SOXX 61.0% QQQM 46.5% MGK 64.4% IGV 59.8% FTEC 62.2%
VGT on the site: 318 lines, ours 318, largest weight gap 0.000 points (the site rounds weights to 4 decimals)Sources: Vanguard, VGT holdings · VanEck, SMH holdings · Invesco, QQQ holdings · Vanguard, VUG holdings · State Street, XLK holdings · iShares, SOXX holdings · iShares, IGV holdings · SEC, FTEC Form N-PORT
#research#etfs#diversification
Keep reading
cite: Julien Esnault, “VGT, SMH, QQQ, VUG: how much of your tech is the same”, Portfolio Terminal, 2026-11-03. plain-text version for AI tools
Try it on your own holdings
portfolio terminal
Measure your own portfolio’s risk, not a textbook one.
Import your positions from any broker and see your volatility, beta, drawdown and correlations every morning.
Wall Street in 60s, every morning. What’s in it
One short email before the open. Unsubscribe anytime.