logo
0
0
WeChat Login
update README

2026THU BDC 大数据挑战赛


赛事介绍

2026 清华大学大数据挑战赛(THU-BDC) 的核心任务:在沪深300成分股中,每日选出至多5只股票,使其未来5日加权收益率最大化。

项目说明
选股范围沪深300成分股(300只)
输入数据每只股票过去60个交易日的量价数据
输出格式result.csvstock_id, weight 两列,权重之和为1)
评分公式final_score = (预测Top5收益 - 随机收益) / (真实Top5收益 - 随机收益)

final_score 越接近1越好。赛事方通过 Docker 镜像以批处理方式自动评分。


开发环境

CNB 容器基于 Ubuntu 24.04 LTS,通过根目录 Dockerfile 构建并部署在 CNB 云开发平台上。包含 Python 3.12、数据科学工具链、code-server IDE 及 Docker 构建/提交能力。

系统工具

工具用途
Python 3.12核心运行时,含 venv / dev / pip 模块
uvRust 编写的高性能包管理器,比 pip 快 10-100x
git版本控制
build-essentialGCC/G++,编译 C 扩展所需
Docker CLI构建与导出赛事提交镜像
TA-Lib C 库 0.6.4技术指标计算的系统依赖(已预编译安装)

预装 Python 库(/opt/venv)

以下库已安装在独立虚拟环境 /opt/venv 中,已加入 PATH,开箱即用:

用途
numpy数值计算
pandas数据处理
scikit-learn机器学习
matplotlib / seaborn可视化
requestsHTTP 请求
jupyter / ipykernel交互式 Notebook
tqdm进度条

code-server(浏览器版 VS Code)

已预装以下扩展:

  • ms-python.python — Python 语言支持、调试、IntelliSense
  • tencent-cloud.coding-copilot — AI 辅助编程
  • mhutchie.git-graph / waderyan.gitblame / donjayamanne.githistory — Git 可视化
  • mathematic.vscode-pdf / cweijan.vscode-office — PDF 和 Office 文档预览
  • redhat.vscode-yaml — YAML 支持
  • bierner.markdown-mermaid / oderwat.indent-rainbow — Markdown 增强与缩进可视化

编辑器配置

通过 settings.json 预设:

{ "editor.formatOnSave": true, "editor.defaultFormatter": "ms-python.black-formatter", "python.defaultInterpreterPath": "/usr/bin/python3", "editor.fontSize": 14, "editor.fontFamily": "'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'Consolas', monospace", "workbench.colorTheme": "Default Dark+" }

环境使用指南

安装项目依赖

各项目可在自己的目录下用 uv 管理独立依赖,互不干扰:

cd THU-BDC2026 uv sync # 按 pyproject.toml 安装,自动创建 .venv/ source .venv/bin/activate # 激活项目虚拟环境

使用预装库

/opt/venv 中的通用库(numpy、pandas 等)已全局可用,无需重复安装。

使用 Docker 构建

容器内已预装 Docker CLI(daemon 由 CNB 平台提供):

docker build -t my-image . docker compose up # 本地验证 docker save -o out.tar my-image:latest # 导出

提交流程

  1. 开发:在 code-server 中编写代码,本地调试
  2. 验证docker compose up 确认容器可正常运行并生成 result.csv
  3. 导出docker save -o 队伍名称.tar bdc2026:latest
  4. 自测:将 .tar 放入 test/tars/,运行 python test/test.py 模拟赛事评分

官方 Baseline

赛事方提供了一个基于 StockTransformer 的排序学习选股示例(THU-BDC2026/ 目录),参赛者可在此基础上进行改进,也可完全替换为自己的方案。

Baseline 概要

  • 思路:将选股建模为排序学习(Learning to Rank),对同一天所有候选股票打分排序
  • 模型:StockTransformer — Transformer 时序编码 + 跨股票注意力(CrossStockAttention),输出每只股票的排序分数
  • 特征:197维(158个Alpha因子 + 39个TA-Lib技术指标)
  • 损失:WeightedRankingLoss(Pairwise + Listwise,Top5样本2倍权重)
  • 输出:按分数取 Top5,等权重0.2,写入 output/result.csv

Baseline 目录结构

THU-BDC2026/ ├── code/src/ │ ├── config.py # 超参数配置 │ ├── model.py # StockTransformer 模型定义 │ ├── train.py # 训练入口 │ ├── predict.py # 推理入口 │ └── utils.py # 特征工程 + 数据集构建 ├── data/ # 训练/测试数据 ├── get_stock_data.py # Baostock 数据下载 ├── train.sh / test.sh # 启动脚本 ├── DockerfileTHU # Baseline Docker 镜像定义 ├── pyproject.toml # 项目依赖 ├── GUIDE.md # 图文操作指南 └── READMETHU.md # Baseline 技术细节

运行 Baseline

cd THU-BDC2026 uv sync && source .venv/bin/activate python get_stock_data.py # 下载数据 python data/split_train_test.py # 划分数据集 sh train.sh # 训练 sh test.sh # 预测 → output/result.csv python test/score_self.py # 自测得分

常见问题

Q: 预装库和项目依赖冲突?
A: 预装库在 /opt/venv,项目依赖通过 uv sync 安装在各自的 .venv/ 中,互不影响。

Q: TA-Lib 报错?
A: 系统 C 库已预装,无需额外操作。若使用 Baseline,uv sync 会自动安装 Python 绑定。

Q: Docker build 失败?
A: 尝试关闭代理或切换网络。详见 GUIDE.md


相关文档