债券#

回测平台支持债券资产,包括银行间债券和上交所债券。

银行间债券#

配置#

配置项

说明

备注

"start_date"

开始日期

DATE 类型,必填(例如“2020.01.01”)

"end_date"

结束日期

DATE 类型,必填(例如“2020.01.01”)

"asset_type"

策略类型

必须是 “CFETSBond”

"cash"

初始资金

DOUBLE 类型,必填

"data_type"

行情类型

INT 类型,必填,可选值:

  • 2:快照 + Tick 数据
  • 3:分钟级数据(使用时 matching_mode 必须设置为 3)
  • 4:日数据

"matching_mode"

撮合模式

整型。
日数据:

  • 1:按收盘价撮合
  • 2:按开盘价撮合
分钟级数据:
  • 1:当市场时间 > 订单时间时撮合
  • 2:当市场时间 = 订单时间时按收盘价撮合;未成交订单再按方式 1 撮合
快照数据:
按订单价格撮合

"msg_as_table"

是否将输入的市场数据作为表或字典处理

  • false(默认):字典
  • true:表(回测引擎只能通过 createBacktestEngine 接口创建)

"benck_mark"

基准标的

"latency"

订单提交到成交的延迟时间

DOUBLE 类型,单位为毫秒

"enable_indicator_optimize"

是否启用指标计算优化

  • true:启用
  • false(默认):不启用

"add_time_columnIn_indicator"

是否在指标订阅结果中添加时间列

  • true:添加时间列
  • false(默认):不添加时间列

"is_backtest_mode"

是否为回测模式

  • true(默认):回测模式
  • false:撮合模式

"data_retention_window"

指标优化的数据保留策略

STRING / INT 类型。仅在 enable_indicator_optimize = true 且 is_backtest_mode = true 时生效:

  • “ALL”:保留所有数据
  • 按交易日保留,例如 “20d” 表示保留 20 个交易日
  • “None”(默认):不保留数据
  • 按行数保留,例如 “20” 表示每个标的保留最新 20 行数据

"context"

策略上下文结构

由全局策略变量组成的字典

"orderbook_matching_ratio"

与行情订单薄的成交百分比

DOUBLE 类型,默认值为 1.0,取值范围 0 到 1.0

"matchingRatio"

价格区间内的撮合比例

DOUBLE 类型,取值范围 0 到 1.0,默认等同于 orderbook_matching_ratio

基本信息表说明#

字段名称

数据类型

含义

symbol

STRING

标的

couponRate

DOUBLE

票面利率 / 票息率

frequency

INT

付息频率

valueDate

DATE

起息日

maturityDate

DATE

到期日

Market Data#

通过 “append_data” 接口将数据追加到回测引擎时:

col_type = {
    "symbol": "SYMBOL", "symbolSource": "SYMBOL", "timestamp": "TIMESTAMP", "bidSettlType": "INT[]", 
    "bidQty": "LONG[]", "bidPrice": "DOUBLE[]", "bidYield": "DOUBLE[]", "askSettlType": "INT[]", 
    "askQty": "LONG[]", "askPrice": "DOUBLE[]", "askYield": "DOUBLE[]", "tradePrice": "DOUBLE[]", 
    "tradeQty": "LONG[]", "settlType": "INT[]", "yield": "DOUBLE[]"
}

message_table = sf.streaming.table(types=col_type, size=0, capacity=10000000)

快照+逐笔成交明细数据表结构:

字段

类型

含义

symbol

SYMBOL

标的代码

symbolSource

SYMBOL

市场:银行间 “X_BOND”

timestamp

TIMESTAMP

时间戳

bidSettlType

INT[]

买清算速度

bidQty

LONG[]

买方数量

bidPrice

DOUBLE[]

买方净价(元)

bidYield

DOUBLE[]

买方收益率

askSettlType

INT[]

卖方清算速度

askQty

LONG[]

卖方数量

askPrice

DOUBLE[]

卖方净价(元)

askYield

DOUBLE[]

卖方收益率

tradePrice

DOUBLE[]

区间成交价格列表

tradeQty

LONG[]

区间成交数量列表

settlType

INT[]

清算速度

yield

DOUBLE[]

到期收益率

分钟频数据表结构:

名称

类型

含义

symbol

SYMBOL

标的代码

symbolName

STRING

债券简称

tradeDate

TIMESTAMP

时间

maturityDate

DOUBLE

待偿期

tradeClean

DOUBLE

收盘净价

tradeDirty

DOUBLE

