HK&US Quant Strategy

etf机器学习

由wtyu创建,最终由wtyu 被浏览 7 用户

基础配置

# 核心参数
TRAIN_START = "2016-01-01"
TRAIN_END = "2019-01-01"
TEST_START = "2021-01-01"
TEST_END = "2025-06-02"

# 基础因子
BASE_FEATURES = [
    "open", "high", "low", "close", "volume", "amount",
    "close / m_lag(close, 5) as mom5",
    "m_avg(volume, 5) as mvol5",
    "close / open as c2o",
    "m_nanstd((close / m_lag(close,1)-1), 5) as volatility5"
]
# label
m_lead(close, 5) / m_lead(open, 1)

# 动态调仓参数
ATR_WINDOW = 14
ATR_RADIO_WINDOW = 20
ATR_DISCRETE_BINS = [0,1, 2, np.inf]  # 低/正常/高波动区间

代码:

https://n2nquant.com/codesharev3/49464498-e58d-4625-91d9-bf0759272c5f

\

调优维度及顺序

阶段 调整对象 目标 测试变量
1 模型架构 优化预测性能 RF/XGBoost/LightGBM
2 标签设计 改进信号质量 5日/10日收益率,涨跌分类
3 因子组合 增强特征有效性 技术指标+基本面因子
4 ATR离散化参数 提升仓位控制适应性 窗口大小/分箱阈值

调优过程记录

阶段1:模型架构对比 (基准因子+5日收益率标签)

# 测试模型
MODELS = {
    "RandomForest": RandomForestRegressor(n_estimators=10, random_state=42),
    "XGBoost": XGBRegressor(objective='reg:squarederror', 'eval_metric': 'rmse', 'max_depth': 5, 'eta': 0.3, 'n_estimators': 200, 'gamma': 0, 'reg_alpha': 0, 'reg_lambda': 1 ),
    "LightGBM": LGBMRegressor(num_leaves=31)
}
模型 年化收益率 夏普比率 胜率 盈亏比 最大回撤 代码
RandomForest 16.81% 0.66 69.23% 3.82 -12.22% 代码
XGBoost 14.98% 0.71 85.71% 30.13 -6.97% 代码
LightGBM 8.63% 0.36 68.18% 2.14 -26.23% 代码

📌 关键结论:XGBoost在收益风险比和回撤控制上表现最优

阶段2:标签设计方案对比 (XGBoost模型)

# 标签定义方案
LABEL_VARIANTS = {
    "LABEL_5D": "m_lead(close, 5) / m_lead(open, 1)",  # 原始5日收益
    "LABEL_10D": "m_lead(close, 10) / m_lead(open, 1)",
    "CLASS_5D": "I((m_lead(close,5)/m_lead(open,1) > 1.02)"  # 二元分类(涨超2%)
}
标签类型 年化收益率 夏普比率 胜率 盈亏比 最大回撤 代码
5日收益率(回归) 14.98% 0.71 85.71% 30.13 -6.97% 代码
4日收益率(回归) 8.24% 0.35 100% 0.0 12.22% 代码
5日涨跌分类 10.7% 0.49 85.71% 9.07 8.43% 代码
4日涨跌分类 18.06% 0.77 100.0% 0.0 -6.97% 代码

\

📌 关键结论:4日涨跌分类标签在收益和风险控制上取得最佳平衡


阶段3:因子组合有效性 (XGBoost+分类标签)
因子组合 特征数量 年化收益 夏普比率 代码
基础因子 8 18.06% 0.77 基础因子
基础+RSI(14) 9 18.32% 0.79 RSI
基础+atr 9 8.73% 0.56 atr
基础+RSI+atr 10 18.32% 0.79 RSI + atr

📌 关键结论:RSI+基础因子组合提升明显

阶段4:ATR参数敏感性测试
ATR计算窗口 分箱阈值 年化收益 夏普比率 最大回撤 代码
(10,15) [0.7,1.3] 16.1% 0.74 -5.84% 代码
(14,20) [0.8,1.2] 16.46% 0.7 -6.97% 代码
(20,30) [0.75,1.25] 5.79% 0.32 -4.81% 代码
(14,20) [0.85,1.15] 16.46% 0.7 -6.97% 代码
(14,20) [0.9,1.1] 11.3% 0.65 -4.81% 代码

📌 关键结论:窄阈值([0.7,1.3])配合(10,15)窗口表现最优



\

{link}