自动抓取全部31个申万一级行业指数历史数据,生成统计报告。
!pip install akshare openpyxl -q
方式一:命令行(适合快速导出 CSV)
python scripts/fetch_sw_index.py --start 2023-01-01 --output daily.csv --stats stats.csv
方式二:Python 直接调用(适合生成 Excel 报告)
import sys
sys.path.insert(0, "scripts")
from fetch_sw_index import fetch_all, compute_stats
# end_date 自动取今天,无需手动指定
df = fetch_all(start_date="2023-01-01", period="day")
stats = compute_stats(df)
print(stats)
import sys, pandas as pd, openpyxl
sys.path.insert(0, "scripts")
from fetch_sw_index import fetch_all, compute_stats
df = fetch_all(start_date="2023-01-01", period="day")
stats = compute_stats(df)
# 导出 CSV
df.to_csv("sw31_daily.csv", index=False, encoding="utf-8-sig")
stats.to_csv("sw31_stats.csv", index=False, encoding="utf-8-sig")
Excel 报告建议包含以下 Sheet:
风格:A 股惯例(红涨绿跌),主色调 #1F3864 深蓝。
| 参数 | 默认值 | 说明 |
|---|---|---|
| ------ | -------- | ------ |
| start_date | "2023-01-01" | 起始日期(包含) |
| end_date | 今天(自动) | 结束日期(包含),不填则自动取当天 |
| period | "day" | 频率:day 日线 / week 周线 / month 月线 |
| 字段 | 说明 |
|---|---|
| ------ | ------ |
| code | 指数代码 |
| name | 行业名称 |
| start_date / end_date | 数据区间 |
| start_close / end_close | 期初 / 期末点位 |
| total_return_pct | 区间收益率(%) |
| high / high_date | 区间最高点及日期 |
| low / low_date | 区间最低点及日期 |
| ann_volatility_pct | 年化波动率(%) |
| max_drawdown_pct / max_dd_date | 最大回撤及其发生日期 |
| sharpe_ratio | 夏普比率(无风险利率默认 2%) |
详见 references/sw_index_codes.md,共31个申万一级行业(2021版)。
共 1 个版本