Skip to main content

Overview

The Backchannel API lets you answer two core questions about a portfolio:
  1. “What would happen to my portfolio if X occurred?” — Describe any scenario in plain English and get a probability-weighted impact analysis.
  2. “How does this news event affect my holdings?” — Search curated news scenarios and compute portfolio exposure against them.
  3. “What happens if macro conditions change?” — Run what-if analysis with specific macro factor shocks (USD strength, oil prices, etc.).
All workflows require a portfolio expressed as a map of tilt_asset_id → weight. This guide walks through resolving tickers, building portfolio weights, and calling the scenario and risk endpoints.

Step 1: Resolve Tickers to Tilt Asset IDs

All portfolio-related endpoints accept weights keyed by Tilt Asset ID — an internal identifier for each security. Use the Search Tickers endpoint to resolve symbols.
Response:
A symbol may return multiple results across exchanges (e.g. NAS and TSE listings). Filter by ticker_type: "common_stock" and the relevant exchange to get the primary US listing.
Extract the tilt_asset_id from each result. View API Reference →
You can resolve multiple symbols in a single call by passing a comma-separated list. Cache the mapping — tilt asset IDs are stable identifiers that don’t change.

Step 2: Build Portfolio Weights

Construct a portfolio_weights object mapping each tilt_asset_id to a decimal weight (summing to 1.0):
Weights should sum to 1.0. If they don’t, the API will still work but exposure calculations will be proportional to the weights provided.
This portfolio_weights object is reused across all the endpoints below.

Step 3: Scenario Portfolio Analysis

The simplest way to analyze portfolio impact. Describe any scenario in plain English and the API generates a probability tree of outcomes with portfolio-level returns. We recommend using flat_scenarios: true for most integrations. This generates a clean, single-level structure where each scenario directly contains its macro shocks — no nested sub-scenarios to traverse. The result is simpler to parse and display.

Key parameters

Caching behavior

Scenario generation results are automatically cached. The first call for a given scenario generates fresh results (10–15 seconds). All subsequent calls with the same scenario_description, as_of_date, search_for_context, and flat_scenarios combination return cached results in under 1 second. The cache is keyed on these four parameters. The portfolio weights are not part of the cache key — portfolio impact computation happens after scenario generation, so a single cached scenario tree can be reused for any portfolio instantly.
Best practice for article-driven scenarios: When you ingest a new article, immediately call scenario_portfolio_analysis with the article headline/summary as the scenario_description. This warms the cache so that any subsequent request — for any portfolio — returns instantly. This is ideal for “preload at login” flows.
Use force_regenerate: true to bypass the cache if you need fresh results for an already-cached scenario.

Response structure

The response includes an AI-generated scenario tree, leaf-level portfolio impacts, and a probability-weighted expected return:
When flat_scenarios: true, each scenario in scenario_tree contains its macro_shocks directly (no sub_scenarios), and leaf_scenarios has one entry per scenario. When flat_scenarios: false (default), scenarios have nested sub_scenarios and leaf_scenarios contains one entry per sub-scenario with joint probabilities.
Key fields:
This endpoint uses AI to generate scenarios on first encounter (~10–15 seconds). Cached scenarios return in under 1 second. For instant results on pre-computed news scenarios, use the Search Scenarios endpoint below instead.
View API Reference →

Flat vs. hierarchical scenarios

Step 4: Search News Scenarios with Portfolio Exposure

Search for curated, pre-computed news scenarios and see how each one affects your portfolio. This is instant (no AI generation) and useful for browsing recent events.

Key parameters

At least one of queries or subject_code must be provided. Sending an empty request body will return a 422 Validation Error.

Response structure

The response wraps results in articles. Each article is a news scenario with timeline, probability tree, and (when portfolio_weights is provided) portfolio exposure:
Key fields in portfolio_exposure: View API Reference →

Step 5: Get a Single Scenario with Portfolio Exposure

Once you have a point_id from search results, fetch its full detail with portfolio exposure:
When aggregate_scenarios is false, the response includes leaf_details and scenario_level_details within portfolio_exposure, giving you the full probability tree with per-leaf portfolio returns. View API Reference →

Step 6: Macro Factor Analysis

Get Macro Sensitivities

Understand which macro factors your portfolio is most exposed to:
The response ranks macro factors by portfolio-level exposure, showing which factors would move your portfolio the most:
View API Reference →

Run a Macro Scenario

Use the sensitivities output to stress-test with specific macro shocks. The shocks object maps factor identifiers to shock magnitudes in standard deviations.
The sensitivities endpoint returns factor names with a macro_ prefix (e.g. macro_DTWEXBGS). When passing shocks to the scenario endpoint, drop the prefix — use the raw identifier (e.g. DTWEXBGS).
The response shows the expected portfolio return and per-security breakdown:
View API Reference →

Putting It Together

A typical integration flow:
  1. Resolve tickers once and cache the tilt_asset_id mapping.
  2. Run scenario portfolio analysis with a plain English description to quickly assess portfolio impact for any hypothetical event. Use flat_scenarios: true for the simplest response structure. This is the easiest starting point.
  3. Search news scenarios with portfolio_weights to find real-world events that matter to the portfolio. Use order_by_exposure: true to surface the highest-impact stories first.
  4. Fetch individual scenarios with portfolio_weights for detailed drill-down with leaf-level probability breakdowns.
  5. Get macro sensitivities to understand the portfolio’s factor exposures.
  6. Run macro scenarios to stress-test against specific factor shocks (e.g., “what if the US Dollar Index rises 0.5 standard deviations?”).
Scenario Portfolio Analysis (Step 2) generates scenarios on-the-fly using AI. The first call takes ~10–15 seconds, but results are automatically cached — subsequent calls for the same scenario return in under 1 second, for any portfolio. Search Scenarios (Step 3) returns pre-computed news scenarios instantly. Use scenario portfolio analysis for hypothetical what-if questions, and search scenarios for browsing recent real-world events.

Rate Limits

All endpoints are rate-limited at 120 requests per minute per API key. The scenario_portfolio_analysis endpoint has an additional limit of 10 requests per minute to protect the AI generation backend. If you exceed the limit, you’ll receive a 429 Too Many Requests response:

Error Handling

All error responses follow a consistent format: