SkillAgentSearch skills...

QuantitativeDeepLearningAnalystIntern

A quantitative research project implementing full-factor mining workflows and parallel training optimizations in QLib, with MLflow-integrated experiment tracking and one-click reproducibility.

Install / Use

/learn @LinChengHao3606307/QuantitativeDeepLearningAnalystIntern
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

实习项目展示-因子挖与加速训练的全流程实现

此项目为本人在2025 4-7月在私募基金实习所做的部分工作。熟悉了因子挖掘的全流程与qlib的结构,同时探索了qlib项目的并行训练实现,试验了多进程、多线程、多流与共享内存等方法,在qlib框架里新添加了相应的工具。通过mlflow进行了严谨的参数搜索,他人可在ui界面查看实验的全部细节与html可互动表现报告,并支持一步复现。

项目细节

因子测试基础

通过外部脚本+qlib内部因子计算结合的方式,完成了国泰君安191、alpha158、worldquant101、alpha360 4个因子库的计算,因子分析及TopkDroupout的回测。

对qlib的扩展实现

  • 模型: 如 qlib\contrib\model\pytorch_alstm_ts.py >>> ALSTMGFL

    • 从显存数据集读数据
  • 数据集: qlib\data\dataset\__init__.py >>> TensorSeqDataset

    • 把数据存在显存里,减少传输开销,且可在有不同输入时序序列长度的模型间共享
  • 任务管理器: LCH\workflows\thread_manager.py >>> ThreadManager

    • 配套进程对讲机,执行多流训练,且会自动监控资源用量,智能决定新任务的启动
  • 支持并行的实验记录器: qlib\workflow\recorder.py >>> qlib\workflow\recorder.py

    • qlib基于mlflow的记录器是全局变量,不支持并行,所以实现了这个可并行的记录器,可以在实验结束后再导出mlflow记录操作序列,然后用自带的函数把操作录入mlflow
  • 线程间物品的共享池

    • 不同线程通过抢锁访问或新建共享池物品,达到无重复,无遗漏的高效内存利用。
    • 采用了高可拓展的设计,在配置词典中任意位置加上 "_is_shared_item": True,即可把该实例注册为共享

Quick Start

git clone https://github.com/LinChengHao3606307/QuantitativeDeepLearningAnalystIntern.git

cd QuantitativeDeepLearningAnalystIntern

conda env create -f environment.yml

conda activate LCH_Intern_Project_Env

本项目包含5个主要程序,可通过统一的命令行接口运行:

1. 多模型训练 (param-search)

功能: 并行训练多个深度学习模型,支持GPU资源管理

基本用法:

python main.py param-search

自定义参数:

python main.py param-search \
    --configs 2025_06_26_task_conf.json \
    --max_threads 4 \
    --creater_name "YourName"

结果: 训练结果保存在 mlrunsfolder_recorder_results 中,运行 mlflow ui 后可查看


2. 计算-回测-分析 (backtest)

功能: 对多个因子库进行计算、回测和分析,支持 wq101、gtja191、alpha158、alpha360 等因子库

基本用法:

python main.py backtest

自定义参数:

python main.py backtest \
    --configs 2025_07_16_task_conf.json \
    --graph_result_uri ./graph_result

结果: 生成详细的分析报告和可视化图表,保存在以 mlflow 为核心的记录器中


3. GPU利用率提升实验 (gpu-exp)

功能: 测试不同GPU并行训练策略的效率,支持多进程、多线程、多CUDA流等方式

基本用法:

python main.py gpu-exp

自定义参数:

python main.py gpu-exp \
    --num_simple_models 3 \
    --num_complex_models 2 \
    --all_models_scale 64 \
    --num_epochs 5 \
    --batch_size 1024

结果: 在控制台打印GPU利用率测试结果


4. 因子筛选 (factor-selection)

功能: 多线程并行计算及返回因子分析结果,智能管理计算资源,避免内存溢出

基本用法:

python main.py factor-selection

自定义参数:

python main.py factor-selection \
    --configs select_factors_alphaOnly_configs.json \
    --max_workers 3 \
    --result_csv_path ./factor_selection_results.csv

结果: 生成因子筛选结果CSV文件


5. 实验复现 (rerun)

功能: 复现历史实验,支持多种数据源和运行模式

基本用法:

# JSON配置模式
python main.py rerun --mode json --config experiment_config.json

# MLflow模式
python main.py rerun --mode mlflow --mlflow-uri mlruns:/experiment_id

# CSV数据模式
python main.py rerun --mode csv \
    --csv data.csv \
    --factors alpha158 \
    --datetime-col datetime \
    --instrument-col instrument \
    --label-col label

结果: 根据运行模式生成相应的实验结果


查看帮助

查看所有可用命令:

python main.py --help

查看特定命令的详细参数:

python main.py <command> --help

例如:

python main.py param-search --help
python main.py backtest --help

注意事项

  1. 确保已安装所有依赖包
  2. 确保配置文件路径正确
  3. GPU实验需要CUDA环境
  4. 结果文件会保存在项目根目录的相应文件夹中
View on GitHub
GitHub Stars4
CategoryEducation
Updated1mo ago
Forks0

Languages

HTML

Security Score

85/100

Audited on Feb 10, 2026

No findings