ETF Holdings Diff Monitor
Pricing
from $6.50 / 1,000 record checkeds
ETF Holdings Diff Monitor
Monitor public ETF holdings files for adds, removals, weight changes, and exposure shifts.
Pricing
from $6.50 / 1,000 record checkeds
Rating
0.0
(0)
Developer
junipr
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Compare two ETF holdings files and return security-level additions, removals, allocation moves, share changes, market-value changes, and rank shifts.
What It Does
The actor accepts prior and current holdings as delimited text or structured records. It normalizes common issuer headers such as Ticker, Symbol, CUSIP, ISIN, Weight, Shares, and Market Value, then joins both files by the strongest available security identifier.
Each dataset row represents one holding check. By default, unchanged rows are omitted so the dataset is a focused change feed. Set includeUnchanged to true when you need a complete reconciliation.
Input
targets: Up to 50 fund comparisons in one run.previousSnapshot/currentSnapshot: CSV, TSV, semicolon-delimited, or pipe-delimited holdings text.previousRecords/currentRecords: Structured alternatives to text snapshots.sourceUrl: Public current-file URL. The actor fetches it only whenfetchUrlsistrueandcurrentSnapshotis empty.fundTicker: Fund ticker copied to every result row.maxHoldingsPerTarget: Per-side row cap, from 1 to 5,000.minWeightChange: Percentage-point threshold for increased or decreased positions. Additions and removals are never filtered by this threshold.includeUnchanged: Include securities whose comparable values did not change.includeReport: Write JSON and Markdown report artifacts.
Example Input
{"targets": [{"sourceId": "jgrw-holdings","sourceUrl": "https://example.com/funds/jgrw-holdings.csv","fundTicker": "JGRW","previousSnapshot": "Ticker,Name,CUSIP,Weight,Shares,Market Value\nACME,\"Acme Cloud, Inc.\",001122334,4.20%,1000,\"$42,000\"\nBRIO,Brio Retail,009988776,3.10%,800,\"$31,000\"","currentSnapshot": "Ticker,Name,CUSIP,Weight,Shares,Market Value\nACME,\"Acme Cloud, Inc.\",001122334,5.80%,1200,\"$58,000\"\nNOVA,Nova AI,555666777,2.40%,600,\"$24,000\""}],"maxTargets": 1,"maxHoldingsPerTarget": 500,"includeUnchanged": false,"includeReport": true}
Dataset Fields
Identity and source fields:
rowId,sourceId,sourceUrl,sourceType,checkedAtfundTicker,holdingTicker,holdingName,cusip,isin
Comparison fields:
oldWeight,newWeight,weightDeltaoldShares,newShares,sharesDeltaoldMarketValue,newMarketValue,marketValueDeltaoldRank,newRank,rankDelta,changeTypestatus,severity,score,summary,recommendation
changeType is one of added, removed, increased, decreased, or unchanged.
If a fetch fails or neither snapshot contains a valid security, the actor emits a blocked or attention diagnostic row with diagnosticCode and sourceError instead of silently returning an empty dataset.
Example Output
{"fundTicker": "JGRW","holdingTicker": "ACME","holdingName": "Acme Cloud, Inc.","cusip": "001122334","oldWeight": 4.2,"newWeight": 5.8,"weightDelta": 1.6,"oldShares": 1000,"newShares": 1200,"sharesDelta": 200,"oldMarketValue": 42000,"newMarketValue": 58000,"marketValueDelta": 16000,"oldRank": 1,"newRank": 1,"rankDelta": 0,"changeType": "increased"}
PPE Pricing
Event prices include Apify platform usage for the configured fixed-inclusive model.
actor-start: $0.02000 once per paid runrecord-checked: $0.00908 per emitted holding rowevent-detected: $0.01300 per emitted changed holdingreport-generated: $0.05000 when report artifacts are written
The actor stops before additional output when the run charge limit cannot cover the next paid event.
Limitations
- Header normalization covers common issuer names but cannot infer undocumented columns reliably.
- Percentage weights are returned as percentage points:
4.20%becomes4.2. - A current URL fetch still requires a supplied prior snapshot or prior records for comparison.
- The actor does not provide investment advice or validate an issuer's published data.