Skip to content

yingxincui/streametf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ETF回测与分析工具

这是一个基于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

安装步骤

  1. 克隆项目:
git clone [项目地址]
cd streametf
  1. 安装依赖包:
pip install -r requirements.txt
  1. 运行应用:
streamlit run app.py
  1. 在浏览器中打开:http://localhost:8501

📖 使用说明

🎯 推荐功能页面

动量策略页面

  • 功能:多ETF动量轮动策略,包含趋势图、因子分析、BIAS超买超卖分析
  • 特色:支持动态阈值计算,智能推荐持仓,丰富的可视化分析

周度涨跌分析页面

  • 功能:分析每月各周投资规律,识别最佳投资时机
  • 特色:动态图表,支持交互式分析,数据导出功能

月度胜率分析页面

  • 功能:分析ETF各月份胜率和收益规律
  • 特色:动态图表,多维度分析,投资建议

ETF对比分析页面

  • 功能:全面对比分析ETF产品表现
  • 特色:多维度对比,公平比较功能,丰富的可视化

🔧 基础功能使用

组合回测

  1. 在左侧面板选择至少2只ETF
  2. 设置各ETF的权重(总和为100%)
  3. 选择回测时间范围
  4. 设置初始投资金额
  5. 可输入组合名称并保存,或从下拉框加载已保存组合
  6. 点击"运行回测"按钮

定投回测

  1. 在左侧面板选择至少1只ETF
  2. 设置各ETF的权重(总和为100%)
  3. 选择定投时间范围
  4. 设置每月定投金额和定投日
  5. 点击"运行定投回测"按钮

有效前沿分析

  1. 在左侧面板选择至少2只ETF
  2. 选择分析时间区间、无风险利率、模拟组合数量
  3. 点击"运行有效前沿分析"按钮
  4. 可保存当前分析参数,便于下次快速加载

🎨 界面特色

动态图表功能

  • 缩放:支持鼠标滚轮缩放,查看特定时间段
  • 悬停:鼠标悬停显示详细数据信息
  • 图例交互:点击图例隐藏/显示特定数据
  • 平移:拖拽移动图表,探索不同区域

颜色规范

  • 上涨(正值):红色 🔴
  • 下跌(负值):绿色 🟢
  • 符合中国股市传统习惯

🔧 配置说明

自选ETF配置

  • config/favorite_etfs.json 中配置自选ETF
  • 自选ETF会在各页面中优先显示
  • 支持动态添加和删除

缓存配置

  • ETF数据缓存:etf_cache/
  • 通用数据缓存:cache/
  • 智能缓存机制,自动管理缓存生命周期

AI助手配置

  • 在AI配置页面设置相关API密钥
  • 支持多种AI模型配置
  • 智能策略建议功能

📊 数据来源

  • ETF数据:通过akshare获取实时和历史数据
  • 数据更新:支持手动刷新ETF列表缓存
  • 数据质量:自动数据验证和错误处理

🤝 贡献指南

欢迎提交Issue和Pull Request来改进这个项目!

开发环境设置

  1. Fork项目
  2. 创建功能分支
  3. 提交更改
  4. 创建Pull Request

代码规范

  • 遵循PEP 8 Python代码规范
  • 添加适当的注释和文档字符串
  • 确保新功能包含相应的测试

📄 许可证

本项目采用MIT许可证,详见LICENSE文件。

🙏 致谢

感谢所有为这个项目做出贡献的开发者和用户!


💡 提示:这是一个持续开发的项目,新功能会定期更新。建议关注项目更新,体验最新的分析功能!

🎯 快速开始:建议从动量策略页面开始体验,该页面功能丰富,是了解工具能力的最佳入口。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages