let // Read both funds' files (one GET each, no key), naming your own project Options = [Headers = [ #"User-Agent" = "MyProject/1.0 (+https://example.com)"]], Voo = Json.Document(Web.Contents( "https://tickerinside.com/api/v1/fund/voo.json", Options)), Qqq = Json.Document(Web.Contents( "https://tickerinside.com/api/v1/fund/qqq.json", Options)), // The tickers both funds hold Shared = List.Intersect({Record.FieldNames(Voo[holdings]), Record.FieldNames(Qqq[holdings])}), // Overlap by weight, as the site computes it: for every ticker both // funds hold, add the smaller of its two weights Overlap = List.Sum(List.Transform(Shared, each List.Min({ Record.Field(Voo[holdings], _), Record.Field(Qqq[holdings], _)}))), // One row: the figure, the date of each fund's file, the lines to cite Result = #table( type table [overlap_by_weight_pct = number, companies_in_both = number, voo_holdings_as_of = date, qqq_holdings_as_of = date, voo_cite_as = text, qqq_cite_as = text], {{Number.Round(Overlap, 1, RoundingMode.AwayFromZero), List.Count(Shared), Date.FromText(Voo[holdings_as_of]), Date.FromText(Qqq[holdings_as_of]), Voo[cite_as], Qqq[cite_as]}}) in Result