投机倒把 (Speculation)
基于技术面形态识别与 LLM 深度分析的量化选股框架。系统集成了高信噪比的预筛选漏斗与并发处理流水线。
核心特性 (v1.4.0)
- 两阶段并发流水线:
- 阶段 1:技术面初筛 (Technical Scan):基于
TradingPatternScannerv1.4.0,通过六层漏斗(流动性、价格结构、趋势背景、量能质量、生命周期、综合评分)并发扫描标的。 - 阶段 2:AI 深度分析 (AI Analysis):对排序后的 Top 标的进行并发 LLM 分析,自动识别
底部企稳或趋势跟随策略逻辑。批量场景下会按 市场 + 日期 预生成 大盘 AI 简报,同市场当日所有标的共用同一份结论,减少 token 与判断分歧。
- 阶段 1:技术面初筛 (Technical Scan):基于
- 高信噪比过滤:不仅识别形态,更通过多维度技术标准过滤掉僵尸股、妖股及趋势背离标的。
- 多渠道报告存储:支持本地结构化 Markdown/JSON 研报归档以及 Kafka 异步推送对接。
快速入门
1. 环境准备
uv sync
source .venv/bin/activate
2. 技术面扫描 (不走 AI,快速寻找信号)
使用 -s basic 参数仅执行技术面初筛。
# 探测底部反转信号 (BRP)
uv run speculation -l brp -s basic -f data/china/ETF/config_etf.yaml
# 探测趋势跟随信号 (TF)
uv run speculation -l tf -s basic -f data/china/ETF/config_etf.yaml
# 组合扫描 (Combined)
uv run speculation -l combined -s basic -f data/china/ETF/config_etf.yaml
uv run speculation -l combined -s basic -f data/china/ETF/config_etf.yaml -d 2026-05-01
# 量价异动与潜在机会雷达 (Radar)
uv run speculation -l radar -s basic -f data/china/ETF/config_etf.yaml
3. 全自动分析 (技术分析 + AI 研判)
默认模式。系统会筛选出得分最高的标的交付给 AI。
# 运行美股分析
uv run speculation -f data/usa/config_test.yaml
# 运行 A 股 ETF 深度分析
uv run speculation -l combined -f data/china/config_etf_test.yaml
选择器模式说明 (-l 参数)
| 模式 | 名称 | 扫描行为 (mode) | 适用场景 |
|---|---|---|---|
brp |
底部反转 | all (仅限底部反转/等待突破) |
专门识别双底、头肩底、圆弧底等“底部企稳”信号 |
tf |
趋势跟踪 | trend |
专门识别上升通道、旗形、三角形等“趋势跟随”信号 |
combined |
组合模式 | all |
同时探测底部反转、趋势延续及震荡蓄势信号 (默认推荐) |
radar |
机会雷达 | radar |
基于 tp-quant 1.0.4 接口,识别【量化异动】与【潜在机会】标的 |
all |
全量直通 | all |
扫描所有形态,且跳过技术面拦截,直接交付 AI |
策略优先级与打分截断机制
在 combined 或多信号模式下,初筛后的标的按照 “严格分级 + 全局高分优先” 的规则进行打分截断和 AI 交付,优先保证高确定性与高形态质量的标的入选:
- T0(最高优):量化异动、机会雷达、右侧确认、右侧候选
- T1(高优):趋势跟随、等待突破
- T2(中优):底部反转、筑底成熟
- T3(一般):区间震荡、均线压缩
排序逻辑:
- 优先按策略层级升序排列(T0 -> T3)。
- 在同一层级内,按
tp-quant综合形态评分(total_score)降序排列。 - 规则与阈值配置统一维护于
src/speculation/constants.py(单一事实来源),可按需调整策略门槛与优先级。
单只标的 AI 分析
# 同步大盘数据
uv run kdata-market --cn
uv run ai-analyze-stock -s sh.600000 -t 2026-03-31
uv run ai-analyze-stock -s 159825
单独工具
- 单股 AI:
uv run ai-analyze-stock -s sh.600000 -t 2026-03-31(直接对指定标的做深度分析;会先取或生成当日该市场的大盘简报并注入提示词)。 - 大盘简报:
uv run ai-analyze-market -m A -t 2026-03-31(仅生成大盘环境 AI 简报,与单股分析注入的是同一份缓存)。
市场 -m:A(A 股主要指数)、US、HK、ETF(与 A 股大盘同源)。默认若该日该市场的简报文件已存在则跳过 LLM;加 --force 可删缓存后重算。
简报默认落在 <REPORT_DIR>/market_briefs/{MARKET}_{YYYY-MM-DD}.md(与个股报告共用 REPORT_DIR;若设置 K_DATA_CENTER,则为 <K_DATA_CENTER>/report/market_briefs/)。也可通过环境变量 SPECULATION_MARKET_BRIEF_DIR 指定独立目录。
批量执行 (Batch Run)
针对历史回测或定期批量任务,可以使用内置的 shell 脚本按日期范围或时间间隔执行。
# 1. 按日期范围运行,每隔 5 天执行一次
./script/batch_run.sh -s 2026-01-01 -e 2026-05-01 -i 5
# 2. 运行最近 30 天的任务,每周执行一次 (间隔 7 天)
./script/batch_run.sh -n 30 -i 7 -f data/china/etf/config_etf.yaml
# 3. 运行最近 7 天,默认配置 (间隔 5 天)
./script/batch_run.sh -n 7
参数说明:
-s: 开始日期 (YYYY-MM-DD)-e: 结束日期 (YYYY-MM-DD)-n: 最近天数 (与-s/-e二选一)-i: 间隔天数 (默认 5 天)-f: 配置文件路径-l: 选择器模式 (combined,brp,tf,radar,all)
构建与部署
- 普通构建(源码 wheel):
uv run python -m build - 机器码分发构建(Cython):
make build— 在本机(macOS 上即当前架构)生成带macosx_…的 wheel;wheel 内 不含.py,资源文件由packaging/prepare_native_build.py自动扫描(已排除__pycache__/.pyc)。- 在 macOS 上同时出 Linux 多架构:需安装 Docker,然后:
make build-linux-x86_64→ manylinux x86_64(linux/amd64)make build-linux-aarch64→ manylinux aarch64(linux/arm64)make build-all→clean后依次打 本机 + 上述两个 Linux(产物均在dist/)。
- manylinux 内 Python 次版本默认与当前
$(PYTHON)一致,可用MANYLINUX_PY=3.12覆盖。 - Apple Silicon 上打 x86_64 会走模拟,速度较慢属正常。
- 在 macOS 上同时出 Linux 多架构:需安装 Docker,然后:
- 发布到 PyPI:
make publish: 上传dist/下包含的三平台/单平台所有 wheel 到 PyPI。make publish-all: 自动执行make build-all依次编译本机 macOS + Linux x86_64 + Linux aarch64 三平台 wheel,并一键上传至 PyPI(需环境变量TOKEN或UV_PUBLISH_TOKEN)。
- 平台与标签:产物为
cp3xx-cp3xx-<platform>,与 OS + CPU + Python ABI 绑定;不能用单个none-anywheel 替代多平台构建。 - 安全与形态说明:
.pyc:易被反编译,保护弱。- Cython / C 扩展(本
make build):分发 机器码,逆向成本通常比.pyc高得多,但 仍可被逆向,不是绝对安全;且与 OS + CPU + Python ABI 绑定,与py3-none-any式纯 Python wheel 不同。
Metadata
Release files for sp-quant 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sp_quant-1.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| sp_quant-1.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 | Details |
| sp_quant-1.2.0-cp312-cp312-macosx_11_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64 | Details |
Total release size: 3.9 MB
Release files / sp_quant-1.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | sp_quant-1.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
08ee40000a6911667acc876c3aab63ad0190a46181c1996896d996cb121d0bb2
|
|
BLAKE2b-256 checksum How to use checksums |
5fc08b84b33e6e3390c7463213b3b8688ac20aef74f0bc29897581674f8921d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.15 {"installer":{"name":"uv","version":"0.9.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / sp_quant-1.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | sp_quant-1.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
d75245842ac8633822f1f086f63842c26b46f20396d34200a3fe8c73322dc5c6
|
|
BLAKE2b-256 checksum How to use checksums |
6b1777c1771566a29a3c9fbcf071d5adc870bcc6a912d48087e4d33c35f37761
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.15 {"installer":{"name":"uv","version":"0.9.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / sp_quant-1.2.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | sp_quant-1.2.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
bf0a39860eb55ff587a313ff5d55f309f434ae8ffb568167b886a9c4a8fd7f8f
|
|
BLAKE2b-256 checksum How to use checksums |
8691459027fa3cea361afc4ada1547cf1406ae2ab3e9552e4afb5e5d9e77b681
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.15 {"installer":{"name":"uv","version":"0.9.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|