AI 因子挖掘
比赛时间: -
基于行情、财务、另类等多源化数据,在传统量化与 AI 方法两条赛道上挖掘能预测股票收益的有效因
主办方:BigAlpha
比赛介绍
## 赛事介绍
**BigAlpha** 是 BigQuant(宽邦科技)面向全球高校青年人才打造的年度 AI 量化投研赛事,依托 BigQuant AI 投研平台,通过真实数据、开放赛题与专业评审,发现新一代金融科技人才。
BigAlpha 2026 全球同步开放三大赛事,参赛者可自由选择:
| 赛道 | 适合人群 | 链接 |
|---|---|---|
| **AI 因子挖掘** | 金融工程、量化、数学、统计方向 | [进入](https://bigquant.com/square/competition/76ad3f56-ec2b-431a-890e-139a7f4bbcba) |
| **端到端量价时序预测** | AI、CS、数据科学、金融科技方向 | [进入](https://bigquant.com/square/competition/523f9302-5b4b-42bd-bce1-f232e7c74316) |
| **AI 开放创新** | 跨学科、创新创业团队 | [进入](https://bigquant.com/square/competition/63dd885c-2488-4efd-9c61-9e3a536f172c) |
**关于 BigQuant**:国内领先的 AI 量化投资平台,使命是 "Democratize AI to empower investors"。平台将机器学习、深度学习等 AI 技术与量化投资深度融合,为个人 Quant、研究机构、券商及资管机构提供从数据、研究、回测到实盘的一站式解决方案,已被多家头部金融机构采用。核心能力包括 PB 级金融与另类数据、2000+ 基础因子库与表达式引擎、高性能 DAI 数据引擎,以及策略源码库与实盘对接。本赛道直接使用与机构客户一致的工具链。
**为什么是因子挖掘**:阿尔法因子是量化投资获取超额收益的核心——从嘈杂的市场数据中预测未来股价动向。本赛道开放稀缺、高颗粒度的 A 股分钟级行情数据,邀请全球高校人才构建创新因子。因子分两阶段评估:先在历史数据回测得到 **公榜** 得分,再在动态更新的样本外数据上得到 **私榜** 得分,以检验真实环境下的稳健性。参赛者将获得大规模金融时序数据的实战经验、对市场微观结构的理解,以及作品被机构与赞助方看见的机会。
## 赛道设置
竞赛设置双赛道并行,参赛者按所属赛道构建并提交因子,两赛道独立排名。
* **传统量化赛道**
* **核心**:强调投资逻辑、统计显著性与经济解释性。
* **方法**:多因子模型、基本面分析、经典技术指标组合、物理模型模拟等。
* **评审导向**:经济学逻辑合理性、统计检验显著性、跨市场环境稳健性、因子可解释性。
* **AI 智能赛道**
* **核心**:利用大语言模型(LLM)、强化学习、遗传算法等技术自动生成或优化因子。
* **方法**:自动化特征工程、Prompt Engineering 生成因子公式、神经网络挖掘非线性因子等。
* **评审导向**:除因子有效性外,额外评估 AI 技术的应用深度、创新性与 AI 参与度(详见决赛评估)。
## 数据
* **股票池**:中证 1000 指数在历史相应时间点上的成分股。
* **时间范围**:2019-01-01 至 2024-12-31。
* **数据内容**:
* **K 线及盘口快照**:1 分钟 K 线及盘口数据。
* **财务数据**:已做 PIT(Point-in-Time)处理。
## 参赛与提交
### 模版代码
本赛道采用"因子挖掘"方式:平台提供高频等特色数据,参赛者构建**日频因子**并提交。主办方提供以下模版供参考:
| 模版 | 说明 |
|---|---|
| `factor_financial.ipynb` | ROE_TTM = 归母净利润 TTM / 归母净资产 LF |
| `factor_hf.ipynb` | 基于 1 分钟盘口快照计算日内订单簿压力,按交易日聚合为日频因子 |
| `factor_model.ipynb` | 特征结合量价因子和财务因子,利用xgboost训练预测 |
> 注意:可以提交多个不同类型的文件,但要保证调用评估模块的代码放在 notebook 中,且提交文件中只能有一个 notebook,后台会提取其中的代码运行。
### 提交格式
只需将因子构建代码写在 **main** 函数中并提交,平台自动运行生成因子数据、计算得分并实时公布。提交的必须是可自动运行的**代码**,而非因子数据文件本身。`main` 函数返回数据须为且仅为三列:
| date | instrument | factor |
|---|---|---|
| 2023-01-03 | 000001.SZ | 0.05 |
| 2023-01-03 | 000002.SZ | -0.12 |
| ... | ... | ... |
* 平台不限制因子方向,默认**因子值越大越好**,参赛者需自行确保方向逻辑正确。
* 传统赛道代码需标注核心统计方法、经济逻辑对应的实现环节;AI 赛道代码需标注 AI 技术应用的关键环节(LLM 调用、模型训练、自动化特征工程等),并额外提交 AI 技术应用说明文档。
* 文本类信息(如使用 AI 时的提示词)请以 markdown 形式进行提交。
### 数据校验
提交的因子须通过以下全部校验,否则视为无效:
* **数据列**:必须且仅包含 `date`、`instrument`、`factor` 三列。
* **交易日完整性**:不得缺失评估区间内任一交易日。
* **因子覆盖度**:每个交易日因子值缺失率不得高于 **40%**。
### 平台预处理
校验通过后,平台对原始因子统一处理:
* **去极值** 与 **标准化**。
* **风格剔除**:将因子对 BARRA 风险因子回归,取残差作为新因子,以评估其增量贡献。
### 运行环境要求
为保证公平,所有因子生成代码须在指定线上平台 Notebook 环境运行并提交:
* **运行时长**:Notebook ≤ 3 小时。
* **禁止外部网络**:为防信息泄露与使用未来数据,Notebook 互联网访问被禁用。
## 评分机制
### 提交规则与因子池
每支团队最多提交 **50 个因子**,每次提交对应一个因子。团队全部有效提交即构成因子池,无需额外勾选。
> 上限设计意图:鼓励精选因子而非批量堆砌,同时为平台评估保留合理算力。
评分以**单次提交(单个因子)为最小评分单元**:每个提交独立计算综合得分,团队榜单分数取团队所有提交的最大值。
$$
\text{Score}^{(\text{team})} = \max_{i \in \text{team}} \text{Score}_i, \qquad \text{Score}_i = 0.3 \times A_i + 0.7 \times B_i
$$
其中 $A_i$、$B_i$ 均为**因子 $i$ 自身**的得分。
### A 项:单因子得分
对每个因子独立计算:
$$
A_i = 0.25 \times \text{Rank}_{IC_{mean}} + 0.25 \times \text{Rank}_{IC_{IR}} + 0.25 \times \text{Rank}_{SR} + 0.25 \times \text{Rank}_{\text{Stress}}
$$
* $\text{Rank}_{IC_{mean}}$:IC 均值排名。
* $\text{Rank}_{IC_{IR}}$:IC_IR 排名。
* $\text{Rank}_{SR}$:多空组合夏普比率排名。
* $\text{Rank}_{\text{Stress}}$:特殊行情下的 IC_IR 得分。
四项均为在**全体提交因子**上做截面百分位排名(pct rank)后的结果,取值落在 $[0, 1]$。
### B 项:Elastic Net 回归得分
将所有团队的提交因子汇总为全局候选集,以截面 z-score 标准化后的下期收益率为目标,做 Elastic Net 回归:
$$
y_{i,t} = \frac{r_{i,t+1} - \mu_t}{\sigma_t}, \quad r = Fw + \epsilon
$$
$$
\mathcal{L} = \|y - Fw\|^2 + \lambda_1 \|w\|_1 + \lambda_2 \|w\|^2
$$
采用**滚动窗口**训练(窗口 60 个交易日,步长 20 个交易日),对每个因子取跨窗口的权重稳定性得分:
$$
\text{ModelScore}_i = \frac{\text{mean}(|w_i|)}{\text{std}(|w_i|) + \epsilon}
$$
> 该指标同时衡量因子在组合中的平均贡献与跨期稳定性,类比单因子评估中的 IC_IR。L1 项将无增量贡献的因子权重压至 0,L2 项使相关因子组内权重平滑分配。
因子 B 项得分取其 ModelScore 在全体被回归因子上的百分位结果,落在 $[0, 1]$:
$$
B_i = \widetilde{\text{ModelScore}}_i
$$
若因子未被 Elastic Net 选中(权重恒为 0),则 $B_i = 0$。
> 是否被选中完全由 L1 项决定,无需人工参数。无增量贡献的因子自然被压至 0 分,堆砌低质因子毫无收益,天然防止以量取胜。
### 团队最终得分
$$
\text{Score}_{\text{final}} = \max_{i \in \text{team}} \left( 0.3 \times A_i + 0.7 \times B_i \right)
$$
### 本地调试支持
平台提供**本地回归工具**,便于提交前自行评估因子质量:
* 输入自己的因子库,在本地运行与官方一致的 Elastic Net 流程。
* 输出每个因子的 ModelScore 估算值、滚动权重曲线、与其他因子的相关性热力图。
* 使用**公开历史因子集**(主办方基础因子库)作为对照,模拟全局竞争环境。
> 本地结果仅供参考,最终得分以官方全局回归为准(全局因子集随赛程变化)。
## 评估周期与排名
竞赛分**公榜**和**私榜**两阶段,使用不同数据区间,最终排名以私榜为准。
### 数据划分
| 阶段 | 训练集 | 验证集 | 说明 |
|---|---|---|---|
| 公榜 | 2019-01-01 ~ 2024-12-31 | 2025 全年 | 验证集得分可见,用于调试迭代 |
| 私榜 | 不公开 | 不公开 | 含 2026 年样本外数据,区间不披露 |
> 公榜验证集(2025)与私榜区间不重叠,防止通过反复提交间接拟合私榜。
### 评估间隔(公榜阶段)
每次新提交即加入待评估队列。由于 Elastic Net 计算量随全局因子数增长,平台采用**自适应间隔**:
$$
t_{\text{next}} = \max\bigl(k \cdot t_{\text{last\_run}},\; t_{\text{min}}\bigr)
$$
* $t_{\text{last\_run}}$:上一轮实际评估耗时;$k = 1.5$ 为安全系数;$t_{\text{min}} = 1$ 小时为最小间隔。
比赛初期因子少、间隔短;后期因子池扩大、间隔自动拉长,无需人工干预。每轮评估后同步更新公榜排名。
**私榜阶段**:公榜截止后因子冻结,不得新增或修改。平台在私榜区间每个交易日盘后增量构建因子、计算得分,最终结果即为最终排名。
### 每轮公示内容
每日固定时点,根据最新评估结果公布以下信息,帮助参赛者明确优化方向。
**(1)前 10 因子画像**(ModelScore 排名前 10)
| 特征 | 说明 |
|---|---|
| BARRA 风格暴露 | 在市值、Beta、动量、波动率等风格上的暴露分布,提示尚未充分挖掘的维度 |
| 行业分布 | 各行业平均 IC,揭示因子行业偏好 |
> 公布的是**聚合特征**,不涉及具体构造逻辑,不影响知识产权保护。
**(2)团队细节得分**
* 当前权重前 20 的因子中,本团队占据几个(不披露其他团队因子内容)。
* 本团队各因子的 ModelScore 百分位排名及变化趋势。
* 本团队 A 项、B 项得分及全场排名分位。
**(3)指数增强策略跟踪**
平台基于每轮回归权重构建**中证 1000 指数增强策略**:以合成因子值为信号,在成分股内超配高分股、低配低分股,跟踪误差约束 5% 以内。每轮更新持仓并展示:
| 指标 | 说明 |
|---|---|
| 累计超额收益 | 相对中证 1000 的累计 alpha |
| 信息比率(IR) | 年化超额收益 / 跟踪误差 |
| 最大回撤 | 超额收益的最大回撤 |
| 增量贡献 | 新一轮因子加入后策略 IR 的变化 |
> 指增策略的持续改善是比赛质量的直观体现——优质新因子应推动 IR 上升;若未能提升也会如实呈现,形成正向反馈。
## 赛程安排
### 阶段一:宣传报名
* **时间**:2026-05-15 起宣传报名,报名截止 **2026-07-25**。
* **报名组队**:通过活动主页报名,可单人或组队(单队最多 5 人),报名后可加入官方社群寻找队友。
* **赛前培训**:**6 月 24 日** 分赛道介绍平台功能、API、数据结构及因子分析框架。
* **系统内测**:2026-06-22 至 06-28,可提交代码测试系统稳定性,成绩不计入初赛,内测后重置榜单。
### 阶段二:初赛
* **正式开赛**:**7 月 1 日**。
* **公榜阶段**:**7 月 1 日 – 8 月 5 日**,以 **2026-08-05 23:59:59** 为提交截止。平台用验证集实时打分、更新排名,以队伍最好成绩展示在公榜;参赛队可选择并替换总计不超过 **2 个**因子作为截止后的候选因子。
* **私榜阶段**:**8 月 5 日 – 8 月 12 日**,截止后不得修改候选因子代码;平台在私榜区间每个交易日盘后增量构建因子并每日计算得分,以队伍最好成绩展示在私榜。
* **账号发放**:向成功报名队伍发放比赛专用账号并开放数据访问。
### 阶段三:决赛
* **晋级榜单公布**:**8 月 16 日**。
* **线下总决赛**(9 月初):
| 场次 | 时间 | 地点 |
|---|---|---|
| 美国场 | 2026-09-01 | UC Berkeley |
| 亚洲场 | 2026 年 9 月初 | 北京大学 |
* **晋级规则**:每场设 **12 个名额**,综合三大赛事初赛表现评定——各赛事**前 2 名直通**(3 赛事 × 2 = 6 个),其余 **6 个**由组委会综合判定。
## 决赛
### 参赛材料
入围队伍须按时提交因子研究报告(PDF,10–15 页),结构需包含:
| 章节 | 内容要点 |
|---|---|
| 摘要 | 研究目标、核心方法与主要结论 |
| 赛道标签 | 明确"传统"或"AI"赛道 |
| 引言 | 研究背景与文献综述 |
| 因子构建 | 数据预处理、因子计算公式与逻辑(AI 赛道额外说明 AI 应用环节)|
| 实证分析 | 回测结果、绩效归因、稳健性检验(跨周期与行业)|
| 创新性与局限性 | 方法创新点与局限;AI 赛道说明 AI 应用创新点 |
| 结论 | 研究总结与未来方向 |
### 答辩与颁奖
决赛答辩采用 **"25 分钟展示 + 5 分钟评委问答"**,线下举行并同步线上直播。答辩后公布最终名次并举行颁奖典礼。
### 评估标准
评审委员会综合评估:
* **因子质量与逻辑性**:投资逻辑与经济解释性;跨周期、跨行业的有效性与稳健性、统计显著性。
* **研究深度与规范性**:报告结构严谨度、分析深度;代码规范性、可读性、可复现性。
* **现场表现**:陈述表达的清晰度与条理;问答的精准度与逻辑性。
* **AI 创新性**(AI 赛道):AI 技术选型与场景适配性、应用环节原创性、AI 参与度的落地效果。
## 赛事奖励
本赛道与其他两条赛道共享以下奖项体系。
### 洲际奖项(线下决赛)
亚洲场与美国场各设:
| 奖项 | 名额 | 奖金 | 其他 |
|---|---|---|---|
| 金奖 | 1 名 | ¥20,000 | 奖杯 + 电子证书 |
| 银奖 | 2 名 | ¥15,000 | 奖杯 + 电子证书 |
| 铜奖 | 3 名 | ¥10,000 | 奖杯 + 电子证书 |
### 初赛奖项
* **赛道周冠军**:每场每周按排名评选,奖励 ¥1,500。
* **BigAlpha 量化新星**:至少提交一次有效合规作品的团队均获电子证书。
### 特色奖项
随赛事推进评选特色作品与团队进行专项颁奖,奖项届时公布,奖金合计 ¥12,500。
奖金&奖项
¥200000
比赛数据
## Overview
本比赛只可使用指定的数据源来构建因子。评判程序会 `import` 参赛用户提交代码里的 `main` 函数,并传入数据源名、开始日期时间、结束日期时间来调用。
## 数据源
本次 BigAlpha 的比赛均放在 BigQuant 数据平台:https://bigquant.com/data/categories/-BigAlpha。股票池:中证1000指数在历史相应时间点上的成分股
- 构建因子的基础数据
* 1分钟级别K线及盘口快照数据,数据表链接:[bigalpha_2026_stock_bar1m](https://bigquant.com/data/datasources/bigalpha_2026_stock_bar1m)
* 财务数据,数据表链接:[bigalpha_2026_financial](https://bigquant.com/data/datasources/bigalpha_2026_financial)
- 其他数据
* 股票列表,数据表链接:[bigalpha_2026_instruments](https://bigquant.com/data/datasources/bigalpha_2026_instruments)
* 因子库,数据表链接:[bigalpha_2026_factorlib](https://bigquant.com/data/datasources/bigalpha_2026_factorlib)
* 风险暴露,数据表链接:[bigalpha_2026_exposure](https://bigquant.com/data/datasources/bigalpha_2026_exposure)
## 数据格式
以分钟行情为例,参考:[bigalpha_2026_stock_bar1m](https://bigquant.com/data/datasources/bigalpha_2026_stock_bar1m)
以下是根据您提供的内容转换成的 Markdown 格式表格:
| 字段名 | 数据类型 | 描述 |
| --- | --- | --- |
| date | np.datetime64 | 时间 |
| instrument | pd.StringDtype | 标的 |
| time | np.int32 | 时间(HHMMSSmmm) |
| trading_day | np.int32 | 交易日期 |
| pre_close | np.float32 | 前收盘 |
| open | np.float32 | 开盘价 |
| high | np.float32 | 最高价 |
| low | np.float32 | 最低价 |
| price | np.float32 | 成交价 |
| ask_price1 | np.float32 | 1档委卖价 |
| ask_price2 | np.float32 | 2档委卖价 |
| ask_price3 | np.float32 | 3档委卖价 |
| ask_price4 | np.float32 | 4档委卖价 |
| ask_price5 | np.float32 | 5档委卖价 |
| ask_price6 | np.float32 | 6档委卖价 |
| ask_price7 | np.float32 | 7档委卖价 |
| ask_price8 | np.float32 | 8档委卖价 |
| ask_price9 | np.float32 | 9档委卖价 |
| ask_price10 | np.float32 | 10档委卖价 |
| ask_volume1 | np.int64 | 1档委卖量 |
| ask_volume2 | np.int32 | 2档委卖量 |
| ask_volume3 | np.int32 | 3档委卖量 |
| ask_volume4 | np.int32 | 4档委卖量 |
| ask_volume5 | np.int32 | 5档委卖量 |
| ask_volume6 | np.int32 | 6档委卖量 |
| ask_volume7 | np.int32 | 7档委卖量 |
| ask_volume8 | np.int32 | 8档委卖量 |
| ask_volume9 | np.int32 | 9档委卖量 |
| ask_volume10 | np.int32 | 10档委卖量 |
| bid_price1 | np.float32 | 1档委买价 |
| bid_price2 | np.float32 | 2档委买价 |
| bid_price3 | np.float32 | 3档委买价 |
| bid_price4 | np.float32 | 4档委买价 |
| bid_price5 | np.float32 | 5档委买价 |
| bid_price6 | np.float32 | 6档委买价 |
| bid_price7 | np.float32 | 7档委买价 |
| bid_price8 | np.float32 | 8档委买价 |
| bid_price9 | np.float32 | 9档委买价 |
| bid_price10 | np.float32 | 10档委买价 |
| bid_volume1 | np.int64 | 1档委买量 |
| bid_volume2 | np.int32 | 2档委买量 |
| bid_volume3 | np.int32 | 3档委买量 |
| bid_volume4 | np.int32 | 4档委买量 |
| bid_volume5 | np.int32 | 5档委买量 |
| bid_volume6 | np.int32 | 6档委买量 |
| bid_volume7 | np.int32 | 7档委买量 |
| bid_volume8 | np.int32 | 8档委买量 |
| bid_volume9 | np.int32 | 9档委买量 |
| bid_volume10 | np.int32 | 10档委买量 |
| bid_num_orders1 | np.int32 | 卖1档委托笔数 |
| bid_num_orders2 | np.int32 | 卖2档委托笔数 |
| bid_num_orders3 | np.int32 | 卖3档委托笔数 |
| bid_num_orders4 | np.int32 | 卖4档委托笔数 |
| bid_num_orders5 | np.int32 | 卖5档委托笔数 |
| bid_num_orders6 | np.int32 | 卖6档委托笔数 |
| bid_num_orders7 | np.int32 | 卖7档委托笔数 |
| bid_num_orders8 | np.int32 | 卖8档委托笔数 |
| bid_num_orders9 | np.int32 | 卖9档委托笔数 |
| bid_num_orders10 | np.int32 | 卖10档委托笔数 |
| ask_num_orders1 | np.int32 | 买1档委托笔数 |
| ask_num_orders2 | np.int32 | 买2档委托笔数 |
| ask_num_orders3 | np.int32 | 买3档委托笔数 |
| ask_num_orders4 | np.int32 | 买4档委托笔数 |
| ask_num_orders5 | np.int32 | 买5档委托笔数 |
| ask_num_orders6 | np.int32 | 买6档委托笔数 |
| ask_num_orders7 | np.int32 | 买7档委托笔数 |
| ask_num_orders8 | np.int32 | 买8档委托笔数 |
| ask_num_orders9 | np.int32 | 买9档委托笔数 |
| ask_num_orders10 | np.int32 | 买10档委托笔数 |
| num_trades | np.int32 | 成交笔数 |
| volume | np.int64 | 当日累计成交量 |
| amount | np.float64 | 当日成交额(元) |
| total_bid_volume | np.int64 | 委买总量 |
| total_ask_volume | np.int64 | 委卖总量 |
| bid_avg_price | np.float32 | 加权平均委买价 |
| ask_avg_price | np.float32 | 加权平均委卖价 |
## 读取示例
```
import dai
dai.query("SELECT * FROM bigalpha_2026_stock_bar1m", filters={"date": ["2019-01-01 00:00:00", "2019-01-05 23:59:59"]}).df().head()
```
| | date | instrument | pre_close | high | open | low | close | deal_number | volume | amount | ask_price1 | ask_price2 | ask_price3 | ask_price4 | ask_price5 | bid_price1 | bid_price2 | bid_price3 | bid_price4 | bid_price5 | ask_volume1 | ask_volume2 | ask_volume3 | ask_volume4 | ask_volume5 | bid_volume1 | bid_volume2 | bid_volume3 | bid_volume4 | bid_volume5 | ask_num_orders1 | ask_num_orders2 | ask_num_orders3 | ask_num_orders4 | ask_num_orders5 | bid_num_orders1 | bid_num_orders2 | bid_num_orders3 | bid_num_orders4 | bid_num_orders5 |
|---:|:--------------------|:-------------|------------:|-------:|-------:|------:|--------:|--------------:|---------:|-----------------:|-------------:|-------------:|-------------:|-------------:|-------------:|-------------:|-------------:|-------------:|-------------:|-------------:|--------------:|--------------:|--------------:|--------------:|--------------:|--------------:|--------------:|--------------:|--------------:|--------------:|------------------:|------------------:|------------------:|------------------:|------------------:|------------------:|------------------:|------------------:|------------------:|------------------:|
| 0 | 2019-01-02 09:31:00 | 000006.SZ | 5.18 | 5.2 | 5.18 | 5.18 | 5.18 | 48 | 19000 | 98444 | 5.19 | 5.2 | 5.21 | 5.22 | 5.23 | 5.18 | 5.17 | 5.16 | 5.15 | 5.14 | 14600 | 38300 | 19400 | 20100 | 8400 | 18700 | 30700 | 14500 | 59200 | 8500 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 2019-01-02 09:31:00 | 000011.SZ | 9.18 | 9.26 | 9.2 | 9.2 | 9.26 | 25 | 24300 | 223956 | 9.27 | 9.28 | 9.29 | 9.32 | 9.33 | 9.26 | 9.25 | 9.24 | 9.23 | 9.22 | 1400 | 6300 | 14800 | 3000 | 1100 | 1600 | 172300 | 700 | 200 | 3000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 2 | 2019-01-02 09:31:00 | 000012.SZ | 3.99 | 4.04 | 3.99 | 3.99 | 4 | 39 | 125062 | 501100 | 4.01 | 4.02 | 4.03 | 4.04 | 4.05 | 4 | 3.99 | 3.98 | 3.96 | 3.95 | 5200 | 600 | 10495 | 445800 | 32075 | 69500 | 152238 | 34100 | 9800 | 40000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 3 | 2019-01-02 09:31:00 | 000016.SZ | 3.24 | 3.26 | 3.24 | 3.24 | 3.26 | 52 | 77000 | 249727 | 3.26 | 3.27 | 3.28 | 3.29 | 3.3 | 3.25 | 3.24 | 3.23 | 3.22 | 3.21 | 35100 | 21400 | 13700 | 35500 | 24500 | 99100 | 5800 | 13800 | 34900 | 22600 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 2019-01-02 09:31:00 | 000018.SZ | 2.12 | 2.15 | 2.15 | 2.14 | 2.15 | 121 | 674000 | 1.44844e+06 | 2.16 | 2.17 | 2.18 | 2.19 | 2.2 | 2.15 | 2.14 | 2.13 | 2.12 | 2.11 | 191800 | 193600 | 153400 | 110100 | 206000 | 22200 | 17300 | 178800 | 148300 | 85200 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
## 因子计算示例
### DAI 数据引擎
DAI 内置多种算子/函数,参考 [DAI函数文档](https://bigquant.com/wiki/doc/Rceb2JQBdS)。DAI是专为AI/量化场景优化的超高性能计算引擎,能充分利用现代CPU/GPU能力。
```
import dai
dai.query("""
SELECT
date::DATE::DATETIME AS date,
instrument,
AVG(close) / LAST(close) AS factor
FROM bigalpha_2026_stock_bar1m
GROUP BY date::DATE, instrument
ORDER BY date, instrument
""", filters={"date": ["2023-01-01 00:00:00", "2023-02-01 23:59:59"]}, compression=True).df().head()
```
| | date | instrument | factor |
|---:|:--------------------|:-------------|---------:|
| 0 | 2023-01-03 00:00:00 | 000006.SZ | 1.00064 |
| 1 | 2023-01-03 00:00:00 | 000011.SZ | 1.0023 |
| 2 | 2023-01-03 00:00:00 | 000012.SZ | 0.993469 |
| 3 | 2023-01-03 00:00:00 | 000016.SZ | 0.999046 |
| 4 | 2023-01-03 00:00:00 | 000019.SZ | 1.00017 |
### UDF
DAI 数据引擎支持UDF(User-Defined Function,用户定义函数),指允许用户通过编写自定义函数来扩展算子。
```
import dai
# 定义计算因子的UDF - 带类型声明(推荐)
def calculate_factor(instrument: str, prices: list) -> float:
"""计算因子:平均价格/最后价格"""
if not prices:
return None
avg_price = sum(prices) / len(prices)
last_price = prices[-1]
# 避免除零错误
if last_price == 0:
return None
return avg_price / last_price
# 计算因子
dai.query("""
WITH grouped_data AS (
SELECT
date::DATE::DATETIME AS date,
instrument,
ARRAY_AGG(close ORDER BY date) AS price_list
FROM bigalpha_2026_stock_bar1m
GROUP BY date::DATE, instrument
)
SELECT
date,
instrument,
calculate_factor(instrument, price_list) AS factor
FROM grouped_data
ORDER BY date, instrument
""",
filters={"date": ["2023-01-01 00:00:00", "2023-02-01 23:59:59"]},
compression=True,
udf_list=[
dai.DaiUDF(
name="calculate_factor",
function=calculate_factor,
)
]).df().head()
```
| | date | instrument | factor |
|---:|:--------------------|:-------------|---------:|
| 0 | 2023-01-03 00:00:00 | 000006.SZ | 0.997372 |
| 1 | 2023-01-03 00:00:00 | 000011.SZ | 0.997007 |
| 2 | 2023-01-03 00:00:00 | 000012.SZ | 0.989028 |
| 3 | 2023-01-03 00:00:00 | 000016.SZ | 0.988163 |
| 4 | 2023-01-03 00:00:00 | 000019.SZ | 0.994797 |
### 第三计算库
DAI 数据引擎也支持将数据转换为 pd.DataFrame、pl.DataFrame、arrow 等格式的数据类型。
```
import dai
data = dai.query("SELECT date, instrument, close FROM bigalpha_2026_stock_bar1m", filters={"date": ["2023-01-01 00:00:00", "2023-02-01 23:59:59"]}, compression=True)
# 转为 pandas dataframe,然后在 pandas 继续计算
df = data.df()
# 转为 polars dataframe,然后在 polars 继续计算,polars没有内置在 aistudio 中,可以自行安装 pip3 install polars
df = data.pl()
# 转为 apache arrow,然后在 arrow 继续计算
df = data.arrow()
# 更多参考 DAI 文档
```
更多参考 DAI 文档:[DAI文档](https://bigquant.com/wiki/doc/PLSbc1SbZX)
### 混合计算
dai 与 pandas 等混合计算,可以在 dai 中高性能的使用 pandas、polars、arrow等数据(通过参数 `bind_relations` 绑定),并支持JOIN等操作。
```
import dai
data = dai.query("SELECT date, instrument, close FROM bigalpha_2026_stock_bar1m", filters={"date": ["2023-01-01 00:00:00", "2023-02-01 23:59:59"]})
df = data.df()
dai.query("""
SELECT
date::DATE::DATETIME AS date,
instrument AS instrument,
AVG(close) AS avg_close
FROM df
GROUP BY date::DATE::DATETIME, instrument
""", bind_relations={"df": df}).df()
```
## Tips
- 关于日期和时间
- `date::DATE` 只取得 `date` 的日期部分,e.g. `2025-01-03 14:24:31`::DATE 为 `2025-01-03`。注意:`date` 的类型是 TIMESTAMP,`date::DATE` 类型是 `DATE`,可能在部分比较时出现数据类型不一致问题
- `date::DATE::DATETIME` 可以这样再将数据类型转为 `DATETIME`
- 更多日期/时间函数参考 [DAI函数文档](https://bigquant.com/wiki/doc/Rceb2JQBdS):`date_trunc`, `time_bucket`
- 时序算子,DAI提供的函数,一般情况下,`m_` 前缀的是时序算子,并且默认基于 `GROUP BY instrument` 计算,e.g. `SELECT date, instrument, close / m_lag(close, 1) AS close_1 FROM bigalpha_2026_stock_bar1m`
- 截面算子,DAI提供的函数,一般情况下,`c_` 前缀的是时序算子,并且默认基于 `GROUP BY instrument` 计算,e.g. `SELECT date, instrument, close / m_lag(close, 1) AS close_1, c_rank(close_1) FROM bigalpha_2026_stock_bar1m`
## 计算资源
- 使用 `compression=True` 参数可降低内存占用:`dai.query("SELECT * FROM bigalpha_2026_stock_bar1m", filters={"date": ["2023-01-01 00:00:00", "2023-02-01 23:59:59"]}, compression=True).df()`。数据量很大,可以开启该参数(设为 True)后,系统会自动将 instrument 列的字符串类型转换为 category 类型,显著降低内存占用。在 dai sql 中查询和计算 pandas category 类型,可能会遇到不兼容问题,可以尝试用 `instrument::string` 转会为字符串。
- 资源规格:在 aistudio 状态栏里可以点击计算资源规格并切换,推荐 4C/16G 或者更高的资源规格。参赛后平台会赠送宽币用于升级计算资源,用户也可以通过参加比赛培训、[邀请用户](https://bigquant.com/spark)等获得更多宽币。
## DAI 文档
DAI(DATA FOR AI)是BigQuant研发的高性能分布式数据平台
* 使用简单:通过统一接口访问BigQuant各类数据。
* 数据丰富:提供PB级金融数据、另类投资数据和因子数据 (数据字典),并支持用户自定义数据。
* 技术先进:采用现代化的分布式架构,支持大规模数据的低延迟读写和高性能计算。
* 使用文档访问链接:https://bigquant.com/wiki/doc/PLSbc1SbZX
比赛规则
> 本文为 **BigAlpha 2026 全球高校联赛 · AI 因子挖掘赛道**的合规与免责文件,与介绍文档形成配套。
## 基本规则
## 知识产权
* 参赛作品(代码、因子构造、报告等)的知识产权归参赛队伍所有。
* 主办方对所有作品拥有**非商业性的评审、展示、宣传**权利,包括但不限于:在官方渠道公示因子排名与聚合特征、在赛事复盘中匿名引用因子方法、在学术 / 行业交流中以**脱敏形式**展示。
* 对于获奖的优秀因子,主办方在**同等条件下**拥有优先的商业合作洽谈权;商业合作的具体形式、对价、署名将另行签署书面协议,本规则不构成商业授权本身。
* 对于参赛者使用的第三方资源(开源库、预训练模型、外部 API 等),其许可与权属由参赛者自行负责,详见第 5.2 条。
### 诚信竞赛
参赛者须遵守以下基本原则;具体可识别的违规行为见第二章"反作弊与违规清单"。
* 严禁**抄袭**他人代码 / 因子(包括往届赛事、公开仓库、其他队伍)。
* 严禁**跨队共享**核心代码、因子、模型权重;**禁止串通刷分**(如多队伍互相提交相同因子推高自身相对排名)。
* 严禁以任何方式**绕过、欺骗、攻击**评估系统(详见第二章)。
* 鼓励参考公开文献、开源工具、官方模板代码——以"复现 + 改进"为基础的工作受到欢迎,但须在决赛报告中**明确标注引用来源与改进点**。
### 赛道合规
* **传统赛道**:严禁使用 AI 赛道限定的自动化因子生成技术,包括但不限于:
* 使用大语言模型(LLM)批量生成因子表达式;
* 使用强化学习 / 遗传算法 / 神经网络对因子进行自动搜索或自动组合;
* 使用 AutoML 工具对因子进行自动化特征工程。
* **可使用**:传统统计方法、经济学逻辑驱动的人工因子构造、经典机器学习用作辅助分析(如用 XGBoost 做事后归因,但不得作为因子生成主体)。
* **AI 赛道**:核心因子构建逻辑须由 AI 主导,严禁伪 AI(即用人工因子套上 AI 外壳)。最终提交时须额外提供 **AI 应用说明文档**,明确标注:
* 所使用的 AI 技术类型(LLM / RL / GA / NN 等);
* AI 在因子生成 / 优化链路中的具体环节与代码位置;
* 关键 prompt、训练配置、损失函数等可复现的核心信息;
* AI 参与度的自评(详见决赛评估章节)。
* **赛道认定争议**:若组委会对作品的赛道归属存疑,将要求队伍补充材料澄清;澄清后仍无法证明合规的,按违规处理。
## 反作弊与违规清单
> 在过往赛事中,部分参赛者会利用赛制设计的灰色地带提升排名。本章对**可识别的违规行为**进行明确列举,并说明检测机制与处理梯度,避免事后争议。
### 数据使用类违规
* **使用未来数据(look-ahead bias)**:在 t 日因子计算中使用 t 日盘后或 t+1 日及以后的数据。包括但不限于:用 t 日收盘价构造 t 日 09:45 的因子值、用 t+5 日的财报数据回填 t 日因子。
* **越权访问数据**:使用赛题股票池(中证 1000 在历史时点的成分股)以外的数据、或使用赛题时间范围(2019-01-01 ~ 2024-12-31)以外的数据来辅助构造公榜因子。
* **私自上传外部数据**:通过 Notebook 上传非平台提供的数据集(包括但不限于另类数据、海外市场数据、第三方因子库)参与因子构造。
* **数据投毒**:手工修改、伪造、注入因子数据文件,而非通过代码自动生成。
### 提交规避类违规
* **稀疏因子规避覆盖度校验**:刻意构造覆盖率刚好高于 60%(即缺失率 40%)但实际仅在少数股票上有效的因子,规避校验。
* **多因子拼接绕过相关性约束**:将一个完整因子人为拆分成多个高度相关的子因子分别提交,意图占据更多排名席位。
* **轮换提交刷新排名**:对同一因子做无实质改动的微调反复提交,仅为触发评估或刷新公榜显示。
* **反向因子滥用**:在因子方向不显著时,仅通过加负号来构造"新因子"。
### 身份与协作类违规
* **多账号参赛**:同一自然人注册多个账号、加入多个队伍。
* **跨队伍代码 / 因子共享**:不同队伍之间共享因子代码、模型权重、关键 prompt;包括以"师门内部分工"、"实验室共享"为名的分发。
* **代提交**:他人代为编写并提交参赛作品,本人对作品无实质贡献。
* **串通刷分**:多个队伍合谋调整提交策略,意图共同抬高某一方排名或压制竞争对手。
### AI 赛道专项违规
* **伪 AI 应用**:以 AI 之名包装人工构造的因子(例如:用 LLM 仅做最后的"翻译"或"美化",因子实质仍为人工设计)。
* **AI 输出造假**:在 AI 应用说明文档中虚构 AI 调用记录、prompt、训练日志。
* **AI 参与度虚报**:在决赛阶段对"AI 参与度"的描述与实际代码不符。
### 检测机制
主办方将通过以下机制进行违规检测,参赛者提交即视为同意接受:
* **静态代码分析**:扫描提交代码中的可疑模式(如时间索引偏移、外部网络请求、数据外联)。
* **因子相关性聚类**:对全场入池因子做相关性矩阵分析,识别异常聚簇。
* **跨队伍指纹比对**:比对不同队伍提交代码的结构相似度、变量命名、注释风格。
* **运行时审计**:抽样队伍代码在隔离环境中复现,比对因子数据与队伍声称的逻辑是否一致。
* **AI 赛道专项审计**:对入围决赛的 AI 赛道队伍,要求复现核心 AI 调用链路。
## 规则版本与变更
* **规则版本说明**:当前比赛规则为**初拟版本**,可能在内测阶段遇到不可抗的工程或评估问题(如数据接口变更、评估算法瓶颈、第三方服务异常等)。**最终以"内测结束、正式比赛开始前"发布的规则版本为准**,请参赛者持续关注官方公告与社群通知。
* **比赛期间的规则调整权**:为保障公平性,**主办方保留在比赛进行期间修订规则、调整评估口径、增补反作弊机制的权利**。规则调整将兼顾已提交作品的处理方式(如重新评分、保留历史得分作为参考、给予合理的代码调整窗口等),尽量降低对正常参赛队伍的影响。
* **变更类型与提前量**:
| 变更类型 | 举例 | 提前通知量 |
|---|---|---|
| 重大变更 | 评分公式修改、提交规范调整、赛程顺延 | ≥ 48 小时 |
| 一般变更 | 公示信息字段调整、本地工具版本更新 | ≥ 24 小时 |
| 紧急修订 | 反作弊补丁、严重数据 / 平台 Bug 修复、安全漏洞响应 | 即时通知,事后补充说明 |
* **变更通知渠道**:官网公告、官方社群(微信 / QQ 群)置顶、平台站内信,三个渠道至少**两个**同步发布,以站内信送达时间为正式生效时间。
* **历史版本留档**:所有规则版本将在官网保留可追溯的历史记录,便于参赛者核对自己提交时所依据的规则;版本号采用"主版本.次版本"格式,重大变更升级主版本号。
## 数据与平台免责
* **数据使用范围**:比赛数据仅供**赛事评估与学习研究**使用,严禁外传、商用、上传至公开仓库或用于本赛事以外的任何场景,包括赛事结束后。一经发现,主办方将依法追究责任。
* **数据保密期限**:本赛事所提供的高频快照、PIT 财务数据等敏感数据的保密义务**长期有效**,不因比赛结束而解除。
* **数据准确性**:主办方已对数据做必要的清洗与校验,但不对数据的绝对准确性、完整性作出保证;因数据问题导致的因子表现波动,**一般情况下不作为评估申诉的依据**,但严重数据错误(如批量缺失、字段错位、复权异常)经核实后会触发统一重算,并向所有受影响队伍同步说明。
* **平台稳定性**:BigQuant 平台已做高可用部署,但仍可能因不可抗力(机房故障、网络中断、第三方依赖异常等)出现短时不可用。因平台故障导致的提交延误,主办方将根据故障时长合理顺延截止时间或取消该时段的评估结果,**不对参赛者的算力消耗、时间投入作经济补偿**。
* **算力配额**:CPU Notebook ≤ 3 小时 / 次,AI 赛道 GPU Notebook ≤ 6 小时 / 次(详见介绍文档"代码要求")。超出配额导致的运行失败由参赛者自行负责。
* **结果不构成投资建议**:本赛事所有因子、模型、回测结果及衍生分析仅供学术研究与赛事评估使用,**不构成任何形式的投资建议**。任何人据此进行实盘投资所产生的盈亏,主办方、平台方及合作方均不承担责任。
## 参赛者责任
### 代码合规与安全
* 参赛者需对自己提交的代码负责,不得包含:
* 恶意代码、后门、未授权访问平台资源的逻辑;
* 试图规避平台沙箱、网络隔离、资源限制的代码;
* 试图获取其他队伍提交内容、评估中间结果的代码。
* 一经发现,立即按 L4 处理(取消资格),并保留追究法律责任的权利。
### 5第三方依赖
* 若参赛者使用了开源库、预训练模型、外部 API 等第三方资源,需自行确认其许可协议**允许竞赛及商业评审场景使用**。
* 由第三方依赖引发的版权 / 许可争议,由参赛者自行承担;主办方有权要求队伍替换有争议的依赖。
### 个人信息与肖像
* 参赛者报名时提供的个人信息仅用于赛事相关用途,主办方将依法保护,但参赛者需保证所提供信息真实有效。
* 决赛入围队伍同意主办方在赛事宣传中使用其**姓名、学校、队名、决赛影像**;如需保留匿名权利,须在决赛入围确认时书面提出。
### 内测与冻结期约束
* 内测阶段(2026-06-08 至 2026-06-18)的提交不计入初赛得分。
* 初赛截止后的候选因子(每队不超过 2 个,详见介绍文档)一经选定不得修改;私榜阶段,参赛者**不得新增或修改任何因子的构建代码**。
## 申诉与最终解释
### 申诉流程
* **申诉范围**:评估结果争议、违规处理异议、数据严重错误等。
* **申诉渠道**:联系赛事运营人员,附必要的证据(截图、日志、代码片段等)。**不接受**通过非官方渠道(私下联系评委、社群刷屏等)的申诉。
* **响应时限**:
| 申诉类型 | 首次响应 | 处理结论 |
|---|---|---|
| 一般申诉(评估结果、公示信息) | 5 个工作日内 | 10 个工作日内 |
| 违规处理异议(针对 L3 / L4) | 48 小时内 | 7 个工作日内 |
| 紧急申诉(涉及截止时间、关键数据) | 24 小时内 | 与紧急修订一并处理 |
* **重复申诉**:同一事项的重复申诉、无新证据的申诉,组委会有权不再单独答复。
### 最终解释权
本赛事所有规则的最终解释权归 **BigAlpha 2026 大赛组委会**所有。规则中文版本与任何翻译版本存在歧义时,以**中文版本为准**。
---
> **承诺**:报名即视为已阅读并同意本规则全部条款。如有疑问,请在报名前通过官方渠道咨询;报名后再以"未注意到某条规则"为由的申诉,组委会不予采纳。
>

