☰
RQAlpha 概览:可扩展、可替换的多品种 Python 量化回测与交易框架
2026/10/7 2:06:32 网站建设 项目流程
  • 金融科技

【免费下载链接】rqalpha

A extendable, replaceable Python algorithmic backtest && trading framework supporting multiple securities

项目地址:https://gitcode.com/gh_mirrors/rq/rqalpha
点击查看免费下载

本文基于 docs/source/index.rst(RQAlpha 官方文档首页)整理成文,并结合作者所在的 rqalpha 仓库源码(rqalpha/目录)对其中涉及的架构定位、配置体系与 Mod 扩展机制进行源码级展开,帮助读者全面理解 RQAlpha 的能力边界、配置方式与扩展入口。

导读

RQAlpha 是一套从数据获取、算法交易、回测引擎、实盘模拟、实盘交易到数据分析的全流程程序化交易解决方案。本文先介绍 RQAlpha 的整体定位与核心特点,再重点剖析其"灵活的配置方式"与"强大的 Mod 扩展性"两大支柱:读者可以借此掌握rqalpha mod list/enable/disable的 Mod 管理命令、七大系统 Mod 的职责与全部配置项,并能结合仓库源码理解撮合、风控、税费等底层实现,从而定制专属于自己的量化交易系统。

RQAlpha 是什么:覆盖交易全链条的量化框架

RQAlpha 的定位可以从其项目描述中直接读出:一个可扩展(extendable)、可替换(replaceable)的 Python 算法回测与交易框架,支持多种证券品种。在官方文档首页中,这一理念被进一步概括为:

RQAlpha 从数据获取、算法交易、回测引擎、实盘模拟,实盘交易到数据分析,为程序化交易者提供了全套解决方案。

也就是说,RQAlpha 并不只是一个回测引擎,而是一条完整的链路:

  • 数据获取:通过数据源(data bundle)提供行情数据,仓库中对应 rqalpha/data 目录,其中base_data_source实现了数据存储与读取层,data_proxy.py向策略层提供统一的数据访问接口;
  • 算法交易:策略编写与执行层,对应 rqalpha/core/strategy.py 与 rqalpha/apis 提供下单、查询等 API;
  • 回测引擎:由sys_simulationMod 提供模拟撮合引擎与回测事件源(rqalpha/mod/rqalpha_mod_sys_simulation/simulation_broker.py);
  • 实盘模拟与实盘交易:通过运行类型(run_type)切换b(回测)/p(模拟)/r(实盘),并支持 persist 持久化功能(见 rqalpha/config.yml);
  • 数据分析:由sys_analyserMod 记录每日下单、成交、组合、持仓信息,计算风险指标并输出 csv、plot 等分析结果。

整个框架采用"核心 + Mod"的架构:核心负责环境(rqalpha/environment.py)、事件总线(rqalpha/core/events.py)与执行流程,业务能力全部通过 Mod 插拔式挂载,从而保证框架本身轻量、可替换。

六大核心特点

官方文档将 RQAlpha 的特点归纳为下表,其背后在仓库中均有对应实现:

特点说明仓库依据
易于使用让您集中于策略的开发,一行简单的命令就可以执行您的策略rqalpha run -f strategy.py即可回测,见 rqalpha/cmds/run.py
完善的文档提供完整的 RQAlpha 使用文档本仓库 docs 目录包含安装、教程、API、Mod 开发等全套文档
活跃的社区官方社区可获取和询问有关 RQAlpha 的一切问题官方维护的交流渠道(见"获取帮助"一节)
稳定的环境大量算法交易在官方平台稳定运行框架本身对事件、数据、异常有完善处理
灵活的配置支持多种方式配置和运行策略,只需简单配置即可构建适合自己的交易系统分层配置体系,见下文"灵活的配置方式"
强大的扩展性开发者可以基于 Mod Hook 接口进行扩展Mod 机制,见下文"Mod 扩展机制"

其中"易于使用"可以直接体验:仓库 rqalpha/examples 提供了buy_and_hold.py、golden_cross.py、macd.py、turtle.py等可直接运行的示例策略,配合一行命令即可完成一次完整回测。

