首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

KlipC教您如何使用Python中的机器学习来预测未来黄金走势

KlipC的董事长Nana Naumovic今天对业内人士表示:“我们已经有将近一年没有看到大宗商品市场出现这样的波动了,过去一周金价的波动幅度超过了一年的总和。”在这种行情波动较大的时刻,我们也看到大量KlipC用户采用风险敞口来有效的观察和管理他们的敞口。

您知道您的黄金敞口现在是多少么?以及每个平台商的隔夜利息、成本和流动性是多少么?

不过,我们今天要探讨的话题是

AI技术是否可以预测黄金价格的未来走势?

答案究竟是“是”还是“否”。使用机器学习回归技术预测世界上最重要的贵金属之一的价格是有可能的,但它的准确性如何?让我们看看!

今天在KlipC,我们将在风控总监Philip Nucci和在线社区的指导下,创建一套机器学习线性回归模型,该模型将从过去的黄金ETF基金(GLD)价格中获取信息,并在第二天返回对黄金ETF价格的预测。我们也可以对现货黄金(XAU / USD)进行同样的操作,但是由于ETF模型与商品交易更为相关,因此我们决定使用它。

GLD是直接投资于实物黄金的最大ETF基金 *

KlipC使用Python中的机器学习,采取以下步骤来预测黄金价格

导入库并读取黄金ETF数据

定义解释变量

定义因变量

将数据拆分为集和并测试数据集

创建线性回归模型

预测黄金ETF的价格

导入库并读取黄金ETF数据

////源代码

# LinearRegression is a machine learning library for linear regression

from sklearn.linear_model import LinearRegression

# pandas and numpy are used for data manipulation

import pandas as pd

import numpy as np

# matplotlib and seaborn are used for plotting graphs

import matplotlib.pyplot as plt

import seaborn

# fix_yahoo_finance is used to fetch data

import yfinance as yf

/////源代码结束

在这里,我们使用的是雅虎财经和谷歌财经的历史黄金ETF价格,但您也可以使用亚洲国内券商数据、Dukascopy或KlipC报价服务的历史价格。

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

///源代码

# Read data

Df = yf.download('GLD','2008-01-01','2017-12-31')

# Only keep close columns

Df=Df[['Close']]

# Drop rows with missing values

Df= Df.dropna()

# Plot the closing price of GLD

Df.Close.plot(figsize=(10,5))

plt.ylabel("Gold ETF Prices")

plt.show()

///源代码结束

定义解释变量

解释性变量是一个被操纵以确定第二天黄金ETF价格的变量。简而言之,它们是我们要用来预测黄金ETF价格的功能。此策略中的解释变量是过去3天和9天的移动平均值。我们使用dropna()函数删除NaN值,并将特征变量存储在X中。

但是,您可以向X添加更多您认为对预测黄金ETF价格有用的变量。这些变量可以是技术指标(例如移动平均线、Bollinger等,KlipC推荐RSI指标)、现货黄金价格(例如XAU / USD),其他商品(例如白银)或美国经济数据。

在此步骤中,我们将预测变量拆分,然后将数据输出为练习(train dataset)和测试数据(test dataset)。练习数据通过将输入与预期输出配对,来创建线性回归模型。练习数据用于估计模型的训练程度。

创建线性回归模型

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

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

为了进一步分解,回归用自变量解释了因变量的变化。因变量“ y”是您要预测的变量(明天的黄金价格)。自变量“ x”是您用来预测因变量的解释变量(之前的价格和上述KlipC提到的其他参数)。以下回归方程式描述了这种关系:

Y = m1 * X1 + m2 * X2 + C

黄金ETF价格= m1 * 3日均线+ m2 * 15日均线+ c

然后对自变量和因变量(x、y)进行拟合,得到回归系数和回归常数。

///源代码

linear = LinearRegression().fit(X_train,y_train)

print "Gold ETF Price =", round(linear.coef_[0],2), \

"* 3 Days Moving Average", round(linear.coef_[1],2), \

"* 9 Days Moving Average +", round(linear.intercept_,2)

Output:

Gold ETF Price = 1.2 * 3 Days Moving Average - 0.2 * 9 Days Moving Average + 0.39

///源代码结束

预测黄金ETF的价格

现在,所有模型都准备就绪后,KlipC将检查模型是否在测试数据集中起作用。我们使用练习数据集创建的线性模型来预测黄金ETF价格。通过预测方法找到给定解释变量X的黄金ETF价格(y)。

////源代码

predicated_price(预测价格) = linear.predict(X_test)

predicated_price = pd.DataFrame(predicated_price,index=y_test.index,columns = ['price'])

predicated_price.plot(figsize=(10,5))

y_test.plot()

plt.legend(['predicated_price','actual_price'])

plt.ylabel("Gold ETF Price")

plt.show()

Output:

95.81%

///源代码结束

可以看出,该模型的R平方为95.81%。 R平方始终在0到100%之间。得分接近100%表明,该模型很好地解释了黄金ETF的价格。这真的太棒了!

恭喜!您刚刚学习了一种基本而又强大的机器学习技术。在KlipC的2.0版本中,我们将为资深用户添加上述模型以及更多的金融预估模型,以便自己使用KlipC的强大Python后端对因变量和自变量进行线性回归分析和预测。为此我们和您一样兴奋!

最后,KlipC提前祝大家元旦快乐!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191227A0JO2300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券