Conceptual ERD — core entities
The 38 entities of the OpenIM core, organised in six groups, with the key relationships among them. The specialisation packs (public-markets, fund-operations, private-markets, derivatives, real-assets) sit on top of this core — a fund specialises Instrument, a capital call specialises Transaction, a fund NAV specialises Valuation, a direct loan specialises Instrument. 48 specialisation entities across the five packs; with the 38 core entities, the OpenIM entity model is 86 entities. This diagram covers only the core; the attribute-level ERD — every core entity’s full column schema, at attribute grain — lives in D2.
The diagram is at entity-and-relationship grain, not attribute grain. The attribute-level schema for every core entity lives in its own file under ../entities/core/.
erDiagram
LEGAL_ENTITY ||--o{ INSTRUMENT : "issues"
LEGAL_ENTITY ||--o{ PORTFOLIO : "owns / manages"
LEGAL_ENTITY ||--o{ ENTITY_ALIAS : "known as"
LEGAL_ENTITY ||--o{ EXTERNAL_IDENTIFIER : "maps to"
PORTFOLIO ||--o{ PORTFOLIO : "parent of (sub-portfolio)"
PORTFOLIO }o--o| ASSET_CLASS : "asset-class portfolio"
PORTFOLIO ||--o{ HOLDING : "contains"
PORTFOLIO ||--o{ TRANSACTION : "records"
PORTFOLIO ||--o{ CASH_FLOW_EVENT : "cash in / out"
PORTFOLIO ||--o{ RISK_MEASUREMENT : "measured by"
PORTFOLIO }o--o{ BENCHMARK_INDEX : "benchmarked against"
HOLDING }o--|| INSTRUMENT : "position in"
HOLDING ||--o{ VALUATION : "valued by"
HOLDING ||--o{ RISK_MEASUREMENT : "measured by"
INSTRUMENT }o--|| ASSET_CLASS : "classified as"
INSTRUMENT ||--o{ ENTITY_ALIAS : "known as"
INSTRUMENT ||--o{ EXTERNAL_IDENTIFIER : "maps to"
INSTRUMENT ||--o{ CLASSIFICATION_HISTORY : "classified by"
INSTRUMENT ||--o{ VALUATION : "valued by"
SHARE_UNIT_CLASS ||--o{ VALUATION : "NAV per unit struck for (class grain)"
TRANSACTION ||--o{ CASH_FLOW_EVENT : "generates"
TRANSACTION ||--o{ HOLDING : "affects"
TRANSACTION }o--o| LEGAL_ENTITY : "counterparty"
TRANSACTION }o--o{ DOCUMENT_METADATA : "evidenced by"
CASH_FLOW_EVENT }o--o| INSTRUMENT : "concerning"
VALUATION }o--o{ PRICE_MARKET_DATA : "may consume"
BENCHMARK_INDEX }o--o{ INSTRUMENT : "composed of"
BENCHMARK_INDEX }o--o| ASSET_CLASS : "asset-class peer"
CLASSIFICATION_HISTORY }o--|| CLASSIFICATION_TYPE : "uses"
RISK_MEASUREMENT }o--o| RISK_LIMIT : "checked against"
RISK_MEASUREMENT }o--o| SCENARIO : "computed under"
RISK_LIMIT ||--o{ LIMIT_BREACH : "breach event"
LIMIT_BREACH }o--|| RISK_MEASUREMENT : "measurement that crossed"
LIMIT_BREACH }o--|| PORTFOLIO : "raised on"
PERFORMANCE_RESULT }o--|| PORTFOLIO : "return for"
PERFORMANCE_RESULT }o--|| METRIC_DEFINITION : "computed to"
RISK_MEASUREMENT }o--|| METRIC_DEFINITION : "computed to"
ESG_MEASUREMENT }o--|| INSTRUMENT : "about"
ESG_MEASUREMENT }o--o| LEGAL_ENTITY : "about issuer"
EXTRACTION_RECORD }o--|| DOCUMENT_METADATA : "parsed from"
ESG_COMPLIANCE_RESULT }o--|| PORTFOLIO : "compliance for"
ESG_COMPLIANCE_RESULT }o--o{ ESG_MEASUREMENT : "consumes"
ESG_COMPLIANCE_RESULT }o--|| METRIC_DEFINITION : "computed to"
INTERNAL_CREDIT_RATING }o--o| INSTRUMENT : "rates"
INTERNAL_CREDIT_RATING }o--o| LEGAL_ENTITY : "rates issuer"
INTERNAL_CREDIT_RATING }o--|| METRIC_DEFINITION : "methodology"
RECONCILIATION_BREAK }o--|| HOLDING : "discrepancy on"
ACCOUNT }o--|| PORTFOLIO : "settles through"
ACCOUNT }o--|| LEGAL_ENTITY : "held by"
COLLATERAL_POSITION }o--|| INSTRUMENT : "asset posted"
COLLATERAL_POSITION }o--|| LEGAL_ENTITY : "counterparty"
TAX_LOT }o--|| LEGAL_ENTITY : "client"
TAX_LOT }o--|| INSTRUMENT : "position in"
TAX_LOT }o--|| TRANSACTION : "acquired by"
INVESTMENT_AUTHORISATION }o--o| INSTRUMENT : "authorises"
INVESTMENT_AUTHORISATION }o--|| DOCUMENT_METADATA : "IC memo"
COMPLAINT_RECORD }o--|| LEGAL_ENTITY : "from client"
OVERSIGHT_EXCEPTION }o--|| LEGAL_ENTITY : "vs administrator"
LIABILITY_PROFILE }o--o| PORTFOLIO : "strategy target"
RISK_BUDGET }o--|| PORTFOLIO : "allocated to"
ALLOCATION_PLAN }o--|| PORTFOLIO : "governs"
GOAL }o--|| LEGAL_ENTITY : "client objective"
GOAL }o--o| PORTFOLIO : "funded by"
GOAL_PROGRESS_MEASUREMENT }o--|| GOAL : "measures"
GOAL_PROGRESS_MEASUREMENT }o--|| METRIC_DEFINITION : "computed to"
FINANCIAL_PLAN }o--|| LEGAL_ENTITY : "household"
FINANCIAL_PLAN ||--o{ GOAL : "contains"
Note:
SHARE_UNIT_CLASS(FO-02 Share / Unit Class) is the only fund-operations specialisation-pack entity shown in this diagram. It appears here solely as the FK target of theVALUATIONNAV-per-unit class-grain edge; its full definition is in the fund-operations pack. This mirrors the treatment in the attribute-level D2 ERD (d2/core-erd.d2), which includes FO-02 with an explanatory comment marking it as a pack reference.
Reading the diagram
The 38-entity core organises into six groups. The Mermaid render above is busy by intent — every cross-group relationship is shown so a reader sees what depends on what. The attribute-level rendering (sql-table form with the full schemas) is at d2/core-erd.d2.
Primary spine (8 entities, E-01 to E-08)
The party / instrument / portfolio / event / valuation axes — the universal core every institutional investor runs over:
- Legal Entity (E-01) — the universal party master. Issuer, counterparty, manager, custodian, administrator, portfolio company, client, borrower are all roles of one Legal Entity, not separate masters.
- Instrument / Asset (E-02) — the universal holdable thing. Specialised by the five packs (a fund, a listed equity, a derivative, a direct loan, a directly-held real asset, an issued fund product).
- Portfolio / Mandate (E-03) → Holding / Position (E-04) — the container, the positions in it at a point in time. E-04 is key-partitioned by
book(IBOR vs ABOR). - Transaction (E-05) → Cash Flow Event (E-06) — what happened, with cash consequences.
- Valuation (E-07) ← Price & Market Data (E-08) — a point-in-time value, backed by observable prices or mark-to-model. Append-only. E-07 is key-partitioned by
method.
Reference and identity core (7 entities, E-09 to E-15)
The supporting machinery: Asset Class (E-09 — nine-class taxonomy), Benchmark / Index (E-10), Classification Type & Value (E-11) → Classification History (E-12, the bi-temporal record), Entity Alias (E-13, key-partitioned by master kind), External Identifier (E-14, key-partitioned by master kind), Document Metadata (E-15).
Risk core (4 entities, E-16 to E-19)
The artefacts the risk function owns and produces: Risk Limit (E-16, the configured threshold), Scenario (E-17), Limit Breach (E-18, the event when measurement crosses limit), Risk Measurement (E-19, the point-in-time measured value, append-only, key-partitioned by risk_type).
Computed-result and metadata core (6 entities, E-20 to E-23 + E-37 + E-38)
Stored, provenance-bearing results — the principle E-07 and E-19 already embody, extended to performance, ESG, parsed manager data, ESG compliance, and credit-rating standing. Performance Result (E-20, append-only return figures), ESG Measurement (E-21, multi-provider time-series, parallel to E-08), Metric Definition (E-22, the governed methodology stored results reference), Extraction Record (E-23, parsed-from-document provenance), ESG Compliance Result (E-37, SFDR / Taxonomy audit trail), Internal Credit Rating (E-38, methodology-versioned standing rating).
Operational core (7 entities, E-24 to E-26 + E-32 + E-34 to E-36)
The owned, lifecycle-bearing artefacts of the operations and governance functions: Reconciliation Break (E-24), Account (E-25, key-partitioned by account_type — safekeeping vs cash), Collateral Position (E-26, the generic posted / received collateral), Tax Lot (E-32, per-(client, instrument, acquisition-tranche) record), Investment Authorisation (E-34, the IC approval record, co-owned across fund-commitment + direct-investment routes), Complaint Record (E-35, FCA DISP regulated record), Oversight Exception (E-36, outsourced-administrator oversight evidence).
Strategy core (6 entities, E-27 to E-31 + E-33)
The objective / target / plan records that allocation and portfolio construction serve: Liability Profile (E-27, co-owned across the pension and insurance views — the actuarially-projected liability stream a liability-driven strategy is built against), Risk Budget (E-28, allocated to strategy / pod / manager), Allocation Plan (E-29, key-partitioned by plan_type — strategic / reference-portfolio / commitment-pacing), Goal (E-30, the client’s demand-side investment objective), Goal Progress Measurement (E-31, the append-only per-goal probability-of-meeting-goal), Financial Plan (E-33, the versioned multi-year advisory plan that contains the goal hierarchy).
What this diagram does not show
- Attributes. Conceptual layer only; attribute-level schemas live in each entity’s file under
../entities/core/. The attribute-level ERD — the same entities at column grain — is atd2/core-erd.d2. - Specialisations. The 48 specialisation entities across the five packs (a fund as an Instrument, a deal / investment opportunity as the direct-deal pipeline record, a capital call as a Transaction, a fund NAV as a Valuation, a directly-held real asset as an Instrument, a direct loan as an Instrument, an issued fund product as an Instrument, a share or unit class as an Instrument, an investor unitholding as a Holding / Position, a dealing order as a Transaction, a fund distribution event as a Transaction, a fee accrual as a Valuation, an investor tax statement as a Document Metadata (E-15), a service-provider appointment record, an omnibus account as an Account (E-25), an ETF creation/redemption order as a Transaction, an ETF creation basket (portfolio composition file), and an ETF authorised-participant agreement) are in the pack READMEs.
- Ownership — which Service Domain owns each entity. That mapping is in
../ownership-map.md. - Faceted, key-partitioned and co-owned ownership patterns — ten entities (E-03 faceted; E-04, E-07, E-13, E-14, E-19, E-25, E-29 key-partitioned; E-27 and E-34 co-owned) have multiple co-owning Service Domains under defined patterns. See the ownership map for the full detail.