Skip to content

chm020924/MVAN-CSI300-Quant-Selection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

沪深300多视角注意力神经网络选股系统

基于多视角注意力神经网络(MVAN)的A股智能选股模型。本项目使用沪深300成分股的技术面因子,通过深度学习方法预测短期股票走势,从而辅助智能选股。

项目概述

该项目旨在提出一种多视角注意力神经网络(Multi-View Attention Network, MVAN)模型,基于沪深300成分股的技术面因子,预测短期股票走势,从而辅助智能选股。项目同时比较MVAN与经典机器学习模型(如LightGBM、MLP、Transformer)在统一选股任务上的表现。

研究目标

  1. 提出一种多视角注意力神经网络(MVAN)
  2. 基于沪深300成分股技术面因子预测短期股票走势
  3. 将预测结果应用于选股任务
  4. 比较MVAN与经典机器学习模型的表现

数据处理流程

数据来源与字段说明

  • 股票池:沪深300历史成分股(353支)
  • 数据字段(每日每股):
    • 市场类: open_price, close_price, high_price, low_price
    • 成交类: volume, amount, turnover_rate
    • 波动类: amplitude, change_percent, change_amount
    • 市值类: total_market_cap_yuan, circulating_market_cap
    • 股本类: total_shares, circulating_shares
    • 技术指标类: macd_diff, macd_dea, macd, rsi_6, rsi_12, rsi_24

数据划分

阶段 时间区间 用途
训练集 2014-01-01 ~ 2019-12-31 模型训练
验证集 2020-01-01 ~ 2022-12-31 模型选择与调参
测试集 2023-01-01 ~ 2025-07-15 模拟实盘评估

模型架构

MVAN(Multi-View Attention Network)

多视角注意力神经网络将特征分为不同的"视角"进行处理:

  • 输入结构

    • 输入:[batch_size, time_step=10, feature_dim]
    • 拆分多视角:
      • View 1:动量视角(收益率、MACD、RSI类)
      • View 2:成交视角(volume、amount、换手率等)
      • View 3:波动视角(amplitude、change_percent等)
  • 模型结构

    • 每个视角:
      • 输入 10×N 张量 → BiGRU/TCN 提取时间序列特征
      • Attention 权重聚合 → 得到视角向量 vi
    • 融合层:
      • [v1, v2, v3] → Concatenate → 全连接层 (ReLU/Dropout)
    • 输出层:
      • 分类:Softmax / 回归:Linear

对比基线模型

模型 输入处理方式 输出层 说明
LogisticRegression 每条样本 flatten(10×F) Softmax 简单基线
MLP flatten(10×F) → FC层 分类/回归 多层感知机
LightGBM/XGBoost flatten(10×F) 分类/回归 特征重要性可解释
TCN 输入 10×F 分类 卷积提取序列特征
Transformer 输入为序列 分类 可用于横截面/时间建模

项目结构

沪深300选股实验/
│
├── config/                     # 配置文件
│   ├── __init__.py
│   ├── config.py              # 全局配置
│   └── model_config.py        # 模型配置
│
├── data/                      # 数据处理模块
│   ├── __init__.py
│   ├── data_loader.py         # 数据加载
│   ├── data_processor.py      # 数据预处理
│   ├── feature_engineer.py    # 特征工程
│   └── data_utils.py          # 数据工具函数
│
├── models/                    # 模型定义
│   ├── __init__.py
│   ├── mvan.py               # MVAN模型
│   ├── baseline_models.py    # 基线模型
│   └── model_utils.py        # 模型工具函数
│
├── training/                  # 训练相关
│   ├── __init__.py
│   ├── trainer.py            # 训练器
│   ├── evaluator.py          # 评估器
│   └── backtest.py           # 回测模块
│
├── experiments/               # 实验管理
│   ├── __init__.py
│   ├── main_experiment.py    # 主实验
│   ├── ablation_study.py     # 消融实验
│   └── hyperparameter_tuning.py  # 超参数调优
│
├── utils/                     # 工具函数
│   ├── __init__.py
│   ├── logger.py             # 日志工具
│   ├── visualization.py      # 可视化
│   └── metrics.py            # 评估指标
│
├── results/                   # 结果保存
│   ├── models/               # 训练好的模型
│   ├── logs/                 # 训练日志
│   ├── plots/                # 可视化结果
│   └── backtest_results/     # 回测结果
│
├── 沪深300数据/
│   ├── raw/                  # 原始数据
│   └── processed/            # 处理后的数据
│
├── requirements.txt          # 依赖包
├── setup.py                  # 安装脚本
└── main.py                   # 主运行脚本

使用方法

环境配置

# 安装依赖
pip install -r requirements.txt

数据处理

# 数据预处理
python main.py --mode data_process

# 特征工程
python main.py --mode feature_engineer

模型训练与评估

# 训练和评估MVAN模型
python main.py --mode experiment --model MVAN

# 训练和评估基线模型
python main.py --mode experiment --model MLP
python main.py --mode experiment --model TCN
python main.py --mode experiment --model Transformer
python main.py --mode experiment --model LightGBM

# 训练和评估所有模型
python main.py --mode experiment --model all

消融实验

# 运行所有消融实验
python main.py --mode ablation --experiment all

# 运行特定消融实验
python main.py --mode ablation --experiment No-View
python main.py --mode ablation --experiment No-Attn
python main.py --mode ablation --experiment Only-Price
python main.py --mode ablation --experiment Only-MACD-RSI

超参数调优

# 运行网格搜索超参数调优
python main.py --mode tuning --mode grid_search

# 使用最佳参数训练模型
python main.py --mode tuning --mode train_best --best_params_file results/hyperparameter_tuning_XXX/best_params.json

评估指标

模型评估

  • Precision@TopK: 每日预测TopK股票命中率
  • Macro-F1 / AUC: 多分类模型评估
  • IC / RankIC: 排序效果(回归模型)
  • NDCG@K: 用于打分型模型的排序能力

策略回测

  • 年化收益率、最大回撤
  • 夏普比率、盈亏比、胜率
  • 换手率分析

About

A Multi-View Attention Network (MVAN) based stock selection system for CSI 300. Includes end-to-end pipeline from feature engineering to backtesting, comparing against LightGBM and Transformer baselines.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors

Languages