[PYTHON] Berechnung der technischen Indikatoren durch TA-Lib und Pandas

TA-Lib ist eine Bibliothek zur Berechnung typischer Indikatoren in der technischen Analyse beim Sammeln und Analysieren von Finanzdaten mit Python. Wie ich in Zurück geschrieben habe, bei der Analyse der täglichen Bestandsdaten (= täglicher Eröffnungspreis, hoher Preis usw.) mit Pandas, verschiedene typische Es ist bequemer und sicherer, eine Bibliothek zu verwenden, als alles selbst zu implementieren, um verschiedene Indikatoren zu berechnen.

TA-Lib http://ta-lib.org/

Stellen Sie TA-Lib zur Verfügung

Um diese TA-Lib mit Python zu verwenden, werden Bindungen für Python bereitgestellt.

Wie installiert man http://mrjbq7.github.io/ta-lib/install.html

Die Installationsmethode ist einfach. Laden Sie einfach den Quell-Teerball herunter und installieren Sie ihn. Im obigen Link wird --prefix = / usr verwendet, aber unter Berücksichtigung von FHS ist --prefix = / usr / local besser.

VERSION=0.4.0
FILENAME=ta-lib-$VERSION-src.tar.gz
curl -L http://prdownloads.sourceforge.net/ta-lib/$FILENAME -O
tar xzvf $FILENAME
cd ta-lib
./configure --prefix=/usr/local
make
sudo make install

Python-Bindungen können zum Zeitpunkt des Schreibens in easy_install enthalten sein.

easy_install TA-Lib

Wenn eazy_install erfolgreich ist, importieren Sie aus IPython und stellen Sie sicher, dass Sie die Funktionen verwenden können, die mit ta beginnen.

Verwenden Sie TA-Lib

Sie können die Liste der Funktionen und deren Verwendung auf der obigen GitHub-Site anzeigen, aber kurz erläutern

import talib as ta
ta.get_function_groups

Dann können Sie jede Funktion und die Gruppe für jede Funktion sehen.

Wie ich in Zurück geschrieben habe, können Sie mit TA-Lib frei rechnen, wenn Sie die Aktienkursdaten von Yahoo! Finance kratzen. Es kann jedoch ein Problem sein, wenn Sie versuchen, zu viele Daten über das Scraping hinaus zu verarbeiten. Es wird eine Gebühr erhoben, Sie können jedoch auch Zeitreihendaten vom Yahoo! Finance VIP Club herunterladen, um die Daten nach Bedarf herunterzuladen. Sie können es auch kaufen.

Nachdem Sie die Daten vorbereitet haben, können Sie sie mit IPython verarbeiten.

filename = 'stock_N225.csv' #Nikkei durchschnittliche Aktienkursdaten
df = pd.read_csv(filename,
                 index_col=0, parse_dates=True)
closed = df.asfreq('B')['Adj Close'].dropna() #Extrahieren Sie den angepassten Schlusskurs
prices = np.array(stock, dtype='f8') #Bewahren Sie es in einem NumPy-Array mit Gleitkommazahlen auf

#Finden Sie den einfachen gleitenden 5-Tage-Durchschnitt
sma5 = ta.SMA(prices, timeperiod=5)

# RSI (14 ..)Ich suche
rsi14 = ta.RSI(prices, timeperiod=14)

# MACD (Führender gleitender 12-Tage-Durchschnitt, nachlaufender gleitender 26-Tage-Durchschnitt, 9-Tage-Signalleitung)Ich suche
macd, macdsignal, macdhist = ta.MACD(prices,
                                     fastperiod=12, slowperiod=26, signalperiod=9)

Nun, Sie können alle in TA-Lib implementierten technischen Indikatoren so berechnen.

Handlung

Es ist schwer vorstellbar, ob es sich nur um numerische Werte handelt. Versuchen wir also, etwas zu zeichnen. Mit der bekannten Kombination von Pandas + Matplotlib und Talib können Sie Diagramme wie bei der sogenannten Aktiensoftware zeichnen.

