Portfolio Analytics

Get Attribution

Brinson-Fachler active-return attribution of one portfolio against another. Both legs are funds or model portfolios, not a market index.

post/api/portfolio/attribution

Request

  • Base URL
    https://api.harmoney.in
  • URL
    https://api.harmoney.in/api/portfolio/attribution
  • Auth
    API key in header x-api-key

Request body

portfolio_idstring required

unique_id of the fund / portfolio being attributed.

benchmark_idstring required

unique_id of the fund / portfolio to attribute against. Symmetric with portfolio_id — a peer fund or model portfolio, not a market index.

frequency'monthly' | 'annual' | 'MAX' required

The grid the window is MEASURED on. The response is one column whatever this is, so it does not pick a display cadence. MAX measures a single period, which weights every holding at the window's open — a name bought mid-window earns nothing however it performed, and a traded fund's turnover lands in the residual. Ask for monthly unless that is what you want.

group_by'asset_class' | 'macro_sector' | 'sector' | 'industry' | 'rating' | 'tenor' | 'market_cap_category' required

The single pivot the active return is decomposed across. Brinson effects are defined against one partition of the portfolio; nested pivots would need a nested (multi-level) Brinson, which this endpoint does not implement.

as_ofstring date

Mode A: last period-end for the window

horizon'1M' | '3M' | '6M' | 'YTD' | '1Y' | '3Y' | '5Y' | '10Y' | 'MAX'

Mode A: outer-window size — as_of − horizon is the start

start_datestring date

Mode B: first period-end for the window

end_datestring date

Mode B: last period-end for the window

Example request

{
  "portfolio_id": "INS-HAQO5J6GGY",
  "as_of": "2026-06-30",
  "horizon": "1Y",
  "start_date": "2025-06-30",
  "end_date": "2026-06-30"
}

Response

Successful Response

portfolio_idstring required
benchmark_idstring required
portfolio_namestring
benchmark_namestring
requested_startstring date required
requested_endstring date required
effective_startstring date
effective_endstring date
as_ofstring date
horizon'1M' | '3M' | '6M' | 'YTD' | '1Y' | '3Y' | '5Y' | '10Y' | 'MAX'
frequency'monthly' | 'annual' | 'MAX' required
group_bystring required
null_reasonstring

Changes

No recorded changes to this operation across all 1 revision of this API.