quant-stock-prediction

Quantitative Financeqlibrigorous codebase

Description

Quantitative Stock Prediction on CSI300

Objective

Design and implement a stock prediction model that forecasts next-day returns for CSI300 stocks. Your code goes in custom_model.py. Three reference implementations (LightGBM, LSTM, Transformer) are provided as read-only.

Evaluation

Signal quality: IC, ICIR, Rank IC. Portfolio (TopkDropout, top 50, drop 5): Annualized Return, Max Drawdown, Information Ratio. Evaluation is automatic via qlib's workflow.

Workflow Configuration

workflow_config.yaml lines 13-25 and 31-44 are editable. This is the model plus input-adapter/preprocessor block: you may change the dataset class (e.g., to TSDatasetH) or processors if your model needs a different input view. Instruments, date ranges, train/valid/test splits, and evaluation settings are fixed.

Code

custom_model.py
EditableRead-only
1# Custom stock prediction model for MLS-Bench
2#
3# EDITABLE section: CustomModel class with fit() and predict() methods.
4# FIXED sections: imports below.
5import numpy as np
6import pandas as pd
7import torch
8import torch.nn as nn
9import torch.nn.functional as F
10from qlib.model.base import Model
11from qlib.data.dataset import DatasetH
12from qlib.data.dataset.handler import DataHandlerLP
13
14DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
15
workflow_config.yaml
EditableRead-only
1# Qlib workflow configuration for CSI300 stock prediction benchmark.
2# Used by run_workflow.py — matches Alpha360/CSI300 official benchmark settings.
3
4qlib_init:
5 provider_uri: "~/.qlib/qlib_data/cn_data"
6 region: cn
7
8sys:
9 rel_path:
10 - "." # So custom_model.py is importable via module_path
11
12task:
13 model:
14 class: CustomModel
15 module_path: custom_model

Additional context files (read-only):

  • qlib/qlib/model/base.py

Results

ModelTypeic csi300 icir csi300 rank ic csi300 rank icir csi300 annualized return csi300 max drawdown csi300 information ratio csi300 ic csi100 icir csi100 rank ic csi100 rank icir csi100 annualized return csi100 max drawdown csi100 information ratio csi100 ic csi300 recent icir csi300 recent rank ic csi300 recent rank icir csi300 recent annualized return csi300 recent max drawdown csi300 recent information ratio csi300 recent
lgbmbaseline-------0.0360.2200.0440.277-0.017-0.158-0.3340.0250.1820.0410.3020.020-0.0760.266
lgbmbaseline0.0400.3080.0490.4020.020-0.1000.2800.0360.2200.0440.277-0.017-0.158-0.3340.0250.1820.0410.3020.020-0.0760.266
lgbmbaseline0.0410.3070.0500.4030.013-0.1160.1880.0370.2200.0460.278-0.015-0.164-0.2690.0240.1780.0410.3010.056-0.0620.781
lgbmbaseline0.0400.3080.0490.4020.020-0.1000.2800.0360.2200.0440.277-0.017-0.158-0.3340.0250.1820.0410.3020.020-0.0760.266
lgbmbaseline0.0400.3080.0490.4020.020-0.1000.2800.0360.2200.0440.277-0.017-0.158-0.3340.0250.1820.0410.3020.020-0.0760.266
lstmbaseline0.0470.3700.0580.4670.085-0.1041.0310.0390.2130.0440.246-0.016-0.176-0.2580.0310.2380.0430.3130.070-0.0690.885
transformerbaseline0.0120.0740.0350.245-0.036-0.166-0.4400.0200.1090.0340.191-0.059-0.282-1.0120.0010.0100.0270.183-0.085-0.160-1.091
anthropic/claude-opus-4.6vanilla0.0480.3600.0590.4640.073-0.0931.2130.0320.1620.0440.233-0.016-0.199-0.2590.0310.2420.0480.3630.087-0.0321.247
google/gemini-3.1-pro-previewvanilla0.0460.3360.0570.4410.083-0.0581.2670.0340.1820.0460.261-0.002-0.198-0.0280.0280.2080.0420.3190.045-0.0460.670
gpt-5.4-provanilla0.0070.0350.0260.132-0.055-0.357-0.4910.0060.0260.0180.080-0.096-0.340-1.4110.0070.0490.0340.231-0.058-0.144-0.788
anthropic/claude-opus-4.6agent0.0480.3600.0590.4640.073-0.0931.2130.0320.1620.0440.233-0.016-0.199-0.2590.0310.2420.0480.3630.087-0.0321.247
google/gemini-3.1-pro-previewagent0.0490.3370.0640.4670.083-0.1101.0570.0480.2580.0590.338-0.001-0.115-0.0120.0290.2250.0480.3510.098-0.0501.435
gpt-5.4-proagent0.0400.3110.0510.4110.032-0.0980.4640.0330.1950.0430.256-0.028-0.180-0.5180.0230.1610.0410.2910.017-0.0710.224

Agent Conversations