2. 核心概念速览

本章用表格和简短说明梳理 qteasy 中的核心概念,便于在阅读后续章节或使用 API 时快速查阅。更完整的结构与关系见 总体架构与设计思路

2.1. 1. 概念表(名称 / 含义 / 在文档中的位置)

概念

含义

本系列中的位置

DataSource

本地数据存储的抽象,管理文件或数据库中的历史数据表,不主动拉取数据

数据获取、存储与数据类型

数据表

DataSource 中的表,按统一结构存储行情、财务、宏观等数据

数据获取、存储与数据类型

DataType

“策略可引用的信息”的类型描述,由 name、freq、asset_type 等确定

数据获取、存储与数据类型策略如何声明与使用数据

htype

历史数据类型名称(如 close、open),常与 freq、asset_type 一起用来标识一种数据

数据获取、存储与数据类型

dtype_id

DataType 的唯一标识,形如 name_assettype_freq(如 close_E_d

下文“dtype_id 的构成与示例”

Operator

策略容器与运行入口,持有 Group 列表与 group_timing_table,提供 run(config)

Operator 与 Group

Group

具有相同 run_freq、run_timing 的策略集合,拥有 signal_type 与 blender

Operator 与 Group

Strategy

策略基类及其子类,声明 data_types/window_length、Parameter,实现 realize()

Strategy 如何运行

run_freq

策略(组)的运行频率,如 'd' 日、'm'

Operator 与 Group

run_timing

策略(组)在周期内的运行时机,如 'close' 收盘、'open' 开盘

Operator 与 Group

group_timing_table

时间步 × Group 的表,标记每个时间步哪些 Group 运行

Operator 与 Group

blender

同 Group 内多策略信号的混合方式(表达式或默认规则)

Operator 与 Group

signal_type

信号类型:PT(目标仓位)、PS(比例买卖)、VS(数量买卖)

下文“三种信号类型 PT/PS/VS”

Parameter

策略可调参数的定义(名称、类型、取值范围等)

Strategy 如何运行

data_types

策略声明的所需数据类型(DataType 或列表)

策略如何声明与使用数据

window_length

策略所需历史数据的窗口长度(如 20 天)

策略如何声明与使用数据

realize()

策略逻辑入口,无参数,通过 get_pars/get_data 取数并返回信号

Strategy 如何运行

get_data / get_pars

在 realize() 内按 dtype_id 取数据、按参数名取可调参数

策略如何声明与使用数据

Backtester

回测执行器,按 group_timing_table 驱动 Operator 并模拟成交

回测、实盘与优化

Optimizer

优化器,在参数空间搜索并多次回测,汇总目标函数

回测、实盘与优化

Trader

实盘交易管理,按 schedule 触发 Operator 并协调 Broker

回测、实盘与优化

Broker

订单执行与成交回报的接口抽象

回测、实盘与优化

config

运行配置(资产池、区间、成本、资金计划等),回测/实盘/优化共用

回测、实盘与优化

qt.run

统一入口:qt.run(op, mode=…, **kwargs) → op.run(config, datasource, logger)

回测、实盘与优化

2.2. 2. dtype_id 的构成与示例

dtype_id 由三部分拼接而成:name_assettype_freq

  • name:数据类型名称(如 close、open、total_mv、pe)。

  • assettype:资产类型,如 E(股票)、IDX(指数)、ANY(任意)。

  • freq:数据频率,如 d(日)、w(周)、m(月)、q(季)。

示例:

dtype_id

含义

close_E_d

股票日频收盘价

close_IDX_d

指数日频收盘价

close_ANY_d

任意资产日频收盘价

total_mv_E_q

股票季频总市值

pe_E_d

股票日频市盈率(若存在)

策略在 get_data(dtype_id) 时使用的 id 需与策略声明的 DataType 所生成的 dtype_id 一致(通常可通过策略的 data_type_ids 属性查看)。

2.3. 3. 三种信号类型 PT/PS/VS 的语义对比表

类型

全称

含义(一句话)

示例

PT

Position Target

目标持仓比例,信号表示希望达到的多空仓位比例

0.5 表示目标 50% 多头仓位

PS

Proportion Signal

比例买卖,信号表示用资金或持仓的多少比例买入/卖出

0.5 表示用 50% 资金买入或卖出 50% 持仓

VS

Volume Signal

数量买卖,信号表示买入/卖出的数量(股或份)

100 表示买入 100 股,-50 表示卖出 50 股

同一数值在不同 signal_type 下会被解析为不同的委托意图;Group 的 signal_type 在添加策略时确定,同组内策略输出同一类型信号再由 blender 混合。

2.4. 4. 三种策略基类的输入/输出对比表

基类

典型用途

输入(get_data 等)

输出(realize 返回值)

RuleIterator

择时、单规则迭代

单资产或多资产的数据窗口(按 dtype_id)

标量信号(如 1 / -1 / 0),同一规则作用于所有资产

FactorSorter

因子选股

多资产截面数据(如多只股票的因子值)

一维因子数组(每资产一个值),引擎按因子排序与筛选规则选股

GeneralStg

通用多资产策略

多资产、多数据类型的数据窗口

一维信号数组(每资产一个目标仓位或买卖比例)

更多细节见 Strategy 如何运行:时机、数据与参数