本项目是一个功能强大的ETF投资组合优化系统,专为个人投资者设计,提供专业的投资决策支持。系统通过量化分析帮助用户构建最优投资组合,实现风险调整收益最大化。
- 多目标优化 - 支持夏普比率、风险平价、稳定性等多种优化目标
- 高级风险管理 - VaR/CVaR计算、压力测试、集中度分析
- 动态再平衡 - 智能再平衡策略和交易成本优化
- 实用投资工具 - 投资增长预测、定投计算、业绩归因
- 综合分析报告 - 一站式投资决策支持
# 创建conda环境
conda create -n sharpetf python=3.9 -y
conda activate sharpetf
# 安装依赖
pip install -r requirements.txt- 复制配置文件:
cp config.json.example config.json- 编辑
config.json:
{
"tushare_token": "your_tushare_token_here",
"etf_codes": ["159632.SZ", "159670.SZ", "159770.SZ", "159995.SZ", "159871.SZ", "510210.SH"],
"start_date": "20240101",
"end_date": "20241201",
"risk_free_rate": 0.02,
"trading_days": 252,
"output_dir": "outputs"
}python main.py系统提供四种优化策略:
- 目标:最大化风险调整后收益
- 适用:追求高收益的投资策略
- 约束:权重和为1,不允许做空
- 目标:等风险贡献分散投资
- 适用:稳健型投资策略
- 特点:降低单一资产风险
- 目标:最大化收益稳定性
- 适用:保守型投资策略
- 权重:稳定性权重30% + 夏普比率70%
- 目标:基于相关性的智能分层
- 适用:复杂投资组合
- 特点:考虑资产间相关性
# 计算不同置信度的风险价值
var_95 = risk_manager.calculate_var(returns, 0.95, 'historical')
cvar_95 = risk_manager.calculate_cvar(returns, 0.95, 'historical')- 市场崩盘情景(-30%)
- 温和下跌情景(-15%)
- 闪电崩盘情景(-10%)
- 熊市情景(-40%)
- HHI指数计算
- 有效持仓数量
- 前5大持仓集中度
- 时间触发:定期(月度/季度)
- 阈值触发:权重偏离超过5%
- 波动率触发:组合波动率偏离目标20%
- 最小交易金额限制
- 交易成本计算
- 净收益评估
# 5年期增长预测(100万初始投资)
projection = calculator.project_portfolio_growth(
annual_return=0.12,
annual_volatility=0.15,
years=5
)# 月定投5000元,预期年化收益8%
dca_result = calculator.calculate_dollar_cost_averaging(
monthly_investment=5000,
expected_return=0.08,
expected_volatility=0.12,
years=10
)| 文件名 | 内容描述 |
|---|---|
optimization_results.json |
完整优化结果数据 |
cumulative_returns.png |
累计收益对比图 |
efficient_frontier.png |
有效前沿图 |
portfolio_weights.png |
投资组合权重饼图 |
returns_distribution.png |
收益率分布直方图 |
etf_optimizer.log |
系统运行日志 |
{
"config": "配置信息",
"optimization_results": "优化结果",
"performance_metrics": "绩效指标",
"risk_analysis": "风险分析",
"rebalancing_recommendations": "再平衡建议",
"investment_projection": "投资预测",
"multi_objective_comparison": "多目标比较"
}# 自定义置信度水平
risk_manager = get_advanced_risk_manager([0.90, 0.95, 0.99])
# 调整再平衡参数
rebalancing_engine = get_rebalancing_engine(
transaction_cost=0.002, # 0.2%交易成本
min_trade_amount=5000 # 最小交易5000元
)# 风险约束优化
weights, metrics = optimizer.maximize_sharpe_with_risk_constraint(
annual_mean=mean_returns,
cov_matrix=cov_matrix,
max_volatility=0.12, # 最大波动率12%
max_drawdown=0.15 # 最大回撤15%
)| 风险等级 | 特征 | 建议 |
|---|---|---|
| 低风险 | VaR<2%,HHI<2000 | 适合保守型投资者 |
| 中风险 | VaR<5%,HHI<3500 | 适合平衡型投资者 |
| 高风险 | VaR>5%,HHI>3500 | 适合激进型投资者 |
- 需要再平衡:权重偏离>5%
- 建议立即调整:权重偏离>10%
- 关注市场:权重偏离3-5%
- 均衡配置:单一行业<30%
- 适度集中:单一行业30-50%
- 高度集中:单一行业>50%
- Tushare积分:需要2000+积分访问fund_daily接口
- 历史数据:建议至少2年历史数据
- 数据质量:注意检查异常值和缺失值
- 历史假设:基于历史数据,未来可能不同
- 市场变化:极端市场条件下模型可能失效
- 交易成本:实际交易成本可能高于理论值
- 市场风险:系统性风险无法分散
- 流动性风险:部分ETF可能存在流动性问题
- 跟踪误差:ETF与基准存在跟踪误差
❌ Tushare积分不足!获取 xxx 数据需要2000+积分
解决方案:访问 https://tushare.pro 购买积分
❌ 所有ETF数据获取失败!
解决方案:检查ETF代码格式和网络连接
⚠️ 优化失败: xxx
解决方案:检查数据质量,系统会自动使用备用方案
- 数据缓存:重复运行时使用缓存数据
- 并行计算:多ETF并行获取数据
- 内存管理:大数据集时注意内存使用
查看详细日志:
tail -f etf_optimizer.log设置调试级别:
setup_logging("DEBUG")请提供以下信息:
- 错误日志
- 配置文件(去除token)
- ETF代码列表
- 运行环境信息
- 🔧 统一优化引擎,自动选择CVXPY/SciPy后端
- 🔧 统一量化信号模块,支持简单和高级模式
- 🔧 代码精简优化,提升可维护性
- ✅ 经过完整测试,确保功能稳定
- 🚀 量化信号分析系统
- 🚀 增强投资组合优化
- 🚀 专业HTML报告增强
- ✨ ETF中文名称支持
- ✨ 复杂增长预测系统
- ✨ 相关性分析模块
- ✨ 新增多目标优化引擎
- ✨ 增加高级风险管理模块
- ✨ 实现动态再平衡策略
- ✨ 添加实用投资工具
- 🐛 修复已知问题
- ⚡ 性能优化
- 🎉 初始版本发布
- 📊 基础夏普比率优化
- 📈 有效前沿计算
- 🎨 可视化图表生成
免责声明:本系统仅供学习和研究使用,不构成投资建议。投资有风险,决策需谨慎。