跳转到内容

ForecastEx 预测合约

ForecastEx 预测合约在 TWS API 里按期权类合约处理,常见字段是 secType="OPT"exchange="FORECASTX"currency="USD"。它的业务含义是事件结果,而不是传统股票或指数期权,所以 symbol、到期日、本地代码、行权价和方向都要以具体事件合约为准。

from ibapi.contract import Contract
def forecastex_contract():
contract = Contract()
contract.symbol = "GCE" # Global Carbon Dioxide Emissions 示例
contract.secType = "OPT" # ForecastEx 合约按期权类合约请求
contract.exchange = "FORECASTX" # ForecastEx 交易所代码
contract.currency = "USD" # 美元计价
contract.lastTradeDateOrContractMonth = "20251231"
contract.strike = 40500
contract.right = "C" # C 对应该 ForecastEx 示例里的 YES 方向
return contract

上面是 ForecastEx 合约结构示例。实际开发时仍应先用 reqContractDetails() 确认,因为事件合约会随到期日、事件主题和产品状态变化。

字段中文含义写法说明
symbol事件主题代码例如 GCE
secType证券类型ForecastEx 常见为 OPT
exchange交易所ForecastEx 使用 FORECASTX
currency币种常见为 USD
lastTradeDateOrContractMonth到期日或合约月份示例为 20251231
strike事件阈值或价格刻度示例为 40500
right结果方向示例中 C 对应 YESP 常对应相反方向。
localSymbol本地合约代码如果拿得到,它通常比宽泛 symbol 更精确。
conIdIBKR 合约 ID最精确,适合在合约已确认后保存使用。
app.reqContractDetails(1001, forecastex_contract())

如果请求成功,结果会进入 contractDetails() 回调;如果没有找到合约,通常进入 error() 回调并返回错误码 200

def contractDetails(self, reqId, contractDetails):
contract = contractDetails.contract
print(contract.conId, contract.localSymbol, contract.tradingClass)
def error(self, reqId, errorTime, errorCode, errorString, advancedOrderRejectJson=""):
print(reqId, errorCode, errorString)

TWS 模拟账户中,GCE ForecastEx 合约详情请求成功:

REQ_SENT=FORECAST_GCE_FULL;reqId=95191;symbol=GCE;secType=OPT;exchange=FORECASTX;expiry=20251231;strike=40500;right=C
DETAIL_END_FORECAST_GCE_FULL=True
DETAIL_ROWS_FORECAST_GCE_FULL=1
DETAIL=reqId=95191;conId=753279929;symbol=GCE;secType=OPT;exchange=FORECASTX;localSymbol=GCE_1225_40500_YES;tradingClass=GCE;lastTradeDateOrContractMonth=20251231;strike=40500.0;right=C;multiplier=1;longName=Global Carbon Dioxide Emissions

宽泛请求 GCE/OPT/FORECASTX 会返回更多候选:

DETAIL_ROWS_FORECAST_GCE_BROAD=150

所以搜索或宽泛查询适合发现合约,交易代码应使用已经筛选并确认过的具体合约字段。

先保存 conIdlocalSymbol,再保存中文业务解释。策略代码里不要只保存“美国大选”这类自然语言名称,因为 TWS API 识别的是合约字段,不识别业务描述。

ForecastEx 预测合约下单规则和普通期权不同。开发文档应优先使用限价单,并确认目标合约的买卖方向、到期日和事件结果含义。