大A跌宕起伏?代码预测下大盘收盘价格(纯属娱乐)
大家好,我最近写了个预测股价的代码,主要是为了好玩,毕竟最近大A跌宕起伏,大家心情都不太好, 今天分享出来大家娱乐下。代码主要用了随机森林模型, 并基于上证指数历史数据进行训练。当然,需要强调的是,股市预测本身是极其复杂的,受到各种因素的影响,模型的预测结果仅供娱乐参考,不构成任何投资建议。
结果展示
预策对比
可以看到收盘价格相关性还是挺强的, 除了最后一天有点辣眼睛~
预策结果
当前收盘价: 3267.19
下一个交易日预测收盘价: 3273.34
预测变化: 6.15 (0.19%)
哈哈, 周一是微涨!!!
如何使用
1. 下载上证指数数据
通过akshare
很方便取得数据
import akshare as ak
# 获取上证指数历史数据
shanghai_index_data = ak.stock_zh_index_daily(symbol="sh000001")
# 将数据保存到Excel文件
shanghai_index_data.to_excel("上证指数历史数据.xlsx", index=True, sheet_name="历史行情")
取得的数据格式:
2. 预测程序流程
大致流程是:
读取数据
处理数据
创建特征
训练模型
预测价格
3. 处理数据
处理数据
时,提取出了很多指标, 如:
...
# 移动平均线
df['MA5'] = df['close'].rolling(window=5).mean()
df['MA10'] = df['close'].rolling(window=10).mean()
df['MA20'] = df['close'].rolling(window=20).mean()
df['MA60'] = df['close'].rolling(window=60).mean()
# 移动平均线差值
df['MA5_diff'] = df['close'] - df['MA5']
df['MA10_diff'] = df['close'] - df['MA10']
df['MA20_diff'] = df['close'] - df['MA20']
# 计算成交量指标
df['volume_MA5'] = df['volume'].rolling(window=5).mean()
df['volume_MA10'] = df['volume'].rolling(window=10).mean()
df['volume_ratio'] = df['volume'] / df['volume_MA5']
# 波动率指标
df['volatility_5'] = df['close'].rolling(window=5).std()
df['volatility_10'] = df['close'].rolling(window=10).std()
....
4.创建特征
把特征选出来当做训练因子:
features = [
'open', 'high', 'low', 'close', 'volume',
'price_range', 'price_change', 'price_return',
'MA5', 'MA10', 'MA20', 'MA60',
'MA5_diff', 'MA10_diff', 'MA20_diff',
'volume_MA5', 'volume_MA10', 'volume_ratio',
'volatility_5', 'volatility_10',
'prev_close', 'prev_volume',
'close_5d_mean', 'close_5d_std'
]
5.训练模型
使用随机森林模型训练
# 分割训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=test_size, shuffle=False)
# 标准化特征
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 训练模型
model = RandomForestRegressor(
n_estimators=200,
max_depth=20,
min_samples_split=5,
min_samples_leaf=2,
random_state=42
)
model.fit(X_train_scaled, y_train)
# 预测
y_pred = model.predict(X_test_scaled)
6.安装依赖库
pip install pandas numpy scikit-learn ta openpyxl matplotlib akshare
7.运行程序
python stock_prediction.py
结语
再次提醒,股市有风险,投资需谨慎,代码仅供学习娱乐,切勿盲目跟风! 如果预测准确了,纯属巧合,请不要过于激动;如果预测不准,也请不要失望,毕竟预测股价本来就是一件很难的事情嘛。最后,祝大家周一股票大涨!预测代码 点我 获得。