本项目用于获取中国基金市场的基金数据,包括基金列表、基本信息、净值数据等,并提供数据处理和分析功能。
- 基金列表获取:获取中国市场上的所有基金列表
- 基金基本信息:拉取基金的基本信息,包括基金类型、规模、基金经理等
- 基金净值数据:
- 支持获取单个日期的基金净值
- 支持获取指定时间区间内的每日净值
- 净值变化计算:计算基金过去7天、30天等时间段的净值变化
- 数据合并与筛选:支持将多个数据文件合并,并可根据基金类型进行筛选
pip install -r requirements.txtpython demo.pyfrom fund_data import FundData
fund_data = FundData()
# 默认使用缓存,如果缓存不存在或过期则重新获取
fund_data.get_fund_list()
# 强制重新获取,不使用缓存
fund_data.get_fund_list(force_refresh=True)
# 设置缓存最大天数为1天
fund_data.get_fund_list(max_age_days=1)# 获取单只基金信息,默认使用缓存
fund_info = fund_data.get_fund_info("000001")
# 强制刷新,不使用缓存
fund_info = fund_data.get_fund_info("000001", force_refresh=True)
# 设置缓存最大天数为3天
fund_info = fund_data.get_fund_info("000001", max_age_days=3)
# 批量获取基金信息
fund_codes = ["000001", "000002", "000003"]
fund_data.batch_get_fund_info(fund_codes)# 获取单日净值,默认使用缓存
fund_data.get_fund_nav("000001", single_date="2025-01-15")
# 获取日期区间净值,强制刷新
fund_data.get_fund_nav("000001", start_date="2025-01-01", end_date="2025-01-15", force_refresh=True)# 计算过去7天、30天、90天的净值变化,默认使用缓存
fund_data.calculate_fund_nav_change("000001", days_list=[7, 30, 90])
# 强制刷新,不使用缓存
fund_data.calculate_fund_nav_change("000001", days_list=[7, 30, 90], force_refresh=True)# 合并所有基金数据
fund_data.merge_data()# 先读取基金信息
import pandas as pd
fund_info_df = pd.read_csv("fund_info.csv", encoding="utf-8-sig")
# 筛选股票型基金
equity_funds = fund_info_df[fund_info_df["基金类型"].str.contains("股票", na=False)]本项目为所有数据获取方法添加了缓存功能,避免重复请求API,提高效率:
- 基金列表缓存:保存在
fund_list.csv,默认7天过期 - 基金基本信息缓存:保存在
fund_info_{fund_code}.json,默认7天过期 - 基金净值数据缓存:保存在
{fund_code}_nav.csv,无固定过期时间,根据日期范围判断 - 基金净值变化缓存:保存在
{fund_code}_nav_change.csv,默认6小时过期
force_refresh:布尔值,是否强制刷新数据,忽略缓存,默认为Falsemax_age_days:整数,缓存最大天数,仅适用于get_fund_list和get_fund_info方法
- 日常使用时建议启用缓存,减少API请求
- 当需要最新数据时,使用
force_refresh=True强制刷新 - 可根据实际情况调整
max_age_days参数
如果需要清理所有缓存文件,可以手动删除项目目录下的以下文件:
fund_list.csvfund_info_*.json*_nav.csv*_nav_change.csv
fund_info/
├── fund_data.py # 核心功能模块
├── demo.py # 演示脚本
├── requirements.txt # 依赖文件
└── README.md # 项目说明
项目运行后会生成以下数据文件:
fund_list.csv:基金列表fund_info.csv:基金基本信息fund_code_nav.csv:单个基金的净值数据(例如:000001_nav.csv)fund_code_nav_change.csv:单个基金的净值变化数据(例如:000001_nav_change.csv)merged_fund_data.csv:合并后的基金数据
- 确保已安装Docker和Docker Compose
- 运行部署脚本:
- Linux/Mac用户:
chmod +x deploy.sh ./deploy.sh
- Windows用户:
.\deploy.ps1
- Linux/Mac用户:
- 部署脚本会自动构建Docker镜像并启动容器
- 可以通过以下命令查看容器日志:
docker-compose logs -f
如果不使用Docker,也可以直接在本地运行:
- 安装依赖:
pip install -r requirements.txt
- 运行演示脚本:
python demo.py
- 本项目仅用于学习和研究,请勿用于商业用途。
- 数据获取频率请合理控制,避免对目标网站造成过大压力。
- 基金数据可能存在延迟或误差,请以官方数据为准。
- 若遇到API接口变更导致数据获取失败,请及时更新代码。
- 使用Docker部署时,确保Docker服务已启动。
你可以根据需要扩展以下功能:
- 添加更多基金指标的计算
- 实现基金业绩对比功能
- 添加数据可视化功能
- 实现基金定投模拟功能
本项目采用MIT许可证,可自由使用和修改。
本项目提供的数据仅供参考,不构成任何投资建议。投资有风险,入市需谨慎。