Python est un langage largement utilisé dans divers secteurs, notamment l'informatique, la biologie et la finance. On peut dire que python peut tout faire sauf ne pas avoir d'enfants. Cet article utilisera Python pour jouer avec les données boursières et vous permettra de voir la puissance de Python.
Outils utilisés
python3.6Juypter notebook (IDE interactif, recommandé) numpy, pandas pour l'analyse des données matplotlib, seaborn pour les données visualisation pandas_datareader pour obtenir des données boursières
Acquisition de données
Nous pouvons obtenir des données boursières à partir de pandas_datareader. Vous devez d'abord installer cette bibliothèque
Recommandations associées : "Tutoriel vidéo Python"
pip install pandas pip install pandas-datareader
Ensuite, vous pouvez accéder aux données
from pandas_datareader.data import DataReader datas = DataReader(name='BABA', data_source='yahoo', start='2015-01-01', end='2018-01-01')
Ici, je Enregistrez d'abord les données sous forme de fichier CSV, examinons d'abord les données boursières d'Alibaba des années précédentes.
import pandas as pd file = 'BABA.csv' #csv文件index = 'Date' #将日期作为索引列alibaba = pd.read_csv(file, index_col=index) #读取csv文件数据
Ensuite, nous vérifions simplement les données boursières d'Alibaba
alibaba.head(n = 5) #查看前5行数据
Voici les 5 premières lignes de données boursières. Nous pouvons voir le cours d'ouverture, le cours de clôture, la valeur la plus élevée et la valeur la plus basse de chaque jour. . valeur, volume des échanges, etc.
Regardez ensuite la description des données pour avoir une idée intuitive des données.
alibaba.describe()
Ceci est une analyse des statistiques des données. Vous pouvez voir qu'il y a un total de 789 lignes de données, et les valeurs les plus élevées et les plus basses ne sont pas très différentes.
Analyse des tendances historiques
Avant l'analyse, nous importons d'abord la bibliothèque de calcul scientifique Python requise.
# 数据分析 import numpy as np import pandas as pd from pandas import Series, DataFrame# 可视化 import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline
Nous analysons dans un premier temps la tendance globale du cours de clôture du titre.
alibaba['Adj Close'].plot(legend = True) plt.title('Alibaba Adj Close') plt.ylim([50,200]) plt.xlabel('Date') plt.ylabel('Price')
On peut voir que bien qu'il y ait de petites fluctuations au milieu, la tendance générale du cours de clôture est à la hausse, ce qui montre que la valeur marchande d'Alibaba a augmenté.
Jetons ensuite un coup d'œil au taux de rendement quotidien des actions d'Alibaba. Après tout, gagner de l'argent en bourse repose principalement sur les gains obtenus en achetant à bas prix et en vendant à un prix élevé. .
size = (10,8) alibaba['daily-return'].plot(figsize = size,linestyle = '--',marker = 'o') #折线图,原点表示最大最小点plt.title('Alibaba daily return') plt.xlabel('Date') plt.ylabel('daily return rate')
Le taux de rendement quotidien n'est pas stable, ce qui prouve que le marché boursier est risqué et doit être traité avec prudence.
Conseil pratique : La fonction pct_change() compare chaque élément à son élément précédent et calcule le pourcentage de variation. Par défaut, pct_change() opère sur les colonnes ; si vous souhaitez l'appliquer sur les lignes, utilisez le paramètre axis = 1.
Utilisons des graphiques de densité et des histogrammes pour vérifier la situation globale des rendements quotidiens.
data = alibaba['daily-return'].dropna() #清除异常值bins = 50 #分为50个区间#在同一张图上画出分布直方图和密度图sns.distplot(data, bins = bins, color = 'red',hist = True, kde = True) plt.title('Alibaba daily return distribution') plt.xlabel('daily-return') plt.ylabel('probablity') plt.xlim([-0.05,0.1])
Nous pouvons voir sur l'image que le taux de rendement global est fondamentalement stable à environ 0 et que le profit ou la perte est symétrique.
Analyse des risques
Dans l'analyse des risques, nous comparons plusieurs grandes entreprises du secteur Internet pour voir à quoi ressemblent leurs actions Quelle est la différence ? Les cinq entreprises que j'ai choisies ici sont Apple, Google, Amazon, Microsoft et Facebook, et la période s'étend de 2015 à 2017. (Vous pouvez également l'obtenir à partir du lien précédent dans Baidu Netdisk.)
Lisez le fichier top5.csv pour obtenir les données, triez-les par heure et affichez-les.
file = "top5.csv"index = 'Date'top_tech_df = pd.read_csv(file,index_col = index) #读取数据 top_tech_df=top_tech_df.sort_index() #按索引,也就是时间排序 top_tech_df.head(n = 5)
Les données ici font référence au cours de clôture de l'action, qui sont les 5 premières données.
Tout d’abord, comparons de manière exhaustive ces 5 entreprises pour voir qui est la plus puissante.
top_tech_df.plot(kind = 'line') #折线图plt.title('five company adj close picture') plt.xlabel('Date') plt.ylabel('price') plt.legend() #添加图例
Vous pouvez voir que les cours de clôture de Google et d'Amazon sont toujours plus élevés que ceux des trois autres sociétés, et ces deux sociétés semblent être quelque peu liées. Si vous montez, je monterai, et. si tu descends, je descendrai.
Dans l'image ci-dessus, nous pouvons voir que les trois autres sociétés semblent se développer régulièrement. En fait, en raison de la grande échelle de l'image, elle est relativement plate. . La situation réelle est en fait l'une après l'autre, et il y a aussi de grands changements, consultez-la ci-dessous.
another_company = ['AAPL','FB','MSFT'] top_tech_df[another_company].plot() plt.title('another company adj close picture') plt.xlabel('Date') plt.ylabel('price') plt.legend()
De ce qui précède, nous avons appris qu'il existe une certaine similitude dans les changements de prix de clôture de Google et d'Amazon. Jetons un coup d'œil aux rendements quotidiens.
sns.jointplot("AMZN",'FB',top_tech_dr,kind='scatter',color = 'red',size=8) plt.title('joint with AMZN and FB')
Les rendements de Google et d'Amazon semblent également positivement corrélés, ce qui peut servir de facteur de référence pour prédire l'évolution de ces deux valeurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!