新手入门
由hxgre创建,最终由hxgre 被浏览 2 用户
新手入门
欢迎参加 “智量未来”全国高校 AI 量化投资挑战赛。
本次比赛只有一个赛题:使用 A 股 1 分钟 K 线及十档盘口数据构建 15 分钟频率因子,预测股票未来收益。比赛不设置端到端模型赛道,也不提供端到端模型模板。
比赛报名、数据研究、代码开发和提交均在 GIFP 比赛空间完成:https://gifp.bigquant.com/
一、报名与组队
参赛者须先按组委会要求完成报名和资格答题。报名成功并获得比赛空间权限后,即可进入比赛页面查看数据、克隆模板和提交代码。
- 报名时间:2026 年 10 月 10 日至 2026 年 10 月 20 日;
- 组队截止:2026 年 10 月 26 日 23:59;
- 全国高等院校专科、本科、硕士、博士在校学生均可参赛,专业不限;
- 可个人参赛,也可自由组队,每队不超过 3 人;
- 每位选手原则上只能加入一支队伍;
- 团队每位成员均须通过大赛官方微信小程序报名,并在资格答题中达到 90 分。
比赛数据位于数据平台的 “智量未来”全国高校AI量化投资挑战赛 目录,也可从比赛页面的数据入口查看数据说明。
二、选择并克隆模板
在比赛页面的代码区域选择模板,克隆到自己的开发环境后再修改。请勿直接编辑公共模板。
| 模板 | 适用方式 | 特点 |
|---|---|---|
demo_sql.ipynb |
使用 DAI SQL 计算因子 | 速度快、内存占用较低,推荐优先使用 |
demo_udf.ipynb |
使用 DAI UDF 封装自定义 Python 逻辑 | 适合 SQL 不便直接表达的计算 |
demo_py.ipynb |
使用 pandas、NumPy 计算因子 | 编写灵活,但需特别注意内存和运行效率 |
三个模板都演示了如何从 1 分钟盘口数据计算订单簿压力、聚合为 15 分钟因子、对齐沪深 300 历史成分股,并调用比赛评估模块。
三、了解比赛数据
1. 数据范围
- 股票池:沪深 300 指数历史成分股,以各历史时点的实际成分为准;
- 比赛规则规定的历史数据区间:2021 年 1 月 1 日至 2025 年 12 月 31 日;
- 数据频率:1 分钟;
- 行情字段:开盘价、最高价、最低价、收盘价、成交量、成交额、成交笔数等;
- 盘口字段:十档买卖价格、委托量和委托笔数等。
不同评测阶段由平台提供对应的数据表,代码不得假设训练集、公榜和私榜使用同一个物理表名。
2. 数据表
开发数据目录中的主要数据表如下:
| 数据表 | 说明 |
|---|---|
cpt_gifp_2026_stock_bar1m |
沪深 300 历史成分股的 1 分钟 K 线及十档盘口数据 |
cpt_gifp_2026_instruments |
15 分钟采样时点对应的沪深 300 历史成分股股票池 |
cpt_gifp_2026_exposure |
每日 BARRA 风格因子、行业暴露及相关辅助字段 |
cpt_gifp_2026_return |
比赛评估使用的收益标签及其辅助字段 |
因子开发主要通过平台注入的 bar1m 逻辑数据源读取分钟行情。cpt_gifp_2026_instruments 可用于在本地调试时对齐每个 15 分钟截面的股票池。收益标签和评测用数据不应被用于构造因子或引入未来信息。
3. 15 分钟采样时点
每天共有 16 个合法因子截面:
09:45 10:00 10:15 10:30 10:45 11:00 11:15 11:30
13:15 13:30 13:45 14:00 14:15 14:30 14:45 15:00
不得输出集合竞价、午间休市等其他时点,也不得使用因子时点之后的数据。
四、实现评测入口
提交的 Notebook 中必须定义以下入口函数:
def main(datasources, start_date, end_date):
# 读取数据并计算因子
return result
平台会传入:
datasources:数据源逻辑名与当前评测阶段物理表名的映射;start_date:本次评测的开始时间;end_date:本次评测的结束时间。
当前模板使用的逻辑数据源为:
| 逻辑名 | 数据 |
|---|---|
bar1m |
1 分钟 K 线及十档盘口数据 |
请始终通过逻辑名取得实际表名:
bar1m = datasources["bar1m"]
再在查询中使用变量:
sql = f"""
SELECT date, instrument_id, close, volume
FROM {bar1m}
"""
不要在因子查询中硬编码 cpt_gifp_2026_stock_bar1m。平台会在训练、公榜和私榜阶段切换实际数据表,硬编码物理表名可能导致评测失败或构成数据违规。
因子所需的包导入、自定义函数和参数配置应放在 main() 内,或随提交文件一并提供。本地调试和画图代码建议放在:
if __name__ == "__main__":
# 本地调试代码;平台调用 main() 时不会执行
五、返回结果要求
main() 必须返回仅包含以下三列的 DataFrame:
| 字段 | 类型 | 说明 |
|---|---|---|
date |
datetime | 合法的 15 分钟因子计算时点,精确到分钟 |
instrument |
string | 股票代码 |
factor |
numeric | 因子值,默认越大表示预测收益越高 |
示例:
| date | instrument | factor |
|---|---|---|
| 2024-01-02 10:00:00 | 000001.SZ | 0.0521 |
| 2024-01-02 10:00:00 | 000002.SZ | -0.1184 |
返回前建议完成清理:
result = result.replace([np.inf, -np.inf], np.nan)
result = result.dropna(subset=["factor"])
result = result.drop_duplicates(["date", "instrument"])
return result[["date", "instrument", "factor"]]
提交结果须满足:
- 输出必须且仅有
date、instrument、factor三列; date均为平台规定的合法 15 分钟采样时点;- 覆盖评估区间内平台要求的交易日和采样截面;
- 每个评估截面的因子缺失率不高于 40%;
- 不含无穷值、不可解析的数值或重复的
date + instrument; - 已与对应时点的沪深 300 历史成分股对齐;
- 因子只使用计算时点及此前可获得的信息。
如果原始因子值越小代表预测收益越高,应在返回前调整方向。
六、本地开发与评估
分钟盘口数据量较大,建议先用较短时间区间验证逻辑,再逐步扩大范围:
- 只查询计算所需字段;
- 调用
dai.query时优先使用compression=True; - 能用 DAI SQL 完成的筛选、聚合和时序计算,尽量不要先拉取全部数据到 pandas;
- 滚动因子可在
start_date之前多读取一段历史数据,但最终只返回评测区间内的结果; - 聚合时严格按照 15 分钟区间处理,避免跨越午间休市或使用未来分钟;
- 使用
cpt_gifp_2026_instruments对齐历史股票池,避免使用未来成分股信息。
模板中的本地调试映射示例为:
datasources = {"bar1m": "cpt_gifp_2026_stock_bar1m"}
factor_data = main(datasources, start_date, end_date)
计算完成后,可调用比赛评估模块:
from bigmodule import M
result = M.gifp_eval._latest(
factor_data=factor_data,
show=True,
)
平台会按统一口径进行必要的去极值和标准化,并对 BARRA 风险因子及平台本地因子库进行回归,以残差因子评估新增预测能力。评分综合考虑 IC 均值、ICIR、多空组合夏普比率、换手率和最大回撤。
七、提交代码
开发完成后,在比赛页面提交代码。平台会在当前评测阶段的数据上重新运行 main(),因此提交的是可复现代码,而不是预先计算好的离线因子文件。
提交前请检查:
- 提交中有且仅有一个作为评测入口的 Notebook;
- Notebook 中存在可调用的
main(datasources, start_date, end_date); - 通过
datasources["bar1m"]获取评测行情表; - 所需的脚本、配置等文件均已上传;
- 代码在指定线上环境中能够从头完整运行;
- 返回列、数据类型、采样时点、股票池和评测区间均正确;
- 未访问外部网络,未读取未授权数据,未使用未来信息。
提交后可在比赛页面的提交记录中查看运行状态和成绩。评测任务可能需要排队,请勿在短时间内重复提交同一份代码。
若评测失败,建议依次检查:
- Notebook 是否正确定义
main(); - 是否通过
datasources获取分钟行情表; - 查询时间范围是否覆盖所需的历史窗口;
- 是否遗漏脚本或配置文件;
- 返回结果是否严格为三列,且不存在非法值或重复记录;
- 输出时间是否均为合法的 15 分钟截面;
- 内存占用或运行时间是否过高。
八、公榜与私榜
| 阶段 | 时间 | 说明 |
|---|---|---|
| 公榜 | 2026 年 10 月 20 日至 11 月 20 日 | 用于研究反馈和因子迭代 |
| 提交截止 | 2026 年 11 月 20 日 | 截止后不再接受新的公榜提交 |
| 私榜候选选择截止 | 2026 年 11 月 21 日 23:59:59 | 每队最多确认 2 个有效提交 |
| 私榜 | 2026 年 11 月 21 日至 11 月 27 日 | 在未参与公开评分的数据上重跑候选因子 |
候选确认后,代码、参数、依赖和随机种子均不得修改。团队公榜和私榜成绩分别取本队有效提交中的最高分;最终以私榜结果及合规复核确定初赛排名,排名前 10 的队伍晋级决赛,具体名单以组委会正式公告为准。
九、决赛准备
入围队伍须提交 10—15 页的因子研究报告(PDF),以及组委会要求的代码复现、依赖和数据使用说明。报告建议包含:
- 摘要与研究背景;
- 因子的金融逻辑或市场微观结构解释;
- 数据处理和因子构建方法;
- 实证结果、稳健性检验和风险分析;
- 创新性、局限性与结论。
线下决赛拟于 2026 年 12 月底或 2027 年 1 月初在北京合作高校举行,具体日期和地点以组委会通知为准。每队进行 10 分钟展示和 5 分钟评委问答。
十、交流与合规
可通过比赛页面的讨论区及组委会公布的官方渠道咨询平台使用、数据理解、提交报错和研究方法等问题。
请注意:
- 不得传播比赛受限数据、他人非公开代码、账号凭证等敏感信息;
- 分享资料或开源代码时须注明来源并遵守相应许可;
- 指导教师可提供学术指导,但不得代替参赛者编写、调试或提交代码;
- 所有研究、回测和排名结果仅用于比赛与学术交流,不构成投资建议或收益承诺;
- 比赛时间、决赛安排、晋级名额和其他规则如有调整,以组委会正式通知为准。
\
十一、计算资源与辅助工具
在 GIFP 独立空间中已经配置了 2 种免费的资源规格,请大家按需获取。
| 类型 | 配置 | 费用 |
|---|---|---|
| 免费 CPU | 4 核 / 16 GiB | 免费 |
| 免费 CPU | 8 核 / 32 GiB | 免费 |
\