{"repo":"finvfamily/finquant","free":true,"listed":false,"github":"https://github.com/finvfamily/finquant","clone":"git clone https://github.com/finvfamily/finquant.git","description":"轻量级 Python 量化回测工具 - 纯脚本无需服务端，支持多种策略和仓位控制","language":"Python","stars":44,"topics":["algorithmic-trading","backtesting","finance","python","quantitative-trading"],"license":null,"category":"trading","readme_excerpt":"finquant V2.0.0 官方网站 轻量级 Python 量化回测工具 特性 - 事件驱动架构 ：解耦策略与引擎，支持多策略组合 - 本地缓存 ：Parquet 格式缓存，支持增量更新，避免重复请求 - 完整风控体系 ：止损止盈、最大回撤控制、仓位管理 - 执行精度模拟 ：滑点、部分成交、市场冲击建模 - 参数优化 ：贝叶斯优化、Walk-Forward、敏感性分析 - 多资产支持 ：股票、ETF、LOF、科创板混合回测 - 详细交易日志 ：每笔交易记录成本、收益、持仓盈亏 核心优势与解决的问题 1. 数据获取效率问题 问题 ：每次回测都从网络获取数据，重复请求耗时且浪费资源。 解决 ： - 本地 Parquet 缓存，数据持久化 - 增量更新（3天容差），只请求新数据 - 多数据源自动切换（EastMoney → Tencent → Sina → Tdx → BaoStock） 2. 回测精度问题 问题 ：简单回测无法模拟真实交易场景，滑点、手续税计算不准确。 解决 ： - 完整手续费计算（佣金、印花税、过户费） - 滑点模拟（买入时高价、卖出时低价） - A股最小买入单位（100股整数倍） - 持仓市值实时计算 3. 策略开发效率问题 问题 ：策略代码与引擎耦合，难以独立单元测试。 解决 ： - 事件驱动架构，策略完全独立 - on bar(bar) 方法，策略只需关注信号生成 - bar.history() 获取历史数据，无需关心数据来源 4. 结果分析不完整问题 问题 ：传统回测只显示最终收益，缺乏详细持仓和盈亏分析。 解决 ： - 每笔交易详细日志（日期、数量、成本、手续费、总资产） - 按标的统计（已实现盈亏 + 未实现盈亏） - 最终持仓详情（开仓日期、成本、现价、浮动盈亏） - 完整权益曲线 对比其他框架 特性 backtrader backtesting.py vectorbt finquant ------ ------------ ----------------- ---------- ---------- 事件驱动 ✓ ✗ ✗ ✓ 本地缓存 ✗ ✗ ✗ ✓ (Parquet) 增量更新 ✗ ✗ ✗ ✓ A股支持 △ △ △ ✓ (100股最小单位) 详细日志 △ △ ✗ ✓ 多资产 ✓ ✗ ✓ ✓ 典型使用场景 1. 快速验证策略想法 2. 完整回测分析 3. 参数优化 整体流程 系统架构 事件驱动架构 安装 环境要求 - Python 3.8+ - pandas = 1.3.0 - numpy = 1.20.0 安装步骤 快速验证 finshare 数据源 finquant 基于 finshare 构建，finshare 为 finquant 提供稳定的数据支持 finshare 是一个纯开源的 A股数据获取库（GitHub: github.com/finvfamily/finshare），完全免费，致力于解决 Python 量化投资的数据获取难题。 finshare 特性 - 完全开源 ：MIT 许可证，代码开源 - 多数据源 ：EastMoney、腾讯、新浪、通达信、baostock 自动切换 - 支持全市场 ：股票、ETF、LOF、基金、指数 - 实时行情 ：支持批量实时行情获取 - 简单易用 ：一行代码获取数据 finshare 支持的数据源 数据源 说明 -------- ------ EastMoney (东方财富) 默认首选，数据全面 Tencent (腾讯) 备用源 Sina (新浪) 备用源 T","default_branch":null,"files":null,"tree":[],"storefront":"/r/finvfamily","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/finvfamily/finquant/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}