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 大赛组委会**所有。规则中文版本与任何翻译版本存在歧义时,以**中文版本为准**。 --- > **承诺**:报名即视为已阅读并同意本规则全部条款。如有疑问,请在报名前通过官方渠道咨询;报名后再以"未注意到某条规则"为由的申诉,组委会不予采纳。 >