使用 Tushare API 獲取深圳股市歷史數據
引言
這篇文章將會演示如何使用 Tushare Pro API 獲取深圳股市的歷史交易數據,并將數據保存到CSV文件中。Tushare 是一款提供實時和歷史金融市場的數據服務,支持多種語言,具有豐富的數據源和強大的功能。
安裝 Tushare
在開始之前,你需要先安裝 Tushare 庫。可以通過 pip 安裝:
pip install tushare
初始化 Tushare API
使用 Tushare Pro API 需要一個 token 。可以在 Tushare 官方網站注冊并獲取 token。一旦你獲得了 token,可以通過以下方式初始化 Tushare API:
import tushare as ts
ts.set_token('your_token')
獲取歷史數據
一旦你已經初始化了 Tushare API,就可以開始請求數據了。在此示例中,我們將獲取深交所的“000004”股票的歷史數據。我們可以通過以下代碼實現:???????
pro = ts.pro_api('your_token')
df?=?pro.daily(ts_code='000004.SZ',?start_date='20200701',?end_date='20231108')
此段代碼將從2020年7月1日到2023年11月10日獲取“000004”股票的日線數據。
保存數據到CSV文件
最后,我們可以使用 pandas 的 to_csv 函數來將所獲取的數據保存到CSV文件中:
df.to_csv("000004_2023.csv", index=False)
在保存時,我們不希望保留索引(index=False),因為 Tushare 提供的數據已經自帶了一個 date 字段作為索引。所以如果保留索引的話,可能會造成混淆。總結一下,這篇教程介紹了如何使用 Tushare API 來獲取深交所歷史數據并將其保存到CSV文件中。Tushare 是一款功能強大的金融數據分析工具,可以幫助您更好地理解金融市場趨勢。
使用 Python 和機器學習預測股票漲跌幅
引言
這篇文章將演示如何使用Python和機器學習庫來構建一個簡單的股票漲跌幅預測模型。我們將使用過去的股票漲跌幅數據來預測明天的股票漲跌幅走勢。在開始之前,請確保你已安裝所需的所有庫,其中包括 Pandas、Numpy、Scikit-learn 和 XGBoost。
安裝 Tushare
在開始之前,你需要先安裝 Tushare 庫。可以通過 pip 安裝:???????
pip install numpy
pip?install?pandas
pip?install?xgboost
pip install?scikit-learn
數據導入
首先,我們需要讀取股票漲跌幅數據,并將其轉換成 Pandas DataFrame。使用 Pandas 的 read_csv() 函數即可完成這項工作:
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score
data = pd.read_csv("000004_2023.csv")
特征和標簽的選擇
接下來,我們需要確定輸入特性和輸出特性。在這個例子中,我們將選取開盤價、最高價、最低價、昨天的收盤價、今天的價格變動、成交量和成交額作為輸入特征。此外,我們將根據今天的漲跌幅與昨天漲跌幅的差值是否為正,將明天的漲跌幅變動標記為漲(1)或跌(0)作為輸出特性。通過以下代碼實現:???????
features = ["open", "high", "low", "pre_close", "change", "vol", "amount"]
data["pct_chg"] = data["close"].pct_change()
data["pct_chg"] = np.where(data["pct_chg"] > 0, 1, 0)
劃分訓練集和測試集
接下來,我們需要將數據集分割為兩個部分:訓練集和測試集。通常,我們將 80% 的數據用于訓練模型,剩下20%的數據用于評估模型。我們可以使用 Scikit-learn 的 train_test_split() 函數來實現這一目的:???????
X = data[features]
y = data["pct_chg"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=48)
建立和訓練模型
現在我們可以使用 XGBoost 模型來構建我們的預測器。首先,我們創建一個 XGBClassifier 類的實例,并使用 fit() 方法對其進行訓練:???????
model = XGBClassifier()
model.fit(X_train, y_train)
測試模型
接下來,我們可以使用我們的模型對測試集進行預測:
y_pred = model.predict(X_test)
評估模型
現在我們可以計算預測結果的準確性:
???????
accuracy = accuracy_score(y_test, y_pred)
print(f"模型準確率: {accuracy}")
預測未來價格
接下來我們使用模型預測未來兩天的漲跌幅。首先,我們需要獲得未來兩天的時間戳:
???????
last_date = pd.to_datetime(data.index[-1])
future_dates = pd.date_range(last_date + pd.DateOffset(days=1), periods=2)
然后,我們將昨天的漲跌幅信息填充到未來兩天的時間戳下:
future_features = pd.DataFrame(index=future_dates)
for column in features:
future_features[column] = [data[column].iloc[-1]] * 2
最后,我們用模型對未來的兩天的漲跌幅進行預測:
future_predictions = model.predict(future_features)
print(f"未來兩天的預測值: {future_predictions}")
綜上所述,我們已經完成了使用 Python 和機器學習技術構建一個簡單股票漲跌幅預測模型的過程。需要注意的是,雖然該模型能夠在一定程度上預測未來的漲跌幅走勢,但是還需要考慮其他因素,如市場環境和經濟政策等。?? ?
請注意:
以上代碼僅使用簡單的機器學習模型嘗試預測股票漲跌幅變動,而在實際中,股票漲跌幅受到許多復雜因素的影響,比如政治因素、宏觀經濟情況、公司經營狀況等。在實際應用中應慎重使用,并配合其他技術分析手段進行輔助判斷。另外,股市有風險,投資需謹慎。