灵活的配置方式

三层配置体系

RQAlpha 的配置分为三个层次,从底层到上层优先级递增:

  1. 默认配置:仓库中的 rqalpha/config.yml 定义了全部基础配置项的默认值;
  2. 用户配置文件:用户通过--config参数或用户目录下的配置文件覆盖默认值;
  3. 策略内配置:通过from rqalpha import run传入 Python 字典形式的config,或在策略代码中通过白名单机制直接指定配置项。

基础配置项详解

rqalpha/config.yml 是理解 RQAlpha 行为的钥匙,核心配置项如下:

配置项默认值说明
base.data_bundle_path~数据源所存储的文件路径
base.strategy_filestrategy.py启动的策略文件路径
base.start_date2015-06-01回测起始日期
base.end_date2050-01-01回测结束日期(实盘时忽略)
base.margin_multiplier1保证金乘数,取值(0, +∞],非法取值会在启动时被 rqalpha/mod/rqalpha_mod_sys_simulation/mod.py 拦截并报错
base.run_typeb运行类型:b回测、p模拟交易、r实盘交易
base.frequency1d回测频率,支持1d(日线)、1m(分钟线)、tick(逐笔);分钟线与 tick 级别回测依赖对应数据源
base.accountsstock: ~设置可交易品种及初始资金,支持stock(股票)、future(期货),也可自行扩展账户类型
base.persistfalse模拟/实盘交易中开启 persist,在每个 bar 结束时持久化持仓、账户与用户代码上下文
base.round_pricefalse是否根据价格最小变动单位调整发单价格
base.forced_liquidationtrue是否开启强平
extra.log_levelinfo日志输出等级:verbose/info/warning/error
extra.context_vars~将预定义变量传入context内
extra.enable_profilerfalse是否启动性能分析

配置文件中还定义了白名单机制:whitelist: [base, extra, validator, mod],即只有在白名单内的配置段才允许在策略代码中直接指定,这保证了配置的边界安全。

代码内配置示例

对于需要精细控制回测行为的场景,官方文档推荐在代码中通过run(config)传入完整配置。例如设置滑点:

from rqalpha import run config = { "base": { "strategy_file": "strategy.py", "start_date": "2015-01-09", "end_date": "2015-03-09", "frequency": "1d", "accounts": { "stock": 100000 } }, "mod": { "sys_simulation": { "enabled": True, "slippage": 0.01 } } } run(config)

这是文档中最典型的配置用法:base段负责策略与回测周期,mod段负责各 Mod 的开关与参数覆写。

强大的扩展性:Mod Hook 机制

Mod 管理命令

RQAlpha 最具特色的能力是Mod Hook 接口——开发者可以通过实现统一的 Mod 接口对接第三方库、替换默认实现。官方文档给出了三个最常用的 Mod 管理命令:

# 查看当前安装的 Mod 列表及状态 $ rqalpha mod list # 启用 Mod $ rqalpha mod enable xxx # 禁用 Mod $ rqalpha mod disable xxx

这三个命令的底层实现在 rqalpha/cmds/mod.py:

  • mod list读取 Mod 配置,通过tabulate以表格形式输出每个 Mod 的name与enabled/disabled状态;
  • mod enable/disable会先尝试import_module("rqalpha_mod_" + mod_name)校验 Mod 是否已安装(系统 Mod 会被解析为rqalpha.mod.rqalpha_mod_sys_xxx),再将修改写入用户级 Mod 配置文件。若 Mod 未安装,会提示can not find mod [...]并跳过,不会中断其他 Mod 的批量操作。

系统 Mod 默认配置

仓库中的 rqalpha/mod_config.yml 是系统 Mod 的默认开关配置,默认全部启用:

mod: sys_accounts: { enabled: true } # 载入 Account 和 Position Model sys_simulation: { enabled: true } # 回测 / 模拟交易支持 Mod sys_progress: { enabled: true } # 命令行查看回测进度 sys_risk: { enabled: true } # 风控 Mod sys_analyser: { enabled: true } # 策略分析 Mod sys_scheduler: { enabled: true } # 定时任务 Mod sys_transaction_cost:{ enabled: true } # 交易税费 Mod

