Skip to content

新增基金/ETF 历史回撤水下曲线图 fund_drawdown.py #41

@hilr

Description

@hilr

背景

需要一个通用的基金/ETF 历史回撤可视化工具,直观展示某只标的自上市以来「水下曲线」(drawdown)的演化,并标注历次大幅回撤的时点与幅度。

改动

新建 plots/fund_drawdown.py

  • 读取 fund_quote_adjusted/{code}.parquet(前复权,避免分红制造假回撤)
  • 峰值 = 截至当日为止的历史最高价(cummax(high)
  • 回撤 = 当日最低价 / 历史最高价 − 1
  • 上下两栏:
    • 上栏:前复权收盘价(蓝线)+ 历史最高价线(灰虚线,单调递增)
    • 下栏:每日回撤水下曲线(红色填充),标注深于 −15% 的谷值(日期 + 幅度),最大回撤标 (max)
  • 用历史新高分段算法找各段最深谷值,避免相邻新高把同一段回撤切碎
  • --code 可换任意基金/ETF(默认 512890),--adjusted-dir / --output 可覆盖路径
  • 中文基金名因系统无中文字体不写入图标题(只用 code),避免 tofu

用法

uv run python plots/fund_drawdown.py                       # 默认 512890
uv run python plots/fund_drawdown.py --code 510300         # 沪深300ETF
uv run python plots/fund_drawdown.py --code 159915 --output /tmp/dd.png

验证(512890 红利LV)

  • 2019-01-18 ~ 2026-06-15,1792 个交易日
  • 最大回撤 −18.27%(2020-03-19 新冠)
  • 标注谷值:2020-03-19 −18.27%、2021-11-10 −17.38%、2022-03-16 −16.89%、2025-04-07 −15.97%

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions