> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tilt.now/llms.txt
> Use this file to discover all available pages before exploring further.

# Configure factor exposure bounds

> Set account exposure bounds through the API and review the custom-factor upload format in development.

Use this guide to constrain an account's built-in asset-allocation exposure or a custom factor. Start with an existing organization, client account, and assigned portfolio. See the [Customization guide](https://docs.tilt.now/customization/guide.md) for account setup and [Optimizer factor bounds](https://docs.tilt.now/customization/factor-bounds.md) for factor names, units, and active-reference definitions.

To set bounds in the app, use the Advisor guide: [Set factor exposure bounds](https://docs.tilt.now/advisor/set-factor-exposure-bounds.md).

> [!NOTE]
>
> Custom-factor upload is in development. You can set bounds for built-in factors and custom factors already configured for your organization. Contact the [Tilt team](mailto:contact@tilt.now) to request a new factor. The [upload section](#custom-factor-uploads-in-development) documents its data format and replacement behavior.

The examples use API-key authentication. Replace the organization, client, and account placeholders with your own values. The ranges illustrate the request format; choose bounds for your portfolio.

## 1. Inspect the organization's custom factors

```bash theme={null}
curl --request GET \
  --url https://api.tilt.now/api/v1/custom/org/{organization_uuid}/ \
  --header 'X-Api-Key: <api-key>'
```

Read `factor_values` in the response. It contains the existing custom factor names and asset loadings. Built-in `asset_allocation_*` factors do not require an entry here.

[Get Organization API reference](https://docs.tilt.now/api-reference/endpoint/get-org-details.md)

## 2. Set the account's exposure bounds

Set bounds in `customization_config.factor_exposure_bounds`. This example uses the built-in equity factor, which requires no custom upload:

```bash theme={null}
curl --request PATCH \
  --url https://api.tilt.now/api/v1/custom/org/{organization_uuid}/clients/{client_uuid}/accounts/{account_uuid} \
  --header 'Content-Type: application/json' \
  --header 'X-Api-Key: <api-key>' \
  --data '{
    "customization_config": {
      "factor_exposure_bounds": [
        {
          "factor": "asset_allocation_equity",
          "min_bound": "0.50",
          "max_bound": "0.70",
          "min_active_bound": "-0.03",
          "max_active_bound": "0.03"
        }
      ]
    }
  }'
```

The equity row allows 50% to 70% absolute exposure and an active difference of −3 to +3 percentage points. Both absolute and active ranges apply together. To bound an existing custom factor, use its exact configured name and loadings' scale after confirming them with the Tilt team.

Provide all four numeric bounds for each factor. Include the complete factor-bound list you want saved at this account scope: submitting the list replaces its existing rows. A non-empty account list takes precedence over portfolio and organization lists. See [Configuration hierarchy](https://docs.tilt.now/customization/guide.md#configuration-hierarchy) before overriding inherited bounds.

[Update Client Account API reference](https://docs.tilt.now/api-reference/endpoint/patch-client-account.md)

## 3. Run and inspect the optimization

```bash theme={null}
curl --request POST \
  --url https://api.tilt.now/api/v1/custom/org/{organization_uuid}/clients/{client_uuid}/accounts/{account_uuid}/optimize/ \
  --header 'X-Api-Key: <api-key>'
```

Check the optimized holdings against the saved loadings and both ranges. For each factor, sum portfolio weight multiplied by asset loading, then subtract the same calculation for the optimization benchmark to check active exposure. Saving configuration alone does not establish that an optimization can satisfy it.

If a custom factor has no configured values, contact the [Tilt team](mailto:contact@tilt.now) to confirm its setup. If built-in asset-class exposure data is unavailable, ask the team to confirm data availability. For an infeasible run, review the absolute and active ranges together with the account's other constraints.

[Optimize Account Portfolio API reference](https://docs.tilt.now/api-reference/endpoint/post-account-optimize.md)

## Custom-factor uploads (in development)

Custom-factor upload is in development. The example below documents the upload data format for planned self-service support. Contact the Tilt team to request a factor and confirm setup before submitting custom loadings.

A custom factor has a name and a map from Tilt Asset IDs to numeric loadings. For a custom large-cap bucket, `1` identifies assets in the defined bucket and `0` identifies assets outside it. Its weighted exposure measures the portfolio allocation to that bucket.

```json theme={null}
{
  "factor_values": [
    {
      "name": "custom_large_cap",
      "values": {
        "<asset-id-in-large-cap-bucket>": "1.0",
        "<asset-id-outside-large-cap-bucket>": "0.0",
        "$USD": "0.0"
      }
    }
  ]
}
```

This illustrative payload describes `factor_values` on [Update Organization](https://docs.tilt.now/api-reference/endpoint/update-org-details.md). The values map needs coverage across holdings, the optimization benchmark, and potential purchases. Missing custom asset loadings count as zero, which can understate bucket exposure.

> [!WARNING]
>
> Supplying `factor_values` replaces the organization's entire custom-factor list. Retaining existing factors requires their names and complete values maps in the same request. Other accounts in the organization can use these loadings too; review their bounds before replacing a factor.

After the team confirms a custom factor is configured, use its exact name in the app or API bounds. A name entered in the bounds editor or a display label from monitoring does not create asset loadings.

To request another Tilt-supplied factor or help defining a new one, send the team the details listed in [Request a new factor](https://docs.tilt.now/customization/factor-bounds.md#request-a-new-factor).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.