可见 RQAlpha 开箱即用:安装后不做任何 Mod 配置,也能获得回测、风控、分析、税费、定时器、进度显示等完整能力。您也可以按需禁用某些 Mod(例如rqalpha mod disable sys_analyser)来精简回测流程、提升性能。

自定义 Mod 的入口

从源码结构看,自定义 Mod 需继承 rqalpha/interface.py 中定义的AbstractMod接口,实现start_up(env, mod_config)与tear_down(code, exception)生命周期方法,并在start_up中通过env环境对象挂载 Broker、EventSource、Validator 或订阅事件总线(rqalpha/core/events.py)——系统 Mod 均是这一接口的实现范例。官方文档也提示:如果您基于 RQAlpha 进行了 Mod 扩展,可以提交给官方审核,审核通过后会补充进 Mod 列表。

七大系统 Mod 详解

以下逐一展开官方文档列出的七个系统 Mod,内容结合各 Mod 的 README(位于rqalpha/mod/目录)与源码实现。

1. sys_accounts:账户与持仓模型

职责:提供股票、期货的下单 API 实现及持仓模型的实现,是扩展账户 Mod。

配置项(见 rqalpha/mod/rqalpha_mod_sys_accounts/README.rst):

配置项默认值说明
stock_t1True是否开启股票 T+1 限制
dividend_reinvestmentFalse是否开启自动分红再投资
cash_return_by_stock_delistedTrue持仓股票退市时,是否按退市价格返还现金
auto_switch_order_valueFalse股票下单因资金不足被拒时,是否改为使用全部剩余资金下单
validate_stock_positionTrue开启对股票仓位能否满足平仓需求的检查
validate_future_positionTrue开启对期货仓位能否满足平仓需求的检查
financing_rate0.00融资利率(年化)
financing_stocks_restriction_enabledFalse是否开启融资可买入股票的限制
futures_settlement_price_typeclose期货逐日盯市结算价:settlement/close

其账户模型实现在 rqalpha/mod/rqalpha_mod_sys_accounts/position_model.py 与api/子目录下的api_stock.py、api_future.py,分别对应股票与期货的下单语义(含order_target_portfolio等组合调整接口)。

2. sys_analyser:策略分析与报告输出

职责:记录每天的下单、成交、投资组合、持仓等信息,计算风险度指标,并以 csv、plot 图表等形式输出分析结果。系统模块,不可删除。

配置项(见 rqalpha/mod/rqalpha_mod_sys_analyser/README.rst):

配置项默认值说明
benchmarkNone策略基准,用于风险指标计算与收益曲线图绘制。单指数/股票直接填order_book_id,如"000300.XSHG";复合指数传order_book_id与权重的字典,如{"000300.XSHG": 0.2, "000905.XSHG": 0.8}
recordTrue不输出 csv/pickle/plot 等结果时,可关闭该项以跳过部分数据收集逻辑,提升性能
output_fileNone回测结果输出路径,pickle 格式,含每日净值、头寸、流水及风险指标;不设置则不输出
report_save_pathNone回测报告数据目录,csv 格式;不设置则不输出
plotFalse回测结束后是否绘制收益曲线图;True使用默认模板,或设置模板名称(当前模板:'default'、'ricequant')
plot_save_fileNone收益曲线图保存路径,设置后输出为 png 文件
plot_config.open_close_pointsFalse是否在收益图中展示买卖点
plot_config.weekly_indicatorsFalse是否在收益图中展示周度指标和收益曲线

扩展命令:启用该 Mod 后新增两条命令:

# 根据回测结果 pickle 文件绘制收益曲线图,--hide 隐藏显示窗口,--plot-save 指定 png 输出路径 $ rqalpha plot result_pickle_file_path --hide --plot-save target_plot_img_path # 根据回测结果 pickle 文件生成 csv 报告 $ rqalpha report result_pickle_file_path target_report_csv_path

