MASSARIdocsRequest access

Distribution health

GET/v1/funds/{symbol}/distribution-healthNamed fields

Distribution sustainability, yields and composition for a fund.

Parameters

  • symbolpathrequired

    Ticker symbol, case-insensitive.

Response contract

Only the fields listed are promised. Anything else may change.

Promised fields

symbolunderlying_symbolsustainability_statussustainability_reasonsustainability_signalscompositioneconomic_healthyieldscost_basismeta

How this was verified

Called against 3 different subjects on the live API. Every field it returned, at every level, was compared with the contract above. Last checked August 18, 2026.

Request

curl "https://api.massari.ai/v1/funds/XYLD/distribution-health" \
  -H "Authorization: Bearer $MASSARI_TOKEN"

Example response

{
  "symbol": "XYLD",
  "underlying_symbol": "SPY",
  "sustainability_status": "healthy",
  "sustainability_reason": "total return is +8.2% (13.1y annualized); NAV +7.3% over 1y. Tax character: fiscal YTD ROC is 94.7% — tax classification of distributions (not an economic signal per issuer whitepapers).",
  "sustainability_signals": [
    {
      "note": "total return is +8.2% (13.1y annualized)",
      "category": "economic_health",
      "severity": "none"
    },
    {
      "note": "NAV +7.3% over 1y",
      "category": "nav_trajectory",
      "severity": "none"
    }
  ],
  "composition": {
    "source_type": "19a1",
    "disclaimer": "Estimated per 19a-1 notice; finalized at year-end via 1099-DIV.",
    "latest": {
      "source": {
        "app_url": "/notice/XYLD/2026-07-20?cit=OTcuOTcl&label=UmV0dXJuIG9mIENhcGl0YWw"
      },
      "nii_pct": 2.03,
      "roc_pct": 97.97,
      "ltcg_pct": null,
      "stcg_pct": null,
      "payable_date": "2026-07-20T00:00:00.000Z"
    },
    "fiscal_ytd": {
      "source": "scraped_ytd",
      "cum_nii": 0.1758,
      "cum_roc": 3.1436,
      "nii_pct": null,
      "roc_pct": 94.7,
      "cum_ltcg": null,
      "cum_stcg": null,
      "cum_total": 3.3194,
      "through_date": "2026-07-20T00:00:00.000Z"
    },
    "latest_roc_pct": 97.97,
    "fiscal_ytd_roc_pct": 94.7,
    "avg_annual_roc_pct": 95.3,
    "composition_coverage": null
  },
  "economic_health": {
    "total_return_1y": 0.1528,
    "total_return_3y": 0.4063,
    "total_return_inception": 1.8073,
    "nav_annualized_1y": 0.073,
    "price_change_since_inception": 0.0465,
    "inception_date": "2013-06-24T00:00:00.000Z",
    "underlying_return_1y": 0.2226,
    "tr_vs_underlying_1y": -0.0698,
    "underlying_return_3y": 0.8507,
    "tr_vs_underlying_3y": -0.4444,
    "underlying_return_inception": 5.1764,
    "tr_vs_underlying_inception": -3.3691
  },
  "yields": {
    "headline_yield": 0.1042,
    "true_income_yield": 0.0055,
    "distribution_rate": 0.1179,
    "rate_unstable": false
  },
  "cost_basis": {
    "years_to_zero_basis": 9.68,
    "disclaimer": "Assumes purchase at inception price; after zero basis, ROC is taxed as capital gains."
  },
  "meta": {
    "distributions_analyzed": 64,
    "data_quality": "full",
    "last_distribution_date": "2026-07-23",
    "updated_at": "2026-08-16T23:15:02.687Z"
  }
}

A real response from the live API, captured August 18, 2026. This one is CUT: long arrays, wide objects and long strings were trimmed to keep it readable, so treat it as a sample of the shape rather than all of it. Either way it is valid JSON.

Book a meeting