当前位置: 首页 > news >正文

QF-Lib:用一个库搞定Python量化回测和策略开发

搞过量化交易的人都清楚,测试策略的时候流程能有多乱:Pandas 管数据、Matplotlib 画图、Backtrader 跑回测,最后还要再用 Excel 做汇总。本来想简单验证个想法,结果工具链越搞越复杂,最后自己都不知道在干什么了。

QF-Lib(Quantitative Finance Library)是个金融研究和回测工具包。从数据获取到策略模拟、风险评估,再到最后的报告生成,基本能在这一个工具里搞定。

而且它还包含了的事件驱动机制,不是简单粗暴地循环价格数据,而是模拟市场开盘、交易执行、日终清算这些真实流程,基本上达到了专业回测系统的最低要求。

主要特性

数据源接入灵活

Bloomberg、Quandl、Haver 都能接,本地 Excel 文件也行。

连接方式非常简单:

 from qf_lib.data_providers.quandl.quandl_data_provider import QuandlDataProvider  data_provider = QuandlDataProvider(api_key="YOUR_API_KEY")

配置完就能用了。

内置前瞻偏差检测

写交易模型时最容易犯的错误就是前瞻偏差——代码里不小心用了未来数据。QF-Lib 在设计上就考虑了这个问题,能保证回测的时间逻辑不出错。

基于 Pandas 但功能更专业

底层用的是 Pandas,所以学习成本不高。但针对金融数据做了很多扩展,收益率计算、最大回撤、累计表现这些都是现成的。

 from qf_lib.common.utils.returns import calculate_cumulative_returns  daily_returns = [0.01, -0.005, 0.002, 0.004]  cumulative = calculate_cumulative_returns(daily_returns)  print(cumulative)

输出:

 [1.01, 1.00495, 1.00794, 1.01196]

这就是策略的累计净值曲线,代码很简洁。

回测模块设计合理

很多回测框架配置起来特别麻烦光搭环境就要半天,而QF-Lib 的回测器是模块化的,接口设计得比较直观,几分钟就能跑起来一个原型。

 from qf_lib.backtesting import Backtester  from qf_lib.strategy.simple_moving_average import SimpleMovingAverageStrategy  backtester = Backtester(initial_cash=100000)  strategy = SimpleMovingAverageStrategy(short_window=20, long_window=50)  results = backtester.run(strategy)  results.create_report("sma_backtest.pdf")

交易管理、日志记录都可以自动处理,最后还能生成 PDF 报告。

报告生成

QF-Lib 集成了 WeasyPrint,可以自动输出 PDF 或 Excel 格式的分析报告。图表、统计指标、绩效分解都整理得很清楚。

如果要给客户看结果,或者自己做策略记录,这个功能可以节省大量时间

安装

PyPI 直接装:

 pip install qf-lib

或者从源码编译:

 git clone https://github.com/quarkfin/qf-lib.git  cd qf-lib  python setup.py install

支持 Python 3.8 到 3.11,Windows、macOS、Ubuntu 都能跑。

总结

QF-Lib 除了策略回测,还能用在:

时间序列分析、组合管理、衍生品定价、风险度量、学术研究等场景。基本上涉及金融数据处理的工作都能覆盖。

Backtrader、Zipline 这些库用过一圈下来,各有各的优势,但也各有各的问题。有些功能强但太复杂,有些简单但扩展性差。

QF-Lib 在这方面平衡得比较好。模块化设计保证了灵活性,同时支持主流数据源,代码风格也比较 Pythonic。特别是自动报告这个功能,实际工作中确实省了不少事。

如果正在做量化研究或者策略开发,可以考虑用用看。

文档:
https://avoid.overfit.cn/post/b0196ea42b9847e8ae670d905526214f
作者:Civil Learning

http://www.dtcms.com/a/605187.html

相关文章:

  • 江西中赣建设有限公司网站绵阳市建设银行网站
  • 更新原生小程序封装(新增缓存订阅)完美解决
  • 医疗小程序07设置默认卡
  • 培训机构如何利用小程序线上引流招生?培训机构小程序开发教程
  • 游戏助手|游戏攻略|基于SprinBoot+vue的游戏攻略系统小程序(源码+数据库+文档)
  • 基于开源AI智能名片链动2+1模式与S2B2C商城小程序的商家活动策略研究
  • iis能建设网站吗访问一个网站的过程
  • 株洲做网站哪家好网络推广哪个平台好
  • .net讲解
  • Temu欧洲站大规模下架,跨境卖家如何迎战合规风暴?
  • LMDeploy 在 Docker 容器中部署模型
  • MCU单片机,常用32位单片机,低功耗单片机MM32L系列
  • 今天,又聊了棋牌室、会议室和高尔夫...分享我的开发共享空间系统创业日记
  • vue项目配置可以让用户自己动态修改baseURL
  • GitPuk入门到精通 - 如何进行分支管理
  • MySQL 删除数据库指南
  • 常用网站开发工具详细分类与解析
  • 《Zephyr RTOS 深度学习指南与生成式AI结合方法探讨》 第七章:驱动与抽象篇
  • seo 网站改版简述网站建设优劣的评价标准
  • 有没有免费做企业网站的10黄页网站建设
  • 栈与队列入门:定义、操作及完整 C 语言实现教程
  • vue3 + antd + print-js 实现打印功能(含输出PDF)
  • 主动交互和情境感知,AI 硬件是脱离手机屏幕掌控的蓝海机会丨硬件和端侧模型专场@RTE2025 回顾
  • NeurIPS2025丨MIT提出自动化科学发现工具,AutoSciDACT对天文/物理/生物医学等异常数据强敏感
  • Java: 为PDF批量添加图片水印实用指南
  • 使用 Python 将 PDF 转换为 PNG
  • docker desktop 限制wsl使用内存空间
  • 学校网站的建设论文WordPress订阅下载插件
  • 内连接与隐式内连接:SQL连接的本质解析
  • 内存网盘 - Go语言实现的WebDAV内存文件系统