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/QuantitativeDeepLearningAnalystInternREADME
实习项目展示-因子挖与加速训练的全流程实现
此项目为本人在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"
结果: 训练结果保存在 mlruns 和 folder_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
注意事项
- 确保已安装所有依赖包
- 确保配置文件路径正确
- GPU实验需要CUDA环境
- 结果文件会保存在项目根目录的相应文件夹中
Languages
Security Score
Audited on Feb 10, 2026