收盘全价

tradeAccruedInterest

DOUBLE

应计利息

yield

DOUBLE

收盘到期收益率

tradeVolume

DOUBLE

成交量

回测行情回放结束时,发送一条 symbol 为 “END” 的消息:

message_table = sf.sql("SELECT TOP 1 * FROM messageTable", vars={'messageTable': message_table})
sf.sql("UPDATE messageTable SET symbol='END'", vars={'messageTable': message_table})
backtester.append_data(message_table)

策略回调函数说明#

快照行情回调函数on_snapshot:输入参数msg

如果 msg 是字典,是以 symbol 为 key 值的 snapShot 数据字典,其中每个 snapShot 对象包含以下字段:

字段

类型

备注

symbol

SYMBOL

标的代码

messageSource

SYMBOL

市场:银行间 “X_BOND”

byield

TIMESTAMP

时间戳

ayield

DOUBLE[]

报买到期

bmdEntryPrice

DOUBLE[]

报买净价(元)

amdEntryPrice

DOUBLE[]

报卖净价(元)

bmdEntrySize

LONG[]

报买量(元)

amdEntrySize

LONG[]

报卖量(元)

bsettlType

LONG[]

买清算速度

asettlType

LONG[]

卖清算速度

settlType

LONG[]

区间清算速度

tradePrice

DOUBLE[]

区间成交价格列表

tradeYield

DOUBLE[]

到期收益率

tradeQty

LONG[]

区间成交数量列表

上交所债券#

引擎配置说明#

配置项

说明

备注

"start_date"

开始日期

DATE 类型,必填(例如:“2020.01.01”)

"end_date"

结束日期

DATE 类型,必填(例如:“2020.01.01”)

"asset_type"

资产类型

必须为 “XSHGBond”

"cash"

初始资金

DOUBLE 类型,必填

"commission"

手续费

DOUBLE 类型,必填

"tax"

印花税

DOUBLE 类型,必填

"data_type"

行情类型

INT 类型,必填,可选值:

  • 2:快照 + 成交明细
  • 4:日频数据

"orderbook_matching_ratio"

订单成交比例

DOUBLE 类型,默认值为 1.0,取值范围:0 到 1.0

"matching_ratio"

价位区间内撮合比例

DOUBLE 类型,取值范围:0 到 1.0;默认等于 orderbook_matching_ratio

"set_last_day_position"

基准持仓设置

基准持仓信息表,详见下方表结构

底仓信息表结构如下:

字段

类型

含义

symbol

SYMBOL

股票代码

longPosition

LONG 或者 INT

买入持仓量

costPrice

DOUBLE

成本价

基本信息表说明#

字段

类型

含义

symbol

STRING

标的

couponRate

DOUBLE

票面利率 / 票息率

frequency

INT

付息频率

valueDate

DATE

起息日

maturityDate

DATE

到期日

行情数据结构说明#

输入的行情支持由“确定报价行情”和“成交明细”组成的宽表,表结构如下:

字段

数据类型

备注

symbol

SYMBOL 或 STRING

证券代码

timestamp

TIMESTAMP

时间戳

msgType

INT

市场类型,可以是:

  • 0:确定报价行情
  • 1:成交明细

symbolName

STRING

证券简称

bidId

INT

买入订单编号

bidTime

TIMESTAMP

买入报价时间

bidParty

SYMBOL 或 STRING

买入报价方

bidClean

DOUBLE

买入价(净价)

bidQty

LONG

买入数量

bidDirty

DOUBLE

买入全价

bidYield

DOUBLE

买入到期收益率

askId

INT

卖出订单编号

askTime

TIMESTAMP

卖出报价时间

askParty

SYMBOL 或 STRING

卖出报价方

askClean

DOUBLE

卖出价(净价)

askQty

LONG

卖出数量

askDirty

DOUBLE

卖出全价

askYield

DOUBLE

卖出到期收益率

accruedInterest

DOUBLE

应计利息

tradeTime

TIMESTAMP

成交时间

tradeClean

DOUBLE

成交净价

tradeAccruedInterest

DOUBLE

应计利息

tradeDirty

DOUBLE

成交全价

yield

DOUBLE

到期收益率

tradeVolume

INT

成交量

tradeValue

DOUBLE

成交金额

tradeType

INT

交易类型,可以是:

  • 1:确定报价成交
  • 2:待定报价成交
  • 3:询价成交
  • 4:协议交易
  • 6:协议交易(含合并申报)
  • 7:竞买