量化武器库|全功能平台 - QUANTAXIS 的一站式回测体验

B站影视 欧美电影 2025-10-28 20:31 5

摘要:之前我们学习了以实盘为导向的 vn.py。今天,我们来探索国内另一个追求“大而全”的、非常有思想的开源量化项目——QUANTAXIS (Quant-Asset-Exchange-Internal-System)。它的名字就彰显了其宏大的目标:构建一个内部的、完

《量化武器库》系列专门聚焦那些能极大提升我们量化研究和实盘效率的工具,打造一个覆盖数据、回测、分析到实战的全流程工具箱。

大家好,我是木泽!

之前我们学习了以实盘为导向的 vn.py。今天,我们来探索国内另一个追求“大而全”的、非常有思想的开源量化项目——QUANTAXIS (Quant-Asset-Exchange-Internal-System)。它的名字就彰显了其宏大的目标:构建一个内部的、完整的、可扩展的量化资产交易系统。

QUANTAXIS 最独特的地方在于其高度结构化和模块化的设计。它不仅仅是一个框架,更像是一个定义了量化世界中各种“标准件”(如账户、订单、风险、数据结构)的“协议”,然后提供工具将这些标准件组装起来。

(创作不易,感谢关注支持↑↑↑)

安装:

pip install quantaxis

在 QUANTAXIS 的世界里,所有事物都被抽象成了对象:

QA_Account (账户): 核心对象,代表一个交易账户,管理资产、持仓、订单和交易历史。QA_Portfolio (组合): 由多个账户构成,用于更高层级的资产组合管理。QA_Risk (风控): 一个独立的对象,用于管理账户的风险,如最大亏损、最大持仓等。QA_Market (市场): 模拟市场环境,撮合交易。

回测的过程,就是创建一个 `Account` 对象,让它在 `Market` 环境中,根据你提供的信号不断交易,并接受 `Risk` 对象的监控。

QUANTAXIS 的回测更偏向于纯代码驱动,其流程非常清晰。

QUANTAXIS 内置了强大的数据获取和管理模块。它可以从多种源下载数据,并自动存入其本地的 MongoDB 数据库中,实现永久化存储。

import QUANTAXIS as QA# 从 Tushare 下载数据并存入数据库 (需先配置Tushare Token)# QA.QA_SU_save_stock_day_all# 从数据库中读取数据data = QA.QA_fetch_stock_day_adv('000001', '2020-01-01', '2023-12-31')print(data.data.head)

QUANTAXIS 的策略逻辑通常是在一个循环中实现的,而不是像 Backtrader 那样写在 `next` 方法里。

# 1. 创建一个账户Account = QA.QA_Account# 2. 创建一个经纪商 (模拟市场)Broker = QA.QA_BacktestBroker# 3. 策略逻辑循环for bar in data.panel_gen: # bar.get_code 获取当前bar的股票代码 # bar.get_time 获取当前bar的时间 # 账户进行轮询,更新持仓等信息 Account.receive_market_data(bar) # 交易逻辑 if Account.hold_table.empty: # 如果没有持仓 order = Account.send_order( code=bar.code[0], time=bar.datetime[0], price=bar.close[0], amount=1000, towards=QA.ORDER_DIRECTION.BUY, order_model=QA.ORDER_MODEL.MARKET ) Broker.receive_order(order) # 撮合成交 trade_mes = Broker.query_orders(Account.account_cookie, 'filled') Account.receive_deal(trade_mes)

在循环结束后,我们需要创建一个 Risk 对象来对 Account 的整个交易历史进行统计和分析。

# 创建 Risk 对象并进行分析Risk = QA.QA_Risk(Account)Risk.plot_assets_curve(Risk.message)

模块化设计的威力

QUANTAXIS 最大的优点在于其高度的模块化。账户、风控、市场都是独立且可替换的组件。这意味着你可以非常方便地自定义任何一个环节。比如,你可以编写一个自己的 `MyRisk` 类,实现一个全新的风险指标,然后直接替换掉默认的 `QA_Risk`,而无需改动账户和市场的代码。这种设计带来了极高的灵活性和可扩展性。

QUANTAXIS 的学习曲线:

与 vn.py 类似,QUANTAXIS 也是一个庞大而复杂的系统。它的学习曲线比 Backtrader 等轻量级框架要陡峭得多,你需要花时间去理解它独特的设计哲学和各种核心对象的用法。它更适合那些希望构建一个高度定制化、可扩展的个人量化系统的深度开发者。

今天,我们探索了另一个国产全功能平台——QUANTAXIS。它向我们展示了一种高度结构化、协议化的系统设计思想。通过将量化世界的各个元素抽象成标准化的“零件”,QUANTAXIS 为构建复杂、稳定、可扩展的量化系统提供了一套强大的蓝图。虽然上手不易,但一旦掌握,你对量化系统的认知将提升到一个全新的高度。

QUANTAXIS 和 vn.py,你更欣赏哪一个的设计哲学?
是 vn.py 的“一切为实盘服务”,还是 QUANTAXIS 的“万物皆对象,模块化组装”?

来源:木泽的量化笔记

相关推荐