Modular Finance Dataflow

get_owner_portfolio

TOOLGet owner portfolioscope: dataflow:ownership.read · read-only
Tool description, as exposed to the agent
Returns the portfolio of a single owner: every publicly-disclosed equity position the owner holds, ordered by fraction of total share capital owned (largest first). Use search_owners or a row from get_owner_list / get_sub_holdings to obtain the owner_id. Two perspectives are supported: 'beneficial' (positions attributed to the ultimate beneficial owner, e.g. a family or institution that owns through holding companies) and 'manager' (positions attributed to the nearest visible fund or asset manager). Each row reports the company, shares held, fraction of capital, fraction of voting rights (which can differ from capital because of multi-class share structures), position value in the currency that company's shares trade in (value_currency on each row names it; pass the optional currency argument to convert everything into one code instead), and whether sub-holdings exist beneath this position (has_sub_holdings, drillable via get_sub_holdings). Each row also reports portfolio_weight - the position's share of the owner's entire portfolio value, not of the page returned - together with cost_basis and cost_basis_currency (the owner's average acquisition cost per share, blended across share classes), management_type and management_style (how the owner invests), and owner_parent_id / owner_parent_name where this position sits under a parent owner. Pass underlying_management_type to restrict the portfolio to one management sleeve - the positions, the portfolio_value total and every portfolio_weight are then that sleeve's rather than the owner's whole book, and the response echoes the filter back. The response envelope carries portfolio_value, the whole-portfolio total the weights are fractions of; because a portfolio spans markets that total has no trading currency of its own and is reported in USD unless you pass currency, with portfolio_value_currency naming it. Pass an 'at' date to retrieve a historical snapshot. Portfolios can be larger than one page (default limit 25, max 100 per page); when next_cursor is present in the response, pass it back as cursor on the next call to retrieve the next page until next_cursor is absent. For full enumeration of a large portfolio, set limit=100. Successful calls may consume Dataflow credits per position actually returned; an empty result costs zero credits.

Parameters

ParameterTypeDescription
owner_idintegerrequiredThe Modular Finance internal owner_id from search_owners or from a row in get_owner_list / get_sub_holdings. Nonzero integer; the sign of the ID has NO meaning; negative IDs are normal and are NOT a flag for 'unlisted', 'private', or anything else. Pass it through verbatim.
mode'beneficial' | 'manager'optional'beneficial' attributes positions to the ultimate beneficial owner. 'manager' attributes positions to the nearest visible fund or asset manager. Must match the mode used to discover this owner. Market convention differs by market: for UK (GB) companies the standard perspective is 'manager', for Nordic companies (SE, NO, DK, FI, IS) it is 'beneficial'. Defaults to your organisation's configured perspective ('beneficial' unless configured otherwise).default "beneficial"
adjust_treasurybooleanoptionalDenominator behind every capital and votes fraction in the response. false computes them on total issued shares, including any treasury shares the company holds itself, which is the Nordic standard. true computes them on shares outstanding, excluding treasury shares, which is the UK standard and makes the same holding read slightly higher. Defaults to your organisation's configured basis (unadjusted unless configured otherwise). get_shares_outstanding reports both share counts whatever you pass here.default false
atstringoptionalOptional snapshot date in YYYY-MM-DD. Defaults to today UTC. Maximum 5 years in the past.
limitintegeroptionalMaximum number of positions per page. Ordered by capital descending. Hard cap 100. For full enumeration of a portfolio, set limit=100 and paginate via cursor.default 25 · min 1 · max 100
cursorstringoptionalOpaque pagination token returned as next_cursor by a prior call. Omit on the first call; pass back verbatim to retrieve the next page. Must accompany identical owner_id, mode, at, limit, and min_capital values.max length 512
min_capitalnumberoptionalOptional minimum capital ownership share, fraction 0-1 (0.001 = 0.1%, 0.05 = 5%).min 0 · max 1
underlying_management_typestring[]optionalOptional restriction to one management sleeve. This does NOT simply drop positions - it changes what each one reports: only underlying funds carrying one of these classifications are rolled up, so each position's shares and capital, the portfolio_value total, and therefore every portfolio_weight become that sleeve's rather than the owner's whole stake. Use it for "how much of this is passive money"-shaped questions, not to look up a classification. Three consequences to expect: holdings not composed of classified sub-funds (individuals, companies holding directly) disappear entirely; an unclassified relationship counts as 'unknown', so asking for 'active' excludes it; and the response echoes the filter back, which is the only thing marking these numbers as sleeve-restricted. To read one fund's own classification instead, drill in with get_sub_holdings, whose management_type filter selects rows without touching their numbers.max items 4
underlying_management_stylestring[]optionalOptional restriction to underlying funds carrying one of these style labels (e.g. 'growth', 'quality', 'index', 'thematic', 'no-style'), with the same re-aggregating semantics as underlying_management_type; giving both requires a fund to match both. The style vocabulary is curated rather than fixed, so an unrecognised value yields an empty result rather than an error.max items 32
include_unlistedbooleanoptionalWhen true, includes positions in companies whose stocks are not currently listed on a public market.default false
currencystringoptionalOptional ISO 4217 currency code (e.g. 'GBP', 'USD', 'SEK') to convert this response's money fields into. Omit it and each money field is reported in the currency that company's own shares trade in, which is the currency the figure is natively denominated in. Every money field is labelled with its own currency either way, so read that label rather than assuming one. Pass a code when you are comparing or adding up companies from different markets - that is the only case where a single currency is needed. One exception: portfolio_value is the total of positions across several markets and so has no trading currency of its own. It is reported in USD unless you pass a code, and portfolio_value_currency names it. portfolio_weight is a fraction and is unaffected.

Billing

Pricing keys: ownership.portfolio.beneficial, ownership.portfolio.manager. Successful calls consume Dataflow credits per your contract. See Credits & pricing.