# Methods and sources

## Scope and dates

This is an original reconstruction of IVV, the iShares Core S&P 500 ETF, using its publicly filed portfolio as an observable proxy. It is not the licensed S&P 500 constituent database. All percentages describe fund net assets unless a denominator is expressly labeled as IT or equities.

The collected source set contains 28 quarter-end NPORT-P XML filings for September 2019-June 2026 and 14 attached half-year industry schedules for December 2019-June 2026. The poster starts in December 2019 so its company and sector endpoints align: 27 quarterly company observations and 14 observed sector snapshots. Sector values for the intervening March and September quarters were not invented or interpolated.

Sources were retrieved October 22, 2026 UTC. Direct URLs for every filing, XML file and available schedule are in sp500-composition-manifest.json. SHA-256 hashes are in sp500-composition-receipt.json. The source history is lagged and may be amended.

## Weights and companies

For each XML filing, retain asset category EC (common equity) and its reported pctVal. Do not rescale fund weights to eliminate cash, non-equity assets, receivables, liabilities or the residual. The remainder to 100% is shown with the other-company area in the ribbon panel and excluded from sector rows.

Combine share classes using normalized disclosed issuer names, with explicit aliases for the named companies used in the poster. Facebook/Meta uses a consistent current display name. We do not group every matching LEI or CUSIP automatically: the source includes placeholder CUSIPs and an example of different issuers sharing an LEI. Legal-entity IDs alone would incorrectly combine some company weights. Raw source names and identifiers remain in the reviewed JSON in the source bundle; the company CSV records the resulting groups.

The eight named ribbons are the union of companies reaching the five largest company weights in any reviewed quarter: Nvidia, Apple, Alphabet, Microsoft, Amazon, Meta, Tesla and Berkshire Hathaway. The union is also the same over the plotted December 2019-June 2026 window. They are shown in one fixed order, not re-ranked visually each quarter. A missing/zero position contributes zero; later membership is not backfilled. The remainder includes other companies and the net-asset residual.

## Historical sector reconstruction

Each attached half-year schedule groups its security holdings under industry headings. Join that date's XML issuer names to the corresponding schedule text, preserve the reported industry, and aggregate those industries into eleven sectors. The crosswalk is in sp500-composition-crosswalk.json. It includes legacy industry names and the revised 2023 names, so companies are not classified from today's ticker list.

The joins normalize punctuation and common name abbreviations. Reviewed aliases resolve the schedule/source differences for Schlumberger, NOV/National Oilwell Varco, Federal Realty and GE Aerospace/General Electric. Explicit issuer disambiguation avoids substring or notes matches for Southern, Pool, BlackRock, Morgan Stanley and L Brands. The per-date join audit preserves these decisions. Every positive-weight equity line at the fourteen sector dates is classified; zero-valued retained lines can remain unclassified and add no weight.

Fund schedules and XML can use different reported accounting totals. Only the schedule's industry labels are used for classification. All plotted sector weights are summed from the XML pctVal fields, giving the same denominator as the company panel. We do not mix schedule-dollar totals with XML portfolio percentages.

The labels are as reported in dated fund schedules, not a licensed historical GICS company-classification feed. Official GICS definitions guide the industry-to-sector grouping. Payment processors moved from IT into Financials in 2023, and other businesses moved to Industrials or between consumer sectors. The vertical break marks that definition change. As-reported sector changes combine market-weight changes, membership changes and classification changes; they are not constant-classification economic attribution.

Definition sources:
- https://www.msci.com/documents/1296102/11185224/GICS%20Methodology%202023.pdf
- https://www.spglobal.com/spdji/en/documents/education/education-an-overview-of-gics-and-sp-500-sector-industry-indices.pdf
- https://press.spglobal.com/2022-03-31-S-P-DOW-JONES-INDICES-AND-MSCI-ANNOUNCE-REVISIONS-TO-THE-GLOBAL-INDUSTRY-CLASSIFICATION-STANDARD-GICS-R-STRUCTURE-IN-2023

Alphabet and Meta belong to Communication Services in the reviewed period, while Amazon is Consumer Discretionary. We do not rename the sum of these sectors as technology. Semiconductor and equipment holdings are a subset of IT, not another sector to add on top.

## Concentration and treemap denominators

For the effective company count, first normalize each company weight by the total retained equity weight. Calculate 1 / sum of squared normalized company weights. It equals the number of equal-sized company positions with the same weight concentration. The December 2019 result is 98.4051; June 2026 is 47.2853. Each endpoint contains 500 company groups. This is not an estimate of independent bets, correlation-adjusted diversification or risk.

Each bottom treemap normalizes its IT allocation to one equally sized root box. Industry areas are proportional to shares within IT. Within each industry's inner rectangle, company tiles are proportional to company weights; headers and gutters consume some display space. Printed company percentages and root headings use whole-fund net assets, while the chip-within-IT percentage uses the IT subtotal. Small tiles are intentionally unlabeled; the CSV/JSON retains every position.

## Downloads and reproduction

The company CSV contains all 28 quarter-ends; the poster uses 27 from December 2019. The sector CSV contains 14 half-year snapshots. The JSON retains company groups and dated industry/sector joins. The source manifest links the original files; the receipt preserves their SHA-256 hashes. A source-and-rendering bundle includes the extraction scripts, exact reviewed inputs, join audit and PNG/SVG generator. Python extraction uses the standard library; rendering requires Pillow. The reviewed original uses Arial. The renderer accepts PENNYCALC_FONT_REGULAR and PENNYCALC_FONT_BOLD, with Arial, Liberation Sans and Nimbus Sans fallbacks; alternate font metrics can change text layout.

The original chart arrangement follows PennyCalc's CC BY 4.0 data-and-chart policy: https://pennycalc.com/data-license/1.0/. Underlying source material retains its original rights.
