Markets and Strikes
ForecastEx forecast contracts are modeled as options or futures options, depending on the event they resolve against.
Because they are derivative products, they are always listed against an underlier. Presently forecast contract underliers are either an index or futures contract. The underliers will have their own contract IDs separate from the contract IDs of the forecast contracts.
These underlier contract IDs can be used to retrieve relevant historical data sets for the underlying event, where available. For example, the GT (Global Temperature) contracts are listed against a GT index, and the index data set is historical global temperature data sourced from NOAA.
In all cases, a Market has a symbol, mirroring options. Examples: FF, HORC, USIP
Forecast contracts, like options, have a strike and expiration. Strike value need not be numeric; for instance, for election-related contracts it will be a candidate’s name. The strikeLabel field in the /contracts response delivers these strings.
All contracts have a true expiration which is the resolution time mentioned above after which the contract is considered resolved and it ceases to exist.
A fully specified question, including the strike value and measured period, is referred to as a “strike” – similar to a specific strike row in a two-sided option chain table.
Each such strike has two contracts associated with it: YES and NO.
IBKR assigns a separate contract ID to both the YES and NO contracts of a given strike.
Following from the options model: YES is a Call, and NO is a Put.
For each contract:
- The long (and canonical) form of this question is delivered in the longDescription field.
- A shortened options-style form is delivered in the shortDescription field.
Note that YES and NO contracts each have their own bid/ask/last data.
Provides all contracts for given underlyin market
GET /forecast/contract/market
Request Object
Query Params
underlyingConid: Integer
name of contract’s market
exchange: String
Python
Abap
Response Object
market_name: String
Name of contract’s market
exchange: String
Exchange that was passed in request
symbol: String
Market symbol
logo_category: String
exclude_historical_data: Bool
payout: Double
contracts: List
conid: Integer
Market contract identifier
side: String
Y or N, yes or no contract
expiration: String
Contract expiration date in YYYYMMDD format
strike: Double
Contract strike
strike_label: String
expiry_label: String
underlying_conidInteger
Underlying asset of the contract

