TWO TOOLKITS · REUSABLE CODE

QuantsPlaybook 自带工具包:两个目录,四类信号,一份回测模板

除了 58 个案例目录,仓库里还有两个不是「案例」而是「工具」的目录。它们的依赖面比案例小得多,README 里还给了可直接复制的 import 示例——这是仓库里上手成本最低的部分。

  • QuantsPlaybook hugos_toolkit:12 个 .py,三个子模块(回测报告 / 回测模板 / 绘图样式)。
  • SignalMaker:7 个 .py,四类择时信号 + 一个工具模块。
  • 两者合计约 1,500 行有效代码(不含 __pycache__ 缓存)。
  • 依赖面小:SignalMaker 只需 10 个包,比 Qlib 系案例轻得多。

两个工具包各有哪些模块?

hugos_toolkitBackTestReport / BackTestTemplate / VectorbtStylePlotting
SignalMakerhht_signal / noise_area / qrs / alligator_indicator_timing
共同点不依赖案例数据,可独立复用
注意无许可证声明,引用时请说明出处
依据仓库目录结构与 SignalMaker/README.md 绘制的模块结构示意图;非官方模块图。

HUGOS_TOOLKIT

hugos_toolkit 有哪些模块?三个子模块各管什么

这个工具包不产出信号,它产出的是一份能给人看的回测结果。三个子模块职责分明。

子模块对照表
子模块文件职责你能怎么用依赖
BackTestReportperformance.py、tear.py、timeseries.py、utils.py绩效指标计算 + 回测报告(tear sheet)绘制把任意净值序列喂进去,得到标准绩效表与图表;tear.py 是报告层入口pandas + 绘图库
BackTestTemplatebacktest_engine.py、bt_strategy.py回测引擎骨架与策略基类作为自己写回测的起点:策略只实现信号,引擎负责撮合与统计backtrader 生态(案例里常见)
VectorbtStylePlottingplotting.py(约 37 KB,仓库里体积居前的单文件脚本之一)、utils.pyvectorbt 风格的绘图样式与工具让自己的图表风格与案例保持一致;也可单独借用其中的样式函数绘图库

核对方式:QuantsPlaybook 固定 commit 文件树列出全部 12 个 .py 与行数;上表职责按文件名与公开命名约定整理。本站未运行这两个模块,因此不评价其输出质量。

SIGNALMAKER

QuantsPlaybook 的 SignalMaker 提供哪些信号?四类模块

这是仓库里最有「库感」的部分:信号被抽成独立函数,输入是 DataFrame,输出是信号 DataFrame。

信号模块对照表
信号模块文件对外函数 / 类输入契约对应案例
HHT 信号hht_signal.pyget_ht_signal(df, …)、get_hht_signal(df, …, "EMD"|"VMD")必须有 close,且为 DataFrame 类型(宽表:index=日期, columns=代码)结合改进HHT模型和分类算法的交易策略
NoiseArea 信号noise_area.pyNoiseArea(index_price).fit(14)需要 OHLCV(案例用分钟级指数数据)另类ETF交易策略:日内动量
QRS 信号qrs.pyQRSCreator(low_df, high_df).fit(18, 600)需要 low / high 两个宽表(index=日期, columns=代码)QRS择时信号
鳄鱼线 / AO / MACDalligator_indicator_timing.py(约 21 KB)get_alligator_signal(close_df)、get_ao_indicator_signal(high_df, low_df)、get_macd_signal(close_df)close 或 high/low 宽表基于鳄鱼线的指数择时及轮动策略
工具模块utils.py若干辅助函数—被上面四个模块共用
# 可直接复制的调用示例(来自 SignalMaker/README.md 原文,本站未运行)
from SignalMaker.hht_signal import get_ht_signal, get_hht_signal
from SignalMaker.noise_area import NoiseArea
from SignalMaker.qrs import QRSCreator
from SignalMaker.alligator_indicator_timing import (
    get_alligator_signal, get_ao_indicator_signal, get_macd_signal,
)

