最新利用Python预测股票价格

VAR模型定阶


接下来就是为VAR模型定阶,可以让阶数从1逐渐增加,当AIC值尽量小时,可以确定最大滞后期。我们使用最小二乘法,求解每个方程的系数,并通过逐渐增加阶数,为模型定阶,Python代码如下:

1# 模型阶数从1开始逐一增加

2rows, cols = subdata_diff1.shape

3aicList = []

4lmList = []

5

6for p in range(1,11):

7 baseData = None

8 for i in range(p,rows):

9 tmp_list = list(subdata_diff1[i,:]) + list(subdata_diff1[i-p:i].flatten())

10 if baseData is None:

11 baseData = [tmp_list]

12 else:

13 baseData = np.r_[baseData, [tmp_list]]

14 X = np.c_[[1]*baseData.shape[0],baseData[:,cols:]]

15 Y = baseData[:,0:cols]

16 coefMatrix = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),Y)

17 aic = np.log(np.linalg.det(np.cov(Y - np.matmul(X,coefMatrix),rowvar=False))) + 2*(coefMatrix.shape[0]-1)**2*p/baseData.shape[0]

18 aicList.append(aic)

19 lmList.append(coefMatrix)

20

21#对比查看阶数和AIC

22pd.DataFrame({“P”:range(1,11),“AIC”:aicList})

23# P AIC

24# 0 1 13.580156

25# 1 2 13.312225

26# 2 3 13.543633

27# 3 4 14.266087

28# 4 5 15.512437

29# 5 6 17.539047

30# 6 7 20.457337

31# 7 8 24.385459

32# 8 9 29.438091

33# 9 10 35.785909

如上述代码所示,当p=2时,AIC值最小为13.312225。因此VAR模型定阶为2,并可从对象lmList[1]中获取各指标对应的线性模型。

预测及效果验证


基于lmList[1]中获取各指标对应的线性模型,对未来30期的数据进行预测,并与验证数据集进行比较分析,Python代码如下:

1p = np.argmin(aicList)+1

2n = rows

3preddf = None

4for i in range(30):

5 predData = list(subdata_diff1[n+i-p:n+i].flatten())

6 predVals = np.matmul([1]+predData,lmList[p-1])

7 # 使用逆差分运算,还原预测值

8 predVals=data.iloc[n+i,:].values[:4]+predVals

9 if preddf is None:

10 preddf = [predVals]

11 else:

12 preddf = np.r_[preddf, [predVals]]

13 # 为subdata_diff1增加一条新记录

14 subdata_diff1 = np.r_[subdata_diff1, [data.iloc[n+i+1,:].values[:4] - data.iloc[n+i,:].values[:4]]]

15

16#分析预测残差情况

17(np.abs(preddf - data.iloc[-30:data.shape[0],:4])/data.iloc[-30:data.shape[0],:4]).describe()

18# High Low Open Close

19# count 30.000000 30.000000 30.000000 30.000000

20# mean 0.010060 0.009380 0.005661 0.013739

21# std 0.008562 0.009968 0.006515 0.013674

22# min 0.001458 0.000115 0.000114 0.000130

23# 25% 0.004146 0.001950 0.001653 0.002785

24# 50% 0.007166 0.007118 0.002913 0.010414

25# 75% 0.014652 0.012999 0.006933 0.022305

26# max 0.039191 0.045802 0.024576 0.052800

从上述代码第17行可以看出这4个指标的最大百分误差率分别为3.9191%、4.5802%、2.4576%、5.28%,最小百分误差率分别为0.1458%、0.0115%、0.0114%、0.013%,进一步,绘制二维图表观察预测数据与真实数据的逼近情况,Python代码如下:

1import matplotlib.pyplot as plt

2plt.figure(figsize=(10,7))

3for i in range(4):

4 plt.subplot(2,2,i+1)

5 plt.plot(range(30),data.iloc[-30:

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python是一种功能强大的编程语言,广泛地用于数据科学和机器学习领域。在股票市场中,Python可以结合线性回归算法,用于预测股票价格。 线性回归是一种基本的统计学方法,可用于建立两个或多个变量之间关系的模型。对于股票市场而言,线性回归可以建立变量之间的数学模型,推导得出价格的变化趋势。这些变量包括市场数据、公司财务数据以及其他涉及股票价格变动的因素。 实现以Python为基础的线性回归预测股票价格的过程需要以下步骤: 1. 采集股票市场数据,包括股票价格、交易量、公司财务数据以及其他与股票价格相关的因素。 2. 通过Python编写代码进行数据清洗、处理和分析,以建立数据的数学模型。 3. 建立线性回归模型,使用数据进行训练,并利用模型进行预测。在这个过程中,需要使用训练集和测试集,并利用交叉验证等技术进行模型的评价和优化。 4. 根据预测结果,制定股票的投资策略。如果预测结果表明该股票将会上涨,投资者可以选择买入股票,反之则应当选择售出。 总之,Python可以结合线性回归算法非常有效地预测股票价格,并且可以帮助投资者做出更加明智的投资决策。 ### 回答2: Python是一种强大而流行的编程语言,它具有许多可供选择的库和工具,可以应用于各种任务,包括预测股票价格。线性回归是一种广泛应用于统计学中的方法,可以在给定变量之间建立线性关系,并用于预测未涉及的结果。 为了应用线性回归模型预测股票价格,需要收集一定量的有关股票价格和相关变量的数据。这些输入变量可以是公司收入、债务、销售、利润等,以及其他可能影响股票价格的因素。然后,使用Python中的数据分析库,如Numpy和Pandas,来处理和准备数据进行回归分析。 在进行线性回归分析之前,需要对数据进行探索性分析,了解数据分布、任何异常值和相关性。可以使用Matplotlib和Seaborn等数据可视化工具,来帮助深入地了解数据。然后,使用Scikit-learn库中的线性回归工具,训练一个模型,以预测股票价格。 通过对模型进行拟合、预测准确性和模型的可解释性进行评估,可以确定模型的质量,并对预测结果进行调整和优化。 总体而言,Python中的线性回归工具可以为预测股票价格提供有用的信息和见解,但需要谨慎地选择变量和进行数据处理,以确保数据可靠性和模型精度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值