使用 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 和机器学习技术构建一个简单股票涨跌幅预测模型的过程。需要注意的是,虽然该模型能够在一定程度上预测未来的涨跌幅走势,但是还需要考虑其他因素,如市场环境和经济政策等。
请注意:
以上代码仅使用简单的机器学习模型尝试预测股票涨跌幅变动,而在实际中,股票涨跌幅受到许多复杂因素的影响,比如政治因素、宏观经济情况、公司经营状况等。在实际应用中应慎重使用,并配合其他技术分析手段进行辅助判断。另外,股市有风险,投资需谨慎。