Skip to content

qiqbaba/fund_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📊 FundApp - 场外基金深度监控与智能量化回测分析系统

FundApp 是一款基于 Python 与 PySide6 (Qt6) 开发的高可用、低延迟、现代化场外基金监控与量化回测系统。项目采用微软 Fluent Design(流畅设计)风格界面,旨在为个人投资者与量化交易爱好者提供全方位的基金筛选、实时估值雷达、周期板块监控、以及基于**遗传算法(Genetic Algorithm)**的网格回撤买入回测寻优工具。


🌟 核心特性 (Key Features)

1. 🛡️ 高可用多渠道自动容灾数据网关 (FundDataGateway)

  • 历史净值多链路降级:当默认数据源失效或因网络请求频繁被限制时,系统在毫秒级内自动切换。降级链路:天天基金移动端 API ➔ 天天基金网页端 F10 ➔ AkShare ➔ Tushare
  • 实时估值四重保障:支持多渠道实时降级估值抓取。降级链路:天天基金 ➔ 新浪财经 ➔ 腾讯财经 ➔ 网易财经

2. 🧠 基于遗传算法 (GA) 的策略参数寻优

  • 向量化回测引擎:底层的 run_backtest 策略计算采用 NumPy 向量化计算 + C-level 级原生 Python 列表物理原位访问优化,大幅规避 NumPy 索引带来的单元素包装开销,实现物理级的超低计算延迟。
  • 种群自动进化:通过遗传算法对回看天数 (buy_days)、跌幅阈值 (buy_drop)、目标收益率 (target_profit) 三维参数空间进行迭代演化(包含锦标赛选择、交叉变异、精英保留),自动寻找历史胜率与平均收益最优的网格交易参数。
  • 🚀 多进程加速引擎:集成 ProcessPoolExecutor 多进程并行计算技术,榨干多核 CPU 算力,并行对数百只自选基金进行快速参数调优,并采用单线程队列写回 SQLite,完美规避数据库写锁冲突。

3. ⚡ 零卡顿无缝启动与后台异步预加载

  • 圆角渐变启动闪屏:精美的启动闪屏 (StartupSplashScreen) 实时反馈初始化进度,杜绝由于重量级组件导入或数据读取导致的白屏或未响应问题。
  • 静默缓存加载:将 4 万多条全市场基金字典(拼音/缩写/代码/名称)放入后台守护线程异步解析,主线程“秒开”就绪。
  • 7天自动更新与 HEAD 嗅探:本地 funds_registry_cache.json 采用 7 天静态缓存失效自动更新,并结合轻量级 HTTP HEAD 请求探测远程文件最后修改时间,按需更新,节省网络开销。

4. 🎨 现代 Fluent 质感交互界面

  • 流畅设计风:基于 qfluentwidgets 风格,支持亚克力半透明质感,拥有平滑顺畅的过渡动画和统一的主题设计。
  • 明暗主题无缝一键切换:支持 Light / Dark 明暗模式,并自适应调整表格单元格前背景色及图表组件颜色。
  • 本地拼音/缩写全市场联想搜索:支持拼音首字母缩写(如 bj 搜“白酒”)、中文名称、基金代码的多模式快速智能搜索添加。

📅 系统功能模块说明

  • 📌 特别关注 (SpecialAttentionTab):对核心关注的少数基金实施更高密度的监控,高亮重要买卖信号。
  • 💖 自选基金 (MyFundsTab):用户核心自选看板,支持添加/置顶/特别关注、直接展示最优参数、昨日实际净值与今日实时估值对比,并计算近 N 日跌幅与近 M 月百分位。
  • 📊 ETF涨跌榜 (RankingTab):全市场宽基及细分板块场外 ETF 涨跌幅排行,集成智能板块去重与同质化过滤机制,保证展示结果的多元化。
  • 🧭 估值榜 (ValuationTab):抓取全市场指数的 PE/PB 绝对值与百分位分布,构建估值冷热雷达("PE高"、"PE低"、"PB高"、"PB低"),并自动匹配出流动性与费率最优的场外联接基金。
  • 📅 周期榜 (CycleBoardTab):精选生猪养殖、半导体存储、煤炭能源、有色金属、白酒消费、基建建材、证券金融、新能源光伏等强周期性行业基金,展示当前周期位置(如“萧条筑底期”、“复苏拉升期”、“繁荣后期”)与直观的投资参考建议。
  • 🤖 策略中心 (StrategyCenterTab):核心量化功能区。支持单只/批量基金的回测与遗传算法参数寻优,提供交互式寻优进度条,直观展示历史买入卖出信号散点图、净值回测曲线以及调优报告。

