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 才能生成