文档 / DOCS

使用文档

四节内容全部取自随包的工程文档,只写文档里已有的事实;每节末尾标注来源文件名。文档随版本更新,最终口径以包内文档为准。

01

快速上手

QUICK START

从选数据源到看结果,四步走完一次日线回测。

选数据源

数据经插件接入:Tushare、Baostock、AkShare、PyTDX、csv、sqlite。插件取数成功后,同一份 K 线会双写进统一库(只写不读,失败只告警,不影响本次回测取数)。

建库

全站只有一个 SQLite 文件:K 线主表 kline_bar、事件表 event_data、标的信息 stock_info,另有派生表 kline_coverage 与迁移标记 data_meta;不建第四个库文件。入库只写不复权原始 OHLC 与复权因子,复权在读取层实时计算。

跑一次回测

引擎按「决策日收盘出信号、次日开盘成交」执行;任何「决策日晚于或等于成交日」的调用直接抛错,防未来函数不靠调用方约定。信号与图表读复权视图,撮合、涨跌停、限价、费用读不复权原始价。

看结果页的规则覆盖度

结果页固定披露三块:A 股规则覆盖度(涨跌停档位来源、ST 交易日与缺失天数、停牌拦截次数、非标准整手标的、未启用项);费用口径与分项;净值口径(真实资金,不可与后复权价格空间直接比较)。字段缺失时不占位。

来源:docs/RETQUANT_DATA_LAYER.md、docs/A_SHARE_RULE_COVERAGE.md

02

数据与复权口径

CALIBER

库内只存不复权原始价与复权因子,入库不做复权运算;三种视图在读取层实时换算:

hfq 后复权
hfq = raw × adj_factor。默认展示视图,图表与收益口径用它;新增分红不会改变历史。
qfq 前复权
qfq = raw × adj_factor ÷ 最新 adj_factor。以最新因子为基准,新增分红后整段历史会漂移 —— 同一策略今天与明天跑可能不同。
none 不复权
none = raw。撮合、涨跌停判定、限价、手续费仿真一律用它,并与库内 limit_up / limit_down(交易所原始价)比较。

引擎侧进一步拆成两套价格数组,各管一段:

撮合 / 费用 / 权益
撮合价、涨跌停价、限价、费用、现金、权益估值全部用不复权原始价。
信号与图表
入场/退出/择时/大盘闸门等信号生成,以及图表展示,用复权视图(界面可切)。
开关
pit.adjust.raw_matching 默认 true;置 false 回到旧的单套复权价格口径。
对齐校验
原始价与复权价共享同一 dt 序列,长度、顺序、索引逐日一致;不一致直接抛错,不做静默补齐。
源没有复权因子时:adj_factor 固定 1.0、adj_ok=0,界面标「该标的无复权数据」,不编因子。通达信来源按规格固定 1.0,界面另标「仅可用于不复权视图」,避免被误认为后复权行情。

来源:docs/RETQUANT_DATA_LAYER.md、docs/A_SHARE_RULE_COVERAGE.md

03

A 股规则覆盖

A-SHARE RULES · 18

18 条规则按三档判定:已实现(默认链路可用并有代码)、部分实现(模块具备能力,但默认链路 / 数据链路 / 某一侧不生效)、未实现(端到端无可用实现)。

按同一份文档的分批落地记录(§12–§17)逐条重算,当前分布为 已实现 12 条 / 部分实现 4 条 / 未实现 2 条。

口径:截至 2026-11-13 · 依据 docs/A_SHARE_RULE_COVERAGE.md(§2.1 审计表 + §12–§17 落地记录)

已实现 12 条

  • 01

    T+1:当天买入不能当天卖出

    实测:01-05 买入、01-09 卖出;比真实 B+1 开盘可卖保守 1 个交易日。

  • 02

    涨跌停:主板 ±10%

    按代码前缀静态 10%,无 ST 分支、无生效日期分段。代码追踪,未实测

  • 03

    涨跌停:创业板 / 科创板 ±20%

    30 / 688 / 689 段统一 20%,未区分创业板 2020-08-24 注册制改革前的 10%。代码追踪,未实测

  • 04

    涨跌停:ST ±5%(端到端)

    已按逐日 st_flag 判档(§12.1);真实 ST 状态数据尚未写入时落板块基础档位,结果页标注「ST 5% 未生效」。

  • 05

    涨跌停:北交所 ±30%(幅度)

    92 / 8 / 4 段按 30%;北交所 ST 风险警示档位无分支。代码追踪,未实测

  • 06

    停牌:停牌日不能成交

    买入侧默认拦截(成交量 0 不禁买 → 顺延或放弃),卖出侧由 suspend_lock 拦截(§12.1)。

  • 07

    最小交易单位(整手)

    板块整手:主板 100/100、科创板 200 股起 1 股递增、北交所 100 股起 1 股递增(§12.1)。

  • 08

    佣金(含最低 5 元)

    precise 为默认费用模型,max(成交额 × 费率, 5.0)(§13.5)。代码追踪,未实测

  • 09

    印花税(卖出单边)

    按成交日分段:2023-08-28 前 0.001、之后 0.0005,仅卖出(§13.1)。代码追踪,未实测

  • 13

    信号日 ≠ 成交日(防前视)

    实测:决策日收盘 → 次日开盘;决策日晚于或等于成交日直接抛错。

  • 14

    新股上市前 5 个交易日无涨跌停

    按日 listed_days ∈ [0,5) 时价格限制置空(§15.1)。代码追踪,未实测

  • 15

    退市整理期档位

    list_status=退市整理 的交易日强制回板块基础档位,覆盖 ST 5%(§15.1)。代码追踪,未实测

