Skip to content

Repository files navigation

StockSun

StockSun 是本地优先、可复现的上交所 A 股研究平台。当前版本能够每天同步 raw/qfq 行情,在本地使用 Polars 多线程计算 94 列标准化 K 线特征,并发运行五类 版本化策略,执行无未来泄漏的滚动回测,把原始策略分数校准为带质量门槛的 概率,并采集新闻、公告和散户热度,通过可选的大模型结构化分析联动候选排序,最后 发布可解释、可排序、带完整血缘的候选快照。

已实现

  • AKShare 主数据源与 Sina 日线自动回退,覆盖上证主板和科创板;
  • 内容寻址 Parquet 数据湖、版本 manifest、DuckDB 当前视图和完整运行血缘;
  • 趋势突破、动量、均线排列、量价、波动收缩五类策略;
  • 未来 5 个交易日标签、embargo 时间切分、次日开盘/第五日收盘成交模拟;
  • Platt 与 Isotonic 样本外比较,Brier/BSS/ECE 发布门槛;
  • 概率、策略一致性、流动性和市场环境融合评分,以及波动/回撤/跳空风险扣分;
  • 候选覆盖率门禁、拒绝原因、Top-N 版本快照和 DuckDB 当前视图;
  • 新闻/公告清洗去重、实体关联、as-of 防未来泄漏和散户拥挤度;
  • OpenAI Responses API 严格 JSON Schema、提示词注入防护、缓存、预算与失败降级;
  • 消息可用时使用完整五维排名,个股缺失采用中性分并扣分,全局不可用时保留技术榜;
  • Streamlit 只读研究控制台,支持候选筛选、个股 K 线、消息与运行血缘审计;
  • 各阶段独立 CLI,以及支持断点恢复和并发参数的一键每日流水线。

安装与验证

要求 Python 3.12 和 uv

uv python install 3.12
uv sync --frozen --all-groups
uv run stocksun init --config config/default.yaml
uv run stocksun doctor --config config/default.yaml

启动本地前端:

uv run stocksun web run \
  --host 127.0.0.1 \
  --port 8501 \
  --config config/default.yaml

浏览器打开 http://127.0.0.1:8501。控制台只读访问 DuckDB,不会触发数据更新、 修改策略或执行交易。

完整离线质量门禁:

uv run ruff check .
uv run mypy src/stocksun
uv run pytest --cov=stocksun --cov-report=term-missing --cov-fail-under=80

全上交所生产运行

--symbols 留空时,同步目标交易日可见的全部上交所主板 A 股和科创板股票。行情 网络请求使用 runtime.io_concurrency 并发抓取,Parquet、manifest 和 DuckDB 仍由 协调器单写:

uv run stocksun sync \
  --target-date 2026-08-05 \
  --config config/default.yaml

uv run stocksun pipeline run \
  --from-stage features \
  --market-run-id latest \
  --config config/default.yaml \
  --strategy-config config/strategies.yaml \
  --cpu-workers 4

全市场股票都会进入特征、策略、回测、校准和候选过滤。默认 ranking.top_n=100 只限制最终发布到候选榜的数量,不限制上游计算范围。首次从 2015 年回补耗时较长;后续运行复用父版本,只增量更新 raw 并刷新最近 250 个交易 会话的 qfq。

候选快照会固化本次运行的五维有效权重、加权贡献、六项风险扣分、扣分前得分和 最终得分。候选榜与个股页均可按 最终分 = clamp(维度贡献合计 - 风险扣分, 0, 100) 复算,不会使用当前配置猜测历史 快照。

两只股票快速验证(烟测)

uv run stocksun sync \
  --target-date 2026-08-03 \
  --symbols 600000,601398 \
  --config config/default.yaml

uv run stocksun pipeline run \
  --from-stage features \
  --market-run-id latest \
  --symbols 600000,601398 \
  --config config/default.yaml \
  --strategy-config config/strategies.yaml \
  --cpu-workers 4

该命令只用于快速验证安装和端到端连通性,不能代表全市场选股结果。

也可以分别运行:

uv run stocksun features run --market-run-id latest
uv run stocksun strategies run --feature-run-id latest
uv run stocksun backtest run --strategy-run-id latest
uv run stocksun calibrate run --backtest-run-id latest
uv run stocksun news run --target-date 2026-08-03 --market-run-id latest
uv run stocksun select run \
  --calibration-run-id latest \
  --message-run-id latest

某一步失败后可以从该阶段恢复,并明确传入上游 UUID。例如:

uv run stocksun pipeline run \
  --from-stage calibration \
  --backtest-run-id <backtest-uuid>

raw_score 是策略规则的 0–1 原始匹配分,不是成功概率。只有样本量、正负样本、 BSS 和 ECE 全部通过门槛后,probability 才会非空;不通过时系统保留原始分数并 写明机器可读降级原因。

消息源、模型配置、降级规则、DuckDB 查询和烟测记录见 阶段 5 运维指南。技术排名和性能数据见 阶段 4 运维指南。阶段 3 的回测与校准细节见 阶段 3 运维指南。前端使用和页面说明见 阶段 6 运维指南

未配置完整的 STOCKSUN_LLM_BASE_URLSTOCKSUN_LLM_MODELSTOCKSUN_LLM_API_KEY 时,消息仍会留档,但候选榜明确标记为 technical_only, 不会用中性新闻分伪装模型成功。项目仅用于研究,不构成投资建议,也不会自动交易。

本地 data/、Parquet、DuckDB、日志和真实 .env 均被 Git 忽略。当前股票范围 基于同步时可见名单,历史退市股票可能不完整,所有下游 manifest 都传播 survivorship_bias 标记。

About

Market Trend and Stock Picker

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages