2025年进益资本杯因子挖掘大赛

比赛时间: -

数据驱动未来,代码挖掘阿尔法(Data Drives the Future. Code Mines the Alpha)

主办方:进益资本

比赛介绍

## **赛事介绍** 在现代量化投资领域,阿尔法因子 (Alpha Factor) 是获取超额收益的核心。一个有效的因子,能够从海量、嘈杂的市场数据中精准地预测未来股价的动向。对于像进益资本这样的资产管理机构而言,持续不断地挖掘、迭代高质量的因子,是保持投资策略领先地位的关键。 作为一家专注于量化策略的顶尖资产管理机构,进益资本致力于通过严谨的数据分析和先进的计算方法,在复杂的金融市场中为投资者创造价值。我们相信,最卓越的投资思想往往源于开放的探索与协作。因此,我们选择通过本次挑战赛,开放真实的、高颗粒度的市场数据,邀请全球顶尖高校的人才与我们共同迎接这一挑战。 在本次比赛中,您将有机会接触到稀缺、高质量的A股市场分钟级行情数据。您的任务是利用这些数据,构建一个能够预测未来股票收益的创新因子。您的因子模型将在两个阶段进行评估:首先是在历史数据上进行回测的“公榜”得分,然后是在全新的、动态更新的市场数据上进行模拟的“私榜”得分,以确保您的策略在真实世界中的稳健性。 通过本次竞赛,您将获得处理大规模金融时序数据的宝贵实战经验,深入理解市场微观结构,并直面顶级量化机构在日常研究中遇到的真实挑战。我们期待看到参赛者们应用创新的方法,解决这个充满挑战且激动人心的量化投资难题。 **入门指南** 为了帮助参赛者更好地准备,我们与合作的线上量化平台共同准备了一系列入门资源: * **技术工作坊**:由平台方工程师主讲,详细介绍平台功能、API使用、数据结构及因子分析框架。 * **模版代码**:我们将提供一个包含数据读取、因子构建范例和评估流程的核心代码 Notebook,帮助您快速上手。 * **线上答疑会**:我们将在赛程中安排资深投研专家进行线上讲座与答疑,分享行业前沿动态。 ## **数据说明** 本次竞赛提供高质量的A股市场历史行情数据,具体如下: * **股票池**: 中证1000指数在历史相应时间点上的成分股。 * **时间范围**: 2023-01-01至2024-12-31。 * **数据频率**: 1分钟级别K线及盘口快照数据。 * **数据内容**: 包含开、高、收、低、成交量、成交额以及买卖盘口等字段。 ## **模版代码** 本次竞赛采用”**高频因子低频化**”的方式,平台提供高频数据,参赛者构建日频因子并提交。主办方将提供如下模版代码供参赛者参考: * 用SQL计算因子,参考 factor_sql.ipynb。 ## **赛程安排** ### **阶段一:报名** * **时间周期**:2025-09-01 至 2025-10-10 * **开幕仪式暨宣讲会**:2025-09-23 10:00:00(具体地点另行通知):比赛开幕仪式,邀请专家老师进行宣讲,分享量化实战经验、解读赛题、介绍实习文化,宣讲会有精美小礼品,先到先得。 * **报名和组队**:通过活动主页进行报名,或联系兴趣团老师。可单人或多人组队(单一队伍最多不超过3人)。报名完成后可加入官方社群(微信/QQ群)寻找队友。报名截止时间为“**2025-10-10**”。 * **报名延长**:鉴于目前广大学生仍在积极参与,赛事组委会决定将报名截止时间从原定的2025-10-10延长至2025-10-31。然而,在2025-10-10之后报名的学生将被视为“兴趣组”参与者。**兴趣组参与者可以参加初赛(包括公榜和私榜阶段),其排名将在排行榜中展示,但无法进入决赛阶段**。 ### **阶段二:初赛** * **时间周期**:2025-10-01 至 2025-11-15 * **运行机制**: * 以**2025-11-10 00:00:00**作为**截止日期**。 * 在截止日期前,参赛队伍可利用平台提供的数据开发因子并按照规范提交代码,平台会使用验证集数据构建对应的因子数据并打分实时更新排名,以队伍最好的一次得分进行展示在”公榜(Public Leaderboard)”上;同时,参赛队伍可以选择和替换总计不超过3个因子作为截止日后的候选因子。 * 在截止日期后,参赛者将不允许修改候选因子的构建代码;平台在2025年11月10日至2025年11月15日期间的每个交易日盘后,会根据参赛者提供的代码增量构建因子数据,每日计算得分排名,并以队伍最好的一次得分进行展示在”私榜(Private Leaderboard)”上。 * 线上技术工作坊:由合作平台方工程师主讲,详细介绍平台功能、API使用、数据结构及因子分析框架。 * **账号与数据发放**:向所有成功报名的队伍发放比赛专用账号,开放数据访问权限。 * **验证集数据**:选择**2025-01-01至2025-08-30 中部分交易日的1分钟数据**作为验证集数据。 * **中期答疑会**:赛程中段安排一次线上Q&A,解答选手在研究中遇到的共性问题。 ### **阶段三:决赛** * **时间**:2025-11-16 至 2025-11-30 * **决赛名单公布**:组委会根据私榜阶段最终得分和排名,公布15支入围决赛的队伍名单。 * **决赛辅导**:为每支决赛队伍提供一次30分钟的线上辅导,帮助其深化研究报告。 * **提交材料**: 参赛队伍需提供以下材料: * 因子研究报告 (.pdf, 10-15页):一份结构完整、论证严谨的深度报告,建议包含以下章节: * 摘要 (Abstract) * 引言 (Introduction):因子研究背景与文献综述。 * 因子构建 (Factor Construction):详细阐述数据预处理、因子计算公式与逻辑。 * 实证分析 (Empirical Analysis):全面的因子分析回测结果展示、绩效归因分析、稳健性检验(如不同市场周期、不同行业下的表现)。 * 创新性与局限性讨论 (Innovation and Limitations)。 * 结论 (Conclusion)。 ### **阶段四:颁奖** - **时间**:2025年12月初(时间于比赛微信群另行通知) - **决赛答辩会**: 采用“10分钟展示 + 5分钟评委问答”的形式。线下举行,并同步线上直播。 - **颁奖典礼**: 答辩结束后,现场公布最终名次,并举行隆重的颁奖典礼,邀请所有嘉宾、评委与选手共同参与。 ## **评估** ### **公榜与私榜评估指标** 本竞赛公榜(Public Leaderboard)与私榜(Private Leaderboard)阶段的排名将完全基于量化评估。评估分为两个步骤:数据检测和得分计算。 1. **数据检测**:您提交的因子必须首先通过以下所有检测,否则将被视为无效提交。 * **数据列检查**:因子数据文件必须且仅包含三列:`date` (交易日), `instrument` (股票代码), `factor` (因子值)。 * **交易日完整性检查**:因子数据不能缺失所要求时间范围内的任何一个交易日。 * **因子覆盖度检查**:在每个交易日,因子值缺失率不得高于 **40%**。 2. **数据处理**:通过数据检测后,系统会将您的因子数据与 BARRA 风险因子进行回归取残差作为新的因子,剔除风格因子的影响。 3. **最终得分**:系统将基于您的因子值计算**IC均值、ICIR、夏普比率、换手率**等指标,并依据各参赛者在这些指标上的**实时排名**,按以下公式计算最终得分: $$ Score = 0.4 \times \text{Rank}_{IC_{mean}} + 0.3 \times \text{Rank}_{IC_{IR}} + 0.2 \times \text{Rank}_{SR} + 0.1 \times \text{Rank}_{Turnover} $$ 其中,$\text{Rank}_{指标}$ 代表该指标在所有参赛者中的实时百分比排名(数值越大,表现越优)。最终得分是四项指标排名的加权和,得分越高代表综合排名越靠前。 ### **决赛评估** 入围决赛的队伍将由评审委员会进行综合评估,评分标准如下: * **因子质量与创新性 (40%)**: * 逻辑性与原创性 (20%): 因子背后的经济学逻辑或市场微观结构解释是否清晰、合理、有创新。 * 有效性与稳健性 (20%): 因子在不同市场周期、不同行业下的表现是否稳定。 * **研究深度与规范性 (30%)**: * 研究报告质量 (20%): 报告结构是否严谨、分析是否深入、论证是否充分。 * 代码质量 (10%): 代码是否规范、可读性强、易于复现。 * **现场表现 (30%)**: * 陈述表达 (15%): 对研究工作的理解是否深刻,表达是否清晰、有条理。 * 问答互动 (15%): 回答评委提问是否精准、有逻辑。 ### **提交文件** 在本次比赛中,您只需要按照**模版代码**里的例子,将因子构建代码写在**main**函数中并提交,平台会自动运行生成因子数据,计算得分并实时公布。但需要注意,要保证**main**函数的返回数据格式应遵循特定格式,比如: | date | instrument | factor | |------------|------------|-------| | 2023-01-03 | 000001.SZ | 0.05 | | 2023-01-03 | 000002.SZ | -0.12 | | ... | ... | ... | ## **赛事奖励** * **奖金** * 特等奖1名:20000元 * 一等奖2名:10000元 * 二等奖4名:5000元 * 三等奖8名:2000元 * 签约奖(入职/实习)6名:8000元。 * **Offer**: * 决赛入围者即可获得进益资本实习面试“绿卡” * 优秀选手有机会直接锁定实习Offer,开启职业生涯。 ## **代码要求** 本次竞赛为代码竞赛,所有提交必须通过合作的线上量化平台完成。为保证竞赛公平性,您的代码需满足以下条件: * **平台提交**: 所有因子生成代码必须在指定的线上平台Notebook环境中运行并提交。 * **运行时长限制**: CPU Notebook \<= 9 小时。 * **禁止访问外部网络**: 为防止信息泄露和使用未来数据,Notebook的互联网访问权限将被禁用。 * **外部数据**: 禁止使用未经官方许可的任何外部数据。 * **最终提交**: 您提交的必须是可以自动运行并生成因子文件的代码,而非因子数据文件本身。 ## **竞赛规则** * **团队规模**: 每支队伍人数为1-3人,每位选手只能加入一支队伍。 * **知识产权**: 参赛作品(代码、报告等)的知识产权归参赛队伍所有。主办方对所有作品拥有非商业性的评审、展示和宣传权利。对于获奖的优秀因子,主办方在同等条件下拥有优先的商业合作洽谈权。 * **诚信竞赛**: 严禁任何形式的抄袭、作弊或共享代码行为。一经发现,将立即取消该队伍的参赛资格。 * **最终解释权**: 本赛事所有规则的最终解释权归进益资本大赛组委会所有。 ## **竞赛支持** * **官方交流社群**:建立赛事官方微信/QQ群,用于日常通知发布、技术问题解答和选手间交流。 * **FAQ文档**:在官网建立持续更新的“常见问题解答”页面。 * **学术资源**:提供经典的因子研究论文列表,供选手参考。

奖金&奖项

¥124000

比赛数据

## Overview 本比赛只可使用指定的数据源来构建因子。评判程序会 `import` 参赛用户提交代码里的 `main` 函数,并传入数据源名、开始日期时间、结束日期时间来调用。 ## 数据源 - 股票池:中证1000指数在历史相应时间点上的成分股 - 数据频率:1分钟级别K线及盘口快照数据 - 开发数据源:[cpt_jyc_2025_stock_csi1000_bar1m](https://bigquant.com/data/datasources/cpt_jyc_2025_stock_csi1000_bar1m) 包含2023年1月1日至2024年12月31日的数据 - 公榜数据源:参赛用户不可见。 - 私榜数据源:参赛用户不可见。 ## 数据格式 参考:[cpt_jyc_2025_stock_csi1000_bar1m](https://bigquant.com/data/datasources/cpt_jyc_2025_stock_csi1000_bar1m) | 字段 | 字段类型 | 字段描述 | | --- | --- | --- | | date | timestamp\[ns\] | 包含日期和时间 | | instrument | string | 股票代码 | | time | int32 | 交易时间 e.g. 104300 | | trading\_day | int32 | 交易日期 e.g. 20250417 | | pre\_close | float | 前收盘价 | | high | float | 最高价 | | open | float | 开盘价 | | low | float | 最低价 | | close | float | 收盘价 | | deal\_number | int32 | 成交笔数 | | volume | int32 | 最新总成交量 | | amount | float | 最新成交金额 | | ask\_price1 | float | 1档委卖价 | | ask\_price2 | float | 2档委卖价 | | ask\_price3 | float | 3档委卖价 | | ask\_price4 | float | 4档委卖价 | | ask\_price5 | float | 5档委卖价 | | bid\_price1 | float | 1档委买价 | | bid\_price2 | float | 2档委买价 | | bid\_price3 | float | 3档委买价 | | bid\_price4 | float | 4档委买价 | | bid\_price5 | float | 5档委买价 | | ask\_volume1 | int32 | 1档委卖量 | | ask\_volume2 | int32 | 2档委卖量 | | ask\_volume3 | int32 | 3档委卖量 | | ask\_volume4 | int32 | 4档委卖量 | | ask\_volume5 | int32 | 5档委卖量 | | bid\_volume1 | int32 | 1档委买量 | | bid\_volume2 | int32 | 2档委买量 | | bid\_volume3 | int32 | 3档委买量 | | bid\_volume4 | int32 | 4档委买量 | | bid\_volume5 | int32 | 5档委买量 | | ask\_num\_orders1 | int32 | 卖1档委托笔数 | | ask\_num\_orders2 | int32 | 卖2档委托笔数 | | ask\_num\_orders3 | int32 | 卖3档委托笔数 | | ask\_num\_orders4 | int32 | 卖4档委托笔数 | | ask\_num\_orders5 | int32 | 卖5档委托笔数 | | bid\_num\_orders1 | int32 | 买1档委托笔数 | | bid\_num\_orders2 | int32 | 买2档委托笔数 | | bid\_num\_orders3 | int32 | 买3档委托笔数 | | bid\_num\_orders4 | int32 | 买4档委托笔数 | | bid\_num\_orders5 | int32 | 买5档委托笔数 | | adjust\_factor | float | 累计后复权因子 | ## 数据读取示例 ``` import dai dai.query("SELECT * FROM cpt_jyc_2025_stock_csi1000_bar1m", filters={"date": ["2023-01-01 00:00:00", "2023-02-01 23:59:59"]}).df().head() ``` | | date | time | trading\_day | instrument | adjust\_factor | 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 | 2023-01-03 09:31:00 | 93100 | 20230103 | 000006.SZ | 38.939548 | 6.30 | 6.260000 | 6.200000 | 6.090000 | 6.10 | 2242 | 6358700 | 3.934735e+07 | 6.10 | 6.110000 | 6.130000 | 6.140000 | 6.150000 | 6.09 | 6.08 | 6.07 | 6.060000 | 6.050000 | 340300 | 11000 | 198600 | 24800 | 32400 | 18100 | 67500 | 13300 | 71900 | 31600 | 1 | 2 | 39 | 7 | 11 | 10 | 23 | 6 | 22 | 14 | | 1 | 2023-01-03 09:31:00 | 93100 | 20230103 | 000011.SZ | 4.082454 | 11.59 | 11.500000 | 11.500000 | 11.400000 | 11.42 | 435 | 254000 | 2.906789e+06 | 11.43 | 11.450000 | 11.460000 | 11.470000 | 11.490000 | 11.42 | 11.41 | 11.40 | 11.390000 | 11.380000 | 5900 | 2600 | 2100 | 1600 | 7500 | 9500 | 8700 | 23500 | 100 | 8000 | 4 | 6 | 2 | 7 | 3 | 11 | 6 | 4 | 1 | 5 | | 2 | 2023-01-03 09:31:00 | 93100 | 20230103 | 000016.SZ | 22.375458 | 4.51 | 4.510000 | 4.510000 | 4.470000 | 4.48 | 260 | 200500 | 8.990930e+05 | 4.49 | 4.500000 | 4.510000 | 4.520000 | 4.530000 | 4.48 | 4.47 | 4.46 | 4.450000 | 4.430000 | 21300 | 7200 | 20044 | 31700 | 35000 | 2000 | 4100 | 26100 | 51100 | 5700 | 32 | 5 | 5 | 6 | 7 | 3 | 2 | 17 | 12 | 4 | | 3 | 2023-01-03 09:31:00 | 93100 | 20230103 | 000019.SZ | 4.453101 | 7.51 | 7.520000 | 7.510000 | 7.450000 | 7.48 | 250 | 199791 | 1.497431e+06 | 7.49 | 7.500000 | 7.510000 | 7.520000 | 7.530000 | 7.48 | 7.47 | 7.46 | 7.450000 | 7.440000 | 200 | 18900 | 28800 | 15600 | 30200 | 10400 | 1000 | 1100 | 8800 | 17300 | 2 | 2 | 8 | 10 | 7 | 6 | 1 | 3 | 10 | 12 | | 4 | 2023-01-03 09:31:00 | 93100 | 20230103 | 000025.SZ | 2.742168 | 17.15 | 17.299999 | 17.299999 | 17.209999 | 17.27 | 288 | 138700 | 2.394415e+06 | 17.27 | 17.280001 | 17.290001 | 17.299999 | 17.309999 | 17.26 | 17.25 | 17.23 | 17.219999 | 17.200001 | 4700 | 100 | 400 | 44600 | 3100 | 1000 | 2400 | 100 | 3300 | 1400 | 1 | 1 | 2 | 13 | 2 | 2 | 5 | 1 | 4 | 3 | ## 因子计算示例 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 cpt_jyc_2025_stock_csi1000_bar1m GROUP BY date::DATE, instrument """, filters={"date": ["2023-01-01 00:00:00", "2023-02-01 23:59:59"]}).df().head() ``` | | date | instrument | factor | | --- | --- | --- | --- | | 0 | 2023-01-03 | 601258.SH | \-1.102671 | | 1 | 2023-01-03 | 601777.SH | \-3.899350 | | 2 | 2023-01-03 | 601921.SH | \-7.454631 | | 3 | 2023-01-03 | 603032.SH | \-87.025263 | | 4 | 2023-01-03 | 603055.SH | \-10.245980 | ## 更多因子计算 ### 第三计算库 ``` import dai data = dai.query("SELECT date, instrument, close FROM cpt_jyc_2025_stock_csi1000_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文档](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 cpt_jyc_2025_stock_csi1000_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() ``` ## 因子绩效评估 - `main`: 本次比赛中用户需要实现一个 `main` 函数用于因子计算,注意在提交代码中,尽量保持代码干净,开发测试代码可以放在 `if __name__ == '__main__'` 块中,避免在 `import` 的时候被执行 - `M.factorlens`: 评估程序会 `import` 这个 `main` 函数,并使用 `M.factorlens._latest` 给出绩效评估,其中 `._latest` 表示每次都去引用此模块的最新版本,建议只在开发阶段这样使用,不然新的版本新功能会有不兼容升级导致计算失败。 如下是一个完整的因子计算和评估参考代码。请在 [比赛代码区](https://bigquant.com/square/competition/5c3f7783-4158-4196-97ab-171b27218c7c?activeKey=code) 选择合适代码模版克隆和继续开发 ``` def main(datasource, start_date, end_date): """ factor function Args: datasource (str): Datasource table name start_date (str): Start date in 'YYYY-MM-DD HH:MM:SS' format end_date (str): End date in 'YYYY-MM-DD HH:MM:SS' format Returns: pd.DataFrame: Factor data with columns ['date', 'instrument', 'factor'] """ import pandas as pd import dai # This function demonstrates how to: # 1. Query market from the specified datasource # 2. Calculate a simple factor using SQL aggregation # 3. Return properly formatted factor data for analysis # 因子公式 https://bigquant.com/wiki/doc/Rceb2JQBdS # This represents the volume-weighted average price (VWAP): sum(amount) / sum(volume) sql = f""" SELECT date::DATE::DATETIME AS date, instrument, -1 * SUM(amount) / SUM(volume) AS factor FROM {datasource} GROUP BY date::DATE, instrument """ # Data is queried with a 7-day lookback buffer for rolling calculations lookback_days = 7 query_start_date = pd.to_datetime(start_date) - pd.Timedelta(days=lookback_days) # compression=True 降低 instrument 字符串字段的内存占用 df = dai.query(sql, filters={'date': [query_start_date, end_date]}, compression=True).df() # Final output is filtered to the exact date range requested df = df[df['date'].between(start_date, end_date)] return df if __name__ == '__main__': """ FOR Development in __main__ This section demonstrates how to: 1. Calculate factors using the main() function 2. Visualize and analyze results using the factorlens module Tips: - Adjust the date range to test different time periods - Modify the SQL query in main() to create your own factors - Use factorlens to evaluate factor performance metrics """ from bigmodule import M import structlog logger = structlog.get_logger() datasource = 'cpt_jyc_2025_stock_csi1000_bar1m' start_date = '2023-01-01 00:00:00' end_date = '2024-12-31 23:59:59' logger.info(f"Calculating factor for period: {start_date} to {end_date}") data = main(datasource, start_date, end_date) logger.info(f"Factor data shape: {data.shape}") logger.info(f"\nSample data:\n{data.head()}") m = M.factorlens._latest( data=data, m_cached=False, ) ``` ## 避免未来数据 注意在因子计算中避免引入未来数据,T0 的因子计算不能用到 T1+的数据。可以参考如下代码去验证是否用到未来数据 ``` import dai start_date = "2023-01-01 00:00:00" end_date = "2023-01-04 23:59:59" # 用历史数据表计算 d1 = main("cpt_jyc_2025_stock_csi1000_bar1m", start_date, end_date) # 构建一个截断的数据表 df_trunc = dai.query(""" SELECT * FROM cpt_jyc_2025_stock_csi1000_bar1m ORDER BY date, instrument """, filters={"date": [start_date, end_date]}).df() # 基于截断的数据表构建因子 d2 = main("df_trunc", start_date, end_date) # 结果应该是接近 0 print((d1["factor"] - d2["factor"]).abs().sum()) ``` ## 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 cpt_jyc_2025_stock_csi1000_bar1m` - 截面算子,DAI提供的函数,一般情况下,`c_` 前缀的是时序算子,并且默认基于 `GROUP BY instrument` 计算,e.g. `SELECT date, instrument, close / m_lag(close, 1) AS close_1, c_rank(close_1) FROM cpt_jyc_2025_stock_csi1000_bar1m` ## 计算资源 - 使用 `compression=True` 参数可降低内存占用:`dai.query("SELECT * FROM cpt_jyc_2025_stock_csi1000_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

