Addepar Attributes

Attributes are the data model layer in Addepar. They describe entities, positions, and groups with both qualitative metadata (asset class, sector, country) and quantitative measures (time-weighted return, value, yield). Every portfolio query, every report, and every filter operates on attributes. Understanding how attributes work determines whether your integration can read, write, and analyze portfolio data correctly.

How attributes connect the system

Attributes serve three roles simultaneously:

  1. Descriptive metadata on resources: when you GET an entity, its attributes tell you what it is (asset class, model type, currency, custom classifications).
  2. Query dimensions in portfolio analytics: when you POST a portfolio query, you specify attributes as columns (what to calculate) and groupings (how to slice the results).
  3. Filter criteria for scoping: when you filter a portfolio view, you use attributes to include or exclude holdings.

This means the same attribute (e.g., asset_class) appears in three contexts: on the entity resource itself, as a grouping key in portfolio queries, and as a filter parameter in views. The Attributes API is how you discover which attributes exist and which roles they can fill.

Attribute categories

CategoryNaming patternExampleWhen to use
StandardLowercase, underscore-separatedasset_class, time_weighted_returnBuilt-in attributes provided by Addepar (300+). Use for industry-standard classifications and calculations.
Custom_custom_{name}_{id}_custom_gic_taxonomy_637951Firm-defined attributes for proprietary classifications, internal identifiers, or calculations Addepar does not provide natively.
External IDexternal_id_{type_key}external_id_salesforceCross-system identifiers connecting Addepar entities/groups to records in external systems (CRM, custodian, order management). See External Identifiers.

The _custom_ prefix and numeric ID suffix on custom attributes are not optional formatting. They are the canonical API field name. Discover the exact field name for any custom attribute in Firm Administration > Attributes > select attribute > API Field Name.

Attribute applicability (usage)

Each attribute declares where it can be used. The Attributes API returns a usage array for each attribute:

Usage valueMeaningWhere it matters
columnsCan be used as a column in Portfolio QueryDetermines what calculations you can request
groupingsCan be used as a grouping in Portfolio QueryDetermines how results can be sliced
filtersCan be used as a filter criterionDetermines how views and queries can be scoped
entity_attributesCan be applied to entities as core resource dataAppears on entity GET responses
entity_custom_attributesCan be applied to entities as additional metadataAppears under the entity's attributes object
position_custom_attributesCan be applied to positionsAppears under the position's attributes object

If you attempt to use an attribute in a context it does not support (e.g., using a position-only attribute as a portfolio query grouping), the API returns 400 Bad Request.

Output types

Attributes carry typed values. The type determines how to read and write the attribute value in API payloads:

Output typeJSON representationExample
WordString"Equities"
NumberNumber100
PercentageDecimal (0.05 = 5%)0.05
DateString in YYYY-MM-DD"2017-03-30"
Yes/NoBooleantrue
CurrencyString (ISO 4217 code)"USD"
Money ValueObject with currency and value{"currency": "USD", "value": 167.23}

Money Value is the only composite type. Both currency and value must be present. Passing one without the other returns a validation error.

Time-varying attributes

Some attributes change over time. An entity's sector allocation might shift from 100% Technology in 2020 to a 50/50 Technology/Large Cap split in 2023. Time-varying attributes model this through dated value arrays.

Each entry in a time-varying attribute has three fields:

FieldRequiredMeaning
dateYesThe date from which this value applies. null means "applies at all points in time" (the default value).
valueYesThe attribute value as of that date.
weightYesDecimal indicating proportion when multiple values share the same date. Must sum to 1.0 across same-date entries.

Single value (constant over time):

"asset_class": [
  {
    "date": null,
    "value": "Equity",
    "weight": 1.0
  }
]

Value that changes on a specific date:

"country": [
  {
    "date": "2015-01-01",
    "value": "USA",
    "weight": 1.0
  },
  {
    "date": "2018-01-01",
    "value": "Canada",
    "weight": 1.0
  }
]

Multiple weighted values on the same date (split allocation):

"sector": [
  {
    "date": "2018-01-01",
    "value": "Technology",
    "weight": 0.5
  },
  {
    "date": "2018-01-01",
    "value": "Large Cap",
    "weight": 0.5
  }
]

The weight field has real computational impact. In portfolio queries, weighted attributes distribute the position's value proportionally across each category. A position with asset_class split 60/40 between Equity and Fixed Income will report 60% of its value in the Equity group and 40% in Fixed Income.

Writing attributes to resources

Apply attributes using PATCH on the entity or position:

curl -X PATCH "https://{firm}.addepar.com/api/v1/entities/207" \
  -H "Authorization: Basic {credentials}" \
  -H "Addepar-Firm: 1" \
  -H "Content-Type: application/vnd.api+json" \
  -d '{
    "data": {
      "id": "207",
      "type": "entities",
      "attributes": {
        "asset_class": "Equity",
        "_custom_gic_taxonomy_637951": [
          {"date": null, "value": "Emerging Market", "weight": 1.0}
        ]
      }
    }
  }'

Standard attributes accept either a flat value (string, number) or a time-varying array. The API infers the format from the attribute's definition. Custom attributes always use the time-varying array format, even for a single constant value.

Permission requirement: Writing attributes requires the "Manage Attributes" permission in addition to standard API Access and entity-level Portfolio Access.

Discovering attributes

Two discovery paths:

Via API: GET /v1/attributes returns all attributes available to your firm with their output_type, usage array, display_name, and category. This endpoint is paginated. Use it to build dynamic attribute pickers or validate field names before writing.

Via application: Firm Administration > Data Configuration > Attributes. Select any attribute to see its API Field Name, output type, and applicability.

The arguments relationship on each attribute defines optional settings (e.g., time_point, adjusted) that modify how the attribute is calculated in portfolio queries. See Arguments for the full argument reference.

Date formatting

Display names for date-type attributes and certain entity fields follow your firm's configured date format (month-day-year or day-month-year). API field values always use YYYY-MM-DD regardless of firm configuration.


📘

Related


Did this page help you?