Skip to main content

Overview

An ETF holds many stocks, some compliant and some not. We screen each holding and combine the results into one purity figure: the share of the fund, by weight, in compliant holdings. You need two endpoints:

GET /etfs/{symbol}

Fund-level purity: the compliant share of the fund by weight, and the holding counts.

GET /etfs/{symbol}/holdings

The per-holding breakdown, with each holding’s compliance status and weight.

Get fund-level purity

purity.percentage is a percentage, not a decimal: 66.74 means 66.74% of the fund’s weight is in compliant holdings.
Purity is weighted, so the percentage won’t match the count of compliant holdings: a few large non-compliant positions can lower percentage even when most holdings pass. The weight of unanalyzed holdings doesn’t count as compliant until we analyze them.

Get the per-holding breakdown

Each holding’s weight is a percentage (7.12 = 7.12% of the fund), and compliance_status is compliant, non-compliant or pending. To find the holdings that lower purity the most, filter for non-compliant holdings and sort by weight:

Purification for a fund holder

purity.percentage is the compliant share of the fund by weight. It is not a rate to apply to income: multiplying a distribution, a gain or an investment by the non-compliant share does not give the amount to purify. We work out a fund holder’s amount this way, on the fund’s page and in the purification calculator:
1

Each compliant holding adds its per-share figure

A fund unit is proportional ownership of what the fund holds, so we apply the per-share method (AAOIFI Standard 21, clause 3/4/6/4) through it: each analyzed compliant holding adds its prohibited income per dollar of its own market value, weighted by its share of the fund.
2

The result is a per-unit floor

per unit = fund price × sum of weight × (prohibited income ÷ market cap) over the analyzed compliant holdings. Weight we haven’t analyzed adds nothing, so the figure is a floor, and we show it only once analyzed weight reaches 90% of the fund.
3

Non-compliant holdings affect purity only

A non-compliant holding lowers purity.percentage and adds no income to purify. A holder weighs the fund’s purity when choosing the fund.
The API doesn’t return the per-unit figure or the holding data it needs. Present purity as composition, and send holders to the purification calculator for the amount. The per-unit method is our own extension of the per-share method to funds: the standard has no clause on funds.

Use cases

  • Robo-advisors: rank funds by purity.percentage so users can pick the ETF with the highest purity.
  • Portfolio tools: weight each ETF’s purity by position size to estimate portfolio-level purity.
  • Research: track how a fund’s purity changes as its holdings change.