[PYTHON] Prognostizieren Sie die Aktienkurse durch Big-Data-Analyse aus früheren Daten

Heute, zum ersten Mal seit 15 Jahren, hat sich der Nikkei-Durchschnitt vorübergehend auf das Niveau von 19.000 Yen erholt (http://jp.reuters.com/article/topNews/idJPKBN0M80QN20150312), und es wird erwartet, dass er bis Ende Juni 20.000 Yen erreichen wird. Es gibt Stimmen, aber in der Zwischenzeit geht es darum, Aktien durch Big-Data-Analyse (Lachen) zu analysieren.

Effizienzmarkthypothese

In der Finanzwelt gibt es eine effiziente Markthypothese, und es gibt eine Theorie, dass es unmöglich ist, mit Informationen weiterhin eine bessere Leistung als andere zu erzielen. Ich glaube nicht, dass etwas mehr missverstanden oder bequem interpretiert wird.

Sie sollten diesen Bereich um Efficient Market Hypothesis Paradox lesen.

Denken Sie normal, zum Beispiel, warum Händler und Fondsmanager der Wertpapierbranche ihre Jobs im aktiven Dienst behalten können, warum jeder Buffett nachahmt und nicht jeder reich wird usw. Es scheint verständlich zu sein.

Während jeder den Jahresabschluss betrachtet und technische Analysen durchführt, ist es möglich, Aktien und Wertpapiere zu finden, die billiger als der ursprüngliche Preis sind, und sie zu einem höheren Preis als dem ursprünglichen Preis zu verkaufen. Ist es? Das ist sehr schwierig, weil jeder verzweifelt ist. Das heißt aber nicht, dass Sie sich nicht mit technischen Indikatoren befassen müssen.

Dies ist im Extremfall eine allgemeine Geschichte, die im Geschäftsleben funktioniert und versucht, sich durch etwas zu differenzieren, das andere Konkurrenzunternehmen nicht als Stärke haben (Erschließung neuer Märkte), und nach und nach werden alle Unternehmen das Gleiche tun. Es gibt etwas, das zu der Geschichte führt, dass der Wettbewerb geboren oder verschärft wird (Ware) und dass Preisverfall und Erschöpfung am Ende des verschärften Wettbewerbs warten (Roter Ozean), also denke ich, dass dies verallgemeinert werden kann.

Mit anderen Worten, der Grund für die Analyse von Daten besteht darin, Materialien zu finden und zu verwenden, um Rivalen zu differenzieren und gegen sie zu gewinnen.

Erfassung der zu analysierenden Daten

Es ist lange her, dass das Wort Big Data zu einem Modewort wurde, aber jetzt, da es Websites wie Yahoo! Finance gibt, ist es einfach, frühere Aktienkursdaten zu sammeln. Darüber hinaus hat sich die Leistung von Computern verbessert, freie statistische Sprachen (R, Python usw.) können von jedermann frei verwendet werden, und Kenntnisse wie Statistik und maschinelles Lernen werden im Internet überflutet, sodass frühere Daten verwendet werden können. Andererseits wird die Schwelle immer niedriger und jeder kann statistische Analysen durchführen, um die Tendenz herauszufinden.

Tatsächlich untersuchen immer mehr aktive Fondsmanager und Analysten Statistiken aus Aktiendaten der letzten 15 Jahre, um beispielsweise herauszufinden, welche Situation in welcher Situation wahrscheinlich ist. Es kommt. In einer solchen Zeit keine historischen Daten zu untersuchen, unterscheidet uns von unseren Rivalen.

Technische Indikatoren und Statistiken sind jedoch nicht absolut. Technische Indikatoren klären das Ziel nur numerisch, und der Mensch hat keine andere Wahl, als über den Kausalzusammenhang zwischen ihnen nachzudenken. Ich denke, diese Geschichte ist der Geschichte in der Statistik gemeinsam, dass in der realen Welt nicht immer klar ist, was die Ursache und was das Ergebnis ist.

Daten zu Aktienkursen in Japan mit Ruby abrufen Ich habe die Geschichte bereits geschrieben, aber da die Analyse mit Python durchgeführt wird, sowohl mit Python als auch mit Ruby Machen wir es allgemein, damit Daten im gleichen Format erfasst werden.

Der Beispielcode zum Abrufen des Aktienkurses ist unter [hier] verfügbar (https://github.com/ynakayama/sandbox/blob/master/python/pandas/jpstock.py). Wenn Sie dies mit dem Aktiencode als erstem Argument und dem Datum (2015-01-01 usw.) als zweitem Argument ausführen, wird der Aktienkursdatenrahmen als CSV-Datei im folgenden Format gespeichert.


,Open,High,Low,Close,Volume,Adj Close
2015-03-11,2300.0,2329.0,2289.0,2299.0,106100.0,2299.0

Das wichtigste davon ist Adj Close ([Angepasster Schlusskurs](http://www.yahoo-help.jp/app/answers/detail/p/546/a_id/45316/~/%E8%AA%BF%E6%] 95% B4% E5% BE% 8C% E7% B5% 82% E5% 80% A4% E3% 81% A8% E3% 81% AF)). Da die Sicherstellung der Zeitreihenkontinuität des Schlusskurses für die Zeitreihendatenanalyse von wesentlicher Bedeutung ist, ist sie ein wesentlicher und wichtiger Datenpunkt bei der Bestandsanalyse, sodass gesagt wird, dass ein Tool, das den angepassten Schlusskurs nicht ausgibt, nicht verwendet werden kann.

Hauptindikatoren für die technische Analyse und Berechnung durch Pandas

Bevor wir eine Aktienanalyse durchführen, halten wir zunächst die grundlegenden technischen Indikatoren gedrückt.

Es gibt viele Websites, die dies erklären. Wenn Sie sich jedoch subjektiv entscheiden, ist die Website von Kabu.com Securities leicht zu verstehen.

Teil 1 Systematische Erklärung vieler technischer Indikatoren http://kabu.com/investment/guide/technical/01.html

Grob gesagt gibt es "trendbasierte Indikatoren" zum Erfassen von Trends und "oszillatorbasierte Indikatoren" zum Erkennen von Verhaltensweisen, die sich von den üblichen unterscheiden. Auf welche Person Sie sich beziehen, hängt von der Person ab. Sie wird angezeigt, wenn Sie die Werkzeuge auf der Straße verwenden. Es ist jedoch eine gute Idee, welche Zahl auf welcher Basis abgeleitet wird (= Formel). Es ist besser, es einzulegen. Wenn Sie irgendwelche Zweifel haben, müssen Sie bereit sein, selbst zu berechnen und zu überprüfen.

Kerzenfuß und gleitende Durchschnittslinie

Ich schrieb über die repräsentativsten Kerzenhalter und gleitenden Durchschnitte von Trendindikatoren früher als Lounge-Fußdiagramm und Diagramm der gleitenden Durchschnittslinie. Zeichnen wir die Bestandsinformationen von NTT Data, einem ähnlichen Unternehmen wie wir.

stock_9613.png

Dieses Mal habe ich den gleitenden Durchschnitt der exponentiellen Glättung in Einheiten von 5, 25, 75 Tagen aufgetragen.

RSI(Relative Strength Index)

Um Änderungen in Trends zu erkennen, werden wir als nächstes den repräsentativsten RSI unter den oszillatorbasierten Indikatoren suchen. Die Berechnungsmethode wird im Link erklärt, daher werde ich sie weglassen.

def calc_rsi(price, n=14):
    gain = (price - price.shift(1)).fillna(0)

    def rsiCalc(p):
        avgGain = p[p > 0].sum() / n
        avgLoss = -p[p < 0].sum() / n
        rs = avgGain / avgLoss
        return 100 - 100 / (1 + rs)

    return pd.rolling_apply(gain, n, rsiCalc)

rsi_9613.png

Es sieht aus wie das. Dieser Indikator wird allgemein als über 70 überkauft und unter 30 als überverkauft angesehen. Es ist einfacher, diese Indikatoren zusammen mit dem grundlegenden Candlestick-Diagramm anzuzeigen, z. B. Verwenden Sie Unterdiagramme, um zwei obere und untere Ebenen zu erstellen.

Finden Sie die Bewegungskorrelation zwischen der Kursbewegung einer Aktie und dem durchschnittlichen Aktienkurs von Nikkei

Bisher habe ich nach sehr repräsentativen technischen Indikatoren gesucht. Wenn Sie diese nur berechnen und anzeigen möchten, können Sie auf einfache Weise viele nützliche Aktiensoftware usw. auf der Straße installieren und verwenden.

Wie oben erwähnt, ist die Perspektive der Analyse des Ziels aus verschiedenen Blickwinkeln aus einer Perspektive wichtig, die viele konkurrierende Investoren nicht haben.

Zum Beispiel ist der Nikkei-Durchschnitt heute um 267 Yen gestiegen, aber nicht alle Aktien korrelieren stark mit dem Nikkei-Durchschnitt. Daher fragen Sie sich möglicherweise, inwieweit die Aktie, an der Sie interessiert sind, mit dem Nikkei-Durchschnitt verknüpft ist. Um dies zu untersuchen, berechnen wir die Bewegungskorrelation zwischen der Zu- und Abnahmerate jeder Aktie und dem Nikkei-Durchschnitt.

def rolling_corr_with_N225(stock, window=5):
    d1 = pd.read_csv("".join(["stock_", stock, ".csv"]), index_col=0, parse_dates=True)
    d2 = pd.read_csv("stock_N225.csv", index_col=0, parse_dates=True)
    s1 = d1.asfreq('B')['Adj Close'].pct_change().dropna()
    s2 = d2.asfreq('B')['Adj Close'].pct_change().dropna()
    rolling_corr = pd.rolling_corr(s1, s2, window).dropna()

    return rolling_corr

Lassen Sie uns zunächst die Bewegungskorrelation zwischen dem Aktienkurs von GungHo, von dem auch bekannt ist, dass er in sozialen Spielen große Fortschritte gemacht hat, und dem Nikkei-Durchschnitt finden und visualisieren.

stock_3765.png

corr_3765.png

Je näher es an 1 liegt, desto korrelierter ist es, aber wie Sie sehen können, haben die Social-Game-Marken keine sehr hohe Korrelation mit dem Nikkei-Durchschnitt.

Versuchen Sie es andererseits bei NTT-Daten genauso.

corr_9613.png

Ich sehe, dies scheint eine ziemlich hohe Korrelation zu haben.

Ich konnte die Eigenschaften jeder Marke ein wenig analysieren.

Beispiel für eine Prognose der Aktienkursschwankungen durch Big-Data-Analyse

Als Fallstudie möchte ich hier die Vorhersagen und Ergebnisse eines Analysten veröffentlichen. Dies ist ein Beispiel für Sumitomo Dainippon Pharma (4506) am Montag, den 9. März.

[Dainippon Sumitomo Pharmaceutical: Diagrammform mit einem Gesamtpreisverfall von 5149,70% 4.057-mal in 15 Jahren](http://info.finance.yahoo.co.jp/kabuyoso/article/detail/20150309-00020455-minkabuy-stocks- 5078? Highlight =% E5% A4% A7% E6% 97% A5% E6% 9C% AC% E4% BD% 8F% E5% 8F% 8B)

Am Freitag, dem 6. März, dem vergangenen Wochenende, stieg der Aktienkurs an einem Tag um 12,49% und sprang auf den höchsten Rang der Steigerungsrate. An diesem Tag erhöhte Nomura Securities das Kursziel mit der Anlageentscheidung dieser Aktie als dem höchsten.

Dieser Analyst scheint gut darin zu sein, Bestandsdaten der letzten 10 Jahre mit einer statistischen Methode zu analysieren, aber wie Sie in dem oben verlinkten Artikel sehen können, sind ähnliche Diagramme 2.517 von 4.057 Mal. Der Preis fiel ebenfalls und die Wahrscheinlichkeit, dass der Aktienkurs während des Tages fiel, betrug 62,04%, daher hielt ich es für gefährlich.

(Gepostet auf Papier um 8:44, bevor es am 9. März näher rückt)

Infolgedessen erreichte der Anfangspreis am 9. März plötzlich ein Hoch von 1.600 Yen, und dann fiel der Schlusskurs auf 1.488 Yen, sodass die Prognose eine gute Antwort war.

stock_4506.png

Die Analyse von Trends aus früheren Daten auf diese Weise und die Vorhersage und Schätzung sofortiger Preisbewegungen kann in gewissem Sinne als Big-Data-Analyse bezeichnet werden.

Beiseite

In der Wertpapierbranche führte der vom damaligen Premierminister Hashimoto 1996 befürwortete "japanische Urknall" und 1999 die Deregulierung zur vollständigen Liberalisierung der Börsenmaklergebühren. Insbesondere mit dem Anstieg der Online-Wertpapiere mit dieser vollständigen Liberalisierung sind die Gebühren auf das niedrigste Niveau unter den Industrieländern gefallen, und viele Anleger, einschließlich Privatpersonen, sind mittlerweile im Online-Handel etabliert.

Computerressourcen sind auch billiger geworden, und statistische Analysesoftware, die früher teuer war, kann jetzt durch Programmiersprachen ersetzt werden, die jeder kostenlos verwenden kann, wie R und Python.

Es wird oft gesagt, dass Sie Ihren eigenen Anlagestil in der Vermögensverwaltung haben, aber es gibt eine Säule, an die Sie denken können, wenn Sie sich nicht sicher sind, wie Ihr Anlagestil lautet. In einem solchen Fall ist eine technische Analyse sehr nützlich, um ein ruhiges Urteil zu fällen, ohne vor Ort hin und her zu gehen. Sie können auch unerwartete Fehler vermeiden, indem Sie emotionales Urteilsvermögen eliminieren und die Zahlen ruhig betrachten.

Natürlich ist die Datenanalyse kein Wundermittel, das jegliche Kontingenz verhindert, aber es gibt keinen Grund, Daten in einer solchen Ära nicht zu analysieren. Und ich denke, dass es hier nicht nur um Aktienanalysen geht, sondern auch um die Formulierung von Managementstrategien und dasselbe für verschiedene Unternehmen.

Recommended Posts

Prognostizieren Sie die Aktienkurse durch Big-Data-Analyse aus früheren Daten
Erste Satellitendatenanalyse von Tellus
Bereiten Sie eine Hochgeschwindigkeitsanalyseumgebung vor, indem Sie in der Datenanalyseumgebung auf MySQL klicken
Vorhersage kurzlebiger Arbeiten von Weekly Shonen Jump durch maschinelles Lernen (Teil 1: Datenanalyse)
Erfassung von Zeitreihendaten (täglich) von Aktienkursen
[Python] Fluss vom Web-Scraping zur Datenanalyse
Emotionale Analyse umfangreicher Tweet-Daten durch NLTK
Geschichte rund um die Datenanalyse durch maschinelles Lernen
Ich habe versucht, Pferderennen vorherzusagen, indem ich alles von der Datenerfassung bis zum tiefen Lernen getan habe