首页 > 人工智能 > 机器学习 > 分享一个自用LightGBM期货交易信号预测模型
分享一个自用LightGBM期货交易信号预测模型, 具体介绍见下面的Readme, 这个算是一个深度AI辅助编程的结果, 某个时候感觉像是我在辅助他.
训练好的模型可以在vn.py平台作为策略使用, 具体将另外写一篇.
Github repo地址 BillyZhangGuoping/Standalone-LightGBM-Futures-Trading-Model: Standalone LightGBM Futures Trading Model
本项目实现了一个基于LightGBM的期货交易信号预测系统,目标是预测未来N个周期后的价格方向(大涨/大跌/震荡)。系统采用了完整的机器学习工作流程,包括数据预处理、特征工程、模型训练、超参数优化、交叉验证和交易回测。
系统采用模块化设计,各组件之间松耦合,便于维护和扩展:
├── data_loader.py # 数据加载和预处理模块 ├── feature_engineer.py # 特征工程模块 ├── model_trainer.py # 模型训练和评估模块 ├── backtester.py # 交易回测和性能分析模块 ├── config.py # 配置管理模块 ├── main.py # 主程序,整合各模块 ├── requirements.txt # 依赖库列表 └── README.md # 项目文档
克隆或下载项目代码到本地
安装依赖库:
cd LightGBM_Prediction_Singal
pip install -r requirements.txt
mkdir -p data processed_data models plots backtest_results logs
data目录datetime,
open,
high,
low,
close,
volume基本用法:
python main.py
命令行参数:
--data-dir # 数据目录路径,默认: data/ --symbol # 特定交易品种代码,不指定则使用所有品种 --model-version # 模型版本号,默认: v1 --optimize # 是否进行超参数优化,默认: True --n-trials # Optuna优化的试验次数,默认: 100 --backtest # 是否进行回测,默认: True --signal-threshold # 信号阈值,默认: 0.0 --save-results # 是否保存结果,默认: True --plot-results # 是否绘制结果图表,默认: True
示例:
# 使用特定品种,减少优化试验次数以加快速度python main.py --symbol fu2601 --n-trials 20 --signal-threshold 0.2
集中管理所有配置参数:
负责数据的读取、清洗和预处理:
生成丰富的技术和统计特征:
实现模型的训练、优化和评估:
模拟交易策略并评估性能:
主要配置参数位于
config.py文件中,可根据需要调整:
# 目标变量定义LOOKAHEAD_MINUTES = 3 # 预测未来3分钟TARGET_THRESHOLD_TYPE = 'dynamic' # 'static' 或 'dynamic'STATIC_THRESHOLD_UP = 0.0005 # 静态上涨阈值STATIC_THRESHOLD_DOWN = -0.0005 # 静态下跌阈值DYNAMIC_WINDOW = 200 # 动态阈值的滚动窗口DYNAMIC_QUANTILE_UP = 0.75 # 上涨阈值分位数DYNAMIC_QUANTILE_DOWN = 0.25 # 下跌阈值分位数# 数据分割TRAIN_RATIO = 0.7 # 训练集比例VAL_RATIO = 0.15 # 验证集比例TEST_RATIO = 0.15 # 测试集比例
# LightGBM参数BOOSTER_TYPE = 'gbdt'OBJECTIVE = 'multiclass'NUM_CLASS = 3METRIC = 'multi_logloss'VERBOSE = 100NUM_BOOST_ROUND = 10000EARLY_STOPPING_ROUNDS = 100IS_UNBALANCE = True# Optuna超参数优化OPTUNA_N_TRIALS = 100OPTUNA_SEED = 42MODEL_VERSION = 'v1.0'
# 回测参数INITIAL_CAPITAL = 1000000.0 # 初始资金POSITION_SIZE_RATIO = 0.1 # 持仓比例COMMISSION_RATE = 0.0001 # 手续费率SLIPPAGE_RATE = 0.00005 # 滑点率TAKE_PROFIT_RATIO = 0.002 # 止盈比例STOP_LOSS_RATIO = 0.001 # 止损比例MIN_CONFIDENCE = 0.55 # 最小置信度
models_lgbm/lgbm_model_{version}_{timestamp}.txtmodels_lgbm/lgbm_model_{version}_{timestamp}_metadata.pklplots_lgbm/feature_importance.pngplots_lgbm/learning_curve.pngplots_lgbm/confusion_matrix.pngbacktest_results_lgbm/asset_value.pngbacktest_results_lgbm/drawdown.pngbacktest_results_lgbm/signals_and_positions.pngbacktest_results_lgbm/trade_distributions.pngbacktest_results_lgbm/performance_report_{timestamp}.txtbacktest_results_lgbm/trade_history_{timestamp}.csvA: 可以尝试以下方法:
A: 可以提高信号阈值或调整模型参数以减少交易频率
A: 系统支持多品种数据处理,但建议分别训练模型以适应不同品种的特性
本项目仅供研究和学习使用,不构成投资建议。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22259926/viewspace-3099799/ ,如需转载,请注明出处,否则将追究法律责任。