这是一个基于Streamlit开发的综合性ETF回测与分析工具,支持组合回测、定投回测、动量策略、技术指标分析、时间周期分析等多种功能。所有图表均采用Plotly动态交互式设计,提供专业级的投资分析体验。
- 组合回测:支持多ETF组合的历史回测,可自定义权重,并可保存/加载自定义组合(保存于
portfolios.json) - 定投回测:支持ETF定投策略的回测,可设置每月定投日和金额
- 有效前沿分析:支持多ETF的蒙特卡洛模拟,展示最优风险收益组合、最小方差组合、等权重组合,并可保存/加载前沿分析组合(保存于
frontier_portfolios.json)
- 动量策略:基于动量和均线的大类资产轮动策略,自动推荐持仓,支持自动计算,包含趋势图、因子分析、BIAS超买超卖分析
- 轮动回测:多ETF动量轮动策略,支持参数自定义和历史回测
- 网格策略回测:网格交易策略回测,支持参数自定义和收益分析
- 极值分析:分析错过涨幅最多的N天对总收益的影响,量化择时的重要性
- 黑色星期四效应分析:验证周内各交易日的涨跌趋势,分析周四效应是否存在
- 周度涨跌分析:分析每月各周的涨跌规律,识别最容易上涨和下跌的周次,支持动态图表
- 月度胜率分析:分析ETF各月份的胜率和平均收益,挖掘月度投资规律,支持动态图表
- 月末测量回测:月末效应分析,验证月末投资策略的有效性
- 指定ETF月均涨跌幅分析:分析指定ETF近3/5/10年各月平均涨跌幅,挖掘季节性规律
- 场内基金筛选:按年化收益率、成立年限等条件筛选场内基金
- 红利基金筛选:场内红利基金筛选,支持年化收益率、成立年限等条件
- 开放式基金排行筛选:按近3年年化收益率、成立时间等筛选开放式基金
- 开放式基金分析(含排行筛选):开放式基金实时数据分析,包含净值走势、业绩对比、风险分析、排行榜筛选等多维度可视化
- 基金溢价监控:QDII/LOF/ETF等基金T-1日溢价率监控,支持阈值筛选
- ETF对比分析:全面对比分析ETF产品的收益、风险、流动性等多维度表现
- 常见技术指标回测:移动平均线、RSI、MACD等技术指标回测分析
- 指数相对涨幅分析:分析主要指数相对涨幅,识别市场强弱变化
- 市场风格分析:分析市场风格轮动,识别成长/价值风格切换
- 标准普尔配置:标普500指数相关ETF配置策略分析
- AI智能策略建议:基于AI分析的ETF投资策略建议,优先推荐自选ETF
- 永久组合回测:经典永久组合策略回测,包含黄金、股票、债券、现金四大类资产
- 永久组合对比:多种永久组合版本收益、回撤、波动等指标对比
- 投资大师理念:纳瓦尔、芒格、巴菲特等投资理念与经典语录
- 财富自由计算器:4%法则财富自由目标测算,支持储蓄率、收益率等参数
- AI助手与API密钥配置:配置AI助手功能和相关API密钥
- 动态图表:所有图表已升级为Plotly交互式图表,支持缩放、悬停、图例交互
- 颜色规范:统一使用红色表示上涨,绿色表示下跌(符合中国股市习惯)
- 响应式设计:支持不同屏幕尺寸,图表自适应容器宽度
- BIAS分析:动量策略页面新增超买超卖分析,支持动态阈值计算
- 因子分析:动量策略页面新增相关性分析和风险指标对比
- 趋势图表:动量策略页面新增近一年走势趋势图和等权配置收益曲线
- 周度分析:新增周度涨跌分析页面,分析每月各周投资规律
- 月度分析:月度胜率分析页面升级为动态图表
- 缓存优化:智能缓存机制,提高数据获取效率
- 错误处理:完善的错误处理和用户提示
- 数据验证:增强的数据验证和边界检查
├── app.py # 主应用入口
├── data.py # 数据获取相关函数
├── dca.py # 定投回测相关函数
├── metrics.py # 性能指标计算
├── portfolio.py # 组合回测相关函数
├── utils.py # 工具函数
├── ai_utils.py # AI助手相关功能
├── efficient_frontier.py # 有效前沿分析
├── frontier_config.py # 前沿分析配置
├── pages/ # 功能页面
│ ├── 1_组合回测.py # 组合回测页面
│ ├── 2_定投回测.py # 定投回测页面
│ ├── 3_有效前沿分析.py # 有效前沿分析页面
│ ├── 4_动量策略.py # 动量策略页面(含BIAS分析、因子分析)
│ ├── 5_ETF近20日涨幅排行.py # ETF涨幅排行
│ ├── 6_指定ETF月均涨跌幅分析.py # 月度涨跌幅分析
│ ├── 7_开放式基金排行筛选.py # 开放式基金筛选
│ ├── 8_基金溢价监控.py # 基金溢价监控
│ ├── 9_财富自由计算器.py # 财富自由计算
│ ├── 10_场内基金筛选.py # 场内基金筛选
│ ├── 11_AI智能策略建议.py # AI策略建议
│ ├── 12_常见技术指标回测.py # 技术指标回测
│ ├── 13_网格策略回测.py # 网格策略回测
│ ├── 14_月末测量回测.py # 月末效应分析
│ ├── 15_周度涨跌分析.py # 周度涨跌分析(动态图表)
│ ├── 16_市场风格.py # 市场风格分析
│ ├── 17_极值分析.py # 极值分析
│ ├── 18_black_thursday_analysis.py # 黑色星期四效应分析
│ ├── 19_月度胜率分析.py # 月度胜率分析(动态图表)
│ ├── 20_指数相对涨幅分析.py # 指数相对涨幅分析
│ ├── 21_ETF对比分析.py # ETF对比分析
│ └── 99_AI助手与API密钥配置.py # AI配置页面
├── config/ # 配置文件
│ ├── favorite_etfs.json # 收藏的ETF列表
│ └── wealth_freedom_saved.json # 财富自由计算器保存数据
├── etf_cache/ # ETF数据缓存目录
├── data_cache/ # 数据缓存目录
├── cache/ # 通用缓存目录
├── portfolios.json # 保存的组合配置
├── frontier_portfolios.json # 保存的前沿分析配置
└── requirements.txt # 依赖包列表
- Python 3.8+
- Streamlit 1.28+
- 其他依赖见
requirements.txt
- 克隆项目:
git clone [项目地址]
cd streametf- 安装依赖包:
pip install -r requirements.txt- 运行应用:
streamlit run app.py- 在浏览器中打开:
http://localhost:8501
- 功能:多ETF动量轮动策略,包含趋势图、因子分析、BIAS超买超卖分析
- 特色:支持动态阈值计算,智能推荐持仓,丰富的可视化分析
- 功能:分析每月各周投资规律,识别最佳投资时机
- 特色:动态图表,支持交互式分析,数据导出功能
- 功能:分析ETF各月份胜率和收益规律
- 特色:动态图表,多维度分析,投资建议
- 功能:全面对比分析ETF产品表现
- 特色:多维度对比,公平比较功能,丰富的可视化
- 在左侧面板选择至少2只ETF
- 设置各ETF的权重(总和为100%)
- 选择回测时间范围
- 设置初始投资金额
- 可输入组合名称并保存,或从下拉框加载已保存组合
- 点击"运行回测"按钮
- 在左侧面板选择至少1只ETF
- 设置各ETF的权重(总和为100%)
- 选择定投时间范围
- 设置每月定投金额和定投日
- 点击"运行定投回测"按钮
- 在左侧面板选择至少2只ETF
- 选择分析时间区间、无风险利率、模拟组合数量
- 点击"运行有效前沿分析"按钮
- 可保存当前分析参数,便于下次快速加载
- 缩放:支持鼠标滚轮缩放,查看特定时间段
- 悬停:鼠标悬停显示详细数据信息
- 图例交互:点击图例隐藏/显示特定数据
- 平移:拖拽移动图表,探索不同区域
- 上涨(正值):红色 🔴
- 下跌(负值):绿色 🟢
- 符合中国股市传统习惯
- 在
config/favorite_etfs.json中配置自选ETF - 自选ETF会在各页面中优先显示
- 支持动态添加和删除
- ETF数据缓存:
etf_cache/ - 通用数据缓存:
cache/ - 智能缓存机制,自动管理缓存生命周期
- 在AI配置页面设置相关API密钥
- 支持多种AI模型配置
- 智能策略建议功能
- ETF数据:通过akshare获取实时和历史数据
- 数据更新:支持手动刷新ETF列表缓存
- 数据质量:自动数据验证和错误处理
欢迎提交Issue和Pull Request来改进这个项目!
- Fork项目
- 创建功能分支
- 提交更改
- 创建Pull Request
- 遵循PEP 8 Python代码规范
- 添加适当的注释和文档字符串
- 确保新功能包含相应的测试
本项目采用MIT许可证,详见LICENSE文件。
感谢所有为这个项目做出贡献的开发者和用户!
💡 提示:这是一个持续开发的项目,新功能会定期更新。建议关注项目更新,体验最新的分析功能!
🎯 快速开始:建议从动量策略页面开始体验,该页面功能丰富,是了解工具能力的最佳入口。