部分实现 4 条

  • 10

    过户费(沪深是否都收)

    沪深同费率 0.00001、双向、已默认计入;2022-04 前的沪深差异分段仍未做(文档标 [需补充])。代码追踪,未实测

  • 11

    滑点(固定还是动态)

    固定比例、买卖对称;冲击成本模型存在但默认关闭,成交价未 clamp 到当日高低价或涨跌停价。代码追踪,未实测

  • 12

    集合竞价 / 开盘价 / 收盘价成交口径

    只有「次日开盘价 ×(1±滑点)」;集合竞价与收盘价 / 均价口径未实现,结果页标注「未启用」。

  • 16

    分红再投资 / 复权口径

    已接公司行为入账与差别化红利税(§16);分红只记现金,仍无「分红再投资」选项。

未实现 2 条

  • 17

    融资融券

    代码库内无融资 / 融券 / 保证金实现;日线回测语义下标记为不支持。代码追踪,未实测

  • 18

    科创板 / 创业板盘后固定价格交易

    无 15:05–15:30 盘后固定价格成交模型,需分钟或订单簿数据。代码追踪,未实测

本次重算:7 条从「部分 / 未实现」推进到「已实现」

  • 04ST ±5%:未实现 → 已实现(§12.1 按日档位、§12.5 单测真跑)
  • 06停牌日买入拦截:部分实现 → 已实现(§12.1)
  • 07板块整手(科创板 200 股起):部分实现 → 已实现(§12.1)
  • 08佣金最低 5 元:部分实现 → 已实现(§13.5)
  • 09印花税按成交日分段:部分实现 → 已实现(§13.1)
  • 14新股前 5 个交易日无涨跌停:未实现 → 已实现(§15.1)
  • 15退市整理期档位:未实现 → 已实现(§15.1)

仍保持原状态的 6 条:过户费(历史分段 [需补充])、滑点(冲击成本默认关)、成交口径(集合竞价未实现)、分红口径(无再投资选项)、融资融券、盘后固定价格。其中前四条与文档判定一致,未升格。

结果页会显示本次哪些规则实际生效

规则覆盖度
涨跌停档位来源与覆盖度、ST 交易日与缺失天数、停牌买入拦截次数、非标准整手标的、未启用项;状态列缺失或某日缺失写入日志与运行元信息,不静默降级。
费用口径
当前用 precise 还是 legacy、各类费率与分项金额、印花税分段日、规费开关。
公司行为
现金分红、送转调整、配股未参与明细,以及红利税档位:持股超过 1 年免征、1 个月(含)至 1 年 10%、1 个月以内(含)20%。
净值口径
原始价撮合时固定提示「净值口径为真实资金,不可与后复权价格空间直接比较」。

来源:docs/A_SHARE_RULE_COVERAGE.md

04

已知限制

LIMITS

以下限制在文档里逐条写明,结果页也会标注对应「未启用 / 未生效」状态。

ST ±5% 依赖逐日状态列

按日 st_flag 来自 stock_status_daily 表;数据源未写入时该列全为 NULL,落板块基础档位,结果页标注「ST 5% 未生效」。docs/A_SHARE_RULE_COVERAGE.md

新股前 5 日无涨跌停依赖上市天数

按日 listed_days 缺失的日期不启用该规则,不做推算。docs/A_SHARE_RULE_COVERAGE.md

退市整理期依赖状态列

依赖 list_status;缺失时不启用,退化为「数据提前终止推断退市」。docs/A_SHARE_RULE_COVERAGE.md

集合竞价未实现

结果页标注「未启用」;成交只有「次日开盘价」一种口径,无收盘价 / 均价 / 集合竞价可选。docs/A_SHARE_RULE_COVERAGE.md

融资融券 / 配资券不支持

无杠杆、无融券、无保证金模型,两融类策略与本品结果不可直接比较。docs/A_SHARE_RULE_COVERAGE.md

科创板 / 创业板盘后固定价格交易不支持

日线语义下无盘后成交模型,尾盘类策略存在偏差。docs/A_SHARE_RULE_COVERAGE.md

全市场分钟长历史单库装不下

5,000 只 × 约 6.9 年 × 5 分钟估算约 64.8 GB;推荐按需下载、按标的存储,全市场分钟入库需分批、可中断、断点续抓。docs/RETQUANT_DATA_LAYER.md

简化口径(必须在结果页标注)

红利税在除权日按毛分红计提(制度上为卖出时补缴);配股默认不参与;冲击成本默认 0;分红只记现金、无再投资。docs/A_SHARE_RULE_COVERAGE.md

来源:docs/A_SHARE_RULE_COVERAGE.md、docs/RETQUANT_DATA_LAYER.md