量化百科

黄金价格预测:使用 Python 机器学习的分步指南

由kuailian创建,最终由kuailian 被浏览 62 用户

是否有可能预测黄金价格的走向?

是的,让我们使用机器学习回归技术来预测最重要的贵金属之一黄金的价格。

我们将创建一个机器学习线性回归模型,该模型从过去的黄金 ETF (GLD) 价格中获取信息,并返回第二天的黄金价格预测。

GLD是直接投资实物黄金的最大ETF。

\


导入库并读取黄金 ETF 数据

首先要做的是:导入实施此策略所需的所有必要库。

然后,我们读取过去 12 年的每日黄金 ETF 价格数据并将其存储在 Df 中。我们删除不相关的列并使用 dropna() 函数删除 NaN 值。然后,我们绘制黄金 ETF 收盘价。

输出:

黄金ETF价格系列{w:100}{w:100}


定义解释变量

解释变量是一个被操纵以确定第二天黄金 ETF 价格价值的变量。简单地说,它们是我们想要用来预测黄金 ETF 价格的特征。

该策略中的解释变量是过去 3 天和 9 天的移动平均线。我们使用 dropna() 函数删除 NaN 值并将特征变量存储在 X 中。

但是,您可以向 X 添加更多您认为对预测黄金 ETF 价格有用的变量。这些变量可以是技术指标、其他 ETF 的价格,例如黄金矿工 ETF (GDX) 或石油 ETF (USO),或美国经济数据。


定义因变量

同样,因变量取决于解释变量的值。简而言之,这是我们试图预测的黄金 ETF 价格。我们将黄金 ETF 价格存储在 y 中。


将数据拆分为训练和测试数据集

在这一步中,我们将预测变量和输出数据拆分为训练数据和测试数据。通过将输入与预期输出配对,训练数据用于创建线性回归模型。

测试数据用于估计模型的训练效果。

历史黄金ETF{w:100}{w:100}

  1. 前 80% 的数据用于训练,剩余的数据用于测试
  2. X_train & y_train 是训练数据集
  3. X_test & y_test 是测试数据集

创建线性回归模型

我们现在将创建一个线性回归模型。但是,什么是线性回归?

如果我们试图捕捉“x”和“y”变量之间的数学关系,通过通过散点图拟合一条线,“最好”根据“x”的观察值解释“y”的观察值,那么这样的方程x 和 y 之间的关系称为线性回归分析。

因变量和自变量{w:100}{w:100}

为了进一步分解,回归用自变量解释了因变量的变化。因变量 - 'y' 是您要预测的变量。自变量 - “x”是用于预测因变量的解释变量。以下回归方程描述了这种关系:

Y = m1 * X1 + m2 * X2 + C
黄金ETF价格= m1 * 3天移动平均线+ m2 * 15天移动平均线+ c

然后我们使用拟合方法拟合自变量和因变量(x 和 y)以生成回归系数和常数。

输出:

线性回归模型

黄金 ETF 价格 (y) = 1.20 * 3 天移动平均线 (x1) + -0.21 * 9 天移动平均线 (x2) + 0.43(常数)


预测黄金ETF价格

现在,是时候检查模型是否在测试数据集中工作了。我们使用使用训练数据集创建的线性模型来预测黄金 ETF 价格。预测方法找到给定解释变量 X 的黄金 ETF 价格 (y)。

输出:

黄金ETF价格预测{w:100}{w:100}

该图显示了黄金 ETF 的预测价格和实际价格。

现在,让我们使用 score() 函数计算拟合优度。

输出:

99.21

可以看出,模型的 R 平方为 99.21%。R 平方始终介于 0 和 100% 之间。接近 100% 的分数表明该模型很好地解释了黄金 ETF 的价格。


绘制累积回报

让我们计算一下这个策略的累积收益来分析它的表现。

  1. 累计收益计算步骤如下:
  2. 生成黄金价格的每日百分比变化
  3. 当第二天的预测价格高于当天的预测价格时,创建一个以“1”表示的买入交易信号。否则不采取任何立场
  4. 通过将每日百分比变化乘以交易信号来计算策略回报。
  5. 最后,我们将绘制累积收益图

输出如下:

绘制累积回报{w:100}{w:100}

我们还将计算夏普比率。

输出如下:

'夏普比率 1.06'


\

如何使用这个模型来预测每日动作?

您可以使用以下代码来预测黄金价格,并给出我们应该购买 GLD 还是不持仓的交易信号。

输出如下图

输出{w:100}{w:100}

标签

特征工程模型训练股票价格预测python开发Python