You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确计算1/14/30日股价预测目标变量及模型精度疑问

多周期股价预测目标变量构建方法

你当前1日预测的目标变量基础逻辑成立,核心判断标准是站在T日交易结束的时点,仅用已有的历史数据,预判T+N日相对T日的收盘价涨跌方向。构建14日、30日目标变量时最容易犯的错误是引入未来函数,正确计算方式如下:

  • 前置处理:先按上市公司分组,每组内严格按交易日升序排序,避免时序错乱
  • 收益率计算逻辑:对每个T日样本,取T日之后第N个交易日的收盘价,计算相对T日收盘价的区间收益率,收益率≥0标记为上涨,否则标记为下跌
  • 参考R代码实现:
data <- data %>% 
  group_by(company) %>% 
  arrange(trade_date, .by_group = TRUE) %>% # 替换trade_date为数据集里的交易日字段名
  mutate(
    ret_1d = (`CLOSING PRICE` / lag(`CLOSING PRICE`) - 1),
    ret_14d = (lead(`CLOSING PRICE`, n = 14) / `CLOSING PRICE` - 1), # 前瞻14个交易日收益率
    ret_30d = (lead(`CLOSING PRICE`, n = 30) / `CLOSING PRICE` - 1)  # 前瞻30个交易日收益率
  ) %>%
  ungroup()

# 生成各周期分类标签
data$class_1d <- ifelse(data$ret_1d >= 0, "Up", "Down")
data$class_14d <- ifelse(data$ret_14d >= 0, "Up", "Down")
data$class_30d <- ifelse(data$ret_30d >= 0, "Up", "Down")

注意:计算完成后需要删除每个周期末尾因前瞻取值产生的NA行,这部分样本没有对应的未来收盘价,无法参与训练和验证;如果你的预测目标是未来N天内是否触发某涨跌幅阈值,而非持有N天到T+N日的端点涨跌,可对应调整收益率计算规则,但全程不能引入T日之后的信息。

三类模型1日预测准确率接近的合理性判断

SVM、随机森林、决策树三类模型在1日预测任务上准确率齐平落在82%-85%区间,不属于合理情况,大概率存在实验设计漏洞,常见诱因按排查优先级排序如下:

  • 存在数据泄露:最常见的问题是训练测试集没有按时间顺序切分,而是用了随机拆分,相邻交易日的行情、特征高度相似,相当于模型在测试集直接见过近似答案;另外计算技术特征时引入T日之后的行情数据、标签和特征日期错位,也会导致准确率虚高
  • 标签逻辑错误:比如你当前代码里ifelse((data$ret) >= 0, "Up, "Down")存在语法笔误,如果实际运行时标签和当日收盘价直接绑定,相当于模型不需要做预测,直接学习当日价格和当日涨跌的映射关系,自然会得到很高的准确率,且不同模型效果拉不开差距
  • 样本分布异常:如果数据集涨跌标签占比极度不平衡,且没有做样本平衡处理,准确率会虚高靠近多数类占比,但这类情况准确率一般会更接近90%这类极端值,82%-85%区间可以先核对正负样本占比排除该问题
  • 数据集重复:如果数据集存在大量重复行、同一交易日同一公司的数据重复录入,会导致训练集和测试集出现大量重合样本,推高所有模型的准确率

正常合规的时序预测实验下,日线级别股价涨跌预测的单模型准确率大多在52%-60%区间,决策树的表现通常会明显弱于随机森林和SVM,不会出现三类模型准确率齐平且超过80%的情况,建议优先从数据泄露方向排查问题。

内容的提问来源于stack exchange,提问作者hellberg30

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 12:03:18