Zeichnen wir zunächst den Tages-Chart, den EWMA (indexgewichteten gleitenden Durchschnitt) und das Bollinger-Band aus dem durchschnittlichen Nikkei-Aktienkurs der letzten 180 Tage.

ohlc_N225.png

Wie Sie sehen können, ist die Abweichung vom gleitenden 25-Tage-Durchschnitt eine gewisse Unterstützung, und die Standardabweichung + 2σ-Linie ist der obere Preis.

Schauen wir uns als nächstes DeNA an, das aufgrund der Partnerschaft mit Nintendo an zwei aufeinander folgenden Tagen zu einem heißen Thema geworden ist. Diesmal ist es eine Handlung für die letzten 90 Tage.

ohlc_2432.png

Ein Blick auf den Oszillatorindex zeigt, dass der Markt erstaunlich optimistisch ist.

osci_2432.png

Wenn es um solche Diagramme geht, kommen verschiedene Aktienexperten heraus und es ist schwierig, aber der Autor ist kein Aktienexperte, sondern Daten aus der Perspektive der Datenanalyse durch IT und Statistik / maschinelles Lernen. Ich schaue es mir an.

Wenn Sie einen statistischen Ansatz wählen, ist es legitim, einen Ansatz zu wählen, z. B. Änderungen an Daten zu quantifizieren und vorherzusagen, wie sie sich gegenüber früheren Daten ändern werden.

Es gibt eine Verzerrung in der menschlichen Wahrnehmung. Ich kaufe es, weil ich denke, dass es steigen wird, und ich verkaufe es, weil ich denke, dass es sinken wird, also neige ich dazu, voreingenommene Entscheidungen zu treffen.

Technische Analysen sind natürlich nicht allzweckmäßig, können jedoch dazu beitragen, diese Verzerrungen zu beseitigen und mechanische Entscheidungen zu treffen.

Führen Sie die Zyklusfarbe durch maschinelles Lernen durch

