ETF多维对比工具Skill fund-risk-analyzer

基于净值CSV数据,自动计算并对比多只ETF或基金的年化收益率、最大回撤、夏普比率,并生成相关性矩阵,辅助投资决策。

风险管理 0 次安装 2 次浏览 更新于 7/8/2026

name: fund-risk-analyzer description: “ETF多维对比工具:基于用户提供的净值CSV数据,自动计算并对比多只ETF或基金的年化收益率、最大回撤、夏普比率,并生成相关性矩阵图表。当用户需要对比基金风险收益、计算年化收益/最大回撤/夏普比率、进行相关性分析,或提到关键词如ETF对比、净值分析、风险收益、波动率、Sharpe Ratio、max drawdown时触发。” license: MIT

ETF 筛选器 / ETF 多维对比工具

基于用户提供的净值(NAV)数据,对多只 ETF 进行多维度风险收益对比分析,自动计算年化收益率、最大回撤、夏普比率,并生成相关性矩阵。

快速开始

基础对比

python scripts/etf_screener.py --input nav_data.csv

自定义无风险利率 + CSV 导出

python scripts/etf_screener.py --input nav_data.csv --risk-free 0.03 --output report.csv

JSON 输出(便于程序化处理)

python scripts/etf_screener.py --input nav_data.csv --json

输入数据格式

CSV 文件,第一列为日期,后续列为各 ETF 的净值:

date,沪深300ETF,中证500ETF,纳指ETF
2023-01-03,1.0000,1.0000,1.0000
2023-01-04,1.0050,0.9980,1.0020
2023-01-05,1.0120,1.0010,1.0080
...
  • 日期列名不限,格式不限(仅用于标注区间)
  • ETF 列名即为对比报告中的名称
  • 缺失值用空白或 NaN 表示,会自动跳过

计算说明

年化收益率 (Annualized Return)

基于首尾净值计算总收益,再按交易日数年化:

年化收益率 = (期末净值 / 期初净值) ^ (每年交易日数 / 持有交易日数) - 1

最大回撤 (Max Drawdown)

净值序列中从峰值到谷底的最大跌幅:

最大回撤 = max( (峰值 - 谷底) / 峰值 )

夏普比率 (Sharpe Ratio)

风险调整后收益指标:

夏普比率 = (年化收益率 - 无风险利率) / 年化波动率

年化波动率由日收益率标准差乘以 √(每年交易日数) 得出。

相关性矩阵 (Correlation Matrix)

基于日收益率计算 Pearson 相关系数,衡量 ETF 间的联动程度。相关系数接近 1 表示高度正相关,接近 0 表示不相关,接近 -1 表示负相关。

参数说明

参数 必填 默认值 说明
--input / -i - 净值 CSV 文件路径
--risk-free / -rf 0.02 年化无风险利率(如 0.03 表示 3%)
--trading-days 252 每年交易日数(A 股 252,美股 252)
--output / -o - 输出文件路径(.csv 或 .json)
--json false 以 JSON 格式输出到 stdout

使用场景

  • 对比多只 ETF 的风险收益特征,辅助资产配置决策
  • 分析 ETF 间的相关性,构建低相关的投资组合
  • 评估基金经理表现(夏普比率越高越好)
  • 回测不同资产在特定时间段的表现

注意事项

  • 本工具使用纯 Python 标准库,无需安装额外依赖
  • 净值数据需要足够的时间跨度(建议至少 60 个交易日)才能获得有意义的统计指标
  • 夏普比率受无风险利率假设影响,请根据实际市场环境调整 --risk-free 参数
  • 相关性矩阵需要至少 2 只 ETF 才能生成