本文面向企业内部技术交流与对外科普,说明如何基于多维度指标数据,运用传统机器学习模型完成大宗商品(如原油等)的周度、月度价格预测,以及如何量化预测效果


一、背景与问题定义

1.1 业务定位

在价格预测场景中,核心能力建立在两类基础之上:

  • 数据侧:覆盖产业链上下游的指标库(产量、库存、毛利、产能利用率、进出口等),可按品种、区域、频率(周度、月度等)组织。
  • 模型侧:以可解释、可复现、可工程化的传统监督学习模型为主(区别于纯黑盒大模型),在有限数据与业务约束下输出价格预测区间或点估计。

预测目标可概括为:在给定历史价格与相关因子序列的前提下,对未来一周或一月的价格水平或涨跌方向进行估计,并持续用真实行情做回测与校准。

1.2 预测对象与输出形式

  • 典型品种:如原油、黑色金属、有色金属等,不同品种对应不同的因子集。
  • 输出频率
    • 周度预测:与周度数据发布节奏对齐,便于与研报、风控周报联动。
    • 月度预测:与月度宏观与供需数据结合,用于中长期视图。

输出既可以是点预测(下一期价格),也可配合业务需要给出方向判断(涨/跌),与下文「准确率」定义一致。


二、数据来源与因子体系

2.1 数据从哪里来

价格预测所用的输入特征主要来自企业内部指标库与标准化数据服务,典型包括:

类别 说明 示例
产业链指标 与标的品种直接相关的供需、库存、毛利等 炼厂毛利、原油商业库存、产能利用率
衍生序列 在原始序列上构造环比、同比、变频等 周度环比百分比变化、变频周度分拆的月度需求
元数据 指标名称、单位、唯一编码(如 indexCode)、频率 便于追溯与血缘管理

接口返回的数据结构通常以表格形式组织:表头为「模型因素 / 单位 / 若干历史日期 / 相关性系数」等字段,表体为每一行一条指标在各时间截面上的取值。

2.2 示例:原油相关因子片段(JSON 语义)

以下结构与业务中常见返回一致,用于说明数据如何进入模型(字段名与示例值来自真实接口形态,仅作说明):

  • tableHeader:定义列含义,例如 indexName(模型因素)、unit(单位)、relativeCoefficient(与目标价格序列的相关性系数)、以及多个以日期为 key 的列(如 2026-03-20)表示该期因子取值。
  • tableData:每一行一个因子,包含:
    • 静态信息indexNameunitindexCode(或带变频/环比规则的复合编码)。
    • 时序取值:各日期列上的数值;部分为 "-" 表示当期无数据或尚未发布。
    • 相关性系数:如 relativeCoefficient: "0.1712",表示该因子与目标变量在历史窗口上的线性相关强度,可用于因子筛选、重要性排序与树模型特征重要性交叉验证

实务要点

  • 不同频率的指标需通过变频、对齐到预测日历(如统一到周度末日)再进入模型。
  • qoq(环比)、frq(变频)等语义的复合 indexCode,在特征工程阶段会解析为可计算的数值序列

三、预测逻辑:从特征到周度/月度价格

整体流程可概括为:数据清洗与对齐 → 特征构造 → 模型训练/推断 → 多周期预测。下图与内部「模型算法」架构一致(见配图:模型算法框图)。

模型层

特征层

数据层

指标库/API

清洗与对齐

滞后项/环比/同比

因子筛选与相关性

模型算法

周度预测

月度预测

3.1 特征工程(简述)

  • 滞后特征:使用目标价格、关键因子的 1 期、多期滞后,捕捉惯性。
  • 差分与变化率:与接口中「环比百分比变化」类指标一致,强调短期边际变化对价格的冲击。
  • 缺失与异常:对 "-"、未发布数据做插值、前向填充或剔除,避免噪声误导树模型分裂点。
  • 因子筛选:结合 relativeCoefficient 与业务经验,控制维度,避免过拟合。

3.2 模型算法(配图:模型算法)

