Modular Finance Dataflow

Companies & stocks

Dataflow distinguishes between the legal entity and its tradable instruments.

Companies

A company is the listed legal entity: Volvo AB, not VOLV B. Ownership, free float, short interest and buybacks are tracked at company level. Companies carry a company_id, an LEI where one exists, a country, sector/industry classification and their market listings.

Two things to know about company_id:

  • It's Modular Finance's internal identifier and the join key across every domain and both interfaces; REST and MCP use the same IDs.
  • The numbers carry no meaning. Negative IDs are normal and are not a flag for unlisted, private or anything else. Pass them through verbatim.

Stocks (share classes)

A stock is one share class of a company: Volvo AB has VOLV A and VOLV B. Stocks carry a stock_id, ISIN, ticker symbol, listing currency and market segments. Companies with multi-class structures have several stocks with different voting power, which is why a position's capital fraction and votes fraction can differ. See Changes & deltas for how both are reported.

Which denominator?

Capital and votes fractions are computed on the company's total issued share capital, the usual convention in the Nordics. The alternative is the treasury-adjusted basis: shares outstanding, excluding shares the company holds itself, which is the usual convention in the UK.

  • MCP: the ownership and short-interest tools take an adjust_treasury boolean, so a single session can read a UK company on the UK convention and a Nordic one on the Nordic convention. Omit it and your organisation's configured basis applies (unadjusted unless configured otherwise); every response echoes the treasury_adjusted basis it was computed on.
  • Feeds that cannot adjust: list_market_transactions, get_lockups, list_block_trades, list_buyback_transactions and get_free_float always report fractions of total issued capital. They take no adjust_treasury, and their tool descriptions say so.
  • Reconciling: get_shares_outstanding reports both share counts regardless of configuration, so you can always recover the denominator behind a fraction.

Money and currency

Values that Dataflow computes rather than observes - a position's market value, the value of an ownership change, a short position's value, an insider's holding value - are FX-converted into one display currency for your organisation, configured once (GBP for a UK customer, SEK for a Swedish one). Every such figure travels with the currency it is reported in, and the min_delta_value threshold on list_market_transactions is read in that same currency.

Amounts that are contractual rather than computed keep the currency they were declared in: a share price, a dividend amount, a buyback authorisation, a lock-up value. Those name their own currency per row, so a response can legitimately mix the two - always read the currency field beside the number.

cost_basis on holdings and portfolio positions is the owner's average acquisition cost per share (GAV) in the display currency, so it compares directly against a share price. Where an owner holds more than one share class, the position's figure is the share-weighted blend of the classes, and the per-class figures are in the stock breakdown.

Looking things up