跳转到正文

数据加载 ​

公共接口从 localquant.mod.localquant_mod_seeddata_source 导入。本页定义加载与注册;各资产的数据表、价格和账户差异见股票、基金、期货。

加载与注册 ​

python
from localquant.mod.localquant_mod_seeddata_source import (
    load_framework_data, register_bundle, discard_bundle, attach_minute_bars,
)

bundle = load_framework_data(
    codes=["600000.SH"], start="2024-05-27", end="2024-06-07",
    base_url="http://127.0.0.1:28637",
    asset_type="cn_stock", index_codes=["000300.SH"],
    etf_codes=["510300.SH"], include_yield_curve=False,
)
参数默认契约
codes必填非空标的列表;股票基金使用 .SH/.SZ/.BJ,期货使用其原生合约代码
start / end必填加载区间,含两端;与正式回测区间分开设置
base_url必填可访问的 seeddata 网关地址
asset_typecn_stock主标的类型,股票 cn_stock,场内基金 cn_etf,期货 cn_future
frequency1dcn_future 可选 1m 同时加载真实月合约分钟;股票基金分钟用 attach_minute_bars
history_startNone期货日线预热起点,不晚于 start;分钟仍只加载 start/end
index_codesNone额外加载的指数,用作基准或信号输入
etf_codesNone股票 bundle 中额外加载的基金,可交易或作基准;不得与 codes 重叠;纯基金链路直接用 codes
include_yield_curveTrue是否加载真实国债收益率曲线
verboseTrue控制股票基金加载汇总;期货链路不使用此项,关闭不屏蔽数据问题告警

load_framework_data 返回内存 bundle,不写本地行情文件。它保存本次行情、基础信息和日历;注册键是供单次运行领取该数据的凭据,不是缓存文件路径。一次取数后可重复使用 bundle,但每次回测须重新 register_bundle(bundle)。将键写入配置,并在运行的 finally 中调用 discard_bundle(key):

python
key = register_bundle(bundle)
config["mod"]["seeddata_source"] = {
    "enabled": True, "lib": "localquant.mod.localquant_mod_seeddata_source",
    "priority": 0, "bundle_key": key,
}

discard_bundle 清理尚未消费的键,可重复调用;不销毁调用方持有的 bundle。并行优化共享 bundle,在各运行任务内注册,见 参数优化。

标的与数据范围 ​

bundle 应覆盖全部可能交易、持有及查询的标的、初始持仓和基准;优化时覆盖所有参数组合的并集。update_universe 只改变订阅,不会加载新数据。all_instruments 只查询本次已加载的合约,不返回全市场列表。

用途加载方式
A 股asset_type="cn_stock",放入 codes
纯场内基金asset_type="cn_etf",放入 codes
股票账户附加基金,交易或作基准股票 codes + etf_codes,两者不能重叠
期货月合约与系列asset_type="cn_future",放入 codes
普通指数、南华指数index_codes,不通过增加订阅代替加载

基金不能放进 index_codes。所有资产的 index_codes 缺省为空,不自动加载或选用任何基准。加载基准行情与选择分析基准是两件事,配置见分析器。

加载区间 ​

分别确定正式回测区间、框架前置行情、策略因子预热,不能用固定若干自然日替代实际窗口。

需求股票与基金期货
日线范围start/end 原样用于取数,须主动提前 start自动包含加载左端前一交易日;日历额外包含终点后一交易日
更长的日线预热提前加载 start,保持 base.start_date 不变使用 history_start,不晚于 start
分钟范围先加载日线,再挂载分钟frequency="1m" 自动加载 start/end 对应交易日的分钟;history_start 不增加分钟范围

标的基准须覆盖正式首日前一交易日和首日的收盘;股票、基金基准还需要后复权收盘。引擎不会按基准缺口自动调整起点。无论是否设置基准,回测日历都须包含首日前一交易日,用于净值为 1 的期初点;外部净值另须符合基准覆盖。框架估值、初始持仓、基金折算也需要前置行情;加载首日不能据其自身推导基金折算。

股票基金原始分红记录按标的读取全历史,折算仍依赖加载区间内的行情。后复权数据是该链路的必要输入;默认终点应按其实际覆盖确定,不在加载器中假设“上一交易日一定已齐全”。

策略窗口按所需交易日回退,首个信号应有完整历史;history_bars 历史不足只返回已有条数。股票基金按数据源全局覆盖裁剪运行区间,不逐只保证完整;期货使用请求区间,必要数据缺失仍会失败。实际日期查看 summary.start_date/end_date。

无风险利率 ​

include_yield_curve=True 从 cn_gov_bond_yield_data 加载国债曲线,转换成年化小数。框架标准期限在当日已知期限之间线性插值,两端沿用最近期限值;日期缺口按已有历史向前填充。因此查询某个期限不等于取得该期限的原始报价。无法覆盖所需日期时报错。False 提供零值曲线。

base.use_risk_free_rate 控制绩效指标是否使用曲线,默认 False;它不控制取数,也不改变 get_yield_curve 的返回数据。指标和策略因子都不需要曲线时可同时关闭;需要真实无风险利率时开启加载,指标也需要使用时再开启计算开关。仅开启计算而加载零值曲线会得到无效的无风险利率指标。

数据限制 ​

本数据源不提供 ST、行业和板块维度:is_st_stock 恒为 False,industry/sector 返回空列表,不能据此认定证券不是 ST。因子、历史成分股等所需数据应在策略准备阶段另行查询。

股票基金局部涨跌停缺行时告警,并在缺行日不校验涨跌停;全区间无涨跌停数据或存在无效价格时失败。期货普通委托缺少必要价格、涨跌停或保证金时失败。其他缺口按各资产页说明处理,不能通过补零、替换代码或静默缩小标的池消除错误。

查询 API 的可用范围见行情与合约。

localquant documentation