投机倒把 (Speculation)
基于技术面形态识别与 LLM 深度分析的量化选股框架。系统集成了高信噪比的预筛选漏斗与并发处理流水线。
核心特性 (v1.4.0)
- 两阶段并发流水线:
- 阶段 1:技术面初筛 (Technical Scan):基于
TradingPatternScannerv1.4.0,通过六层漏斗(流动性、价格结构、趋势背景、量能质量、生命周期、综合评分)并发扫描标的。 - 阶段 2:AI 深度分析 (AI Analysis):对排序后的 Top 标的进行并发 LLM 分析,自动识别
底部企稳或趋势跟随策略逻辑。批量场景下会按 市场 + 日期 预生成 大盘 AI 简报,同市场当日所有标的共用同一份结论,减少 token 与判断分歧。
- 阶段 1:技术面初筛 (Technical Scan):基于
- 高信噪比过滤:不仅识别形态,更通过多维度技术标准过滤掉僵尸股、妖股及趋势背离标的。
- RAG 知识增强:支持 Redis 存储历史分析报告,AI 在分析时会自动参考该标的的往期研判。
快速入门
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 分析 RAG(Redis Memory)
AI 分析支持 RAG:每次分析完成后将报告和总结存入 Redis,下次分析同一只股票时自动注入历史记录作为参考。
# 需启动 Redis,默认 redis://127.0.0.1:6379/0
export REDIS_URL=redis://127.0.0.1:6379/0
# 同步下大盘数据
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 不同。
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sp_quant-1.0.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: sp_quant-1.0.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb27e76be7537af1570bc5a2402303c815f8cb33203837ccfb2529f2a1ed5af9
|
|
| MD5 |
bec3a904fff98b2bcddd96f717adc5dd
|
|
| BLAKE2b-256 |
112a9c295bb8c2b10f7ee3b3d13aa6c59a6ef953a67c535cfeba29b6bf12ffc6
|
File details
Details for the file sp_quant-1.0.6-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: sp_quant-1.0.6-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
febb935b0801b10886bcb756156190de73d9c811923e4c58ca3670e0277f989d
|
|
| MD5 |
ff68e8dce93e1327b5d32f37bd80d168
|
|
| BLAKE2b-256 |
a53613cc69a152ea06e864c0e77252cac76037ad891a22540e1e0e6ed409cc29
|
File details
Details for the file sp_quant-1.0.6-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: sp_quant-1.0.6-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73e575091dee683071ad77691e2a45361a84ffa360025a85d616cc82da3002e6
|
|
| MD5 |
62d25020af67ba13bc716de39eca4bb5
|
|
| BLAKE2b-256 |
64ded46455b78af10bf1126815963fd44cbb8edfcc3b55d7a5bb0214e74cd6fd
|