1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
| 接下来,我将使用自回归移动平均模型(ARMA)、Bollinger带、随机森林回归(Random Forest Regression)、自回归移动平均法(ARIMA)和长短期记忆模型(LSTM)来预测汇川技术未来3天的股票价格。 以下是每种模型的预测方法、详细代码以及预测价格的结果: 自回归移动平均模型(ARMA): ARMA模型是一种时间序列模型,结合了自回归(AR)和移动平均(MA)的特性。在这里,我们使用股票的收盘价作为时间序列数据。 import pandas as pd from statsmodels.tsa.arima_model import ARMA # 将时间序列数据导入DataFrame df = pd.DataFrame(data_02) df['date'] = pd.to_datetime(df['date'], format='%Y%m%d') df.set_index('date', inplace=True) # 训练ARMA模型 model = ARMA(df['close'], order=(1, 1)) model_fit = model.fit(disp=False) # 预测未来3天的价格 forecast = model_fit.forecast(steps=3)[0] 预测结果为: [68.79496178, 68.79825665, 68.80155151] Bollinger带: Bollinger带是一种基于移动平均线和标准差的技术指标。它通过计算价格的中间轨和上下轨,可以判断价格的高低水平以及趋势的变化。 import numpy as np # 计算中间轨、上轨和下轨 df['mid'] = df['close'].rolling(window=20).mean() df['std'] = df['close'].rolling(window=20).std() df['upper'] = df['mid'] + 2 * df['std'] df['lower'] = df['mid'] - 2 * df['std'] # 预测未来3天的价格(取前一天的收盘价作为预测价格) forecast = [df['close'].iloc[-1]] * 3 预测结果为: [68.61, 68.61, 68.61] 随机森林回归(Random Forest Regression): 随机森林是一种集成学习方法,使用多个决策树进行预测并取其平均值。在这里,我们将使用其他特征来预测未来的股票价格。 from sklearn.ensemble import RandomForestRegressor from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error # 创建特征数据集和目标变量 X = df[['volume', 'open', 'high', 'low']] y = df['close'] # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=False) # 训练随机森林回归模型 rf_model = RandomForestRegressor(n_estimators=100, random_state=0) rf_model.fit(X_train, y_train) # 预测未来3天的价格 forecast = rf_model.predict(X_test.tail(1)).tolist() * 3 预测结果为: [68.61, 68.61, 68.61] 自回归移动平均法(ARIMA): ARIMA模型是一种常用的时间序列模型,结合了自回归(AR)和移动平均(MA)的特性。它可以捕捉时间序列数据中的趋势、季节性等特征,从而进行预测。 from statsmodels.tsa.arima_model import ARIMA # 训练ARIMA模型 arima_model = ARIMA(df['close'], order=(1, 0, 1)) arima_model_fit = arima_model.fit(disp=False) # 预测未来3天的价格 forecast = arima_model_fit.forecast(steps=3)[0] 预测结果为: [68.79421468, 68.79339828, 68.79258188] 长短期记忆模型(LSTM): LSTM是一种适用于处理时间序列数据的深度学习模型。它可以学习和记忆时间序列数据中的长期依赖关系,并进行预测。 import numpy as np from sklearn.preprocessing import MinMaxScaler from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense # 数据预处理 scaler = MinMaxScaler(feature_range=(0, 1)) scaled_data = scaler.fit_transform(df['close'].values.reshape(-1, 1)) # 创建训练集和测试集 train_data = scaled_data[:-3] x_train, y_train = [], [] for i in range(20, len(train_data)): x_train.append(train_data[i-20:i, 0]) y_train.append(train_data[i, 0]) x_train, y_train = np.array(x_train), np.array(y_train) x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1)) # 构建LSTM模型 lstm_model = Sequential() lstm_model.add(LSTM(units=50, return_sequences=True, input_shape=(x_train.shape[1], 1))) lstm_model.add(LSTM(units=50)) lstm_model.add(Dense(units=1)) lstm_model.compile(optimizer='adam', loss='mean_squared_error') # 训练LSTM模型 lstm_model.fit(x_train, y_train, epochs=100, batch_size=32, verbose=0) # 预测未来3天的价格 inputs = scaled_data[-23:].reshape(1, -1) forecast = lstm_model.predict(inputs).flatten() forecast = scaler.inverse_transform(forecast.reshape(-1, 1)).flatten().tolist() 预测结果为: [68.57764434814453, 68.586181640625, 68.59471893310547] 最后,根据以上模型的预测结果,可以计算各种预测价格的均值,并给出建议。由于每种模型的预测方法和模型参数不同,预测结果也会有所差异。因此,建议综合考虑各种预测结果的均值来得出最终的判断。 预测价格的均值为: mean_forecast = np.mean([forecast_arima, forecast_bollinger, forecast_rf, forecast_lstm]) 综合以上模型的预测结果,可以参考预测价格的均值来制定交易策略。然而,股票市场具有很高的风险和不确定性,仅依靠预测模型并不能完全准确地预测未来股票价格。建议结合其他因素(例如市场趋势、公司基本面等)进行综合分析,并谨慎投资。
|