在工程实践中,常采用多模型并行或对比的策略,包括但不限于:

  1. XGBoost Regression(XGBoost 回归)
    梯度提升树模型,对非线性、特征交互友好,适合表格型因子数据。

  2. LightGBM Regression(LightGBM 回归)
    训练效率与内存占用通常更优,适合大规模因子与样本。

  3. Linear Regression(线性回归)
    基线模型,可解释性强,用于与树模型对照,检验复杂模型是否带来真实增益。

说明:上述均为监督学习中的回归/分类框架(价格预测多为回归任务;若输出涨跌概率则对应分类)。
实际部署时,可对同一套特征分别训练 XGBoost、LightGBM、线性模型,再按验证集表现做加权或择优;也可在验证阶段统一用下一节的准确率指标做模型选择。

3.3 周度与月度预测

  • 周度:预测步长与数据发布频率一致,特征窗口通常以最近若干周为滚动训练集。
  • 月度:在月度因子对齐后,用更长历史窗口训练,或采用级联(先月频预测再拆分到周)——具体以业务与数据可用性为准。

输出:每期得到预测价格 ( \hat{y}{t+h} )(或涨跌方向),再与后续真实价格 ( y{t+h} ) 对比,用于评估与迭代。


四、预测准确率:如何计算与判定

预测效果不只看单点误差,而是结合方向幅度两类维度,与内部评估表一致(见配图:评估维度与判定标准)。

4.1 方向准确性(Directional Accuracy)

含义:预测的价格变动方向与实际变动方向一致。

  • 判定:若实际为上涨,预测也应为涨;若实际为下跌,预测也应为跌(「同涨同跌」)。
  • 实现:在离散化后比较 ( \mathrm{sign}(\hat{y}{t+h} - y_t) ) 与 ( \mathrm{sign}(y{t+h} - y_t) ) 是否一致(或直接用收益率符号比较)。

该指标对交易与风控场景的方向判断尤为敏感,即使点预测略有偏差,方向正确仍可能满足业务阶段性目标。

4.2 误差精度(Error Precision)

含义:相对误差控制在真实价格的一定比例以内。

判定标准(与配图 3 一致):

[
\frac{| \hat{y} - y |}{y} \le 0.5%
]

其中 ( \hat{y} ) 为预测价格,( y ) 为真实价格,分母为真实价格(避免量纲问题)。
该形式等价于在单次预测上要求绝对百分比误差(APE)不超过 0.5%;在多样本上可汇总为平均绝对百分比误差(MAPE) 或「满足 0.5% 阈值的样本占比」等,用于模型版本对比。

4.3 两类指标的关系

维度 关注点 典型用途
方向准确性 涨跌是否一致 策略方向、风险提示
误差精度 相对误差是否足够小 报价、预算、精细定价

实践建议:上线前在回测集滚动前推中同时报告两类指标;若方向准但误差大,需检查特征尺度或是否需分品种校准;若误差小但方向错,需检查是否过拟合或标签定义与持有期不一致。


五、小结

  • 数据来源:以企业指标库与 API 为主,按因子名称、编码、多期时间列与相关性系数组织,经清洗与变频后进入模型。
  • 预测逻辑:特征工程 + XGBoost / LightGBM / 线性回归等传统模型,输出周度、月度预测,并可多模型对照。
  • 准确率方向准确性(同涨同跌)与误差精度(( | \hat{y}-y|/y \le 0.5% ))双维度评估,与内部标准对齐。

若需将本文扩展为对客白皮书,可补充:数据合规说明、模型版本与回测区间、免责声明(预测不构成投资建议)等章节。


附录:配图说明(便于排版与引用)

配图 内容摘要
图1 模型算法 输入数据进入模型算法模块,内含 XGBoost 回归、LightGBM 回归、线性回归;输出为价格预测结果。
图2 因子与数据表 与接口返回的 tableHeader / tableData 结构对应,展示多维度指标与历史取值。
图3 评估标准 方向准确性:预测方向与实际价格变动方向一致;误差精度:相对误差绝对值 ≤ 0.5%。
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