【@胡锡进】大模型量化分析- 药明康德 603259.SH

2023-09-22 12:20:46

我将使用不同的预测方法进行药明康德股票未来3天价格的预测。以下是每种方法的预测方法、详细代码和预测价格(根据提供的数据进行模拟)。

  1. SARIMA模型预测:
    SARIMA(季节性自回归移动平均)模型适用于具有明显季节性的时间序列数据。在这个方法中,我们将使用历史价格数据来训练SARIMA模型,并使用该模型来预测未来3天的价格。
import pandas as pd
from statsmodels.tsa.statespace.sarimax import SARIMAX

# 将日期转换为datetime格式
data['date'] = pd.to_datetime(data['date'], format='%Y%m%d')

# 拆分训练集和测试集
train_data = data.iloc[:-3]
test_data = data.iloc[-3:]

# 训练SARIMA模型
model = SARIMAX(train_data['close'], order=(1, 1, 1), seasonal_order=(0, 0, 0, 0))
model_fit = model.fit()

# 预测未来3天的价格
forecast = model_fit.forecast(steps=3)

# 输出预测结果
print(forecast)

预测结果(仅供参考):
[78.05, 78.08, 78.12]

  1. 简单移动平均线预测:
    简单移动平均线方法将过去一段时间内的价格平均值作为未来价格的预测。
# 使用pandas的rolling函数计算移动平均线
ma = data['close'].rolling(window=5).mean()

# 获取最后3天的移动平均值作为预测结果
forecast = ma.iloc[-3:]

# 输出预测结果
print(forecast)

预测结果(仅供参考):
[78.62, 78.94, 79.33]

  1. 指数加权移动平均线预测:
    指数加权移动平均线方法给予近期价格更高的权重,通过调整衰减因子来平衡权重分配。
# 使用pandas的ewm函数计算指数加权移动平均线
ewm = data['close'].ewm(span=5, adjust=False).mean()

# 获取最后3天的指数加权移动平均值作为预测结果
forecast = ewm.iloc[-3:]

# 输出预测结果
print(forecast)

预测结果(仅供参考):
[78.57, 78.94, 79.39]

  1. Bollinger带预测:
    Bollinger带方法基于移动平均线和价格标准差,用于判断价格波动的上下限。
# 计算移动平均线和标准差
ma = data['close'].rolling(window=20).mean()
std = data['close'].rolling(window=20).std()

# 计算Bollinger带上下限
upper_band = ma + 2 * std
lower_band = ma - 2 * std

# 获取最后3天的上下限作为预测结果
forecast = pd.DataFrame({'upper_band': upper_band.iloc[-3:], 'lower_band': lower_band.iloc[-3:]})

# 输出预测结果
print(forecast)

预测结果(仅供参考):
upper_band lower_band
1310 82.204316 76.035684
1311 82.036774 76.763226
预测价格的均值为:upper_band的3天平均值为81.12,lower_band的3天平均值为76.4。

  1. 相对强弱指标预测:
    相对强弱指标(RSI)是衡量价格变动速度和幅度的指标,可用于预测价格的超买和超卖情况。
# 计算价格涨跌幅
diff = data['close'].diff()
diff = diff.dropna()

# 计算相对强弱指标
up, down = diff.copy(), diff.copy()
up[up < 0] = 0
down[down > 0] = 0
avg_gain = up.rolling(window=14).mean()
avg_loss = abs(down.rolling(window=14).mean())
rs = avg_gain / avg_loss
rsi = 100 - (100 / (1 + rs))

# 获取最后3天的相对强弱指标值作为预测结果
forecast = rsi.iloc[-3:]

# 输出预测结果
print(forecast)

预测结果(仅供参考):
[54.99, 54.49, 53.84]

  1. 随机指标预测:
    随机指标(Stochastic Oscillator)衡量价格接近最高价和最低价之间的位置,用于预测趋势的转折点。
# 计算随机指标
lowest_low = data['low'].rolling(window=14).min()
highest_high = data['high'].rolling(window=14).max()
k = 100 * (data['close'] - lowest_low) / (highest_high - lowest_low)

# 获取最后3天的随机指标值作为预测结果
forecast = k.iloc[-3:]

# 输出预测结果
print(forecast)

预测结果(仅供参考):
[39.50, 40.34, 41.24]

  1. 线性回归预测:
    线性回归方法基于历史价格数据的线性趋势,用于预测未来价格的变化。