比赛规则

参与本次“进益资本杯 · 首届量化因子挖掘挑战赛” (以下简称“本赛事”),即表示您已阅读、理解并同意遵守本规则。如果您不同意本规则,则无权参赛或获得任何奖项。本规则构成您与赛事主办方进益资本有限公司(“主办方”)之间具有法律约束力的协议。 ## **赛事通用规则** ### **参赛资格** * **个人参赛者** * 您必须是报名时年龄为18周岁或以上的高校在校生(本科、硕士、博士)。 * 参赛即表示您同意本规则。主办方保留在任何时候核实参赛资格并对任何争议进行裁决的权利。 * **团队参赛者** * 参赛队伍人数限制在1至3人之间。 * 每位选手只能加入一支队伍。 * 所有团队成员必须单独注册,然后按照赛事官网说明组建或加入团队。 * **注意事项** * 本次活动为清华大学与进益资本联合举办,参赛选手需为清华在校生/应届生;外校学生需与清华大学学生组队进行。 ### **主办方与合作方** * 本赛事由进益资本主办。 * 本赛事与国内主流线上量化平台合作,由合作平台提供稳定的回测引擎与技术支持。您理解并同意,合作平台仅提供技术支持,不负责评选获胜者或颁发任何奖项。 ### **比赛阶段** * 比赛将从开始日期持续至最终提交截止日期。 * 赛事时间线(包括公榜阶段、私榜阶段、决赛名单公布、答辩与颁奖)将在赛事官网公布,如有任何更新或额外截止日期,主办方将及时在官网和官方社群公布。 ### **参赛作品** * 参赛者需在赛事官网注册。 * 参赛作品 (“提交内容”) 必须符合赛事官网和本规则中规定的要求。 * 提交内容不得使用或包含任何人工标注或人工预测的验证集或测试数据记录。 ### **提交限制** * **公榜阶段**:参赛队伍可以不限次数、不限时间地提交因子代码。 * **私榜阶段**:以截止日期前最后一次提交的代码为准,之后不允许修改代码。 ### **赛事数据** * “赛事数据”指从赛事官网或合作平台获取的,用于参赛的数据或数据集。 * 您仅可将赛事数据用于参加本赛事。主办方保留取消任何不按规定使用赛事数据的参赛者资格的权利。 * 您不可以使用赛事数据以外的数据(“外部数据”)来开发和测试您的提交内容。 ### **代码要求** * **私下分享限制**:禁止在团队外私下分享与赛事数据相关的代码或可执行文件。除非团队合并,否则禁止在不同团队之间共享代码。 * **公开分享**:允许公开分享代码。如果您选择公开分享代码,则必须在官方讨论区或相关平台进行,以惠及所有参赛者。通过分享,您被视为已在开源许可下授权该代码,且该许可不应限制其商业用途。 ### **决赛与评审** * **初赛**:潜在获胜者将根据私榜阶段的最终得分和排名确定。 * **决赛**:入围决赛的队伍需提交因子研究报告、答辩演示文稿等材料,并通过现场答辩的形式进行综合评估。 * **评审标准**: * **公榜/私榜**:100%量化评估(数据检测与最终得分)。 * **决赛**:综合评估(因子质量与创新性40%,研究深度与规范性30%,现场表现30%)。 * **平局处理**:如果出现分数平局,将以最先提交的提交内容为胜者。 ### **获奖者义务** 作为获得奖项的先决条件,获奖者必须履行以下义务: * 交付用于生成获胜提交内容的最终模型的软件代码及相关文档。 * 向主办方授予本规则中规定的获胜者授权。 * 签署并返还主办方或合作平台可能要求的所有奖项接受文件。 ### **奖项** * 奖项详情将在赛事官网公布。 * 所有奖项均需经过主办方对参赛者资格和提交内容合规性的审核和验证。 ### **税务** 所有奖项所产生的税费均由获奖者自行承担。主办方将按法律要求代扣代缴相关税款。 ### **隐私权** 您知晓并同意,主办方和合作平台可能会收集、存储、共享和使用您在注册和参赛期间提供的个人信息(“个人信息”)。合作平台将根据其隐私政策使用这些信息。 ### **保证与免责** * 您保证您的提交内容是您的原创作品,且您是其唯一所有者和权利持有人,并有权进行提交和授予所有必要的许可。 * 您同意,您的提交内容不侵犯任何第三方的知识产权或任何其他权利,也不违反任何适用法律。 * 在法律允许的最大范围内,您同意就因您的行为、违约或不作为以及违反本规则中的任何保证而产生的所有索赔、损失和费用对主办方和合作平台进行赔偿,并使其免受损害。 ### **最终解释权** * 如果因计算机病毒、欺诈、技术故障或其他任何原因导致赛事无法按计划进行,主办方保留取消、终止、修改或暂停赛事的权利。 * 主办方保留取消任何试图通过作弊、欺骗或其他不公平行为破坏赛事正常运营的参赛者资格的权利。 ## **赛事特定规则** ### **赛事名称** 进益资本杯 · 首届量化因子挖掘挑战赛 ### **赛事主办方** 进益资本有限公司 ### **数据使用** * **范围**:本次比赛提供中证1000指数成分股过去两年(2023年1月1日至2024年12月31日)的1分钟级别历史行情数据(含盘口数据)。 * **用途**:数据仅限用于本次比赛。 ### **自动化机器学习工具** * 参赛者和团队可以使用自动化机器学习工具来创建提交内容。 * 使用此类工具的参赛者或团队必须确保拥有适当的许可。