从源码结构看,报告生成逻辑位于 rqalpha/mod/rqalpha_mod_sys_analyser/report 目录,绘图逻辑位于 rqalpha/mod/rqalpha_mod_sys_analyser/plot 目录,支持将分析结果沉淀为 excel 模板(report/templates/summary.xlsx)。

3. sys_progress:回测进度显示

职责:在控制台输出当前策略的回测进度。系统模块,不可删除。

配置项(见 rqalpha/mod/rqalpha_mod_sys_progress/README.rst):

配置项默认值说明
showFalse是否在命令行/终端绘制进度条

扩展命令:启用该 Mod 后,可直接通过rqalpha run --progress开启进度条显示:

$ rqalpha run -f strategy.py --progress

4. sys_risk:事前风控校验

职责:对订单进行事前风控校验。系统模块,不可删除。

配置项(见 rqalpha/mod/rqalpha_mod_sys_risk/README.rst):

配置项默认值说明
validate_priceTrue开启对限价单价格合法性的检查
validate_is_tradingTrue开启对标的可交易情况的检查
validate_cashTrue开启对可用资金是否足够满足下单要求的检查
validate_self_tradeFalse开启对存在自成交风险的检查

各校验器独立成文件,位于 rqalpha/mod/rqalpha_mod_sys_risk/validators 目录(cash_validator.py、is_trading_validator.py、price_validator.py、self_trade_validator.py),作为前端校验器(frontend validator)挂入订单处理链路。

5. sys_scheduler:定时任务

职责:提供定时器,即按照特定周期执行指定逻辑的功能。系统模块,不可删除。

其核心实现在 rqalpha/mod/rqalpha_mod_sys_scheduler/scheduler.py,策略侧配合scheduler.run_daily/run_weekly/run_monthly等 API 使用,可将策略逻辑按日、周、月周期挂载执行。仓库测试 tests/integration_tests/test_api/mod/sys_scheduler/test_scheduler.py 覆盖了定时任务的触发行为。

6. sys_simulation:模拟撮合引擎与回测事件源

职责:提供模拟撮合引擎及回测事件源等模块,为回测和模拟交易提供支持。系统模块,不可删除。

配置项(见 rqalpha/mod/rqalpha_mod_sys_simulation/README.rst):

配置项默认值说明
signalFalse信号模式:开启后所有通过风控的订单不进行撮合,直接按信号价格产生交易
matching_typecurrent_bar撮合方式,随回测频率不同而不同(详见下文)
price_limitTrue开启对处于涨跌停状态的证券的撮合限制
liquidity_limitFalse开启对对手盘无流动性的证券的撮合限制(仅在 tick 回测下生效)
volume_limitTrue成交量限制:每个 bar 累计成交量不超过该时间段市场总成交量的一定比值(volume_percent);tick 级别则为当前 tick 与上一 tick 市场总成交量之差的一定比值
volume_percent0.25每个 bar/tick 可成交数量占市场总成交量的比值,在volume_limit开启时生效
slippage_modelPriceRatioSlippage滑点模型:PriceRatioSlippage(按价格比例)或TickSizeSlippage(按跳);也可传包含包和模块的完整类路径自定义,需继承rqalpha.mod.rqalpha_mod_sys_simulation.slippage.BaseSlippage
slippage0滑点值:对PriceRatioSlippage表示价格比例,对TickSizeSlippage表示跳的数量
inactive_limitTrue开启对当前 bar 无成交量的标的的撮合限制(仅在日和分钟回测下生效)
management_fee[]账户每日计提费用,格式[("STOCK", 0.0001), ("FUTURE", 0.0001)]

撮合方式的频率适配,这是回测真实性的关键:

  • 日回测:"current_bar"(以当前 bar 收盘价撮合)或"vwap"(成交量加权平均价撮合);
  • 分钟回测:"current_bar"、"next_bar"(下一个 bar 的开盘价撮合)或"vwap";
  • tick 回测:"last"(最新价)、"best_own"(己方最优价)、"best_counterparty"(对手方最优价),以及"counterparty_offer"(逐档撮合)。

