Programmatic access to Parity's outcome modeling engine.
The Parity API provides programmatic access to Parity's outcome modeling engine. Use it to model collars, buffers, and covered calls for supported stocks and ETFs.
https://outcomes.parityoutcomes.comv1
POST /v1/outcomes - Model Collar, Buffer, and Covered Call outcomes for one security, one horizon, and one downside target
POST /v1/frontier - Explore the efficient protection/upside frontier for one security, strategy, and horizon
POST /v1/horizons - Model one strategy and downside objective across multiple time horizons for one security
POST /v1/screen - Model one strategy and downside objective across up to 10 securities
GET /v1/securities - Retrieve the current list of securities supported by Parity
GET /v1/usage - Retrieve API usage
GET /v1/health - Lightweight API health check
Make your first request to model approximately one-year outcomes for SPY using a 10% downside target:
curl -X POST "https://outcomes.parityoutcomes.com/v1/outcomes" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"symbol": "SPY",
"days": 365,
"downside_target_pct": 10
}'This request asks Parity to model approximately one-year outcomes for SPY using a 10% downside target.
{
"api_version": "v1",
"symbol": "SPY",
"unit": { "shares": 100 },
"request": { "days": 365, "downside_target_pct": 10 },
"market": { "underlying_price": 521.34 },
"expiration": { "date": "2027-08-19", "days_to_expiration": 365 },
"expected_dividends": { "per_share": 4.12, "per_unit_dollars": 412.00 },
"strategies": {
"collar": {
"status": "available",
"strategy": "collar",
"protection_type": "maximum_loss_floor",
"summary": { "estimated_max_loss_pct": 10.0, "estimated_upside_cap_pct": 12.5 }
},
"buffer": { "status": "available", "strategy": "buffer", "..." : "..." },
"covered_call": { "status": "available", "strategy": "covered_call", "..." : "..." }
},
"meta": { "generated_at": "2026-08-11T18:23:00Z" }
}The full response contains detailed strategy structures, trade legs, and pricing. See the Response section for the complete contract.
GET /v1/securitiesPOST /v1/frontierPOST /v1/horizonsPOST /v1/screenEvery protected Parity API request requires an API key using Bearer authentication.
Authorization: Bearer par_live_...API keys can be created from Dashboard - API Access (Settings - API Access).
Security callout
Treat API keys like passwords. Never expose a Parity API key in client-side JavaScript, mobile application bundles, public repositories, browser URLs, or logs.
User's application
|
v
Customer's backend/server
|
v
Parity APINot recommended:
User's browser
|
v
Parity API (secret embedded in JavaScript)Keys should generally be stored in environment variables or a secrets manager.
Use GET /v1/securities to retrieve Parity's current supported-security universe before submitting symbols to a modeling endpoint. This endpoint returns availability metadata only. It does not model an outcome.
Parity exposes four modeling endpoints. Each answers a different question about protection outcomes. They are not redundant — choose the one that matches what you want to compare.
POST /v1/outcomesQuestion: What outcomes are available for this investment?
POST /v1/frontierQuestion: How much upside changes as I change protection?
POST /v1/horizonsQuestion: How does the outcome change as I change time?
POST /v1/screenQuestion: How does the same objective compare across the investments I care about?
All four endpoints return the same complete strategy contract — option legs, per-leg quotes, package pricing, and executable / midpoint modeled outcomes.
Returns the current list of securities supported by Parity's options-data universe.
Parity refreshes this universe daily from current option contracts and serves the saved snapshot. Calling this endpoint does not open a new live market-data session.
| Field | Type | Description |
|---|---|---|
| Method | GET | HTTP method |
| Path | /v1/securities | Endpoint path |
| Content-Type | application/json | Response body format |
| Authentication | Required | Bearer token API key |
This endpoint does not accept a request body.
curl "https://outcomes.parityoutcomes.com/v1/securities" \
-H "Authorization: Bearer YOUR_API_KEY"{
"symbols": [
"AAPL",
"MSFT",
"NVDA",
"QQQ",
"SPY",
"TSLA"
],
"count": 5932,
"newly_supported": [],
"newly_supported_count": 0,
"market_date": "2026-08-21",
"as_of": "2026-08-24T02:26:20.285348+00:00",
"stale": false
}The symbols array is abbreviated. The production response includes the complete current universe.
| Field | Type | Description |
|---|---|---|
| symbols | array of strings | Alphabetically ordered ticker symbols in the current supported-security snapshot |
| count | integer | Number of ticker symbols returned in symbols |
| newly_supported | array of strings | Current symbols recently detected as newly supported by Parity |
| newly_supported_count | integer | Number of ticker symbols returned in newly_supported |
| market_date | string | Completed market date used to build the snapshot, formatted as YYYY-MM-DD |
| as_of | string | Timestamp when the saved snapshot was refreshed |
| stale | boolean | True when the saved snapshot is more than 48 hours old; otherwise false |
A symbol appearing in symbols means current option contracts were present when Parity built the saved market snapshot. It does not guarantee that every strategy, investment horizon, downside target, or pricing mode will produce an eligible modeled outcome.
Use the relevant modeling endpoint to determine whether an eligible collar, buffer, or covered call is available for a specific request.
Use /v1/securities to populate a supported ticker selector, validate a ticker before submitting a modeling request, monitor changes to Parity's supported universe, or identify recently supported securities.
Models Parity's supported outcome structures for one underlying security, investment horizon, and downside target.
| Field | Type | Description |
|---|---|---|
| Method | POST | HTTP method |
| Path | /v1/outcomes | Endpoint path |
| Content-Type | application/json | Request body format |
| Authentication | Required | Bearer token API key |
| Field | Type | Description |
|---|---|---|
| symbol | string (required) | Stock or ETF ticker symbol. Example: SPY |
| days | integer (required) | Target investment horizon in days. Parity selects an available option expiration around the requested horizon. Example: 365 |
| downside_target_pct | number (required) | Requested downside target expressed as a percentage, not a decimal. Example: 10 |
Important: Use 10, not 0.10
Use 10 to represent 10%. Do not use 0.10 unless the backend contract changes.
Market availability and discrete option strikes mean actual modeled outcomes may differ from the exact requested target.
Explore the efficient outcome frontier for one security, strategy, and investment horizon.
The Frontier endpoint evaluates a range of target outcomes for a selected strategy and returns the distinct, non-dominated structures available across that range.
collarbuffercovered_callEach returned frontier point includes the modeled outcome, option structure, complete trade ticket, bid/mid/ask quotes, midpoint and executable package pricing, and marginal tradeoff information.
| Field | Type | Description |
|---|---|---|
| Method | POST | HTTP method |
| Path | /v1/frontier | Endpoint path |
| Content-Type | application/json | Request body format |
| Authentication | Required | Bearer token API key |
| Field | Type | Description |
|---|---|---|
| symbol | string, required | Stock or ETF ticker symbol. Example: SPY |
| strategy | string, required | One of collar, buffer, or covered_call |
| days | integer | Target investment horizon in days. Default: 365. Allowed range: 30-750 |
| min_target_pct | number | Lowest target percentage to evaluate. Default: 5. Minimum: 1 |
| max_target_pct | number | Highest target percentage to evaluate. Default: 30. Maximum: 30 |
| step_pct | number | Spacing between requested targets. Default: 5. Minimum: 1 |
Important: Use percentage points, not decimals
Percentage inputs use percentage points, not decimals. Use 10, not 0.10, to represent 10%.
The meaning of the target depends on the selected strategy:
| Strategy | Target Metric | Frontier Metric | Upside Metric |
|---|---|---|---|
| collar | Maximum-loss target | Actual executable max loss | Executable upside cap |
| buffer | First-loss buffer target | Actual executable effective buffer | Executable upside cap |
| covered_call | Downside-cushion target | Actual executable downside cushion | Executable upside cap |
Market availability and discrete option strikes mean the actual modeled frontier metric may differ from the exact requested target.
curl -X POST "https://outcomes.parityoutcomes.com/v1/frontier" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"symbol": "SPY",
"strategy": "buffer",
"days": 365,
"min_target_pct": 5,
"max_target_pct": 15,
"step_pct": 1
}'This asks Parity to evaluate SPY buffer outcomes from a 5% through 15% target in 1% increments.
Parity evaluates each requested target using the same underlying market-data snapshot.
The endpoint then:
Efficient-frontier construction and dominance comparisons use executable modeled economics as the primary basis. Every frontier point returns both outcomes.executable and outcomes.midpoint, plus both executable and midpoint package pricing.
Because listed option strikes are discrete, the number of returned frontier points may be lower than the number of targets evaluated.
For example, a request evaluating 26 target values may return only 11 distinct efficient structures.
The top-level response includes:
| Field | Type | Description |
|---|---|---|
| api_version | string | Current API version |
| symbol | string | Normalized ticker symbol |
| strategy | string | Requested strategy |
| frontier_definition | object | Identifies the target, frontier, and upside metrics used for the selected strategy |
| unit | object | Current modeling unit, currently 100 shares |
| request | object | Echoes horizon, target range, step size, and targets evaluated |
| market | object | Underlying price and market-data timestamps |
| expiration | object | Selected option expiration and actual days to expiration |
| expected_dividends | object | Expected dividends included in modeled outcomes |
| frontier | array | Array of distinct efficient strategy points |
| meta | object | Strategy, pricing modes, point count, and generation timestamp |
{
"api_version": "v1",
"symbol": "SPY",
"strategy": "buffer",
"frontier_definition": {
"target_metric": "first_loss_buffer_pct",
"frontier_metric": "effective_buffer_pct",
"upside_metric": "upside_cap_pct"
},
"unit": {
"shares": 100
},
"request": {
"days": 365,
"min_target_pct": 5,
"max_target_pct": 15,
"step_pct": 5,
"targets_evaluated_pct": [
5,
10,
15
]
},
"market": {
"underlying_price": 772.51
},
"expiration": {
"date": "2027-09-17"
},
"frontier": [
{
"status": "available",
"strategy": "buffer",
"target": {
"downside_target_pct": 5
},
"summary": {
"estimated_buffer_pct": 6.06,
"estimated_upside_cap_pct": 20.62
},
"structure": {
"long_put_strike": "...",
"short_put_strike": "...",
"short_call_strike": "..."
},
"trade": {
"legs": [
"... three option legs ..."
],
"package_pricing": {
"midpoint": {
"effect": "DEBIT",
"total_dollars": "..."
},
"executable": {
"effect": "DEBIT",
"total_dollars": "..."
}
}
},
"outcomes": {
"executable": {
"effective_buffer_pct": 6.06,
"upside_cap_pct": 20.62
}
},
"marginal_tradeoff": null
}
],
"meta": {
"strategy": "buffer",
"quote_visibility": "full",
"pricing_modes": [
"executable",
"midpoint"
],
"frontier_point_count": 3
}
}The example is abbreviated. Live responses include the full trade ticket, actual bid/mid/ask quotes, quote timestamps, package pricing, and complete modeled outcome fields.
Every frontier point uses the same detailed strategy contract already documented under /v1/outcomes.
Collar returns:
Buffer returns:
Covered Call returns:
For every collar frontier point, both outcomes.midpoint and outcomes.executable include:
annualized_downside_pct — the modeled maximum loss annualized to a one-year basis.annualized_cap_pct — the modeled upside cap annualized to a one-year basis.Annualizing lets you compare collar outcomes modeled across different horizons on an apples-to-apples basis. The non-annualized upside cap and frontier metric remain available on each point.
Frontier points after the first may include:
{
"marginal_tradeoff": {
"additional_frontier_pct": 4.54,
"upside_cap_change_pct": -4.52,
"upside_cap_change_per_frontier_pct": -1.00
}
}additional_frontier_pct is the change in the selected strategy's actual frontier metric relative to the previous efficient point.upside_cap_change_pct is the resulting change in upside cap.upside_cap_change_per_frontier_pct measures the change in upside cap for each additional percentage point of the frontier metric.Interpretation depends on strategy:
This is a derived comparison between adjacent modeled outcomes, not a forecast of future investment performance.
Compare how the same protection objective changes across different investment horizons.
Parity fetches the market data for the selected security and models the requested strategy across multiple target horizons. Each available horizon returns the complete option structure and modeled outcome.
collarbuffercovered_call| Field | Type | Description |
|---|---|---|
| Method | POST | HTTP method |
| Path | /v1/horizons | Endpoint path |
| Content-Type | application/json | Request body format |
| Authentication | Required | Bearer token API key |
| Field | Type | Description |
|---|---|---|
| symbol | string, required | Stock or ETF ticker symbol. Example: SPY |
| strategy | string, required | One of collar, buffer, or covered_call |
| downside_target_pct | number, required | Requested downside target in percentage points, not decimals. Use 10 to represent 10%. |
| days | array of integers, optional | Requested investment horizons in days. |
Important: Use percentage points, not decimals
Use 10, not 0.10, to represent 10%.
307506If days is omitted, Parity currently evaluates:
90180270365540730Target horizons vs. actual expirations
These are target horizons. Listed option expirations occur on discrete dates, so the returned days_to_expiration may differ from requested_days. Not every requested horizon is guaranteed to be available.
curl -X POST "https://outcomes.parityoutcomes.com/v1/horizons" \
-H "Authorization: Bearer $PARITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"symbol": "SPY",
"strategy": "collar",
"downside_target_pct": 10,
"days": [90, 180, 365]
}'Top-level fields include:
| Field | Type | Description |
|---|---|---|
| api_version | string | Current API version |
| symbol | string | Normalized ticker symbol |
| strategy | string | Requested strategy |
| unit | object | Current modeling unit, currently 100 shares |
| request | object | Echoes the requested downside target and horizons |
| market | object | Underlying price and market-data timestamps |
| horizons | array | Array of modeled outcomes, one per requested horizon |
| meta | object | Generation metadata |
Each horizons[] item includes:
| Field | Type | Description |
|---|---|---|
| requested_days | integer | The horizon requested for this item |
| status | string | Availability of a structure for this horizon |
| expiration | object | Selected option expiration and actual days to expiration |
| expected_dividends | object | Expected dividends included in the modeled outcome |
| outcome | object | Complete public strategy contract for this horizon |
For an available horizon, outcome uses the same complete public strategy contract used elsewhere in the Parity API, including:
status, strategy, protection_type, target, summary, structure, trade, outcomestrade includes expiration, legs, per-leg bid / mid / ask quotes, quote timestamp, package_pricing.executable, and package_pricing.midpoint.
outcomes includes executable and midpoint.
{
"symbol": "SPY",
"strategy": "collar",
"request": {
"downside_target_pct": 10,
"days": [90, 180, 365]
},
"horizons": [
{
"requested_days": 90,
"status": "available",
"expiration": {
"date": "2026-11-20",
"days_to_expiration": 98
},
"outcome": {
"summary": {
"estimated_max_loss_pct": 9.4949,
"estimated_upside_cap_pct": 8.4312
},
"trade": {
"...": "complete trade ticket"
},
"outcomes": {
"midpoint": {
"...": "..."
},
"executable": {
"...": "..."
}
}
}
}
]
}The example is abbreviated and shows a single horizon. Live responses include the full trade ticket, actual bid/mid/ask quotes, and complete modeled outcome fields for every available horizon.
/v1/horizons is useful when the security and protection objective are known, but you want to compare how extending or shortening the protection period changes the available outcome.
Example question: "How does a roughly 10% maximum-loss SPY collar change at 3 months, 6 months, and 1 year?"
Model the same outcome objective across multiple securities in one request.
The endpoint accepts up to 10 ticker symbols, one strategy, one target horizon, and one downside target. Parity returns the complete implementable modeled outcome for every security where an eligible structure is available.
collarbuffercovered_call| Field | Type | Description |
|---|---|---|
| Method | POST | HTTP method |
| Path | /v1/screen | Endpoint path |
| Content-Type | application/json | Request body format |
| Authentication | Required | Bearer token API key |
| Field | Type | Description |
|---|---|---|
| symbols | array of strings, required | Ticker symbols. Minimum: 1. Maximum: 10. Duplicates are not allowed. Symbols are normalized to uppercase. |
| strategy | string, required | One of collar, buffer, or covered_call |
| days | integer | Target investment horizon in days. Default: 365. Allowed range: 30-750. |
| downside_target_pct | number, required | Requested downside target in percentage points, not decimals. Use 10 to represent 10%. |
Important: Use percentage points, not decimals
Use 10, not 0.10, to represent 10%.
Results preserve the submitted security order in v1.
curl -X POST "https://outcomes.parityoutcomes.com/v1/screen" \
-H "Authorization: Bearer $PARITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"symbols": ["SPY", "QQQ", "NVDA"],
"strategy": "collar",
"days": 365,
"downside_target_pct": 10
}'| Field | Type | Description |
|---|---|---|
| api_version | string | Current API version |
| strategy | string | Requested strategy |
| unit | object | Current modeling unit, currently 100 shares |
| request | object | Echoes the submitted symbols, horizon, and downside target |
| results | array | Successful modeled outcomes, one per available security |
| unavailable | array | Securities where no eligible structure was available |
| meta | object | Counts of symbols requested, results available, and results unavailable |
Each successful results[] item includes:
| Field | Type | Description |
|---|---|---|
| symbol | string | Normalized ticker symbol |
| status | string | Availability of a structure for this security |
| market | object | Underlying price and market-data timestamps |
| expiration | object | Selected option expiration and actual days to expiration |
| expected_dividends | object | Expected dividends included in the modeled outcome |
| outcome | object | Complete public strategy contract, the same contract used by /v1/outcomes |
Not just a summary screener
/v1/screen is not a lightweight summary. Every successful security includes the information required to understand the modeled trade.
Each successful security includes:
{
"api_version": "v1",
"strategy": "collar",
"request": {
"symbols": ["SPY", "QQQ", "NVDA"],
"days": 365,
"downside_target_pct": 10
},
"results": [
{
"symbol": "SPY",
"status": "available",
"market": {
"underlying_price": 777.69
},
"expiration": {
"date": "2027-09-17",
"days_to_expiration": 399
},
"outcome": {
"summary": {
"estimated_max_loss_pct": 9.8538,
"estimated_upside_cap_pct": 13.8917
},
"structure": {
"long_put_strike": 695,
"short_call_strike": 880
},
"trade": {
"...": "complete trade ticket"
},
"outcomes": {
"midpoint": {
"...": "..."
},
"executable": {
"...": "..."
}
}
}
}
],
"unavailable": [],
"meta": {
"symbols_requested": 3,
"results_available": 3,
"results_unavailable": 0
}
}The example is abbreviated and shows a single result. Live responses include the full trade ticket, actual bid/mid/ask quotes, and complete modeled outcome fields for every available security.
A failure or unavailable structure for one security does not invalidate successful results for other submitted securities. Unavailable securities are returned separately in the unavailable array.
Example question: "Compare the available one-year collars for SPY, QQQ, NVDA, AAPL, and MSFT using approximately a 10% maximum-loss target."
/v1/screen models the securities you submit. It does not scan the full market and does not return recommendations.
The POST /v1/outcomes response contains the following top-level fields:
| Field | Type | Description |
|---|---|---|
| api_version | string | Current API version (e.g. "v1") |
| symbol | string | Normalized underlying ticker |
| unit | object | Current modeling unit. The API currently returns { shares: 100 }. Option structures are represented for a 100-share unit. |
| request | object | Echoes the requested horizon/downside target |
| market | object | Current/reference underlying market information used for modeling. Known fields: underlying_price, underlying_timestamp, market_data_as_of |
| expiration | object | Includes date and days_to_expiration. Actual days may differ from requested days because listed options expire on discrete dates. |
| expected_dividends | object | Includes per_share and per_unit_dollars. Expected dividends incorporated into the modeled outcome calculations. |
| strategies | object | Contains the modeled strategy results: collar, buffer, covered_call |
| meta | object | Includes metadata such as quote_visibility and generated_at |
The strategies object contains three modeled strategy results. Each strategy includes status, strategy, protection_type, target, summary, structure, trade, and outcomes.
strategy: collar
protection_type: maximum_loss_floor
Summary fields: estimated_max_loss_pct, estimated_upside_cap_pct, expected_dividends_dollars
Structure fields: long_put_strike, short_call_strike
Trade: expiration, legs (each leg: leg_id, action, quantity, symbol, option_type, expiration, strike, quote with bid/mid/ask/timestamp), package_pricing with midpoint + executable (each: effect, per_share, total_dollars, signed_total_dollars)
Outcomes (executable): max_loss_pct, upside_cap_pct, investment_required_dollars
Outcomes (midpoint): max_loss_pct, max_loss_dollars, upside_cap_pct, max_gain_dollars, investment_required_dollars
strategy: buffer
protection_type: first_loss_buffer
Summary fields: estimated_buffer_pct, estimated_upside_cap_pct, expected_dividends_dollars
Structure fields: long_put_strike, short_put_strike, short_call_strike, put_spread_width, protected_start_pct, protected_end_pct
Trade: three option legs - long put, short put, short call
Outcomes: effective_buffer_pct, effective_buffer_dollars, upside_cap_pct, protected_start_pct, protected_end_pct
protected_start_pct identifies approximately where the protected range begins relative to the current underlying price. protected_end_pct identifies approximately where that protected range ends.
strategy: covered_call
protection_type: income_cushion_no_floor
A covered call does not provide a defined floor against large losses.
Summary fields: estimated_downside_cushion_pct, estimated_upside_cap_pct, expected_dividends_dollars
Structure: short_call_strike
Trade: the short call
Outcomes: downside_cushion_pct, option_income_dollars, expected_dividends_dollars, total_income_dollars, upside_cap_pct, breakeven_pct
The downside cushion comes from modeled option income plus expected dividends and is not the same thing as guaranteed principal protection.
Executable is Parity's primary pricing basis. The complete response includes outcomes.executable and outcomes.midpoint. Use outcomes.executable for the conservative estimate that reflects buy-at-ask / sell-at-bid economics.
Executable is the primary basis
primary_pricing_mode is "executable". Midpoint is provided as a secondary comparison only.
Executable reflects Parity's conservative buy-at-ask / sell-at-bid estimate and does not imply a guaranteed fill. Midpoint reflects pricing based around option bid/ask midpoints and may not be achievable.
This applies consistently to /v1/outcomes, /v1/frontier, /v1/horizons, and /v1/screen.
New API keys currently include 1,000 requests per calendar month. The account/key's returned limit is authoritative.
curl "https://outcomes.parityoutcomes.com/v1/usage" \
-H "Authorization: Bearer YOUR_API_KEY"{
"hourly_used": 1,
"hourly_limit": null,
"hourly_remaining": null,
"monthly_used": 24,
"monthly_limit": 1000,
"monthly_remaining": 976
}A null hourly_limit means no hourly cap is currently configured for that key. Do not translate null into 0.
When a configured limit is reached, the API returns HTTP 429.
Requests to GET /v1/securities count toward the same API-key usage limits as the modeling endpoints.
| Status | Name | Examples |
|---|---|---|
| 401 | Unauthorized | Missing API key. Invalid authorization format. Invalid API key. Invalid or revoked API key. |
| 403 | Forbidden | Public API access requires an API Access plan. |
| 429 | Too Many Requests | Hourly API request limit exceeded. Monthly API request limit exceeded. |
| 400 | Bad Request | Used when request inputs or modeling parameters are invalid. |
| 500 | Internal Server Error | Unable to generate Parity outcomes or frontier. Clients should not treat a 500 as a successful model result. |
| 503 | Service Unavailable | The supported-security snapshot is temporarily unavailable. |
Do not share one secret across every system.
Do not put API keys into browser-side fetch examples. JavaScript examples are explicitly Node/server-side.
curl -X POST "https://outcomes.parityoutcomes.com/v1/outcomes" \
-H "Authorization: Bearer $PARITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"symbol": "SPY",
"days": 365,
"downside_target_pct": 10
}'Use /v1/frontier to explore the tradeoff frontier for collars, buffers, and covered calls across a range of protection or income targets.
import os
import requests
API_KEY = os.environ["PARITY_API_KEY"]
response = requests.post(
"https://outcomes.parityoutcomes.com/v1/frontier",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
},
json={
"symbol": "SPY",
"strategy": "collar",
"days": 365,
"min_target_pct": 5,
"max_target_pct": 20,
"step_pct": 1,
},
timeout=60,
)
response.raise_for_status()
data = response.json()
for point in data["frontier"]:
executable = point["outcomes"]["executable"]
print(
executable["max_loss_pct"],
executable["upside_cap_pct"],
)Because Frontier returns complete trade tickets for every efficient point, the same response can be used to build charts, screen outcome tradeoffs, compare midpoint and executable pricing, inspect option quotes, or generate downstream trade instructions.
import os
import requests
API_KEY = os.environ["PARITY_API_KEY"]
response = requests.get(
"https://outcomes.parityoutcomes.com/v1/securities",
headers={
"Authorization": f"Bearer {API_KEY}",
},
timeout=60,
)
response.raise_for_status()
data = response.json()
print("Supported securities:", data["count"])
print("Recently supported:", data["newly_supported"])
print("Market date:", data["market_date"])
print("Snapshot stale:", data["stale"])Parity API responses are modeled estimates based on available market data and assumptions at the time of generation. Quotes, option availability, dividends, and modeled outcomes may change. Parity API modeling endpoints model outcomes only. They do not execute trades.