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