这些值在 rqalpha/mod/rqalpha_mod_sys_simulation/mod.py 的parse_matching_type中被解析为MATCHING_TYPE常量,并对频率做合法性校验。值得注意的是,matching_type为空时会根据frequency自动选择:日线/分钟线默认current_bar,tick 默认last。若日线回测中显式设置next_bar,框架会警告"该配置在日线频率下被弃用"并自动回退为current_bar。

扩展命令:启用该 Mod 后,rqalpha run命令新增以下选项:

# 使用信号方式直接按下单价格成交,屏蔽订单细节 --signal # 指定成交滑点,按当前价格的百分比计算 --slippage / -sp # 指定手续费乘数 --commission-multiplier / --cm # 指定撮合的锚定价格及对应方式 --matching-type / --mt

注意事项:

  • 在 tick 级别回测频率下,开盘集合竞价期间的撮合无视matching_type设置,一律用last撮合;
  • 默认情况下,tick 回测使用DefaultTickMatcher,日频和分钟频率回测使用DefaultBarMatcher。

7. sys_transaction_cost:交易税费

职责:实现股票、期货的交易税费计算逻辑,针对不同市场、不同交易标的差异化计算。

配置项(见 rqalpha/mod/rqalpha_mod_sys_transaction_cost/README.rst):

配置项默认值说明
cn_stock_min_commission5股票最小手续费,单位元
commission_multiplierNone佣金倍率,在默认手续费率基础上按该倍数调整(股票默认佣金万八,期货默认佣金因合约而异)
stock_commission_multiplier1股票佣金倍率
futures_commission_multiplier1期货佣金倍率
tax_multiplier1印花倍率,在默认印花税(千分之一,单边收取)基础上调整

税费计算的具体逻辑在 rqalpha/mod/rqalpha_mod_sys_transaction_cost/deciders.py,通过实现统一的费用决策器接口,将佣金、印花税、过户费等成本折算进每笔成交。

从文档到实践:一个最小可运行的回测

综合以上内容,一次完整的 RQAlpha 回测只需要三件事:

  1. 准备策略文件:如 rqalpha/examples/buy_and_hold.py,定义init与handle_bar两个回调;
  2. 配置回测参数:在run(config)的base段设置策略文件、起止日期、频率与账户初始资金;
  3. 运行并分析:默认启用sys_simulation(撮合)、sys_risk(风控)、sys_analyser(分析)、sys_transaction_cost(税费)等系统 Mod,回测结束后由sys_analyser输出净值、风险指标与收益曲线。

如果想要精细控制撮合行为,只需在mod.sys_simulation段覆写matching_type、slippage、volume_limit等参数;如果想屏蔽订单细节快速验证策略逻辑,可开启signal: True或使用--signal参数;如果想观察回测进度,开启sys_progress.show或加--progress参数。

获取帮助

官方文档为使用者提供了三条获取帮助的途径:

  • 通过文档索引或搜索功能查找特定问题;
  • 在Github Issue中提交 issue 反馈问题;
  • 加入RQAlpha 交流群(QQ 群号:487188429)与其他使用者交流。

小结

RQAlpha 的价值在于"核心稳定、外围可换":稳定的事件驱动核心 + 七个职责清晰的系统 Mod + 公开的 Mod Hook 接口,使其既能开箱即用地完成日线/分钟线/tick 级别的回测、模拟与实盘接入,又能让开发者以较低成本替换撮合、数据源、税费等任一环节,或扩展全新的账户、风控、分析能力。本文所涉及的 Mod 管理命令、配置体系与各 Mod 配置项,均可在当前仓库的 docs/source/index.rst、rqalpha/config.yml、rqalpha/mod_config.yml 及各 Mod 的 README 中进一步查阅验证。

  • 金融科技

【免费下载链接】rqalpha

A extendable, replaceable Python algorithmic backtest && trading framework supporting multiple securities

项目地址:https://gitcode.com/gh_mirrors/rq/rqalpha
点击查看免费下载

相关推荐

上一篇:nuclear 的播放列表怎么从 JSON 文件和外部服务 URL 导入?
下一篇:JLCPCB vs PCBWay:The Open Book驱动模块PCBA服务对比与选型建议

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询