DEV Community

corpdigest
corpdigest

Posted on

Modelling Corporate Acquisition History as a Graph, Not a List

Most acquisition data on the web is stored as a flat list: acquirer, target, date, price. That shape is easy to render in a table and nearly useless for analysis, because it throws away the thing you actually want - structure.

Acquisitions are a graph. Nodes are entities, edges are transactions with a direction and a timestamp. Once you model it that way, a set of queries opens up that a flat table cannot answer:

  • Chains. Company A buys B; B had previously bought C. The IP you care about moved twice. A flat list shows two unrelated rows.
  • Divestments. An entity leaves the graph and re-enters elsewhere. Spin-offs are edges too, and omitting them makes portfolios look monotonically expanding.
  • Clustering by category. Group edges by target category and the acquirer's strategy becomes visible as a shape rather than a narrative.

Pharmaceutical companies are the clearest test case for this, because their acquisition activity is pipeline acquisition. Buying a company is often buying one molecule at a specific trial phase. Novartis AG is a useful example - the company was itself formed in 1996 by the merger of Ciba-Geigy and Sandoz, so its own root node is a merger, and its subsequent activity includes both acquisitions and significant divestments as it moved away from generics.

A schema that survives contact with real data:

{
  "acquirer": "novartis",
  "target": "example-bio",
  "announced": "2024-03-11",
  "closed": "2024-07-02",
  "type": "acquisition",
  "category": "oncology",
  "disclosed_value_usd": null,
  "source_url": "https://..."
}
Enter fullscreen mode Exit fullscreen mode

Two design notes.

Keep announced and closed separate. Deals fall through, and collapsing the two dates silently rewrites history.

Make disclosed_value_usd explicitly nullable rather than defaulting to zero. "Undisclosed" and "zero" are very different facts, and 0 will quietly poison every aggregate you compute.

For a worked example of the raw material, the Novartis acquisition history is laid out chronologically, which is a reasonable input format before you normalise it into edges.

Once the graph exists, the interesting queries are the ones about time: how long between a therapeutic area's first acquisition and its second, and does that interval shorten when a strategy is working?

Top comments (0)