# Retrofitting Position IDs to Addepar Non-Intrusively

DevFeed: [Retrofitting Position IDs to Addepar Non-Intrusively](<https://devfeed.tech/articles/retrofitting-position-ids-to-addepar-non-intrusively-30547.md>)

Original publisher: [Read original article](<https://medium.com/build-addepar/retrofitting-position-ids-to-addepar-non-intrusively-398126f874a9?source=rss----596e43e5e150---4>)

Author: Calvin Wu

Published: 2017-11-08T14:11:00Z

Content type: article

Language: en

Sources: [Addepar](<https://devfeed.tech/sources/addepar.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [Graphs](<https://devfeed.tech/topics/graphs.md>), [Entity resolution](<https://devfeed.tech/topics/entity-resolution.md>), [integrity](<https://devfeed.tech/topics/integrity.md>), [import](<https://devfeed.tech/topics/import.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>)

Tags: [data](<https://devfeed.tech/tags/data.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [edge](<https://devfeed.tech/tags/edge.md>), [fintech](<https://devfeed.tech/tags/fintech.md>), [graph](<https://devfeed.tech/tags/graph.md>), [import](<https://devfeed.tech/tags/import.md>), [integrity](<https://devfeed.tech/tags/integrity.md>), [mapping](<https://devfeed.tech/tags/mapping.md>), [node](<https://devfeed.tech/tags/node.md>), [reconciliation](<https://devfeed.tech/tags/reconciliation.md>), [validation](<https://devfeed.tech/tags/validation.md>), [verification](<https://devfeed.tech/tags/verification.md>)

## AI overview

Addepar describes its Financial Graph and data pipeline for importing portfolio data from many custodians. The article explains how node matching identifies accounts and securities, connects them through ownership edges, and addresses verification and data-integrity problems through a non-intrusive pipeline change.

## Source excerpt

Every day, Addepar's data pipeline consumes portfolio data from hundreds of different custodians and imports it to millions of nodes and edges in our Financial Graph. To ensure that the data can be trusted and used to correctly calculate performance, it's crucial that we not only import it in a timely fashion, but also run verification checks with what already exists on our platform. The data is complex, and data integrity check failures can be caused by a lot of different issues -- for example, missing data, incorrect raw data from custodian, incorrect transaction mapping, problematic validation logic, and incorrect security mapping. As our platform grows, we're continually improving and extending our methods. The following is an example of how we addressed one type of verification problem -- node matching -- by non-intrusively introducing a core change to a critical pipeline. Node Matching The Financial Graph is used to represent the ownership structure of portfolio data, where a node represents an entity (such as a brokerage account, an asset owner, a legal entity, a stock, or a bond), and an edge (or a position in financial terms) represents the ownership relationship between two nodes. The from node is often an account, and the to node refers to the portfolio's holding -- the actual security. When importing data, we need to do a few things: Identify the account node. Identify the security node via node matching. We search for the security node in our system using the security attribute information the custodian provided. The search criteria could be the name of the security or security identifiers. Each security type may have different preferred strong and weak identifiers that drive the matching. Our matching logic may evolve over time as we learn more about the data. This is similar to the entity resolution problem, where we have to identify the same node across different data sources. Find the edge. Once both the account node and security node are identified, th