# 1) HT 信号 / HHT 信号(EMD 与 VMD 两种分解)
get_ht_signal(hs300_df, 60, 30)
get_hht_signal(hs300_df, 60, 2, 9, "EMD")
get_hht_signal(hs300_df, 60, 2, 9, "VMD")

# 2) NoiseArea:需要分钟级 OHLCV
index_signal = NoiseArea(index_price).fit(14)      # 返回 ubound / signal / lbound

# 3) QRS:需要 low / high 两个宽表
qrs = QRSCreator(low_df, high_df)
signal_df = qrs.fit(18, 600)

# 4) 鳄鱼线三件套
alligator_signal = get_alligator_signal(close_df)
ao_signal = get_ao_indicator_signal(high_df, low_df)
macd_signal = get_macd_signal(close_df)

上面代码块逐行来自 SignalMaker/README.md,本站未运行。参数(如 60, 30、18, 600、fit(14))的具体含义 README 未逐一说明,建议对照对应案例的 Notebook 确认。

DEPENDENCIES

SignalMaker 要装什么?只要 10 个包

这是本页最实用的一条:如果你只想用信号函数,不必碰 Qlib 那一整套。

对比项对照表
对比项SignalMaker典型 Qlib 因子案例(如筹码因子)说明
声明的包数10 个13–17 个两者都是 == 精确钉版本
核心重依赖PyEMD、vmdpy、EMD_signal、TA_Lib、statsmodels、scipyqlib + pyqlib、numba、alphalens、empyrical、statsmodelsQlib 系案例需要整套因子流水线
本机 Python 3.11.9 实测通过(允许源码包时)失败(numba 版本上限)信号类工具包的可安装性明显更好
无 wheel 的依赖TA_Lib==0.4.32(需编译)alphalens==0.4.0、empyrical==0.5.5、pyqlib==0.9.1 等两者都需要编译环境,但量级不同
数据要求只要日线或分钟线的宽表需要 Qlib 数据格式 + 因子数据工具包不负责取数,这反而是优点
  • ① 只取工具包,不取全仓库

    仓库体积约 1.36 GB(文件树合计),其中大头是案例数据与 mlruns 产物。如果只想要工具包,可以只下载 SignalMaker/ 与 hugos_toolkit/ 两个目录。预期结果:几十 KB 级代码 + 一份 requirements.txt。

  • ② 建独立虚拟环境并先做 dry-run

    python -m pip install --dry-run -r requirements.txt。预期输出:若报 Could not find a version,多半是 TA_Lib 需要编译;先装好 TA-Lib 的 C 库再重试。

  • ③ 用宽表喂数据

    所有信号函数的输入都是 index=日期、columns=代码、values=价格 的宽表。预期输出:同样是宽表的信号 DataFrame(取值通常是 −1 / 0 / 1 或连续的信号强度)。

  • ④ 先在一只票、一年数据上验证

    不要一上来就全市场十年。先用单标的、单年数据确认函数的输出形状与取值分布符合预期,再扩规模。

  • 实测依据:本机对 SignalMaker/requirements.txt 执行 pip install --dry-run 在 Python 3.11.9 上通过;筹码因子那套在同一环境下失败。完整矩阵见环境与依赖页。

    HOW THEY RELATE

    QuantsPlaybook 的工具包与案例是什么关系?谁调用谁

    理解这层关系,你就知道改动会影响什么。

    关系对照表
    关系具体表现对你的意义
    案例调用工具包SignalMaker 的 README 直接标注了每个信号模块对应哪个案例 Notebook;hugos_toolkit 被多个案例用于出回测报告改工具包的函数签名会同时影响多个案例;反过来说,读工具包能一次看懂多个案例的信号层
    工具包依赖更少SignalMaker/requirements.txt 只有 10 个包,不涉及 Qlib想快速验证信号效果时,只装工具包是最短路径
    工具包不负责取数它们只接受已经准备好的宽表你可以把任何来源的数据(含本机技能取到的数据)喂进去,这是它最实用的地方
    工具包无独立版本号仓库 0 tag、0 release,工具包也没有单独发布到 PyPI引用时必须记 commit;不要写「SignalMaker v1.x」这类不存在的版本

    最短上手路径

    取 SignalMaker/ 两个文件(alligator_indicator_timing.py + utils.py)→ 装 TA-Lib 与 numpy/pandas → 喂一份指数日线宽表 → 拿到鳄鱼线信号。这是全仓库依赖最少的一条可执行路径。

    第二短的路径

    hugos_toolkit/BackTestReport 接受任意净值序列并输出绩效报告,不依赖案例数据。适合用来给你自己已有的策略结果补一份标准化报告。

    别忘了许可问题

    仓库没有 LICENSE 文件,只有 3 个案例 README 写了「仅供学习和研究使用」。复制这些代码进自己的项目之前,请先看许可与再复用页。

    FAQ

    QuantsPlaybook 自带工具包常见问题

    QuantsPlaybook hugos_toolkit 和 SignalMaker 是什么?

    它们是 QuantsPlaybook 仓库根目录下的两个工具目录(不是案例)。hugos_toolkit 负责「回测跑完之后的事」:绩效指标、回测报告、vectorbt 风格绘图,共 12 个 .py;SignalMaker 负责「信号怎么算」:HHT、NoiseArea、QRS、鳄鱼线四类信号,共 7 个 .py,README 里有可直接复制的 import 示例。

    QuantsPlaybook 我只想要信号函数,不想装 Qlib,可以吗?

    可以。这正是这对工具包的价值:SignalMaker/requirements.txt 只有 10 个包(PyEMD、vmdpy、EMD_signal、TA_Lib、statsmodels 等),不含 Qlib;本站实测该清单在本机 Python 3.11.9 上可以解析(允许源码包时),而 Qlib 系案例的依赖会失败。

    QuantsPlaybook 这些信号函数的输入是什么格式?

    都是宽表 DataFrame:index 为日期、columns 为标的代码、values 为价格。具体到每个函数:get_alligator_signal / get_macd_signal 要 close;get_ao_indicator_signal 要 high 与 low;QRSCreator 要 low / high 两个宽表;NoiseArea 要分钟级 OHLCV。

    QuantsPlaybook 工具包的代码可以直接用到我的项目里吗?

    技术上可以(都是普通 Python 文件,无编译依赖),但许可状态不明确:仓库没有 LICENSE 文件,GitHub 的 license 字段为空,只有 3 个案例 README 写了「仅供学习和研究使用」。本站因此只做「读法与用途」介绍,不提供代码镜像;引用时请注明来源仓库与 commit,商用前请自行确认授权。

    QuantsPlaybook SignalMaker 的参数(如 fit(18, 600))是什么意思?

    README 只给了调用示例,没有逐一解释每个数字的含义。从可读信息看,QRSCreator(low_df, high_df).fit(18, 600) 的两个参数与回归/标准化窗口有关,NoiseArea(...).fit(14) 与噪声区间的平滑窗口有关。精确含义请对照 qrs.py / noise_area.py 源码或对应案例 Notebook——本站未运行,不做推测性断言。

    QuantsPlaybook 这两个工具包有版本号吗?

    没有。仓库 0 tag、0 release,工具包也没有单独发布到 PyPI,因此不存在「SignalMaker v1.0」这类版本号。引用时可靠的定位方式是 commit(本站固定在 1e4a2310)。

    QuantsPlaybook 工具包和案例哪个先看?

    建议先看工具包:代码量小、依赖少、README 有示例,能在几十分钟内跑出一个信号序列,建立对整个项目代码风格的直观感受。之后再按择时案例册或因子案例册挑一个完整案例,去理解「信号 → 组合 → 回测 → 报告」的全链路。

    QuantsPlaybook 的代码能合法复用吗?下一步看许可

    许可与再复用页给出实测事实——仓库没有 LICENSE 文件、3 处「仅供学习研究」声明、83 份券商研报 PDF 的版权归属,以及合规引用方式。