Overview
The Tilt Portfolio Optimization Platform enables you to create personalized portfolio optimizations for your clients. This guide walks through the complete workflow from initial organization setup to generating optimized trade proposals.Step 1: Organization Setup
Configure Asset Classes
We’ll start by defining the asset classes available in your organization. An asset class consists of a name, description, and a benchmark that represents it. We’ll first search for available benchmark indexes, and then use that to create the asset class.Search Available Benchmarks
Create Asset Classes
Now we can create an asset class using one of our benchmarks. The example below usesM75BNK-R
, which is the identifier for the SPY
ETF.
Step 2. Portfolio Setup
Now that we have an asset class, let’s create a portfolio which uses that asset class. We can make an example portfolio with a single allocation to US equities, although it is possible to blend multiple asset classes together. We reference the asset class using it’s UUID that was returned when creating it. We can always list available asset classes to retrieve all asset classes. At this point, we can enable direct indexing per asset class, for this portfolio. Later, we can override this setting per client too.Direct indexing only takes affect if the underlying benchmark index also supports direct indexing.
Step 3: Client Setup
Create a Client
Next let’s create a new client instance, which represents a client in your system. Theexternal_id
should be a string that represents this client in your system, but clients are referenced throughout the API using a UUID which is returned up client creation.
When creating a client, we can also provide configuration and holdings information, but we’ll update those separately in this guide.
Update Client Holdings
Now, let’s set assign the client to a portfolio, and update their holdings. We use the portfolio UUID which was returned when creating the portfolio, or we can find it by listing the available portfolios.MH33D6-R
and P8R3C2-R
are the identifiers for Apple and Microsoft respectively. More information on asset identifiers is in the Tilt Asset IDs section.Update Client Direct Indexing Preference
We may override the direct indexing preferences for a client by updatingasset_class_settings
. For example, we can disable direct indexing for a particular asset class:
Step 4: Portfolio Optimization
We can run optimization either for a single client, or in bulk. To start with, let’s run the optimization for a single client.Single Client Optimization
Run an optimization for an individual client to get customized portfolio weights:Generate Trade Proposals
Convert the optimized weights into actionable trade proposals.Step 5: Bulk Operations
Bulk Optimization and Proposals
We can optimize clients in bulk by calling the bulk optimize endpoint, passing in a list of client UUIDs. This responds with a list of proposal UUID’s, that we can then check the result of.Check Task Results
We can get the status for each proposal by calling the check status endpoint:Configuration Hierarchy
Optimization configuration can be set on the client-level, portfolio-level, and organization level, and are merged together based on this order of precedence:- Client config (highest priority)
- Portfolio config
- Organization config (fallback defaults)
customization_config
field in their respective schemas.
Note that client and organization values outside of customization_config
are unique to the client or organization, and are not merged. For example, factor_values
is a top-level field in the organization schema. It is set globally for the organization, and cannot be overridden. Most properties are set via config however, and can be flexibly overridden as needed.
For list values (e.g.,
no_trade
assets), the system uses the most specific non-empty list available. For example, if a client has any no_trade
assets defined, these completely replace any organization-level no_trade
assets rather than merging.