Skip to content

kiminh/fund_info

 
 

Repository files navigation

基金数据获取与分析工具

本项目用于获取中国基金市场的基金数据,包括基金列表、基本信息、净值数据等,并提供数据处理和分析功能。

功能特性

  1. 基金列表获取:获取中国市场上的所有基金列表
  2. 基金基本信息:拉取基金的基本信息,包括基金类型、规模、基金经理等
  3. 基金净值数据
    • 支持获取单个日期的基金净值
    • 支持获取指定时间区间内的每日净值
  4. 净值变化计算:计算基金过去7天、30天等时间段的净值变化
  5. 数据合并与筛选:支持将多个数据文件合并,并可根据基金类型进行筛选

使用说明

1. 安装依赖

pip install -r requirements.txt

2. 运行演示脚本

python demo.py

3. 主要功能使用示例

获取基金列表

from 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)]

4. 缓存功能说明

本项目为所有数据获取方法添加了缓存功能,避免重复请求API,提高效率:

缓存类型

  • 基金列表缓存:保存在 fund_list.csv,默认7天过期
  • 基金基本信息缓存:保存在 fund_info_{fund_code}.json,默认7天过期
  • 基金净值数据缓存:保存在 {fund_code}_nav.csv,无固定过期时间,根据日期范围判断
  • 基金净值变化缓存:保存在 {fund_code}_nav_change.csv,默认6小时过期

缓存配置参数

  • force_refresh:布尔值,是否强制刷新数据,忽略缓存,默认为 False
  • max_age_days:整数,缓存最大天数,仅适用于 get_fund_listget_fund_info 方法

缓存使用建议

  • 日常使用时建议启用缓存,减少API请求
  • 当需要最新数据时,使用 force_refresh=True 强制刷新
  • 可根据实际情况调整 max_age_days 参数

清理缓存

如果需要清理所有缓存文件,可以手动删除项目目录下的以下文件:

  • fund_list.csv
  • fund_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部署

  1. 确保已安装Docker和Docker Compose
  2. 运行部署脚本:
    • Linux/Mac用户:
      chmod +x deploy.sh
      ./deploy.sh
    • Windows用户:
      .\deploy.ps1
  3. 部署脚本会自动构建Docker镜像并启动容器
  4. 可以通过以下命令查看容器日志:
    docker-compose logs -f

直接运行

如果不使用Docker,也可以直接在本地运行:

  1. 安装依赖:
    pip install -r requirements.txt
  2. 运行演示脚本:
    python demo.py

注意事项

  1. 本项目仅用于学习和研究,请勿用于商业用途。
  2. 数据获取频率请合理控制,避免对目标网站造成过大压力。
  3. 基金数据可能存在延迟或误差,请以官方数据为准。
  4. 若遇到API接口变更导致数据获取失败,请及时更新代码。
  5. 使用Docker部署时,确保Docker服务已启动。

扩展功能

你可以根据需要扩展以下功能:

  1. 添加更多基金指标的计算
  2. 实现基金业绩对比功能
  3. 添加数据可视化功能
  4. 实现基金定投模拟功能

许可证

本项目采用MIT许可证,可自由使用和修改。

免责声明

本项目提供的数据仅供参考,不构成任何投资建议。投资有风险,入市需谨慎。

About

基金数据计算器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 92.2%
  • PowerShell 4.2%
  • Shell 2.8%
  • Dockerfile 0.8%