0.引言
今天學習了一個時間序列的工具autots潦牛,想了一下一是不是可以拿來預測股票呢刑棵,說干就干 队询。
1.安裝環(huán)境
1.1 安裝AutoTS
pip install autots
autots就是時間序列的工具。這里面
是不是很簡單阴挣?如果安裝過程出現(xiàn)什么問題百度搜索解決一下躯概。
網上摘了一段介紹
AutoTS 是一個自動化的時間序列預測庫登钥,可以使用簡單的代碼訓練多個時間序列模型,此庫的一些最佳功能包括:
利用遺傳規(guī)劃優(yōu)化方法尋找最優(yōu)時間序列預測模型娶靡。
提供置信區(qū)間預測值的下限和上限牧牢。
它訓練各種各樣的模型,如統(tǒng)計的,機器學習以及深度學習模型
它還可以執(zhí)行最佳模型的自動集成
它還可以通過學習最優(yōu)NaN插補和異常值去除來處理混亂的數據
它可以運行單變量和多變量時間序列
詳細介紹:
https://pypi.org/project/AutoTS/
1.2 安裝 tushare
pip install tushare
股票的歷史數據來源结执,獲取數據很簡單度陆。
tushare庫是一個用于抓取中國股票的歷史和實時報價數據的工具。特點如下:
易于使用献幔,因為返回的大部分數據都是pandas的DataFrame對象
可以輕松保存為csv, excel或json文件
可以插入到MySQL或Mongodb
tushare 上面獲取數據需要注冊懂傀。120積分以上就可以調用。不同接口需要的積分不同蜡感。如果還沒有注冊的小伙伴可以點下面我的鏈接注冊(我也可以得到積分蹬蚁,感謝。不想注冊的朋友郑兴,也可以聯(lián)系我犀斋,用我的token免費測試使用)。
https://tushare.pro/register?reg=541339
2.代碼實現(xiàn)
2.1 獲取歷史數據
這里以000009這個股票為例
import tushare as ts
import pandas as pd
from datetime import datetime
token = '你的token'
#可以登錄文章首的鏈接注冊獲取
pro = ts.pro_api(token)
df = ts.pro_bar(ts_code='000009.SZ', adj='qfq', start_date='20180101', end_date='20221031')
# df.to_csv("002609.csv")
# data = pd.read_csv ("002609.csv")
# 日期格式轉換
df['date']= df['trade_date'].apply(lambda x: datetime.strptime(str(x),'%Y%m%d'))
2.2 可視化歷史數據
將歷史數據可視化出來看一下
temp_df = df.set_index('date')
temp_df["close"].plot(figsize=(12, 8), title="000009 Prices", fontsize=20, label="Close")
plt.legend()
plt.grid()
plt.show()
和股票軟件看到的圖形差不多
2.3 訓練模型
訓練模型(拿歷史數據訓練)
from autots import AutoTS
import matplotlib.pyplot as plt
import pandas as pd
# 實例化一個模型(參數沒有調整情连,本文主要是給大家有個簡單認識)
model = AutoTS(forecast_length=40, frequency='infer', ensemble='simple', drop_data_older_than_periods=100)
# 模型擬合訓練叽粹,這個過程會自動找到最佳模型、預處理和集成
model = model.fit(df, date_col='date', value_col='close', id_col=None)
這個需要一定的時間却舀,耐心等一下虫几。
2.4 預測結果
輸出預測結果
prediction = model.predict()
forecast = prediction.forecast
print("Stock Price Prediction of Apple")
print(forecast)
結果出來了,是不是很激動挽拔。用圖展示一下辆脸。
temp_df['close'].plot(figsize=(15,8), title= 'AAPL Stock Price', fontsize=18, label='Train')
forecast['close'].plot(figsize=(15,8), title= 'AAPL Stock Price', fontsize=18, label='Test')
plt.legend()
plt.grid()
plt.show()
出來了
再看看實際的行情數據。
dfNext = ts.pro_bar(ts_code='000009.SZ', adj='qfq', start_date='20221101', end_date='20221226')
dfNext['date']= dfNext['trade_date'].apply(lambda x: datetime.strptime(str(x),'%Y%m%d'))
dfTest = dfNext.loc[:,['date','close']]
dfTest
啊螃诅。怎么差這么遠啡氢,55555555555
好了,主要是給大家演示了一下术裸,怎么使用autots和tushare倘是,還有好多要調整的。如果你也有興趣時間序列預測或量化交易袭艺,歡迎一起交流搀崭。