返回 Skill 列表
extension
分类: 数据与分析需要 API Key

market-report

基于 Tushare Pro 的市场涨跌幅统计 HTML 看板

person作者: user_186b4ea5hubcommunity

市场涨跌幅统计看板

概述

基于 Tushare Pro API 获取金融市场数据,生成纯 CSS 离线 HTML 看板。 覆盖三大板块:全球宏观、国内股票指数、申万一级行业。 支持五个周期切换:本周以来(本周一~最新日)/ 近一月 / 近三月 / 近六月 / 今年以来。

触发条件

用户提到以下关键词时使用此技能:

  • "统计涨跌幅" / "涨跌幅统计"
  • "生成市场看板" / "生成 HTML 报告"
  • "拉取全球宏观" / "申万一级行业"
  • "查指数涨跌幅" / "看下最近"
  • 提供 Tushare token 并要求取数展示

前置条件

  1. 用户提供 Tushare Pro token(字符串)
  2. 本技能目录下的 scripts/market_report.py 是主脚本
  3. Python venv 位于 ~/.workbuddy/binaries/python/envs/default

运行步骤

1. 拉取数据 & 生成 HTML

运行主脚本(会在工作目录生成 market_report.html):

~/.workbuddy/binaries/python/envs/default/Scripts/python.exe \
  SKILL_DIR/scripts/market_report.py --token TUSHARE_TOKEN --output output-dir/market_report.html

参数说明:

  • --token:Tushare Pro token(必填)
  • --output:输出 HTML 文件路径(默认工作目录下的 market_report.html

2. 展示结果

present_files 将生成的 market_report.html 呈现给用户。

输出格式

  • 纯 HTML/CSS,无 JavaScript、无外部 CDN 依赖
  • 三块独立面板,每块顶部有 5 个周期切换标签(纯 CSS :checked ~ 实现)
  • 标签下方显示「当前显示:XXX(YYYY-MM-DD ~ YYYY-MM-DD)」——每个周期标签旁附带实际统计区间的起止日期,取自上证指数(000001.SH,国内品种中数据最及时)的实际交易日
  • 红涨绿跌(中国 A 股习惯)

板块一:全球宏观(14 项)

| 品种 | Tushare 接口 | |------|-------------| | 标普500 / 纳斯达克 | pro.index_global(ts_code='SPX'/'IXIC') | | 恒生指数 / 恒生科技 | pro.index_global(ts_code='HSI'/'HKTECH') | | 黄金 | pro.fut_daily(ts_code='AU.SHF') | | 10年期国债 / 30年期国债 | pro.fut_daily(ts_code='T.CFX'/'TL0.CFX') | | 上证指数 | pro.index_daily(ts_code='000001.SH') | | 南华系列(商品/农产品/能化/黑色/有色金属/贵金属) | pro.index_daily(ts_code='NH*.NH') |

板块二:国内股票(9 项)

| 指数 | Tushare code | |------|-------------| | 上证50 | 000016.SH | | 沪深300 | 000300.SH | | 中证500 / 1000 / 2000 | 000905.SH / 000852.SH / 932202.CSI | | 中证A500 | 000510.CSI | | 创业板指 | 399006.SZ | | 科创50 | 000688.SH | | 上证红利 | 000015.SH |

板块三:申万一级行业(SW2021,31 个)

pro.index_classify(src='SW2021', level='L1') 获取 31 个行业代码, 再用 pro.index_daily() 取日线计算涨跌幅。

图表样式规范

全球宏观 & 国内股票 → 垂直柱状图

  • 0 轴水平居中,红涨绿跌
  • 数值标在柱顶(正)/ 柱底(负)
  • 指数名加粗并旋转 45°
  • CSS:flex 布局,bar 在 .track 内绝对定位

申万一级行业 → 水平条形图

  • 0 轴垂直居中
  • 涨(红):从 0 轴向右延伸(left:50%;width:X%
  • 跌(绿):从 0 轴向左延伸(left:calc(50% - X%);width:X%
  • 数值贴在条形末端:正值条形右端外侧(left:calc(50%+宽度+4px)),负值条形左端外侧(right:calc(50%+宽度+4px)
  • 布局:flex [name(92px) | track(1fr)],条形和数值都在 track 内绝对定位
  • 行业名加粗,按涨跌幅从高到低排序
  • 底部 X 轴刻度:0 居中,步长 5%(范围不超过 25%)或 10%(范围超过 25%)

周期切换

  • 五个周期及其交易日回看数: | 周期 | 代码参数 | 含义 | 统计区间 | |------|---------|------|---------| | 本周以来 | 'week' | 当前日历周(本周一~最新交易日),取本周第一个交易日为基期 | 本周一 ~ 最新交易日 | | 近一月 | 21 | 最近 21 个交易日的涨跌幅(约 1 个月) | 最近第22个交易日 ~ 最新交易日 | | 近三月 | 63 | 最近 63 个交易日的涨跌幅(约 3 个月) | 最近第64个交易日 ~ 最新交易日 | | 近六月 | '6m' | 6个自然月前至最新交易日的涨跌幅,取 ≥ 6个月前的第一个交易日为基期 | 6个月前首日 ~ 最新交易日 | | 今年以来 | 'ytd' | 当年第一个交易日至今的涨跌幅 | 当年首日 ~ 最新交易日 |
  • 用 CSS radio 按钮 :checked ~ 选择器实现面板切换
  • 选中按钮高亮,标签下方显示「当前显示:XXX(YYYY-MM-DD ~ YYYY-MM-DD)」——每个周期标签下方均附带实际统计区间的起止日期,取自宏观板块第一条数据序列的实际交易日。

关键确认

  • index_globalfut_daily 接口在 Tushare 中已确认可用(用户 token 已验证)
  • 南华指数用 .NH 后缀通过 index_daily 获取
  • 申万 2021 版 31 行业用 index_classify(src='SW2021', level='L1')
  • 不可用接口index_conszz500hs300sz50sw_industry(旧名已废弃)