期权回测配置
回测插件支持对以下类型的期权数据进行回测:快照、分钟频、日频。
引擎配置说明
可通过 createBacktester 或 createBacktestEngine
创建回测引擎,其参数 config 用于配置引擎参数。config 是一个字典,其支持的键值对可参考下表:
| 键 | 值类型 | 必填 | 说明 |
|---|---|---|---|
| "startDate" | DATE | 是 | 回测开始的日期,例如 2020.01.01。 |
| "endDate" | DATE | 是 | 回测结束的日期,例如 2020.06.01。 |
| "strategyGroup" | STRING | 是 | 策略类型,期权回测固定填 "option"。 |
| "cash" | DOUBLE | 是 | 初始资金。 |
| "dataType" | INT | 是 | 行情类型,可选值如下:
|
| "frequency" | INT | 否 | 快照数据合成 K 线的频率,默认为 0,单位为毫秒。
|
| "msgAsTable" | BOOL | 否 | 行情的数据格式,默认为 false。
|
| "matchingMode" | INT | 否 | 订单撮合模式 类型,可选值如下:
注: 当 |
| "enableSettlementPrice" | BOOL | 否 | 指定是否使用结算价计算每日盘后权益。
注: 结算价取行情表中该标的最新的 |
| "benchmark" | STRING | 否 | 用于 getReturnSummary 接口进行收益表现比较的基准标的。例如
"A2305"。 |
| "latency" | INT | 否 | 订单从发出到被处理的延时,单位为毫秒,默认为 0,表示无延时。 |
| "maintenanceMargin" | DOUBLE | 否 | 维持担保比例。取值 0~1.0 之间, 默认为 1.0。 |
| "enableAlgoOrder" | BOOL | 否 | 指定是否开启算法订单。默认为 false。
|
| "enableIndicatorOptimize" | BOOL | 否 | 指定是否开启指标优化。默认为 false。
|
| "isBacktestMode" | BOOL | 否 | 指定是否为回测模式。默认为 true。
|
| "dataRetentionWindow" | STRING | 否 | 数据保留的窗口。仅当 enableIndicatorOptimize = true 时,该配置生效。
|
| "addTimeColumnInIndicator" | BOOL | 否 | 指定指标订阅时是否给指标数据表增加时间列,默认 false。
|
| "context" | DICT | 否 | 全局策略变量,如:context=dict(STRING,ANY) context["buySignalRSI"]=70. userConfig["context"]=context |
| "callbackForSnapshot " | INT | 否 | 快照行情的回调触发模式。该配置仅在 dataType = 1 时生效。可选值如下:
注: 当 |
| "orderBookMatchingRatio" | DOUBLE | 否 | 与行情订单薄的成交比例。该配置仅在 dataType = 1 时生效。取值在 0~1.0
之间,默认为 1.0。 |
| "matchingRatio" | DOUBLE | 否 | 区间撮合比例。该配置仅在 dataType = 1 时生效。取值在 0~1.0 之间。未指定时取
orderBookMatchingRatio 的值;若两者均未指定,则默认为 1.0。 |
| "msgAsPiecesOnSnapshot" | BOOL | 否 | onSnapshot 回调的触发方式。默认为 false。
|
不同的期权行情类型(dataType)的引擎配置有所差异。frequency、callbackForSnapshot、orderBookMatchingRatio、matchingRatio
仅在 dataType = 1 时生效。
基本信息表说明
createBacktester 的参数 securityReference
用于指定合约的基本信息表,表结构如下:
| 列名 | 类型 | 说明 |
|---|---|---|
| symbol | SYMBOL | 合约代码 |
| underlyingAssetType | INT | 期权品种。可选值如下:
|
| multiplier | DOUBLE | 合约乘数 |
| type | INT | 期权类型。可选值如下:
|
| strikePrice | DOUBLE | 行权价 |
| marginRatio | DOUBLE | 保证金比率 |
| tradeUnit | DOUBLE | 合约单位 |
| priceUnit | DOUBLE | 报价单位 |
| priceTick | DOUBLE | 价格最小变动单位 |
| commission | DOUBLE | 手续费率或每手手续费,具体含义由 deliveryCommissionMode 决定。 |
| deliveryCommissionMode | INT | 手续费计费方式。可选值如下:
|
| lastTradingDay | DATE | 合约最后交易日 |
| exerciseDate | DATE | 期权行权日 |
| exerciseSettlementDate | DATE | 行权交收日 |
| exDate | DATE |
注:
交易日大于等于 exDate 时,行权价和合约乘数使用 adjStrikePrice 和 adjMultiplier。 |
| adjStrikePrice | DOUBLE | |
| adjMultiplier | DOUBLE | |
| intradayClosingFee | DOUBLE | 日内平仓费用 |
快照
行情表结构说明
快照行情(dataType = 1)的表结构如下:
表的列名须严格与下表一致。除首列必须为 symbol 列外,其余列的顺序不限。此外还支持 INT、DOUBLE、STRING 类型的列,或名为 signal、类型为 DOUBLE ARRAY VECTOR 的列作为扩展列。
| 列名 | 类型 | 说明 |
|---|---|---|
| symbol | STRING / SYMBOL | 期权代码 |
| symbolSource | STRING / SYMBOL | 交易所 |
| timestamp | TIMESTAMP | 时间戳 |
| tradingDay | DATE | 交易日/结算日期 |
| lastPrice | DOUBLE | 最新成交价 |
| upLimitPrice | DOUBLE | 涨停价 |
| downLimitPrice | DOUBLE | 跌停价 |
| totalBidQty | LONG | 区间成交买数量 |
| totalOfferQty | LONG | 区间成交卖数量 |
| bidPrice | DOUBLE[] | 委托买价 |
| bidQty | LONG[] | 委托买量 |
| offerPrice | DOUBLE[] | 委托卖价 |
| offerQty | LONG[] | 委托卖量 |
| highPrice | DOUBLE | 最高价 |
| lowPrice | DOUBLE | 最低价 |
| underlyingPrice | DOUBLE | 标的价格 |
| open | DOUBLE | 当 callbackForSnapshot = 1 或
callbackForSnapshot = 2 时,需要增加以下五列,代表由快照合成的
K 线:
|
| close | DOUBLE | |
| low | DOUBLE | |
| high | DOUBLE | |
| volume | LONG | |
| settlementPrice | DOUBLE | 可选,enableSettlementPrice =
true、且实际使用结算价估值或输出时,需提供该列且值为正数。 |
| amount | DOUBLE | 可选,成交金额 |
| prevClosePrice | DOUBLE | 可选,昨日收盘价 |
| prevSettlementPrice | DOUBLE | 可选,昨日结算价 |
| Theta | DOUBLE | 期权价格相对于时间变化的敏感性 |
| Vega | DOUBLE | 期权价格相对于标的资产波动率的敏感性 |
| Gamma | DOUBLE | 期权 Delta 相对于标的资产价格的敏感性 |
| Delta | DOUBLE | 期权价格相对于标的资产价格的敏感性 |
| IV | DOUBLE | 隐含波动率 |
回调函数说明
- 快照行情回调函数
onSnapshot:输入参数 msg。msg 为字典时,是以 symbol 为 key、以对应快照行情数据(snapShot)为 value 的字典。每个 snapShot 对象包含的字段参考表 1-3 快照行情的表结构。 callbackForSnapshot = 1或callbackForSnapshot = 2,还需onBar回调函数。K 线回调函数
onBar:输入参数 msg。msg 为字典时,是以 symbol 为 key、以对应 K 线数据为 value 的字典。每根 K 线包含字段如下:
| 字段 | 类型 | 备注 |
|---|---|---|
| symbol | STRING / SYMBOL | 期权代码 |
| symbolSource | STRING / SYMBOL | 交易所 |
| tradeTime | TIMESTAMP | 时间戳 |
| tradingDay | DATE | 交易日/结算日期 |
| open | DOUBLE | 开盘价 |
| low | DOUBLE | 最低价 |
| high | DOUBLE | 最高价 |
| close | DOUBLE | 收盘价 |
| volume | LONG | 成交量 |
| amount | DOUBLE | 成交金额 |
| upLimitPrice | DOUBLE | 涨停价 |
| downLimitPrice | DOUBLE | 跌停价 |
| signal | DOUBLE[] | 其他字段列表 |
| prevClosePrice | DOUBLE | 前收盘价 |
| settlementPrice | DOUBLE | 结算价 |
| prevSettlementPrice | DOUBLE | 前结算价 |
| underlyingPrice | DOUBLE | 标的价格 |
分钟频和日频
行情表结构说明
分钟频(dataType = 3)和日频(dataType = 4)行情的表结构如下:
表的列名须严格与下表一致。除首列必须为 symbol 列外,其余列的顺序不限。此外还支持 INT、DOUBLE、STRING 类型的列,或名为 signal、类型为 DOUBLE ARRAY VECTOR 的列作为扩展列。
| 列名 | 类型 | 说明 |
|---|---|---|
| symbol | STRING / SYMBOL | 期权代码 |
| symbolSource | STRING / SYMBOL | 交易所 |
| tradeTime | TIMESTAMP | 时间戳 |
| tradingDay | DATE | 交易日/结算日期 |
| open | DOUBLE | 开盘价 |
| low | DOUBLE | 最低价 |
| high | DOUBLE | 最高价 |
| close | DOUBLE | 收盘价 |
| volume | LONG | 成交量 |
| upLimitPrice | DOUBLE | 涨停价 |
| downLimitPrice | DOUBLE | 跌停价 |
| underlyingPrice | DOUBLE | 标的价格 |
| settlementPrice | DOUBLE | 可选,enableSettlementPrice =
true、且实际使用结算价估值或输出时,需提供该列且值为正数。 |
| amount | DOUBLE | 可选,成交金额 |
| prevClosePrice | DOUBLE | 可选,昨日收盘价 |
| prevSettlementPrice | DOUBLE | 可选,昨日结算价 |
| Theta | DOUBLE | 期权价格相对于时间变化的敏感性 |
| Vega | DOUBLE | 期权价格相对于标的资产波动率的敏感性 |
| Gamma | DOUBLE | 期权 Delta 相对于标的资产价格的敏感性 |
| Delta | DOUBLE | 期权价格相对于标的资产价格的敏感性 |
| IV | DOUBLE | 隐含波动率 |
回调函数说明
K 线回调函数 onBar:输入参数 msg。msg 为字典时,是以 symbol 为
key、以对应 K 线数据为 value 的字典。每根 K 线包含的字段参考表 1-4 K 线数据字段。
