单只股票刷新

单只股票刷新

从 Tushare 拉取指定股票最新数据,完整执行 ODS → DWS 全流程计算

📡
Tushare 拉取
🗃️
写入 ODS
⚙️
计算 DWS
更新摘要
🔬
ODS + DWS 刷新
拉取财务报表、每日基础数据并计算全部 DWS 指标
日常
📊
PE/PB 百分位更新
拉取历史估值序列,计算该股票在2006年以来(覆盖两轮牛熊)的百分位
增量
当前 PE-TTM
PE 历史百分位
当前 PB
PB 历史百分位
🏷️
研究状态设置
标记公司的研究进度
管理
📋
批量刷新多只股票
后台线程处理,支持进度查询
日常

批量全量刷新

对全量上市公司执行 ODS 数据更新和 DWS 指标计算

⚠️ DWS 全量计算需独占 DuckDB 写锁,运行期间无法访问 Flask API 数据接口。建议停服务后跑离线脚本,或在业务低峰期用在线 API 触发(在线 API 内部使用线程但仍有锁竞争风险)。
⚙️
DWS 全量批量计算
所有上市公司 ODS → DWS 全流程(ICROI / 成长性 / 利润率 / 融资分析)
慎用
推荐停服务后在终端运行离线脚本,更稳定。
# 切到项目目录 cd C:\Users\123\WorkBuddy\2026-05-05-task-1 python batch_processor.py --force
或:在线 API 触发(有锁竞争风险)
0%
📊
选股摘要表更新
计算 ROIC/ROE/PB/股息率多年均值与市场排名,写入 company_screening_summary
日常
此接口可在线调用,不需要停 Flask。
🔁
PE/PB 百分位全量更新
离线脚本:拉全量股票 2006年以来 历史估值序列,批量写入 stock_valuation_history 并计算百分位
耗时
全量约 2-4 小时,必须停 Flask 后运行(DuckDB 独占锁)。支持断点续传。
# 第一步:拉历史数据(支持 Ctrl+C 断点续传) python build_stock_valuation_history.py # 第二步:批量计算百分位(约5分钟) python calc_pe_pb_percentile.py
🏗️
数据库迁移(一次性)
扩展字段、初始化新表结构
一次性

指数 & 行业 ETF 估值

更新宽基指数(上市以来)和行业 ETF(2015年以来)的 PE/PB 及历史百分位

📈
每日增量更新
宽基用 Tushare index_dailybasic;行业自算(成分股权重 × daily_basic 市值法)
日常
宽基 7 只 + 行业 ETF 13 只 = 共 20 个指数。每日收盘后执行。
📉
上市以来历史回填
拉取宽基指数上市以来历史 PE/PB 序列,一次性写入 index_valuation_history(行业指数从2015年开始)
一次性
回填耗时较长,建议在业务低峰期执行。行业指数历史用价格比例法估算,后续积累真实数据后自动替换。
🔍
指数 PE 诊断
查看某个指数的历史 PE 分布,验证百分位计算是否正确
诊断

PE/PB 历史百分位

管理个股历史估值序列,查看百分位计算覆盖情况

📥
单股历史数据拉取 & 计算
从 Tushare 拉取该股票历史 PE/PB 月度数据,计算2006年以来百分位
增量
当前 PE-TTM
PE 历史百分位
当前 PB
PB 历史百分位
📑
覆盖情况统计
查看 stock_valuation_history 表中有多少股票已有历史数据
诊断
全量离线说明
需要停 Flask 才能运行(DuckDB 独占锁),预计 2-4 小时
慎用
第一步:拉取历史数据(断点续传)
python build_stock_valuation_history.py
第二步:批量计算百分位(约5分钟)
python calc_pe_pb_percentile.py
说明:全量覆盖约 5500 只股票,每只 120 个月度数据点 ≈ 66 万行。第一步耗时主要受 Tushare API 限速影响(含自动重试和断点续传);第二步纯本地计算,极快。

定时任务配置

通过 Windows 任务计划程序配置自动化运行

📋
推荐定时计划
每日自动运行的任务清单
任务时间命令 / 接口需停服务
指数估值更新 16:10 POST /api/admin/update-index-valuation
选股摘要更新 16:30 POST /api/admin/update-screening-summary
DWS 全量计算 02:00 batch_processor.py --force
PE/PB 百分位(月度) 每月1日 build_stock_valuation_history.py + calc_pe_pb_percentile.py
🗓️
Windows 任务计划 — 快速配置
复制命令后在管理员权限 PowerShell 中运行
① 指数估值更新(每日 16:10)
python setup_scheduler.py install --task-name IndexValuation --script scripts/update_index_valuation.py --time 16:10
② 选股摘要(每日 16:30)
python setup_scheduler.py install --task-name Screening_Daily --script scripts/update_screening_summary.py --time 16:30
③ DWS 全量计算(每日 02:00)
python setup_scheduler.py install --time 02:00
💡
数据管道架构说明
日内实时(可在线调用)
✅ 单只股票 ODS+DWS 刷新
✅ 指数估值每日更新
✅ 选股摘要表更新
✅ 单只 PE/PB 百分位计算
离线批量(需停 Flask)
⚠️ DWS 全量重算(batch_processor.py)
⚠️ 历史 PE/PB 拉取(build_stock_valuation_history.py)
⚠️ PE/PB 百分位全量计算(calc_pe_pb_percentile.py)
数据流向
Tushare API
  ↓ ODS (income_statements, balance_sheets…)
  ↓ DWS (dws_growth_annual, dws_financing…)
  ↓ company_screening_summary
  ↓ stock_valuation_history → PE/PB 百分位

数据库概览

查看所有表的行数,快速诊断数据完整性

点击刷新按钮查询