Download OpenAPI specification:
This documentation provides information on how to integrate with the Composer API to build automated trading strategies.
The Composer API enables programmatic access to Symphonies (automated trading strategies), portfolio management, market data, and direct trading capabilities.
Before you begin integration, you'll need:
To access the API, you'll need both a Key ID and a Secret:
Important Notes on API Keys
- Never expose your API Secret in client-side code or public repositories. It should be securely stored with a proven secret management system.
- There is only one active key. Generating a new key pair will revoke access to your existing key.
- Keys are tied to your Composer account. They will have the same access as the user creating the key.
All API requests require authentication using your Key ID and Secret. Include these in your request headers:
x-api-key-id: <key-id>
authorization: Bearer <key-secret>
Replace <key-id> with your actual Key ID and <key-secret> with your actual Secret.
All API endpoints are relative to the base URL: https://api.composer.trade/
This example shows how to list the user's accounts:
curl -X GET "https://api.composer.trade/api/v0.1/accounts/list" \
-H "x-api-key-id: <key-id-value>" \
-H "authorization: Bearer <key-secret>"
This example demonstrates how to retrieve a CSV activity report for a specific account:
curl -X GET "https://api.composer.trade/api/v0.1/reports/550e8400-e29b-41d4-a716-446655440000?since=2023-01-01T00:00:00Z&until=2023-01-01T23:59:59.999Z&report-type=trade-activity" \
-H "accept: text/csv" \
-H "x-api-key-id: <key-id-value>" \
-H "authorization: Bearer <key-secret>"
Rate limits are enforced on all endpoints. Most endpoints have a rate limit of 1 req/sec. The one exception is /api/v0.1/symphonies/{symphony-id}/backtest, which has a rate limit of 500 req/sec. When the rate limit is exceeded, the request will fail with a status code of 429.
For any questions or assistance, contact the Composer support team at help@composer.trade
Retrieve all brokerage accounts owned by the authenticated user. Each account includes information about supported asset classes for direct trading and Symphony automation.
{- "accounts": [
- {
- "account_uuid": "847548f7-9cde-4fe5-8751-32ff19825b7e",
- "account_foreign_id": "string",
- "account_type": "string",
- "asset_classes": [
- "CRYPTO"
], - "direct_tradable_asset_classes": {
- "buy": [
- "CRYPTO"
], - "sell": [
- "CRYPTO"
]
}, - "symphony_tradable_asset_classes": [
- "CRYPTO"
], - "account_number": "string",
- "status": "string",
- "broker": "string",
- "created_at": null,
- "first_deposit_at": null,
- "first_incoming_acats_transfer_at": null,
- "first_deploy_at": null,
- "first_position_created_at": null,
- "first_direct_trade_at": null,
- "is_legacy_crypto_only_account": true,
- "has_queued_deploy": true,
- "has_active_position": true
}
]
}Retrieve all current positions held in the specified account. Supports filtering by position type to distinguish between direct trades and Symphony-managed positions.
| account-id required | string <uuid> Unique identifier (UUID) of the account |
| position_type | string Enum: "DEFAULT_DIRECT" "SYMPHONY" "ALL" Filter holdings by position type. DEFAULT_DIRECT returns only direct trades, SYMPHONY returns only Symphony positions, ALL returns both. |
[- {
- "asset_class": "EQUITIES",
- "ticker": "AAPL",
- "quantity": 10
}, - {
- "asset_class": "CRYPTO",
- "ticker": "CRYPTO::BTC//USD",
- "quantity": 0.43252
}, - {
- "asset_class": "OPTIONS",
- "ticker": "OPTIONS::AAPL250718C00210000//USD",
- "quantity": 5,
- "options_details": {
- "underlying_asset_symbol": "AAPL",
- "strike_price": 210,
- "expiry": "2025-07-18",
- "delta_dollars": 93.27,
- "contract_type": "CALL"
}
}
]| account-id required | string <uuid> Unique identifier (UUID) of the account |
| category required | string Enum: "STATEMENT" "CRYPTO_ACCOUNT_STATEMENT" "CRYPTO_TAX_FORM" "TAX_FORM" "TRADE_CONFIRMATION" "FPSL_CONFIRMATION" |
| year required | integer <int64> |
[- {
- "category": "STATEMENT",
- "date": "string",
- "id": "string",
- "type": "string",
- "url": "string",
- "file_name": "string",
- "tax_ids": [
- "string"
]
}
]Returns the direct and symphony allocations, amounts, and values by holding for an account. Includes current prices, daily change percentages, and notional values.
| account-id required | string <uuid> |
{- "holdings": [
- {
- "symbol": "string",
- "name": "string",
- "asset_class": "CRYPTO",
- "options_details": {
- "underlying_asset_symbol": "string",
- "strike_price": 0.1,
- "expiry": "string",
- "contract_type": "PUT",
- "underlying_price": 0.1,
- "underlying_price_todays_change": 0.1,
- "underlying_price_todays_change_percent": 0.1
}, - "price": 0.1,
- "price_todays_change": 0.1,
- "price_todays_change_percent": 0.1,
- "direct": {
- "allocation": 0.1,
- "amount": 0.1,
- "value": 0.1,
- "direction": "LONG"
}, - "symphony": {
- "allocation": 0.1,
- "amount": 0.1,
- "value": 0.1,
- "direction": "LONG",
- "symphonies": [
- {
- "symphony_id": "string",
- "allocation": 0.1,
- "value": 0.1
}
]
}, - "notional_value": 0.1,
- "delta_dollars": 0.1,
- "todays_change_percent": 0.1,
- "todays_change": 0.1,
- "total_change_percent": 0.1,
- "total_change": 0.1,
- "cost_basis": 0.1,
- "average_cost_basis": 0.1
}
]
}| account-id required | string <uuid> Unique identifier (UUID) of the account |
{- "portfolio_value": 0.1,
- "simple_return": 0.1,
- "time_weighted_return": 0.1,
- "net_deposits": 0.1,
- "todays_dollar_change": 0.1,
- "todays_percent_change": 0.1,
- "total_cash": 0.1,
- "total_unallocated_cash": 0.1,
- "pending_withdrawals": 0.1,
- "pending_net_deposits": 0.1,
- "pending_deploys_cash": 0.1
}| account-id required | string <uuid> Unique identifier (UUID) of the account |
{- "symphonies": [
- {
- "id": "string",
- "position_id": "string",
- "as_of": null,
- "holdings": [
- {
- "ticker": "string",
- "price": 0.1,
- "allocation": 0.1,
- "amount": 0.1,
- "value": 0.1,
- "last_percent_change": 0.1
}
], - "simple_return": 0.1,
- "time_weighted_return": 0.1,
- "net_deposits": 0.1,
- "last_dollar_change": 0.1,
- "cash": 0.1,
- "value": 0.1,
- "deposit_adjusted_value": 0.1,
- "annualized_rate_of_return": 0.1,
- "sharpe_ratio": 0.1,
- "max_drawdown": 0.1,
- "last_percent_change": 0.1,
- "invested_since": "2019-08-24",
- "last_rebalance_on": "2019-08-24T14:15:22Z",
- "last_rebalance_attempted_on": "2019-08-24T14:15:22Z",
- "name": "string",
- "asset_class": "CRYPTO",
- "asset_classes": [
- "CRYPTO"
], - "color": "string",
- "community_review_status": "string",
- "description": "string",
- "last_semantic_update_at": "2019-08-24T14:15:22Z",
- "tags": [
- "string"
], - "rebalance_frequency": "string",
- "is_shared": true,
- "tickers": [
- {
- "name": "string",
- "symbol": "string"
}
], - "rebalance_corridor_width": 0.1,
- "next_rebalance_on": "2019-08-24",
- "may_rebalance_today": true,
- "skip_rebalance_today": true
}
]
}| account-id required | string <uuid> Unique identifier (UUID) of the account |
| since required | string <date-time> Start date for the report period (ISO 8601 format) |
| until required | string <date-time> End date for the report period (ISO 8601 format) |
| report-type required | string Enum: "trade-activity" "non-trade-activity" Type of report to generate (e.g., trade-activity) |
nullRetrieve the options chain for a specific underlying asset. Returns available contracts with bid/ask prices, greeks, and contract details. Requires authorization to view market data.
| next_cursor | string Pagination cursor for fetching the next page of results |
| underlying_asset_symbol required | string Ticker symbol of the underlying asset (e.g., AAPL) |
| strike_price | number <double> Filter by specific strike price |
| expiry | string Filter by expiration date (YYYY-MM-DD format) |
| contract_type | string Enum: "CALL" "PUT" Filter by option type (CALL or PUT) |
| order | string Enum: "ASC" "DESC" Sort order for results (ascending or descending) |
| limit | integer <int64> Maximum number of results to return. Default is 10, maximum is 250. |
| sort_by | string Enum: "symbol" "expiry" "strike_price" Field to sort results by |
{- "results": [
- {
- "symbol": "string",
- "name": "string",
- "underlying_asset_symbol": "string",
- "contract_details": {
- "contract_type": "PUT",
- "shares_per_contract": 0.1,
- "expiry": null,
- "strike_price": 0.1
}, - "underlying_asset_price": 0.1,
- "change_to_break_even": 0.1,
- "payoff_status": "IN_THE_MONEY",
- "ask": {
- "price": 0.1,
- "size": 0.1
}, - "bid": {
- "price": 0.1,
- "size": 0.1
}, - "last_trade": {
- "price": 0.1,
- "size": 0.1
}, - "todays_change": 0.1,
- "todays_change_percent": 0.1,
- "open_interest": 0.1,
- "implied_volatility": 0.1,
- "delta_dollars": 0.1,
- "notional_value": 0.1,
- "greeks": {
- "delta": 0.1,
- "gamma": 0.1,
- "theta": 0.1,
- "vega": 0.1
}, - "day": {
- "close": 0.1,
- "high": 0.1,
- "low": 0.1,
- "open": 0.1,
- "last_updated": 0.1,
- "previous_close": 0.1,
- "volume": 0.1,
- "volume_weighted_average_price": 0.1
}
}
], - "next_cursor": "string"
}If the user is not authorized to view the market data, a 403 error will be returned.
| underlying_asset_symbol | string |
| symbol required | stringOPTIONS::[A-Z]{1,5}[1-9]?[0-9]{6}[PC][0-9]{8}... |
{- "symbol": "string",
- "name": "string",
- "underlying_asset_symbol": "string",
- "contract_details": {
- "contract_type": "PUT",
- "shares_per_contract": 0.1,
- "expiry": null,
- "strike_price": 0.1
}, - "underlying_asset_price": 0.1,
- "change_to_break_even": 0.1,
- "payoff_status": "IN_THE_MONEY",
- "ask": {
- "price": 0.1,
- "size": 0.1
}, - "bid": {
- "price": 0.1,
- "size": 0.1
}, - "last_trade": {
- "price": 0.1,
- "size": 0.1
}, - "todays_change": 0.1,
- "todays_change_percent": 0.1,
- "open_interest": 0.1,
- "implied_volatility": 0.1,
- "delta_dollars": 0.1,
- "notional_value": 0.1,
- "greeks": {
- "delta": 0.1,
- "gamma": 0.1,
- "theta": 0.1,
- "vega": 0.1
}, - "day": {
- "close": 0.1,
- "high": 0.1,
- "low": 0.1,
- "open": 0.1,
- "last_updated": 0.1,
- "previous_close": 0.1,
- "volume": 0.1,
- "volume_weighted_average_price": 0.1
}
}Create a new automated trading strategy (Symphony). Define the logic tree, asset class, display settings, and optional benchmarks for performance comparison.
| name required | string Required on write. Optional/nullable on read due to old data. |
| asset_class required | string Default: "EQUITIES" Enum: "EQUITIES" "CRYPTO" |
| description | string |
| color required | string |
| hashtag required | string |
| tags | Array of strings |
required | object or object |
Array of objects | |
| share_with_everyone | boolean |
{- "name": "string",
- "asset_class": "EQUITIES",
- "description": "string",
- "color": "#FFBB38",
- "hashtag": "#BTD",
- "tags": [
- "Paired Switching",
- "Momentum"
], - "symphony": {
- "raw_value": {
- "id": "string",
- "suppress-incomplete-warnings?": true,
- "collapsed?": true,
- "collapsed-specified-weight?": true,
- "weight": {
- "num": "string",
- "den": "string"
}, - "step": "root",
- "name": "string",
- "description": "string",
- "rebalance": "none",
- "rebalance-corridor-width": 0.1,
- "children": [
- {
- "id": "string",
- "suppress-incomplete-warnings?": true,
- "collapsed?": true,
- "collapsed-specified-weight?": true,
- "weight": {
- "num": "string",
- "den": "string"
}, - "step": "if",
- "children": [
- null
]
}
]
}
}, - "benchmarks": [
- {
- "is_checked": true,
- "color": "#17BAFF",
- "id": "SPY",
- "type": "ticker"
}
], - "share_with_everyone": true
}{- "symphony_id": "string",
- "version_id": "string"
}| symphony-id required | string Unique identifier for the Symphony |
| name | string |
| description | string |
| color | string |
| hashtag | string |
| tags | Array of strings |
object or object | |
Array of objects | |
| share_with_everyone | boolean |
{- "name": "string",
- "description": "string",
- "color": "#FFBB38",
- "hashtag": "#BTD",
- "tags": [
- "Paired Switching",
- "Momentum"
], - "symphony": {
- "raw_value": {
- "id": "string",
- "suppress-incomplete-warnings?": true,
- "collapsed?": true,
- "collapsed-specified-weight?": true,
- "weight": {
- "num": "string",
- "den": "string"
}, - "step": "root",
- "name": "string",
- "description": "string",
- "rebalance": "none",
- "rebalance-corridor-width": 0.1,
- "children": [
- {
- "id": "string",
- "suppress-incomplete-warnings?": true,
- "collapsed?": true,
- "collapsed-specified-weight?": true,
- "weight": {
- "num": "string",
- "den": "string"
}, - "step": "if",
- "children": [
- null
]
}
]
}
}, - "benchmarks": [
- {
- "is_checked": true,
- "color": "#17BAFF",
- "id": "SPY",
- "type": "ticker"
}
], - "share_with_everyone": true
}{- "existing_version_id": "string",
- "version_id": "string"
}| symphony-id required | string Unique identifier for the Symphony |
| score_version required | string Default: "v1" Enum: "v1" "v2" |
{- "id": "string",
- "suppress-incomplete-warnings?": true,
- "collapsed?": true,
- "collapsed-specified-weight?": true,
- "weight": {
- "num": "string",
- "den": "string"
}, - "step": "root",
- "name": "string",
- "description": "string",
- "rebalance": "none",
- "rebalance-corridor-width": 0.1,
- "children": [
- {
- "id": "string",
- "suppress-incomplete-warnings?": true,
- "collapsed?": true,
- "collapsed-specified-weight?": true,
- "weight": {
- "num": "string",
- "den": "string"
}, - "step": "if",
- "children": [
- null
]
}
]
}| symphony-id required | string Unique identifier for the Symphony |
| version-id required | string Unique identifier for the Symphony version |
| score_version required | string Default: "v1" Enum: "v1" "v2" |
{- "id": "string",
- "suppress-incomplete-warnings?": true,
- "collapsed?": true,
- "collapsed-specified-weight?": true,
- "weight": {
- "num": "string",
- "den": "string"
}, - "step": "root",
- "name": "string",
- "description": "string",
- "rebalance": "none",
- "rebalance-corridor-width": 0.1,
- "children": [
- {
- "id": "string",
- "suppress-incomplete-warnings?": true,
- "collapsed?": true,
- "collapsed-specified-weight?": true,
- "weight": {
- "num": "string",
- "den": "string"
}, - "step": "if",
- "children": [
- null
]
}
]
}Create a copy of an existing Symphony. The new Symphony will have the same trading logic but will be undeployed and can be modified independently.
| symphony-id required | string Unique identifier for the Symphony |
| is_public | boolean DEPRECATED - This field is deprecated and will be removed in a future version |
| hashtag | string |
| color | string |
| name | string |
Array of objects | |
| share_with_everyone | boolean |
{- "is_public": true,
- "hashtag": "#BTD",
- "color": "#FFBB38",
- "name": "string",
- "benchmarks": [
- {
- "is_checked": true,
- "color": "#17BAFF",
- "id": "SPY",
- "type": "ticker"
}
], - "share_with_everyone": true
}{- "symphony_id": "string",
- "version_id": "string"
}| symphony-id required | string |
| capital required | number <double> |
| abbreviate_days | integer <int64> |
| apply_reg_fee required | boolean |
| apply_taf_fee required | boolean |
| apply_subscription | string Enum: "none" "monthly" "yearly" |
| backtest_version | string Enum: "v1" "v2" |
| slippage_percent required | number <double> Despite the name this is not in %. 1% is indicated with 0.01, not 1.0. |
| spread_markup | number <double> 10bps would be 0.001 (0.1%) |
| start_date | string |
| end_date | string |
| broker required | string Default: "ALPACA_WHITE_LABEL" Enum: "ALPACA_OAUTH" "ALPACA_WHITE_LABEL" "APEX_LEGACY" "alpaca" "apex" |
| benchmark_symphonies | Array of strings |
| benchmark_tickers | Array of strings |
{- "capital": 0.1,
- "abbreviate_days": 0,
- "apply_reg_fee": true,
- "apply_taf_fee": true,
- "apply_subscription": "none",
- "backtest_version": "v1",
- "slippage_percent": 0.1,
- "spread_markup": 0.1,
- "start_date": "string",
- "end_date": "string",
- "broker": "ALPACA_OAUTH",
- "benchmark_symphonies": [
- "string"
], - "benchmark_tickers": [
- "string"
]
}{- "last_semantic_update_at": "2019-08-24T14:15:22Z",
- "sparkgraph_url": "string",
- "dvm_capital": {
- "a_symphony_id": {
- "15121": 0.1234,
- "15122": 0.1235,
- "15123": 0.1312
}
}, - "tdvm_weights": {
- "SPY": {
- "19000": 0.123,
- "19001": 0.124
}
}, - "rebalance_days": [
- 0
], - "active_asset_nodes": {
- "property1": 0.1,
- "property2": 0.1
}, - "costs": {
- "reg_fee": 0.1,
- "taf_fee": 0.1,
- "slippage": 0.1,
- "spread_markup": 0.1,
- "subscription": 0.1
}, - "last_market_days_value": 0.1,
- "last_market_days_holdings": {
- "$USD": 0.3,
- "SPY": 1.5,
- "UPRO": 44.4
}, - "last_market_day": 0,
- "first_day": 0,
- "legend": {
- "property1": {
- "name": "string"
}, - "property2": {
- "name": "string"
}
}, - "data_warnings": {
- "SPY": [
- {
- "message": "Cannot compute 14-day RSI until Jun 1 2023",
- "recommended_start_date": "2023-06-01"
}
]
}, - "benchmark_errors": [
- "string"
], - "stats": {
- "calmar_ratio": 0.1,
- "cumulative_return": 0.1,
- "max": 0.1,
- "max_drawdown": 0.1,
- "mean": 0.1,
- "median": 0.1,
- "min": 0.1,
- "skewness": 0.1,
- "kurtosis": 0.1,
- "sharpe_ratio": 0.1,
- "sortino_ratio": 0.1,
- "size": 0,
- "standard_deviation": 0.1,
- "annualized_rate_of_return": 0.1,
- "annualized_turnover": 0.1,
- "trailing_one_day_return": 0.1,
- "trailing_one_week_return": 0.1,
- "trailing_two_week_return": 0.1,
- "trailing_one_month_return": 0.1,
- "trailing_three_month_return": 0.1,
- "trailing_one_year_return": 0.1,
- "top_one_day_contribution": 0.1,
- "top_five_percent_day_contribution": 0.1,
- "top_ten_percent_day_contribution": 0.1,
- "herfindahl_index": 0.1,
- "win_rate": 0.1,
- "tail_ratio": 0.1,
- "benchmarks": {
- "property1": {
- "calmar_ratio": 0.1,
- "cumulative_return": 0.1,
- "max": 0.1,
- "max_drawdown": 0.1,
- "mean": 0.1,
- "median": 0.1,
- "min": 0.1,
- "skewness": 0.1,
- "kurtosis": 0.1,
- "sharpe_ratio": 0.1,
- "sortino_ratio": 0.1,
- "size": 0,
- "standard_deviation": 0.1,
- "annualized_rate_of_return": 0.1,
- "annualized_turnover": 0.1,
- "trailing_one_day_return": 0.1,
- "trailing_one_week_return": 0.1,
- "trailing_two_week_return": 0.1,
- "trailing_one_month_return": 0.1,
- "trailing_three_month_return": 0.1,
- "trailing_one_year_return": 0.1,
- "top_one_day_contribution": 0.1,
- "top_five_percent_day_contribution": 0.1,
- "top_ten_percent_day_contribution": 0.1,
- "herfindahl_index": 0.1,
- "win_rate": 0.1,
- "tail_ratio": 0.1,
- "percent": {
- "alpha": 0.1,
- "beta": 0.1,
- "r_square": 0.1,
- "pearson_r": 0.1
}, - "log": {
- "alpha": 0.1,
- "beta": 0.1,
- "r_square": 0.1,
- "pearson_r": 0.1
}
}, - "property2": {
- "calmar_ratio": 0.1,
- "cumulative_return": 0.1,
- "max": 0.1,
- "max_drawdown": 0.1,
- "mean": 0.1,
- "median": 0.1,
- "min": 0.1,
- "skewness": 0.1,
- "kurtosis": 0.1,
- "sharpe_ratio": 0.1,
- "sortino_ratio": 0.1,
- "size": 0,
- "standard_deviation": 0.1,
- "annualized_rate_of_return": 0.1,
- "annualized_turnover": 0.1,
- "trailing_one_day_return": 0.1,
- "trailing_one_week_return": 0.1,
- "trailing_two_week_return": 0.1,
- "trailing_one_month_return": 0.1,
- "trailing_three_month_return": 0.1,
- "trailing_one_year_return": 0.1,
- "top_one_day_contribution": 0.1,
- "top_five_percent_day_contribution": 0.1,
- "top_ten_percent_day_contribution": 0.1,
- "herfindahl_index": 0.1,
- "win_rate": 0.1,
- "tail_ratio": 0.1,
- "percent": {
- "alpha": 0.1,
- "beta": 0.1,
- "r_square": 0.1,
- "pearson_r": 0.1
}, - "log": {
- "alpha": 0.1,
- "beta": 0.1,
- "r_square": 0.1,
- "pearson_r": 0.1
}
}
}
}
}| capital required | number <double> |
| abbreviate_days | integer <int64> |
| apply_reg_fee required | boolean |
| apply_taf_fee required | boolean |
| apply_subscription | string Enum: "none" "monthly" "yearly" |
| backtest_version | string Enum: "v1" "v2" |
| slippage_percent required | number <double> Despite the name this is not in %. 1% is indicated with 0.01, not 1.0. |
| spread_markup | number <double> 10bps would be 0.001 (0.1%) |
| start_date | string |
| end_date | string |
| broker required | string Default: "ALPACA_WHITE_LABEL" Enum: "ALPACA_OAUTH" "ALPACA_WHITE_LABEL" "APEX_LEGACY" "alpaca" "apex" |
| benchmark_symphonies | Array of strings |
| benchmark_tickers | Array of strings |
| sparkgraph_color | string |
required | object or object |
{- "capital": 0.1,
- "abbreviate_days": 0,
- "apply_reg_fee": true,
- "apply_taf_fee": true,
- "apply_subscription": "none",
- "backtest_version": "v1",
- "slippage_percent": 0.1,
- "spread_markup": 0.1,
- "start_date": "string",
- "end_date": "string",
- "broker": "ALPACA_OAUTH",
- "benchmark_symphonies": [
- "string"
], - "benchmark_tickers": [
- "string"
], - "sparkgraph_color": "string",
- "symphony": {
- "raw_value": {
- "id": "string",
- "suppress-incomplete-warnings?": true,
- "collapsed?": true,
- "collapsed-specified-weight?": true,
- "weight": {
- "num": "string",
- "den": "string"
}, - "step": "root",
- "name": "string",
- "description": "string",
- "rebalance": "none",
- "rebalance-corridor-width": 0.1,
- "children": [
- {
- "id": "string",
- "suppress-incomplete-warnings?": true,
- "collapsed?": true,
- "collapsed-specified-weight?": true,
- "weight": {
- "num": "string",
- "den": "string"
}, - "step": "if",
- "children": [
- null
]
}
]
}
}
}{- "last_semantic_update_at": "2019-08-24T14:15:22Z",
- "sparkgraph_url": "string",
- "dvm_capital": {
- "a_symphony_id": {
- "15121": 0.1234,
- "15122": 0.1235,
- "15123": 0.1312
}
}, - "tdvm_weights": {
- "SPY": {
- "19000": 0.123,
- "19001": 0.124
}
}, - "rebalance_days": [
- 0
], - "active_asset_nodes": {
- "property1": 0.1,
- "property2": 0.1
}, - "costs": {
- "reg_fee": 0.1,
- "taf_fee": 0.1,
- "slippage": 0.1,
- "spread_markup": 0.1,
- "subscription": 0.1
}, - "last_market_days_value": 0.1,
- "last_market_days_holdings": {
- "$USD": 0.3,
- "SPY": 1.5,
- "UPRO": 44.4
}, - "last_market_day": 0,
- "first_day": 0,
- "legend": {
- "property1": {
- "name": "string"
}, - "property2": {
- "name": "string"
}
}, - "data_warnings": {
- "SPY": [
- {
- "message": "Cannot compute 14-day RSI until Jun 1 2023",
- "recommended_start_date": "2023-06-01"
}
]
}, - "benchmark_errors": [
- "string"
], - "stats": {
- "calmar_ratio": 0.1,
- "cumulative_return": 0.1,
- "max": 0.1,
- "max_drawdown": 0.1,
- "mean": 0.1,
- "median": 0.1,
- "min": 0.1,
- "skewness": 0.1,
- "kurtosis": 0.1,
- "sharpe_ratio": 0.1,
- "sortino_ratio": 0.1,
- "size": 0,
- "standard_deviation": 0.1,
- "annualized_rate_of_return": 0.1,
- "annualized_turnover": 0.1,
- "trailing_one_day_return": 0.1,
- "trailing_one_week_return": 0.1,
- "trailing_two_week_return": 0.1,
- "trailing_one_month_return": 0.1,
- "trailing_three_month_return": 0.1,
- "trailing_one_year_return": 0.1,
- "top_one_day_contribution": 0.1,
- "top_five_percent_day_contribution": 0.1,
- "top_ten_percent_day_contribution": 0.1,
- "herfindahl_index": 0.1,
- "win_rate": 0.1,
- "tail_ratio": 0.1,
- "benchmarks": {
- "property1": {
- "calmar_ratio": 0.1,
- "cumulative_return": 0.1,
- "max": 0.1,
- "max_drawdown": 0.1,
- "mean": 0.1,
- "median": 0.1,
- "min": 0.1,
- "skewness": 0.1,
- "kurtosis": 0.1,
- "sharpe_ratio": 0.1,
- "sortino_ratio": 0.1,
- "size": 0,
- "standard_deviation": 0.1,
- "annualized_rate_of_return": 0.1,
- "annualized_turnover": 0.1,
- "trailing_one_day_return": 0.1,
- "trailing_one_week_return": 0.1,
- "trailing_two_week_return": 0.1,
- "trailing_one_month_return": 0.1,
- "trailing_three_month_return": 0.1,
- "trailing_one_year_return": 0.1,
- "top_one_day_contribution": 0.1,
- "top_five_percent_day_contribution": 0.1,
- "top_ten_percent_day_contribution": 0.1,
- "herfindahl_index": 0.1,
- "win_rate": 0.1,
- "tail_ratio": 0.1,
- "percent": {
- "alpha": 0.1,
- "beta": 0.1,
- "r_square": 0.1,
- "pearson_r": 0.1
}, - "log": {
- "alpha": 0.1,
- "beta": 0.1,
- "r_square": 0.1,
- "pearson_r": 0.1
}
}, - "property2": {
- "calmar_ratio": 0.1,
- "cumulative_return": 0.1,
- "max": 0.1,
- "max_drawdown": 0.1,
- "mean": 0.1,
- "median": 0.1,
- "min": 0.1,
- "skewness": 0.1,
- "kurtosis": 0.1,
- "sharpe_ratio": 0.1,
- "sortino_ratio": 0.1,
- "size": 0,
- "standard_deviation": 0.1,
- "annualized_rate_of_return": 0.1,
- "annualized_turnover": 0.1,
- "trailing_one_day_return": 0.1,
- "trailing_one_week_return": 0.1,
- "trailing_two_week_return": 0.1,
- "trailing_one_month_return": 0.1,
- "trailing_three_month_return": 0.1,
- "trailing_one_year_return": 0.1,
- "top_one_day_contribution": 0.1,
- "top_five_percent_day_contribution": 0.1,
- "top_ten_percent_day_contribution": 0.1,
- "herfindahl_index": 0.1,
- "win_rate": 0.1,
- "tail_ratio": 0.1,
- "percent": {
- "alpha": 0.1,
- "beta": 0.1,
- "r_square": 0.1,
- "pearson_r": 0.1
}, - "log": {
- "alpha": 0.1,
- "beta": 0.1,
- "r_square": 0.1,
- "pearson_r": 0.1
}
}
}
}
}Invest capital into Symphonies and manage active deployments including rebalancing and withdrawals
Returns trading hours for the current day and the next week. Includes regular market hours, extended hours, and holidays.
{- "market_hours": [
- {
- "is_market_open": true,
- "nyse_market_date": "2019-08-24",
- "market_open": "2019-08-24T14:15:22Z",
- "market_close": "2019-08-24T14:15:22Z"
}
]
}Add additional capital to a Symphony position. The investment will be queued and executed during the next rebalancing window.
| symphony-id required | string Unique identifier for the Symphony |
| account-id required | string <uuid> Unique identifier (UUID) of the account |
| amount required | number <double> Amount of cash to invest or withdraw (in USD) |
{- "amount": 0.1
}{- "deploy_id": "string",
- "deploy_time": "2019-08-24T14:15:22Z"
}Withdraw capital from a Symphony position. The withdrawal will be queued and executed during the next rebalancing window.
| symphony-id required | string Unique identifier for the Symphony |
| account-id required | string <uuid> Unique identifier (UUID) of the account |
| amount required | number <double> Amount of cash to invest or withdraw (in USD) |
{- "amount": 0.1
}{- "deploy_id": "string",
- "deploy_time": "2019-08-24T14:15:22Z"
}Toggle whether the Symphony should skip its next automated rebalancing cycle. Useful for temporarily pausing automated trading.
| symphony-id required | string Unique identifier for the Symphony |
| account-id required | string <uuid> Unique identifier (UUID) of the account |
| skip required | boolean |
{- "skip": true
}{ }| symphony-id required | string Unique identifier for the Symphony |
| account-id required | string <uuid> Unique identifier (UUID) of the account |
{- "deploy_id": "string",
- "deploy_time": "string",
- "deploy_on_market_open": true
}| symphony-id required | string Unique identifier for the Symphony |
| account-id required | string <uuid> Unique identifier (UUID) of the account |
| rebalance_request_uuid required | string <uuid> |
{- "rebalance_request_uuid": "fce8e2e8-23a5-4b70-b013-f38fba45fefc"
}{- "deploy_id": "string",
- "deploy_time": "string",
- "deploy_on_market_open": true,
- "symphony_id": "string"
}| symphony-id required | string Unique identifier for the Symphony |
| account-id required | string <uuid> Unique identifier (UUID) of the account |
{- "deploy_id": "string",
- "deploy_time": "string",
- "deploy_on_market_open": true
}| account_uuids | Array of strings <uuid> [ items <uuid > ] |
| send_segment_event required | boolean Default: false |
{- "account_uuids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "send_segment_event": false
}[- {
- "broker_account_uuid": "e0fd1a58-8918-407a-b82b-ee1a59091ebe",
- "account_type": "string",
- "account_name": "string",
- "broker": "string",
- "dry_run_result": {
- "property1": {
- "rebalanced": true,
- "next_rebalance_after": "string",
- "recommended_trades": [
- {
- "ticker": "string",
- "notional": 0.1,
- "quantity": 0.1,
- "prev_value": 0.1,
- "prev_weight": 0.1,
- "next_weight": 0.1
}
], - "queued_cash_change": 0.1,
- "symphony_value": 0.1,
- "symphony_name": "string",
- "next_rebalance_date": "string"
}, - "property2": {
- "rebalanced": true,
- "next_rebalance_after": "string",
- "recommended_trades": [
- {
- "ticker": "string",
- "notional": 0.1,
- "quantity": 0.1,
- "prev_value": 0.1,
- "prev_weight": 0.1,
- "next_weight": 0.1
}
], - "queued_cash_change": 0.1,
- "symphony_value": 0.1,
- "symphony_name": "string",
- "next_rebalance_date": "string"
}
}, - "dry_run_missing_symphonies": {
- "property1": "string",
- "property2": "string"
}, - "dry_run_total_symphonies": 0
}
]| symphony-id required | string Unique identifier for the Symphony |
| amount | number <double> |
| broker_account_uuid | string <uuid> |
{- "amount": 0.1,
- "broker_account_uuid": "e0fd1a58-8918-407a-b82b-ee1a59091ebe"
}{- "rebalanced": true,
- "next_rebalance_after": "string",
- "recommended_trades": [
- {
- "at": "string",
- "average_price": 0.1,
- "cash_change": 0.1,
- "share_change": 0.1,
- "symbol": "string",
- "name": "string",
- "side": "BUY",
- "type": "symphony_preview",
- "prev_value": 0.1,
- "prev_weight": 0.1,
- "next_weight": 0.1
}
], - "queued_cash_change": 0.1,
- "rebalance_frequency_override": true,
- "rebalance_request_uuid": "fce8e2e8-23a5-4b70-b013-f38fba45fefc",
- "adjusted_for_dtbp": true,
- "symphony_value": 0.1,
- "symphony_name": "string"
}Retrieve all order requests for a brokerage account. Returns both pending and completed orders with their current status.
| account-id required | string <uuid> Unique identifier (UUID) of the account |
| limit | integer <int64> |
| status | string Single status or comma-separated list of statuses (e.g., 'QUEUED,OPEN,IN_PROGRESS') |
{- "order_requests": [
- {
- "order_request_id": "e4e3aeab-60b5-47ed-a66d-af002ff85ee5",
- "name": "string",
- "position_id": "string",
- "status": "QUEUED",
- "client_order_ids": [
- "string"
], - "asset_class": "EQUITIES",
- "side": "BUY",
- "type": "MARKET",
- "symbol": "string",
- "time_in_force": "GTC",
- "notional": 0.1,
- "quantity": 0.1,
- "position_intent": "BUY_TO_OPEN",
- "limit_price": 0.1,
- "stop_price": 0.1,
- "options_details": {
- "underlying_asset_symbol": "string",
- "strike_price": 0.1,
- "expiry": "string",
- "contract_type": "PUT"
}, - "source": "USER_DIRECT_TRADE",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "outcome_reason": "string"
}
]
}Submit a new buy or sell order for equities or options. If the request is made outside of market hours, it will be queued and executed at the next market open.
| account-id required | string <uuid> Unique identifier (UUID) of the account |
| type required | string Enum: "MARKET" "LIMIT" "STOP" "STOP_LIMIT" "TRAILING_STOP" |
| symbol required | string |
| time_in_force required | string Enum: "GTC" "DAY" "IOC" "FOK" "OPG" "CLS" |
| notional | number or null <double> Required if quantity is not provided. |
| quantity | number or null <double> Required if notional is not provided. |
| position_intent | string Enum: "BUY_TO_OPEN" "SELL_TO_OPEN" "BUY_TO_CLOSE" "SELL_TO_CLOSE" Required if the symbol is an option contract. |
| limit_price | number or null <double> |
| stop_price | number or null <double> |
| client_order_id | string or null Optional client-generated order ID, for order tracking and idempotency. |
{- "type": "MARKET",
- "symbol": "string",
- "time_in_force": "GTC",
- "notional": 0.1,
- "quantity": 0.1,
- "position_intent": "BUY_TO_OPEN",
- "limit_price": 0.1,
- "stop_price": 0.1,
- "client_order_id": "string"
}{- "order_request_id": "e4e3aeab-60b5-47ed-a66d-af002ff85ee5",
- "order_time": "2019-08-24T14:15:22Z",
- "commission": 0
}| where | Array of any |
| order_by | Array of strings[ items ] |
| offset required | integer <int64> Default: 0 |
{- "where": [
- null
], - "order_by": [
- [
- "string"
]
], - "offset": 0
}[- {
- "symphony_sid": "string",
- "name": "string",
- "description": "string",
- "asset_classes": [
- "EQUITIES"
], - "rebalance_frequency": "string",
- "rebalance_corridor_width": 0.1,
- "sparkgraph_gcs_url": "string",
- "color": "string",
- "num_node_asset": 0,
- "num_node_filter": 0,
- "num_node_group": 0,
- "num_node_if": 0,
- "num_node_if_child": 0,
- "num_node_wt_cash_equal": 0,
- "num_node_wt_cash_specified": 0,
- "num_node_wt_inverse_vol": 0,
- "oos_annualized_rate_of_return": 0.1,
- "oos_annualized_turnover": 0.1,
- "oos_btcusd_alpha": 0.1,
- "oos_btcusd_annualized_rate_of_return": 0.1,
- "oos_btcusd_beta": 0.1,
- "oos_btcusd_calmar_ratio": 0.1,
- "oos_btcusd_cumulative_return": 0.1,
- "oos_btcusd_max_drawdown": 0.1,
- "oos_btcusd_pearson_r": 0.1,
- "oos_btcusd_r_square": 0.1,
- "oos_btcusd_sharpe_ratio": 0.1,
- "oos_btcusd_standard_deviation": 0.1,
- "oos_btcusd_trailing_one_month_return": 0.1,
- "oos_btcusd_trailing_one_year_return": 0.1,
- "oos_btcusd_trailing_three_month_return": 0.1,
- "oos_calmar_ratio": 0.1,
- "oos_cumulative_return": 0.1,
- "oos_herfindahl_index": 0.1,
- "oos_kurtosis": 0.1,
- "oos_max_drawdown": 0.1,
- "oos_num_backtest_days": 0,
- "oos_sharpe_ratio": 0.1,
- "oos_skewness": 0.1,
- "oos_sortino_ratio": 0.1,
- "oos_spy_alpha": 0.1,
- "oos_spy_annualized_rate_of_return": 0.1,
- "oos_spy_beta": 0.1,
- "oos_spy_calmar_ratio": 0.1,
- "oos_spy_cumulative_return": 0.1,
- "oos_spy_max_drawdown": 0.1,
- "oos_spy_pearson_r": 0.1,
- "oos_spy_r_square": 0.1,
- "oos_spy_sharpe_ratio": 0.1,
- "oos_spy_standard_deviation": 0.1,
- "oos_spy_trailing_one_month_return": 0.1,
- "oos_spy_trailing_one_year_return": 0.1,
- "oos_spy_trailing_three_month_return": 0.1,
- "oos_standard_deviation": 0.1,
- "oos_tail_ratio": 0.1,
- "oos_top_five_percent_day_contribution": 0.1,
- "oos_top_one_day_contribution": 0.1,
- "oos_top_ten_percent_day_contribution": 0.1,
- "oos_trailing_one_day_return": 0.1,
- "oos_trailing_one_month_return": 0.1,
- "oos_trailing_one_week_return": 0.1,
- "oos_trailing_one_year_return": 0.1,
- "oos_trailing_three_month_return": 0.1,
- "oos_trailing_two_week_return": 0.1,
- "oos_win_rate": 0.1,
- "ai_description": {
- "summary": "string",
- "categories": "string",
- "how_it_works": "string",
- "value_proposition": "string"
}
}
]