Heim >Backend-Entwicklung >Python-Tutorial >Kann Python zum Handel mit Aktien verwendet werden?
Python ist eine Sprache, die in verschiedenen Branchen weit verbreitet ist, darunter Computer, Biologie und Finanzen. Man kann sagen, dass Python alles kann, außer keine Kinder zu haben. In diesem Artikel wird Python verwendet, um mit Bestandsdaten zu experimentieren und Ihnen die Leistungsfähigkeit von Python zu zeigen.
Verwendete Tools
python3.6Juypter Notebook (interaktive IDE, empfohlen) Numpy, Pandas für die Datenanalyse Matplotlib, Seaborn für Daten Visualisierung pandas_datareader zum Abrufen von Bestandsdaten
Datenerfassung
Wir können Bestandsdaten von pandas_datareader abrufen. Zuerst müssen Sie diese Bibliothek installieren
Verwandte Empfehlungen: „Python-Video-Tutorial“
pip install pandas pip install pandas-datareader
Dann können Sie auf die Daten zugreifen
from pandas_datareader.data import DataReader datas = DataReader(name='BABA', data_source='yahoo', start='2015-01-01', end='2018-01-01')
Hier, ich Speichern Sie zunächst die Daten als CSV-Datei. Schauen wir uns zunächst die Aktiendaten von Alibaba in den vergangenen Jahren an.
import pandas as pd file = 'BABA.csv' #csv文件index = 'Date' #将日期作为索引列alibaba = pd.read_csv(file, index_col=index) #读取csv文件数据
Dann überprüfen wir einfach die Aktiendaten von Alibaba
alibaba.head(n = 5) #查看前5行数据
Im Folgenden sind die ersten 5 Zeilen der Aktiendaten aufgeführt. Wir können den Eröffnungskurs, den Schlusskurs, den höchsten Wert und den niedrigsten Wert jedes Tages sehen . Wert, Handelsvolumen usw.
Schauen Sie sich dann die Beschreibung der Daten an, um ein intuitives Gefühl für die Daten zu bekommen.
alibaba.describe()
Dies ist eine Analyse der Datenstatistiken. Sie können sehen, dass es insgesamt 789 Datenzeilen gibt und die höchsten und niedrigsten Werte nicht viel unterschiedlich sind.
Historische Trendanalyse
Vor der Analyse importieren wir zunächst die erforderliche Python-Bibliothek für wissenschaftliches Rechnen.
# 数据分析 import numpy as np import pandas as pd from pandas import Series, DataFrame# 可视化 import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline
Wir analysieren zunächst den Gesamttrend des Schlusskurses der Aktie.
alibaba['Adj Close'].plot(legend = True) plt.title('Alibaba Adj Close') plt.ylim([50,200]) plt.xlabel('Date') plt.ylabel('Price')
Es ist ersichtlich, dass der Schlusskurs trotz kleiner Schwankungen in der Mitte insgesamt nach oben tendiert, was zeigt, dass der Marktwert von Alibaba gestiegen ist.
Dann werfen wir einen Blick auf die tägliche Rendite von Alibaba-Aktien. Schließlich hängt das Geldverdienen an der Börse hauptsächlich von den Gewinnen aus dem Kauf zu einem niedrigen Preis und dem Verkauf zu einem hohen Preis ab .
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')
Die tägliche Rendite ist nicht stabil, was beweist, dass der Aktienmarkt riskant ist und mit Vorsicht behandelt werden muss.
Praktischer Leckerbissen: Die Funktion pct_change() vergleicht jedes Element mit seinem vorherigen Element und berechnet die prozentuale Änderung. Standardmäßig arbeitet pct_change() mit Spalten; wenn Sie es auf Zeilen anwenden möchten, verwenden Sie den Parameter axis = 1.
Verwenden wir Dichtediagramme und Histogramme, um die Gesamtsituation der täglichen Renditen zu überprüfen.
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])
Auf dem Bild können wir erkennen, dass die Gesamtrendite grundsätzlich stabil bei etwa 0 liegt und der Gewinn oder Verlust symmetrisch ist.
Risikoanalyse
In der Risikoanalyse vergleichen wir mehrere große Unternehmen der Internetbranche, um zu sehen, wie ihre Aktien sind Was ist der Unterschied? Die fünf Unternehmen, die ich hier ausgewählt habe, sind Apple, Google, Amazon, Microsoft und Facebook, und die Zeitspanne reicht von 2015 bis 2017. (Sie können es auch über den vorherigen Link in Baidu Netdisk abrufen.)
Lesen Sie die Datei top5.csv, um die Daten abzurufen, sortieren Sie sie nach Zeit und zeigen Sie sie an.
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)
Die Daten hier beziehen sich auf den Schlusskurs der Aktie, also auf die ersten 5 Daten.
Lassen Sie uns zunächst diese 5 Unternehmen umfassend vergleichen, um herauszufinden, wer stärker ist.
top_tech_df.plot(kind = 'line') #折线图plt.title('five company adj close picture') plt.xlabel('Date') plt.ylabel('price') plt.legend() #添加图例
Sie können sehen, dass die Schlusskurse von Google und Amazon immer höher sind als die der anderen drei Unternehmen, und diese beiden Unternehmen scheinen irgendwie verwandt zu sein. Wenn Sie steigen, werde ich steigen, und Wenn du untergehst, werde ich untergehen.
Auf dem Bild oben können wir sehen, dass sich die anderen drei Unternehmen scheinbar stetig entwickeln. Aufgrund des großen Maßstabs des Bildes ist es tatsächlich relativ flach . Die reale Situation ist tatsächlich eine nach der anderen, und es gibt auch große Schwankungen, sehen Sie sich das unten an.
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()
Aus dem oben Gesagten haben wir gelernt, dass es eine gewisse Ähnlichkeit bei den Schlusspreisänderungen von Google und Amazon gibt. Werfen wir einen Blick auf die täglichen Renditen.
sns.jointplot("AMZN",'FB',top_tech_dr,kind='scatter',color = 'red',size=8) plt.title('joint with AMZN and FB')
Auch die Renditen von Google und Amazon scheinen positiv korreliert zu sein, was als Referenzfaktor zur Vorhersage der Entwicklung dieser beiden Aktien genutzt werden kann.
Das obige ist der detaillierte Inhalt vonKann Python zum Handel mit Aktien verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!