Open Private Markets (OPM) — shared, open infrastructure for the private markets industry. This package provides the reference vocabulary; more components to follow.
Project description
Open Private Markets
Shared, open infrastructure for the private markets industry.
Open Private Markets (OPM) is a public initiative to build the commons that private markets firms and software vendors can build on rather than reinvent. This repository holds the first component: a shared reference vocabulary covering firm types, fund structures, strategies, asset classes, instruments, and roles. More components may follow.
The glossary is published two ways. As a documentation website at openprivatemarkets.org for humans to read and cite. As the privatemarkets Python package on PyPI for software to consume programmatically.
Why this exists
Private markets runs on language that nobody shares. Every firm defines the same concepts differently. Every software vendor hard-codes its own taxonomy. Every research report templates its data differently. The fragmentation makes benchmarking imprecise, regulatory reporting harder than it should be, and every new piece of software reinvent the same foundational work.
Other parts of finance have solved this with shared reference infrastructure. Banking has the Financial Industry Business Ontology. The web has schema.org. APIs have OpenAPI. Private markets has nothing equivalent. OPM is the project to build one.
Scope
OPM is a public umbrella for open, shared private markets infrastructure. The glossary is the first component because vocabulary is the foundation every other component depends on. Plausible future components include shared calculation libraries (IRR, MOIC, DPI, and so on), reference data schemas for common private markets data structures, validation tooling, and reference workflows. Each one is decided on when there is genuine demand, not on speculation.
What is in this repository
- The glossary content under
src/privatemarkets/glossary/, organised by category. Each term is a markdown file with YAML front matter holding the structured data and a prose body holding the definition. - The Python package source under
src/privatemarkets/, which loads the glossary into typed Pydantic models. - The JSON Schema under
schemas/that validates every term's front matter. - The MkDocs configuration, Docker setup, and GitHub Actions workflows that render the site and publish the package.
The glossary lives inside the Python package folder (rather than at the repository root) so it ships with the package to PyPI consumers.
Install
pip install privatemarkets
Use in Python:
from privatemarkets import glossary
terms = glossary() # dict keyed by term ID, e.g. "fund-manager"
fund_manager = terms["fund-manager"]
print(fund_manager.name)
print(fund_manager.sub_types)
Term IDs follow kebab-case throughout (fund-manager, not fund_manager). The dictionary key, the URL path, the filename, and the wikilink target are all the same string.
Contribute
Contributions are welcome. The typical flow is to suggest an edit through the button on any page of the documentation site, which opens a pre-filled pull request. For direct contributions, see CONTRIBUTING.md.
The maintainer reviews every change personally. Expect careful discussion of definitions, because a shared vocabulary is only valuable if the definitions are precise.
Develop locally
Prerequisites on your machine: Docker Desktop, UV, Just, and Git.
git clone https://github.com/openprivatemarkets/privatemarkets.git
cd privatemarkets
just up
just url
just url prints the URL where the preview site is served (typically http://localhost:8000, or a different port if 8000 is busy on your machine). Open it in a browser. Changes to glossary files trigger automatic reloads.
Other useful commands:
just test # run the test suite
just lint # check code style
just typecheck # type check with mypy
just build # build the static site into ./site
just shell # open a bash shell inside the dev container
just rebuild # rebuild the image after dependency changes
just down # stop the dev container
All day-to-day Python commands run inside a Docker container. UV is the only Python-related tool installed on the host, and only because it manages dependencies and scaffolds the project. Day-to-day commands do not touch your host.
To change Python dependencies (rare):
uv add <package> # runtime dependency
uv add --dev <package> # development dependency
just rebuild # rebuild the container to pick up the change
Relationship to adjacent standards
OPM aligns with FIBO where concepts overlap. Terms in this glossary record their FIBO equivalent through a URI field where one exists. FIBO's coverage of private markets is thin; OPM fills that gap.
The governance model is inspired by schema.org. Lightweight collaboration through GitHub with a small steering group, not a formal standards body.
License
OPM is dual-licensed.
Content (glossary definitions, prose bodies, documentation) is licensed under the Creative Commons Attribution 4.0 International License. Anyone can use, adapt, and redistribute, including commercially, with credit to OPM. See LICENSE-CC-BY-4.0.
Code (the Python package, build scripts, workflows, JSON Schema) is licensed under the MIT License. See LICENSE-MIT.
The package metadata expresses this as the SPDX expression MIT AND CC-BY-4.0 so tools that consume PyPI metadata can identify both licenses unambiguously.
Copyright © 2026 Sean Henney.
Maintainer
OPM is currently maintained by Sean Henney. As the project grows, governance expands to a small committee and eventually a broader council. See CONTRIBUTING.md for the contribution process.
Links
- Website: openprivatemarkets.org
- Python package: pypi.org/project/privatemarkets
- Source: github.com/openprivatemarkets/privatemarkets
- Issues: github.com/openprivatemarkets/privatemarkets/issues
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file privatemarkets-0.0.2.tar.gz.
File metadata
- Download URL: privatemarkets-0.0.2.tar.gz
- Upload date:
- Size: 80.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c78f3d155c9f3adbd7be549864011ba75c1b29af884c0f65eab53a3e95721d2
|
|
| MD5 |
da1403a1ebc87508ccb3c1c2e053fa93
|
|
| BLAKE2b-256 |
0ff907ce03eedef190dd186910eb05eada7766c716601657739afdacdf6fbfbe
|
File details
Details for the file privatemarkets-0.0.2-py3-none-any.whl.
File metadata
- Download URL: privatemarkets-0.0.2-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63979027357f63971ba246e8783dfaf8528d8259eddd5ed6fc9d599afc93addb
|
|
| MD5 |
cbb9148ac4c52fef00ad3af22aaed9ec
|
|
| BLAKE2b-256 |
9f30353205b99531c63bdfc9069c88a6f44b0b958d532a03aca8cadda53c0517
|