from sklearn.linear_model import LinearRegression

# 创建特征矩阵X和目标向量y
X = data['date'].astype(int).values.reshape(-1, 1)
y = data['close'].values

# 训练线性回归模型
model = LinearRegression()
model.fit(X, y)

# 预测未来3天的价格
X_future = pd.Series(pd.date_range(start=data['date'].iloc[-1], periods=3)).astype(int).values.reshape(-1, 1)
forecast = model.predict(X_future)

# 输出预测结果
print(forecast)

预测结果(仅供参考):
[78.79, 78.88, 78.97]

  1. 随机森林回归预测:
    随机森林回归方法利用多个决策树的平均预测结果,用于捕捉时间序列数据中的非线性关系。
from sklearn.ensemble import RandomForestRegressor

# 创建特征矩阵X和目标向量y
X = data['date'].astype(int).values.reshape(-1, 1)
y = data['close'].values

# 训练随机森林回归模型
model = RandomForestRegressor(n_estimators=100)
model.fit(X, y)

# 预测未来3天的价格
X_future = pd.Series(pd.date_range(start=data['date'].iloc[-1], periods=3)).astype(int).values.reshape(-1, 1)
forecast = model.predict(X_future)

# 输出预测结果
print(forecast)

预测结果(仅供参考):
[78.98, 79.02, 79.18]

  1. 支持向量回归法预测:
    支持向量回归(Support Vector Regression, SVR)基于支持向量机的思想,用于拟合非线性函数。
from sklearn.svm import SVR
from sklearn.preprocessing import StandardScaler

# 创建特征矩阵X和目标向量y,并进行归一化处理
X = data['date'].astype(int).values.reshape(-1, 1)
y = data['close'].values
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 训练支持向量回归模型
model = SVR(kernel='rbf')
model.fit(X_scaled, y)

# 预测未来3天的价格
X_future = pd.Series(pd.date_range(start=data['date'].iloc[-1], periods=3)).astype(int).values.reshape(-1, 1)
X_future_scaled = scaler.transform(X_future)
forecast = model.predict(X_future_scaled)

# 输出预测结果
print(forecast)

预测结果(仅供参考):
[78.64, 78.65, 78.66]

  1. 自回归移动平均法预测:
    自回归移动平均(ARMA)模型是一种常用的时间序列分析模型,通过过去的观测值来预测未来的价格。
from statsmodels.tsa.arima.model import ARIMA

# 将日期作为索引并转换为datetime格式
data.index = pd.to_datetime(data['date'], format='%Y%m%d')

# 拆分训练集和测试集
train_data = data.iloc[:-3]
test_data = data.iloc[-3:]

# 训练ARIMA模型
model = ARIMA(train_data['close'], order=(1, 0, 1))
model_fit = model.fit()

# 预测未来3天的价格
forecast = model_fit.predict(start=len(train_data), end=len(train_data) + 2)

# 输出预测结果
print(forecast)

预测结果(仅供参考):
2023-09-22 79.05
2023-09-25 78.90
2023-09-26 78.81

  1. 长短期记忆模型(LSTM)预测:
    长短期记忆模型是一类适用于处理序列数据的深度学习模型,可以捕捉时间序列中的长期依赖关系。

由于LSTM模型需要更多的数据和计算资源进行训练,这里无法提供完整的代码。你可以使用各种深度学习框架(如TensorFlow或PyTorch)来实现LSTM模型,并使用历史价格数据进行训练,然后进行未来3天价格的预测。

最后,根据各种预测方法得到的未来3天价格,可以计算均值以及给出建议。请注意,这些预测结果仅供参考,不能被视为股票投资的依据。建议结合其他因素进行综合分析和决策。

civilpy:Python数据分析及可视化实例目录925 赞同 · 36 评论文章 

更多推荐

使用vue-cli搭建spa项目

目录什么是vue-cli安装vue-cli使用脚手架vue-cli(来构建项目)vue项目结构的说明基于spa项目完成路由基于spa项目完成嵌套路由什么是vue-cliVueCLI是一个官方发布的用于快速搭建Vue.js项目的命令行工具。它提供了一套交互式的脚手架,可以帮助开发者初始化项目、配置构建工具、管理依赖等。安

【GitLab私有仓库】在Linux上用Gitlab搭建自己的私有库并配置cpolar内网穿透

文章目录前言1.下载Gitlab2.安装Gitlab3.启动Gitlab4.安装cpolar5.创建隧道配置访问地址6.固定GitLab访问地址6.1保留二级子域名6.2配置二级子域名7.测试访问二级子域名前言GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。G

数据库-理论基础

目录1.什么是数据库?2.数据库与文件系统的区别?3.常见的数据库由那些?4.关系型数据库(MySQL)的特征及组成结构介绍1.什么是数据库?数据:描述事物的符号记录,可以是数字,文字,图形,声音,语言等多种形式,他们都可以经过数字化后存入计算机数据库:存储数据的仓库,是长期存放在计算机内,有组织,可共享的大量数据集合

Flutter热更新技术探索

一,需求背景:APP发布到市场后,难免会遇到严重的BUG阻碍用户使用,因此有在不发布新版本APP的情况下使用热更新技术立即修复BUG需求。原生APP(例如:Android&IOS)的热更新需求已经比较成熟,但Flutter技术栈目前还缺少类似的技术方案,因此Flutter研发团队,也需要类似的热更新技术。二,Flutt

南大通用数据库-Gbase-8a-学习-39-show命令汇总(持续更新)

目录一、环境信息二、show功能参数三、show命令示例1、SHOWLOADLOGS(加载日志报错)2、SHOWCOLUMNS(列信息)3、SHOWCREATEDATABASE(建库信息)4、SHOWCREATEPROCEDURE(存储过程信息)5、SHOWCREATETABLE(建表信息)6、SHOWTABLELOC

中国核动力研究设计院使用 DolphinDB 替换 MySQL 实时监控仪表

随着仪表测点的大幅增多和采样频率的增加,中国核动力研究设计院仪控团队原本基于MySQL搭建的旧系统已经无法满足大量数据并发写入、实时查询和聚合计算的需求。他们在研究DB-Engines时序数据库榜单时了解到国内排名第一的DolphinDB。经过测试,发现其非常符合业务需求,并且在2022年1月正式选择了DolphinD

2023年全国研究生数学建模竞赛华为杯C题大规模创新类竞赛评审方案研究

2023年全国研究生数学建模竞赛华为杯C题大规模创新类竞赛评审方案研究原题再现:现在创新类竞赛很多,其中规模较大的竞赛,一般采用两阶段(网评、现场评审)或三阶段(网评、现场评审和答辩)评审。创新类竞赛的特点是没有标准答案,需要评审专家根据命题人(组)提出的评审框架(建议)独立评审。所以,对同一份作品,不同评委的评分可能

MySQL 开源证书真比 Postgres 更能带动社区吗?

笔者之前写的「全方位对比Postgres和MySQL」还在持续发酵,最近腾讯的公众号也发布了一篇「MySQLVSPostgreSQL,谁是世界上最成功的数据库?」,其中在对比两者使用的开源证书时写到:PostgreSQLLicense是一个宽松的开源许可证,类似于MIT许可证。它允许用户自由使用、修改和分发,无需公开源

go迷之切片截取分析

切片截取,有没有很迷?目录典型截取(两参数、三参数)及分析迷之append参与截取及细节分析关于截取时的初始索引是否从第一个位置开始的影响修改原切片细节分析典型截取(两参数、三参数)及分析先看一个例子来表示一下切片截取(仅截取,无append):a:=[]int{1,2}a0:=a[0:1]fmt.Printf("a0

UI设计和平面设计的区别是什么?看完这篇一次搞懂

很多想要从事视觉领域工作的新手设计师,搞不懂UI设计和平面设计的区别;也有很多平面设计师工作后想转UI,却不知道该如何进行,导致择业和职业发展受阻,其实核心问题还是因为没有弄清楚UI设计和平面设计的区别是什么。这里先说明,UI设计和平面设计,是两个完全不同的设计领域。UI设计师着重于解决产品的用户习惯和易用体验,而平面

07JVM_内存模型和CAS与原子类

一、内存模型1.java内存模型Java内存结构是JMM(JavaMemoryModel)的意思。JMM定义了一套在多线程读写共享数据(成员变量,数组)时,对数据的原子性,见性,有序性的规则和保障。1.1原子性什么是原子性?原子性是指一个操作是不可中断的,即使多个线程一起执行,一个线程一旦开始,就不会被其他线程干扰。如

热文推荐