个人研究 / 学习
非商业目的使用,按 Apache 2.0 走;用免费日线数据包即可完成大部分日频策略练习。注意:把研究成果用于对外收费服务或商业产品,就跨过了边界。
RQAlpha 项目研究站 · 许可与数据边界
这两条决定了 RQAlpha 适不适合你的场景,比功能清单更重要。许可上 RQAlpha 不是标准的 Apache 2.0 开源:非商业用途(个人非商业目的,或高校/研究所等非营利机构用于教育科研)按 Apache 2.0 使用;商业用途需经米筐科技授权。数据上,官方免费提供日级别数据包,分钟级回测需要自备数据源。
依据仓库 LICENSE 与官方文档整理的边界示意;非法律意见,具体条款与授权以官方原文为准。
以下是 RQAlpha 仓库 LICENSE 原文要点的中文归纳(版权方:深圳米筐科技有限公司,2019)。
| 情形 | 许可要点(原文归纳) | 对你的影响 |
|---|---|---|
| 非商业用途 | 指个人出于非商业目的使用,或高校、研究所等非营利机构出于教育、科研目的使用 | 遵守 Apache License 2.0 即可 |
| 商业用途 | 指个人出于任何商业目的使用,或法人/其他组织出于任何目的使用;未经授权不得用于商业目的(含向第三方提供、销售、出租、出借、转让本软件及其衍生产品等) | 公司内部使用也属商业用途,需先取得授权 |
| 条款冲突处理 | 商业使用同样需遵守 Apache 2.0,但两者冲突时以仓库 LICENSE 为准 | 不能只按 Apache 2.0 理解 RQAlpha |
| 授权联系 | LICENSE 与 README 均给出联系邮箱 public@ricequant.com | 商用前先走授权流程,不要先上线再补 |
pyproject.toml(license = {text = "Apache-2.0"})与 LICENSE 正文里,但 LICENSE 同时写明了商业用途的额外限制——只看到元数据里的 Apache-2.0 就认为可以随意商用是不准确的。RQAlpha 的能力边界由数据决定;下表的每条都来自官方文档原文。
| 维度 | 官方免费提供 | 缺口与替代 |
|---|---|---|
| 频率 | 日级别数据 | 分钟级 1m 官方明确不提供数据源:需自备数据源、用 RQData,或在米筐平台进行 |
| 品种 | 股票、常用指数、场内基金、期货 | 其它品种需自接数据层 |
| 市场 | A 股为主 | 配置支持 CN 与 HK,但开 HK 后无法交易 A 股任何标的(互斥) |
| 更新节奏 | 免费数据包每月月初更新 | 需要每日盘后更新,需 RQData 权限 + update-bundle |
| 财务与因子等 | 基础行情与合约信息随数据包提供 | 财报、因子、宏观、舆情等属 RQData 数据服务范围(官方列出 A 股财务、基金、期货期权、可转债、风格因子、宏观、电商、舆情等) |
| 模拟/实盘 | 框架支持 b 回测 / p 模拟 / r 实盘三种运行类型 | 实盘接入需要券商/通道方案,官方仓库本身不提供交易通道 |
按身份对号入座,先把 RQAlpha 的合规前提走完再谈技术。
非商业目的使用,按 Apache 2.0 走;用免费日线数据包即可完成大部分日频策略练习。注意:把研究成果用于对外收费服务或商业产品,就跨过了边界。
用于教育、科研等非营利目的可在 Apache 2.0 下使用;论文与教学中引用请注明项目来源与版本,涉及数据使用也要遵守数据源条款。
无论对外销售还是内部业务系统,都属商业用途,需联系米筐科技取得授权;同时评估是否需要 RQData 的商业数据授权,避免数据合规风险。
这些说法在中文社区里流传很广,逐条对着原文核一遍。
| 常见说法 | 实际情况 |
|---|---|
| 「MIT/Apache 开源,随便商用」 | LICENSE 明确商业用途需授权,且冲突时以该 LICENSE 为准 |
| 「装了就能做分钟级高频回测」 | 框架支持 1m 频率,但开源版不提供分钟级数据源,得先解决数据 |
| 「数据一直免费且每天更新」 | 免费数据包按官方说明每月月初更新;每日更新走 RQData |
| 「开源版可以一键实盘」 | 运行类型支持实盘(-rt r),但交易通道与账户实现需自行接入或使用生态方案 |
| 「和米筐在线平台是同一个东西」 | RQAlpha 是本地框架;米筐平台是在线回测/模拟环境,官方说策略可同时用于两者,但账号与数据体系是分开的 |
四个问题回答完,基本能判断这条路适不适合你。
| 问题 | 是 | 否 |
|---|---|---|
| 使用是否属商业目的? | 先联系授权,再开工 | 按 Apache 2.0 使用即可 |
| 策略需要分钟级或更低频数据吗? | 需自备数据源或 RQData / 平台方案 | 免费日线数据包够用 |
| 需要港股/美股吗? | 注意 HK 与 A 股互斥,且免费数据不覆盖美股 | A 股日线场景直接可用 |
| 是否需要财务/因子等深度数据? | 评估 RQData 或自建数据管道 | 行情+合约信息即可满足 |
官方免费数据与扩展 API(RQDatac)是两套东西:前者是回测的基础数据,后者是策略里额外查数据的入口。下表按官方 install / overview / 扩展 API 文档逐项对照。
| 维度 | 免费数据包(download-bundle) | 米筐数据服务(RQDatac 扩展 API) | 适用场景 | 注意点 |
|---|---|---|---|---|
| 覆盖市场 | A 股市场数据(官方原文:目前只免费开放 A 股市场日线数据) | Ricequant 从多个数据源整理归纳维护的查询接口,覆盖股票、指数、期货、宏观等 | 只做 A 股日线研究时,免费数据包就够了 | 免费数据不含美股;港股要改 market 配置,且开 HK 后不能同时交易 A 股 |
| 频率 | 日级别 | 按其文档提供更细的数据查询 | 日频策略的常规回测 | 官方对分钟级回测给出的建议仍是「在米筐平台进行」或「实现数据层接口接自有数据」 |
| 品种 | 股票、常用指数、场内基金、期货 | 股票、指数、期货、宏观等多类查询 | A 股与商品期货策略研究 | 财务、因子、可转债、舆情等属扩展 API 范围,免费数据包不含 |
| 更新节奏 | 数据每个月月初更新 | 配套 rqalpha update-bundle 可在每日盘后即时更新数据 | 对时效要求不高的历史研究用免费包即可 | 每日更新的前置条件是 RQDatac 权限与 license 已配置,否则命令会失败 |
| 获取方式 | 一条命令下载,默认落在 ~/.rqalpha | 免费申请试用并获取文档 → 安装 RQDatac → 配置 license | 先用免费数据跑通流程,再按需要申请 | 在米筐在线量化平台运行策略时可免费调用扩展 API,本地调用则要自己配 license |
| 是否要改代码 | 不用改:数据包直接供回测读取 | 不用改:安装授权后与框架内 API 一样直接调用 | 两者的调用方式是统一的 | RQAlpha 的策略代码不需要为数据来源做分支 |
| 扩展 API 分组 | 代表接口 | 能拿到什么 | 注意点 |
|---|---|---|---|
| 行情 | get_price、get_price_change_rate | 合约历史数据、历史涨跌幅 | 与框架内 history_bars 的职责不同:前者是数据查询,后者是回测取 bar |
| 股票·基础信息 | get_shares、get_turnover_rate、get_split、get_securities_margin、get_margin_stocks、get_stock_connect、concept | 流通股、历史换手率、拆分数据、融资融券信息与标的列表、沪深港通持股、概念股列表 | 多为横截面或历史数据查询,使用前先确认权限是否覆盖该接口 |
| 股票·财务与因子 | get_factor、get_pit_financials_ex、current_performance、get_industry、get_instrument_industry | 因子、季度财务信息、财务快报、行业股票列表与个股行业分类 | 官方文档只列接口不列字段明细,字段口径要以 RQData 文档为准 |
| 指数 | index_components、index_weights | 指数成分股、成分股权重 | 做指数成分股类策略时用来构造股票池,注意成分股会随时间调整 |
| 期货 | futures.get_dominant、futures.get_dominant_price、futures.get_member_rank、futures.get_warehouse_stocks | 主力合约、主力连续合约行情、会员持仓排名、仓单数据 | 免费数据包里只有期货行情,这些属于额外查询 |
| 宏观经济 | econ.get_reserve_ratio、econ.get_money_supply | 存款准备金率、货币供应量 | 宏观择时类研究用得到,注意数据发布频率与滞后 |
| 权限与调用阶段 | —(由 RQDatac 与 ExecutionContext 控制) | 授权后才可调用;自定义注入的接口可限制生效阶段 | 未授权时接口会直接报错;用 ExecutionContext.enforce_phase 可限定只在指定阶段可用 |
1. 访问 Ricequant 官网免费申请试用 RQDatac 并获取其文档 —— 预期输出:拿到安装文档与用来配置 license 的脚本;
2. 按文档安装 RQDatac —— 预期输出:安装完成、在 Python 里 import 不报错;
3. 执行脚本把 license 配置到环境变量,或在执行策略时传入 --rqdatac license:xxx —— 预期输出:策略里调用 get_price、get_factor 这类接口不再报权限错误。
官方把对接数据源分成「增加自有数据源」与「替换已有数据源」两类;下表的写法与参数都来自 docs 的扩展数据源、扩展事件源与基本概念章节,写法背后的 Mod 加载机制见Mod 扩展页。
| 路线 | 官方示例 | 要写什么 | 适合场景 | 注意点 |
|---|---|---|---|---|
| 策略里直接读自有数据 | read_csv_as_df.py | 在 init 里用 pandas 读 CSV 或数据库,把结果挂到 context 上供后续使用 | 少量补充数据、临时研究 | 取数必须写在 init / before_trading / handle_bar / handle_tick / after_trading 里,写在函数外可能异常 |
| 策略里 import 自定义模块 | get_csv_module.py、import_get_csv_module.py | 把模块所在目录写入 sys.path,再正常 import 使用 | 自有数据已封装成模块、多个策略复用 | 建议在 init 阶段加路径;模块基于策略相对路径时,用 context.config.base.strategy_file 定位 |
| 用 Mod 注入扩展 API | rqalpha_mod_extend_api_demo | 继承 AbstractMod,用 export_as_api 装饰器把自有函数注册成策略可调用的 API | 希望自有数据用起来像框架自带接口 | 注入要在初始化阶段完成;可用 ExecutionContext.enforce_phase 限定只在 ON_INIT / BEFORE_TRADING / ON_BAR / AFTER_TRADING / SCHEDULED 生效 |
| 替换行情数据源 | 官方 Tushare 接入示例 | 继承 BaseDataSource,只重写需要替换的方法,再在 Mod 的 start_up 里替换数据源 | 接第三方行情,或让 RQAlpha 读自己的行情库 | 不处理的情况要 return super().xxx(...) 交回父类;官方示例因数据源只有日线,因此只能日回测 |
| 替换基础数据 | —(bundle 文件替换) | 按相同格式生成数据包文件替换,或实现 AbstractDataSource 接口并继承 BaseDataSource 覆写 | 停牌、ST、交易日历等口径要换成自己的一套 | 官方说明合约信息、ST、停牌、交易日历属全量数据且每日更新,没有对应的显式替换接口 |
| 扩展事件源 | ProgressMod(官方进度条 Mod) | 用 env.event_bus.add_listener(EVENT.XXX, handler) 订阅事件,用 publish_event 发布自己的事件 | 想在回测流程里插入自己的动作或统计 | 事件分系统事件、市场事件、交易事件三类;发布时要自己构造 Event 对象 |
| 要碰的方法/入口 | 签名要点 | 是否必须 | 注意点 |
|---|---|---|---|
get_bar | (instrument, dt, frequency) | 替换行情时必需 | 返回单根 bar;取不到数据时的回退逻辑要自己写清楚 |
history_bars | (instrument, bar_count, frequency, fields, dt, skip_suspended=True) | 替换行情时必需 | 参数只给截止日与条数,需自己按交易日历推出开始日;返回结构与默认实现不一致时策略行为会变 |
available_data_range | (frequency) | 替换行情时必需 | 返回该频率可用的日期区间,官方示例给的是「固定起始日到昨天」 |
current_snapshot | (instrument, frequency, dt) | 日线数据源可不实现 | 官方从 DataProxy 源码得到的结论:提供日级别数据的实现不需要这个函数 |
env.set_data_source(...) | 在 Mod 的 start_up 内调用 | 替换行情时必需 | 必须在系统启动阶段完成替换,晚了不生效 |
env.event_bus.add_listener | (EVENT.XXX, handler) | 按需(扩展事件源时) | 日线回测的事件顺序示例:BEFORE_TRADING(00:00) → BAR(15:00) → AFTER_TRADING(15:30) → SETTLEMENT(17:00) |
~/.rqalpha/bundle 下是 funds.h5、futures.h5、indexes.h5、dividends.h5、st_stock_days.h5、stocks.h5、suspended_days.h5、trading_dates.npy、yield_curve.h5。要按自己的口径替换基础数据,先照着这些文件的组织方式生成同格式文件;否则就实现数据源接口,只覆写你真正需要换掉的那几个方法。这五个名字经常被当成同一个产品,搜索引擎里的问题也多来自这个混淆。它们其实属于四类东西:开源框架 / 在线平台 / 数据服务 / 商业产品。下表同时标出本站的证据等级。
| 名称 | 它是什么 | 与开源框架的关系 | 权限或费用 | 本站证据等级 | 什么时候会用到它 |
|---|---|---|---|---|---|
| RQAlpha | 米筐科技开源的 Python 算法交易与回测框架,在本地运行 | 就是本页讨论的框架本体 | 非商业用途按 Apache 2.0;商业用途需授权 | ①官方功能 ②源码已核验 ③安装链路本站实测 | 要自己写策略、自己控制撮合与成本假设 |
| 米筐平台(Ricequant) | 米筐提供的在线研究/回测/模拟交易环境 | 同一批策略可以在平台上回测与模拟;框架本体不依赖平台 | 平台账号与额度由米筐提供,以官方页面为准 | ①官方文档说明 | 不想在本地装环境;或用平台的数据与算力 |
RQData(rqdatac) | 米筐的授权数据服务,以 Python 包形式使用 | 不是框架的一部分,是可选数据来源;update-bundle 的每日更新依赖它 | 需要申请权限并把 license 配置到环境变量 | ①官方安装文档、②仓库文件 | 要分钟级数据、每日更新或扩展数据接口 |
| RQPro | 米筐面向专业/机构用户的商业产品 | 与开源框架是两条产品线 | 商业授权,以米筐官方为准 | ⑤待核验(本站未核验其功能边界与价格) | 团队需要成品终端与研究平台时,直接问米筐官方 |
| RQ Alpha Plus | 米筐的商业版框架(与开源版不是同一许可范围) | 与开源框架同源但不同交付形态 | 商业授权,以米筐官方为准 | ⑤待核验(本站未核验其功能清单与授权条款) | 需要商业支持或开源版之外的能力时,以官方报价为准 |
| 本机技能路线(EasyClaw) | 第三方 AI 助手 + 技能包,用一句话发起研究任务 | 与上述米筐产品均无已证实集成 | 安装客户端即可使用 | 本机技能目录已核验(SKILL.md) | 只想先问清研究问题、不想装 Python 环境 |
按 LICENSE 的表述,法人或其他组织「出于任何目的」使用本软件都属于商业用途范畴,内部业务系统也在其中。稳妥做法是先联系米筐科技确认授权范围。
许可约束的是框架本身及其衍生产品的使用方式,与策略由谁写无关。如果整体使用场景属商业用途,仍需授权。
技术上可以(实现数据层接口接入自己的数据源),但要自行确保所用数据的授权合规;框架的许可与数据源的许可相互独立,不能互相替代。
高校与科研机构的教育科研用途在框架许可范围内,但数据包本身的使用可能还受米筐数据的条款约束。发表前建议同时确认数据使用条款,并注明来源与版本。
可能。当前依据是仓库 LICENSE 与 README(2026-09 核验,版权年份 2019)。任何使用前请以官方仓库最新原文为准,不要以第三方转述为依据。
可以看对比页列的本机技能路线(免部署、用自然语言发起研究任务),但 RQAlpha 与 EasyClaw 无已证实集成,本机技能路线也不提供 RQAlpha 这种可改撮合与风控的工程化回测能力。选择取决于你要的是「写策略的工程环境」还是「快速得到研究结论」。