文档 / DOCS
使用文档
四节内容全部取自随包的工程文档,只写文档里已有的事实;每节末尾标注来源文件名。文档随版本更新,最终口径以包内文档为准。
快速上手
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
数据与复权口径
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 序列,长度、顺序、索引逐日一致;不一致直接抛错,不做静默补齐。
来源:docs/RETQUANT_DATA_LAYER.md、docs/A_SHARE_RULE_COVERAGE.md
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
已知限制
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