Wenn nun einige Aktien steigen, möchten Sie möglicherweise andere Aktien mit ähnlichen Marktpreisen von allen Aktien der TSE basierend auf diesen technischen Indikatoren suchen und kaufen. Die Suche nach der nächsten steigenden Aktie bei gleichzeitiger Suche nach Anlagezielen in anderen Branchen in einem derart steigenden Markt wird als [kreisförmige Farbe] bezeichnet (http://www.daiwa.jp/glossary/jpn/00369.html). .. Mit anderen Worten, die Aktien, die Gewinne gesichert haben, sind bereits hoch genug, daher suchen wir nach dem nächsten Ziel und denken, dass diesmal eine andere Aktie steigen könnte.

Wenn Sie die Aktien, die Sie derzeit halten, verkaufen und neues Geld in andere materielle Aktien wie diese investieren möchten, würde es eine Menge Zeit und Arbeit kosten, den Markt nacheinander zu erforschen. Es kann nur gesagt werden, dass es ein Freizeitmensch ist, jedes Mal so etwas zu tun. Da Computer entwickelt wurden und jeder IT und Mathematik problemlos in vollem Umfang nutzen kann, werde ich die Zirkulationsfarbe durch maschinelles Lernen ausprobieren.

Zunächst werden wir als Lehrerdaten mehrere Aktien in Branchen aufnehmen, die bereits Gewinne erzielt haben, und einen Datenrahmen generieren. Es hängt davon ab, welche Art von Standpunkt Sie hier erstellen möchten, aber dieses Mal werde ich einfach den Impuls der Zeitreihendaten als Beispiel aufgreifen.

import os
import pandas as pd
import numpy as np
from sklearn import svm

def read_from_csv(stock, filename):
    if os.path.exists(filename):
        return pd.read_csv(filename,
                           index_col=0, parse_dates=True)

def read_txt(filename):
    stocks = pd.read_csv(filename, header=None)
    data = pd.DataFrame([])
    for s in stocks.values:
        stock = str(s[0])
        csvfile = "".join(['ti_', stock, '.csv'])
        df = read_from_csv(stock, csvfile).asfreq('B')[-30:]
        data[stock] = df.ix[:,'mom25']
    print(data.T.tail(10))
    return data.T

data = read_txt('stocks.txt')

Dadurch wird ein Datenrahmen mit dem Aktiencode und der täglichen Dynamik erstellt. Lassen Sie uns dies in eine Mehrfachliste mit Zeitreihenimpuls für jeden Issue-Code im Voraus konvertieren. Das ist schlammig, also werde ich es weglassen.

Was die Geschichte des maschinellen Lernens betrifft, ein Beispiel für die Klassifizierung von Schülernoten in Gruppen und die Klassifizierung von Schülern für die gesamte Klasse basierend darauf Ich schrieb. Auf diese Weise klassifiziert der Support Vector Machine Classifier, der die oben genannten Lehrerdaten gelernt hat, die vergangenen Daten aller Aktien, die im ersten Abschnitt der Tokioter Börse aufgeführt sind.

from sklearn.cluster import KMeans
from sklearn import svm

kmeans_model = KMeans(n_clusters=100, random_state=100).fit(train_X)
labels = kmeans_model.labels_
clf = svm.SVC(kernel='rbf', C=1) #RBF-Kernel-Unterstützung Vector-Maschine als Klassifikator
clf.fit(train_X, labels) #Lernen
results = clf.predict(test_X) #Einstufung

Jetzt ist es möglich, Aktien mit ähnlicher Dynamik mechanisch zu extrahieren.

Zusammenfassung

Jeder, der IT und Mathematik voll ausnutzt, kann Finanzdaten wie Quants analysieren und tatsächlich investieren, um Gewinn zu erzielen. Datenanalyse ist ohne Zweck bedeutungslos und nutzlos, aber wenn es einen klaren Zweck gibt, zum Beispiel bei Investitionen zu helfen, denke ich, dass sich die Berechnung lohnt. Bitte beachten Sie, dass dieser Artikel die Leser nicht zum Investieren ermutigt.

Dies ist das Ende der Analyse der Bestandsdaten, und ich möchte mehr über das maschinelle Lernen schreiben, das in der zweiten Hälfte dieser Zeit ab dem nächsten Mal auftrat.

Recommended Posts

Berechnung der technischen Indikatoren durch TA-Lib und Pandas
Analyse von Finanzdaten durch Pandas und deren Visualisierung (2)
Analyse von Finanzdaten durch Pandas und deren Visualisierung (1)
Berechnung der Ähnlichkeit durch MinHash
[Wissenschaftlich-technische Berechnung von Python] Grundlegende Operation des Arrays, numpy
[Wissenschaftliche und technische Berechnung von Python] Zeichnung fraktaler Figuren [Shelpinsky-Dreieck, Bernsley-Farn, fraktaler Baum]
Praxis der Datenanalyse durch Python und Pandas (Tokyo COVID-19 Data Edition)
Wissenschaftlich-technische Berechnung mit Python] Zeichnen und Visualisieren von 3D-Isoplanes und deren Querschnittsansichten mit Mayavi
[Wissenschaftlich-technische Berechnung mit Python] Summenberechnung, numerische Berechnung
[Wissenschaftlich-technische Berechnung nach Python] Ableitung analytischer Lösungen für quadratische und kubische Gleichungen, mathematische Formeln, Sympy
Eine kleine Überprüfung von Pandas 1.0 und Dask
[Wissenschaftlich-technische Berechnung von Python] Anpassung durch nichtlineare Funktion, Zustandsgleichung, scipy
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
[Wissenschaftlich-technische Berechnung mit Python] Berechnung des Matrixprodukts mit @ operator, python3.5 oder höher, numpy
[Steuerungstechnik] Berechnung von Übertragungsfunktionen und Zustandsraummodellen durch Python
[Wissenschaftlich-technische Berechnung von Python] Zeichnungsanimation der parabolischen Bewegung mit Locus, Matplotlib
[Wissenschaftlich-technische Berechnung von Python] Numerische Berechnung zur Ermittlung des Ableitungswerts (Differential)
[Wissenschaftlich-technische Berechnung mit Python] Analytische Lösungssympathie zur Lösung von Gleichungen
[Wissenschaftlich-technische Berechnung von Python] Zeichnung von 3D-gekrümmter Oberfläche, Oberfläche, Drahtrahmen, Visualisierung, Matplotlib
[Wissenschaftlich-technische Berechnung mit Python] Inverse Matrixberechnung, numpy
[Wissenschaftlich-technische Berechnung mit Python] Histogramm, Visualisierung, Matplotlib
[Wissenschaftlich-technische Berechnung mit Python] Lagrange-Interpolation, numerische Berechnung
Berechnung der Anzahl der verstrichenen Jahre und der Anzahl der verstrichenen Monate einschließlich des Nebenjahres
Niedrigrangige Approximation von Bildern durch HOSVD und HOOI
Der Header ist falsch ausgerichtet mit read_csv () und read_table () von Pandas
Paralleles Lernen von Deep Learning durch Keras und Kubernetes
Grundlegende Bedienung von Python Pandas Series und Dataframe (1)
[Wissenschaftlich-technische Berechnung nach Python] Numerische Lösung von 1-dimensionalen und 2-dimensionalen Wellengleichungen nach der FTCS-Methode (explizite Methode), doppelt gekrümmte partielle Differentialgleichungen
[Wissenschaftlich-technische Berechnung mit Python] Zeichnen, Visualisieren, Matplotlib von 2D-Konturlinien (Farbkonturen) usw.
Nach Pandas sortieren
Numerische Berechnung von kompressiblem Fluid nach der Methode des endlichen Volumens
Berechnung der Standardabweichung und des Korrelationskoeffizienten in Python
Vorschlag zur Sprachkonvertierung und zum Morphing von mehreren Sprechern durch RelGAN-VM
[Wissenschaftlich-technische Berechnung mit Python] Logistisches Diagramm, Visualisierung, Matplotlib
[Python] Berechnung der Differenz von Datum und Zeit in Monaten und Jahren
Berechnung der Homographiematrix nach der Methode der kleinsten Quadrate (DLT-Methode)
[Wissenschaftlich-technische Berechnung mit Python] Polarkoordinatendiagramm, Visualisierung, Matplotlib
Versuchen Sie, Bitcoin-Kerzendiagramme und technische Indikatoren in Python zu zeichnen
Implementierung des DB-Administratorbildschirms durch Flask-Admin und Flask-Login
Visualisierung von Daten anhand einer erklärenden Variablen und einer objektiven Variablen
[Python] Arten statistischer Werte (Features) und Berechnungsmethoden
[Wissenschaftlich-technische Berechnung mit Python] Numerische Lösung gewöhnlicher Differentialgleichungen erster Ordnung, Anfangswertproblem, numerische Berechnung
[Wissenschaftlich-technische Berechnung mit Python] Numerische Lösung der gewöhnlichen Differentialgleichung zweiter Ordnung, Anfangswertproblem, numerische Berechnung
[Wissenschaftlich-technische Berechnung mit Python] Liste der Matrizen, die in Hinpan in der numerischen linearen Algebra vorkommen
[Wissenschaftlich-technische Berechnung durch Python] Liste der Verwendung von (speziellen) Funktionen, die in der Physik unter Verwendung von scipy verwendet werden
[Wissenschaftlich-technische Berechnung von Python] Wellen "Stöhnen" und Gruppengeschwindigkeit, Wellenüberlagerung, Visualisierung, Physik der High School
[Wissenschaftlich-technische Berechnung nach Python] Numerische Lösung des Problems des eindimensionalen harmonischen Oszillators nach der Speed-Berle-Methode
[Wissenschaftlich-technische Berechnung nach Python] Numerische Lösung des Eigenwertproblems der Matrix durch Potenzmultiplikation, numerische lineare Algebra