天天看点

用Python预测黄金期货价格走势,原来机器学习这么简单!(内含代码)

大家好,今天我们来探讨一个有趣的话题:如何运用机器学习技术来预测黄金期货的价格走势?

黄金作为重要的避险资产,其价格走势备受投资者关注,尤其是近期世界局势动荡,黄金价格一路冲高,更加吸引了大家的眼球,那么如何对黄金的价格进行相对准确的预测呢?

传统的黄金价格预测主要依赖基本面分析和技术分析,但面对复杂多变的市场环境,这些方法的预测效果往往不尽如人意。近年来,随着人工智能技术的快速发展,越来越多的量化投资者开始尝试用机器学习模型来预测黄金价格,取得了不错的效果。

机器学习预测黄金期货价格的基本思路是:将影响价格的各种因素(如历史价格、持仓量、通胀率等)作为模型的输入特征,将未来的价格作为模型的输出目标,通过大量的历史数据训练模型,让它自动学习价格波动规律,从而对未来走势进行预测。

下面我们就用Python来一步步实现这个过程,看看机器学习的魅力吧!

第一步:导入必要的库并获取数据

import numpy as np
import pandas as pd
import akshare as ak
from datetime import datetime
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM


# 获取黄金期货历史数据
symbol = "AU0"  # 沪金主力合约代码


df = ak.futures_zh_daily_sina(symbol=symbol)
# 设置日期列为索引
df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace=True)


# 选取收盘价数据
df = df[['close']]           

第二步:数据预处理

为了方便模型学习,需要对数据进行归一化处理,将价格缩放到0到1之间。此外,为了预测未来N天的价格,需要将数据重构为监督学习问题。

# 数据归一化
scaler = MinMaxScaler()
data = scaler.fit_transform(df)


# 数据重构
X = []
y = []
window = 60  # 窗口期
future = 5  # 预测未来几天


for i in range(window, len(data)-future+1):
    X.append(data[i-window:i])
    y.append(data[i:i+future])
    
X = np.array(X)
y = np.array(y)


# 划分训练集和测试集
split = int(len(X) * 0.8) 
X_train, X_test = X[:split], X[split:]
y_train, y_test = y[:split], y[split:]           

第三步:构建并训练LSTM模型

这里我们使用LSTM(长短期记忆网络)作为黄金价格预测模型。LSTM是一种特殊的RNN(循环神经网络),善于处理时间序列数据。

model = Sequential()
model.add(LSTM(units=64, input_shape=(window, 1)))
model.add(Dense(units=future))  


model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(X_train, y_train, epochs=50, batch_size=32)           

训练结果如下:

用Python预测黄金期货价格走势,原来机器学习这么简单!(内含代码)

模型使用了Adam自适应学习率的优化算法,它结合了RMSprop和Momentum两种优化算法的优点,是目前经常会被使用的一种优化算法,它在处理高维空间中的局部最小值和鞍点方面表现良好;损失函数使用的是均方误差函数,它可以直观的衡量预测价格与真实价格的差异情况,是回归问题中最常用的损失函数之一;

模型最后训练的损失结果是2.6029e-04,说明预测值与实际值的差距已经非常小;

第四步:模型评估与预测

用测试集数据评估模型的预测效果:

y_pred = model.predict(X_test)


y_test = scaler.inverse_transform(y_test.reshape(-1, 1)).flatten()
y_pred = scaler.inverse_transform(y_pred.reshape(-1, 1)).flatten()


from sklearn.metrics import mean_squared_error
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
print(f"测试集RMSE: {rmse}")           

最后,用训练好的模型对未来5天的黄金价格进行预测:

last_data = data[-window:]
last_data = np.expand_dims(last_data, axis=0)


next_5d_price = model.predict(last_data)
next_5d_price = scaler.inverse_transform(next_5d_price)


print(f"未来5天的黄金价格预测值为: {next_5d_price[0]}")           

结果输出:

用Python预测黄金期货价格走势,原来机器学习这么简单!(内含代码)

可以看到,我们的LSTM模型在测试集上的预测误差(RMSE)约为6元/克,对于动辄几百元的黄金价格来说,这个预测效果还是比较不错的。此外,模型预测未来5天黄金价格会先跌后涨,整体呈现震荡走势。

用Python预测黄金期货价格走势,原来机器学习这么简单!(内含代码)

当然,这只是一个简单的示例,实际应用中,我们还可以纳入更多影响价格的特征,如美元指数、通胀预期、地缘政治风险等,也可以尝试更复杂的深度学习模型,以进一步提高预测的准确性。

不过,再先进的模型也不是万能的,黄金价格会受到诸多不可预测因素的影响,因此在实际投资中,一定要理性看待模型预测结果,综合考虑各方面因素,控制好风险。

以上就是用Python机器学习预测黄金期货价格走势的全部内容啦,是不是觉得挺有意思?感兴趣的小伙伴不妨动手实践一下,说不定就能挖掘出黄金市场的新规律呢!

继续阅读