🛠️ 技术栈与依赖库

  • GUI 框架: PySide6 (Qt 6.x)
  • 组件库: qfluentwidgets (微软流畅设计组件库)
  • 数学计算与量化: numpy, pandas, scipy
  • 数据抓取与源接口: requests, akshare, tushare (降级备用)
  • 数据库与存储: sqlite3 (sqlite 封装网关), json

🚀 快速开始

1. 环境准备

确保您的计算机上已安装 Python 3.8 及以上版本。

2. 克隆项目与安装依赖

# 克隆仓库
git clone <your-repository-url>
cd fund_app

# 安装核心依赖
pip install -r requirements.txt

备用安装命令(不带可选数据源)

pip install PySide6 qfluentwidgets requests numpy pandas

3. 运行程序

python main.py

4. 程序打包 (可选项)

如需打包成无 Python 环境的本地 .exe 文件,推荐使用 PyInstaller:

pyinstaller --noconsole --name="FundApp" --icon=logo.ico main.py

打包注意事项:本应用代码结构原生支持打包环境 (sys.frozen 嗅探),配置文件 my_funds.json 会自动创建在程序运行所在的目录中。


📂 项目文件目录结构

fund_app/
├── main.py                     # 程序总入口(安装Qt消息拦截、控制启动闪屏与主窗口秒开逻辑)
├── core/                       # 核心逻辑层
│   ├── __init__.py
│   ├── config.py               # 全局持久化配置文件路径解析 (支持打包 exe 路径适配)
│   ├── data_gateway.py         # 多级容灾降级数据抓取网关 (天天基金/新浪/腾讯/网易/AkShare/Tushare)
│   ├── db_manager.py           # SQLite 本地净值和回测参数数据库管理器 (SQLite3)
│   ├── threads.py              # 后台并发多线程任务库 (多进程参数寻优、数据并发获取、雷达抓取)
│   └── utils.py                # 全局工具函数 (板块正则提取、缓存管理、拼音模糊搜索)
├── ui/                         # 界面展示层
│   ├── __init__.py
│   ├── splash_screen.py        # 带有动态进度条的渐变圆角启动闪屏
│   ├── main_window.py          # Fluent风格主窗体与控制器 (业务分发/信号管理)
│   ├── table_model.py          # MVC 模式的自定义 TableModel、过滤器 ProxyModel 及表格 Delegate
│   ├── widgets.py              # 辅助交互控件 (配置弹窗、趋势图表弹窗、回测进度吐司)
│   └── tabs/                   # 各个具体的子标签页视图
│       ├── base_tab.py         # 抽象表格 Tab 页面基类 (统一搜索、刷新、表头构建、右键菜单)
│       ├── special_attention_tab.py # 特别关注 Tab
│       ├── my_funds_tab.py          # 自选基金 Tab
│       ├── ranking_tab.py           # 排行榜 Tab
│       ├── valuation_tab.py         # 估值榜 Tab
│       ├── cycle_board_tab.py       # 周期榜 Tab
│       └── strategy_center_tab.py   # 策略中心 Tab
│       └── other_funds_tab.py       # 其他 Tab
├── fund_history.db             # 自动创建的本地历史数据和寻优结果 SQLite 数据库
├── my_funds.json               # 自选配置、列隐藏、展示周期及主题参数
├── funds_registry_cache.json   # 全市场基金注册信息字典本地缓存 (自动维护)
└── requirements.txt            # 项目依赖列表

📈 回撤反弹网格回测策略说明

该软件核心内置的量化策略为**“回撤反弹买入策略”**:

  1. 买入触发:以当前时间点往前推 buy_days 天,计算这段时间内的最高基金净值 $Max_{nav}$。若当天的基金估值/净值 $Current_{nav}$ 相比于该最高值回撤比例达到 $buy_drop%$, 即: $$\frac{Current_{nav} - Max_{nav}}{Max_{nav}} \le -buy_drop%$$ 则触发买入信号。
  2. 止盈卖出:持有该份额期间,如在 hold_max 天之内,收益率相比于买入净值达到 $target_profit%$, 且为覆盖基金赎回费的惩罚(国内场外基金持有不满 7 天收取 1.5% 惩罚性赎回费),若持有期少于 7 天,系统自动增加 1.5% 止盈要求,达到目标即刻触发止盈出局。
  3. 到期强制卖出:如在最大持有天数 hold_max(系统默认为 90 天)到期后仍未达到止盈目标,则以当天的净值进行强制卖出结算。

系统能够利用遗传算法 (GA),在给定的历史区间内自动调整 $(buy_days, buy_drop%, target_profit%)$ 这三维参数,以获得胜率最高、平均收益最大的最优参数配置。


🤝 贡献与反馈

如果您在运行或使用过程中遇到任何问题,欢迎在 GitHub 上提交 Issue 或发起 Pull Request!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages