1. 程式人生 > >python 股票價格預測(以中興通訊為例)

python 股票價格預測(以中興通訊為例)

Python 股票價格預測(以中興通訊為例)

程式碼塊

程式碼塊語法遵循標準markdown程式碼,例如:

import pandas as pd
import tushare as ts


begin_time = '2018-06-08'
end_time = '2018-09-08'
code = "000063"
df = ts.get_hist_data(code, start=begin_time, end=end_time)
df.to_excel('/Users/wangwang/Desktop/tusharetest.xlsx')

import pandas as pd


#引數初始化
discfile = '/Users/wangwang/Desktop/tusharetest.xlsx' forecastnum = 5 #讀取資料,指定日期列為指標,Pandas自動將“日期”列識別為Datetime格式 data = pd.read_excel(discfile, index_col ='date',data='close') #時序圖 import matplotlib.pyplot as plt #用來正常顯示負號 plt.rcParams['axes.unicode_minus'] = False data.plot() plt.show() #自相關圖 from
statsmodels.graphics.tsaplots import plot_acf plot_acf(data).show() #平穩性檢測 from statsmodels.tsa.stattools import adfuller as ADF print(u'原始序列的ADF檢驗結果為:', ADF(data['close'])) #由於返回結果p值顯著大於0.05,我們對序列進行差分操作。通過實驗發現兩次差分後序列基本平穩,可以運用ARIMA模型進行分析。 #差分後的結果 D_data = data.diff(2).dropna() D_data.columns = ['close difference'
] D_data.plot() plt.show() print(u'差分序列的ADF檢驗結果為:', ADF(D_data['close difference'])) #白噪聲檢驗結果 from statsmodels.stats.diagnostic import acorr_ljungbox print(u'差分序列的白噪聲檢驗結果為:', acorr_ljungbox(D_data, lags=1)) from statsmodels.tsa.arima_model import ARIMA #定階 #一般階數不超過length/10 pmax = int(len(D_data)/10) #一般階數不超過length/10 qmax = int(len(D_data)/10) #bic矩陣 bic_matrix = [] for p in range(pmax+1): tmp = [] for q in range(qmax+1): #存在部分報錯,所以用try來跳過報錯。 try: tmp.append(ARIMA(data, (p,1,q)).fit().bic) except: tmp.append(None) bic_matrix.append(tmp) #從中可以找出最小值 bic_matrix = pd.DataFrame(bic_matrix) #先用stack展平,然後用idxmin找出最小值位置。 p,q = bic_matrix.stack().idxmin() #print(u'BIC最小的p值和q值為:%s、%s' %(p,q)) #建立ARIMA(0, 1, 1)模型 model = ARIMA(data, (p,1,q)).fit() forecast=model.forecast(5) print(forecast[0])