[PYTHON] Ist das ein Systemhandel?

Synopse bis zum letzten Mal

Ich versuche, die Geschichte in diesem Artikel selbst zu vervollständigen, aber wenn Sie den folgenden Artikel lesen, wird der Ablauf der Geschichte klarer.

Einführung

Dieses Mal werde ich versuchen, vorherzusagen, ob die Preisspanne (Discount-Preis-Schlusskurs) des nächsten Tages von NIKKEI 225 durch eine andere Methode als maschinelles Lernen positiv oder negativ ist. Der Punkt, auf den Sie achten sollten, ist, dass es beim Betrachten des Diagramms mit Kerzen häufig vorkommt, dass die positive Linie eine Weile anhält und die negative Linie anhält. "Drei Tage hintereinander" oder "vier Tage hintereinander".

Wenn heute eine positive Linie ist und die Wahrscheinlichkeit, morgen eine positive Linie zu werden, sich von der Wahrscheinlichkeit unterscheidet, eine negative Linie zu werden, erhöht sich die Wahrscheinlichkeit, die Vorhersage zu treffen, wenn die größere Wahrscheinlichkeit als vorhergesagter Wert verwendet wird.

Yin Yang Bigram

Lassen Sie uns sofort das Verhältnis von NIKKEI 225 zum kontinuierlichen Hinzufügen positiver oder negativer Linien herausfinden.

Löschen Sie die Aktienkursdaten von NIKKEI225 mit csv,

Date,Open,High,Low,Close,Volume
2017-10-31,21896.38,22020.38,21840.07,22011.61,1055801728.0
2017-10-30,22047.95,22086.88,21921.24,22011.67,1397960064.0
2017-10-27,21903.27,22016.5,21815.72,22008.45,1241389952.0
2017-10-26,21698.95,21793.62,21688.56,21739.78,851784320.0
2017-10-25,21900.13,21921.36,21648.35,21707.62,1258339712.0
    ...

Verwenden Sie den folgenden Code, um das Verhältnis von Yang-Yang, Yin-Yang, Yang-Yin und Yin-Yin herauszufinden.

import pandas as pd
import numpy as np

nikkei_225 = pd.read_csv('NIKKEI225.csv').set_index('Date').sort_index()
open_list = nikkei_225['Open'].tolist()
close_list = nikkei_225['Close'].tolist()
diff_list = np.array(close_list) - np.array(open_list)

posiposi = 0
posinega = 0
negaposi = 0
neganega = 0
for i in range(len(diff_list)-1):
    if diff_list[i]>=0 and diff_list[i+1]>=0:
        posiposi = posiposi + 1
    elif diff_list[i]>=0 and diff_list[i+1]<0:
        posinega = posinega + 1
    elif diff_list[i]<0 and diff_list[i+1]>=0:
        negaposi = negaposi + 1
    else:
        neganega = neganega + 1
print(posiposi, posinega, negaposi, neganega)        

2014-10-30_2017-10-31 Mit 735 Aktien Yangyang = 170 Fälle Yang Yin = 195 Fälle Yinyang = 195 Fälle Schatten = 175 Fälle Getroffen.

Als das,

Das Ergebnis war das. Ich dachte, es gäbe viel Sonnenschein und Schatten, aber ich entfernte es. Aber es ist asymmetrisch, also werde ich es versuchen.

Kauf- und Verkaufsprogramm

Wiederholen Sie dies. Kurz gesagt, wenn es heute eine positive Linie ist, ist es morgen eine negative Linie, und wenn es heute eine negative Linie ist, ist es morgen eine positive Linie. Ist das ein Systemhandel?

Gewinn- und Verlustsimulation (Backtest)

Vom 2017-11-01 bis zum 2020-07-28 habe ich versucht, den Fall zu simulieren, dass Kauf und Verkauf mit dem oben genannten Kauf- und Verkaufsprogramm jedes Mal um 10.000.000 Yen wiederholt werden. Die Handelsgebühr wurde für eine Hin- und Rückfahrt auf 2026 Yen festgesetzt. Der Code ist unten.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

nikkei225 = pd.read_csv('NIKKEI225.csv').set_index('Date').sort_index()
n1357 = pd.read_csv('1357.csv').set_index('Date').sort_index()
n1358 = pd.read_csv('1358.csv').set_index('Date').sort_index()

nikkei225_open_list = nikkei225['Open'].tolist()
nikkei225_close_list = nikkei225['Close'].tolist()
nikkei225_diff_list = np.array(nikkei225_close_list) - np.array(nikkei225_open_list)

n1357_open_list = n1357['Open'].tolist()
n1357_close_list = n1357['Close'].tolist()
n1357_diff_list = np.array(n1357_close_list) - np.array(n1357_open_list)

n1358_open_list = n1358['Open'].tolist()
n1358_close_list = n1358['Close'].tolist()
n1358_diff_list = np.array(n1358_close_list) - np.array(n1358_open_list)

x = []
y = []
total_gain = 0
for i in range(len(nikkei225_diff_list)-1):
 if nikkei225_diff_list [i]> = 0: # Der heutige Nikkei225 ist eine positive Linie
 Kaufen Sie # 1357 für 10 Millionen Yen und verkaufen Sie es zum Schluss
        n = int(10000000/n1357_close_list[i])
        daily_gain = n1357_diff_list[i+1]*n - 2026
 sonst: # Der heutige Nikkei225 ist versteckt
 Kaufen Sie # 1358 für 10 Millionen Yen und verkaufen Sie es zum Schluss
        n = int(10000000/n1358_close_list[i])
        daily_gain = n1358_diff_list[i+1]*n - 2026
    total_gain += daily_gain
    x.append(i)
    y.append(total_gain)

# Handlung
plt.plot(x, y, label="total_gain")
plt.show()
print('total_gain=', total_gain)

Ergebnisse der Gewinn- und Verlustsimulation

Ist das nicht gut?

result.png

total_gain= 5633247

In den 33 Monaten vom 2017-11-01 bis zum 2020-07-28 wurden die ursprünglichen 10.000.000 Yen zu 15.633.247 Yen, sodass die jährliche Rate auf 20,48% berechnet wird. Ist es wahr? Ich hätte gerne eine Nachuntersuchung für alle.

Das kumulative Gewinn- / Verlust-Diagramm zeigt eine leichte Zunahme und Abnahme, aber es steigt auf lange Sicht und die Form ist nicht schlecht.

Berücksichtigung der Ergebnisse

Also werde ich den Studienzeitraum und den Evaluierungszeitraum trennen. Da es sich nicht um ein großes Lernen handelt, ist es nicht erforderlich, den Lernzeitraum und den Bewertungszeitraum zu trennen. Zeichnen wir daher das kumulierte Gewinn- und Verlustdiagramm für den gesamten Zeitraum vom 30.10.2014 bis zum 28.07.2020.

result2.png

total_gain= 969052

Die kumulierten Gewinne und Verluste sind für den gesamten Zeitraum positiv, aber die Grafik zeigt, dass sich der Verlust in den ersten 700 Tagen vergrößert und in den letzten 700 Tagen erholt hat. Wie siehst du das? Die letzten 700 Tage sollten als Zufall angesehen werden.

Zusammenfassung

Fortsetzung (vielleicht)

Recommended Posts

Ist das ein Systemhandel?
Ist diese Zeichenfolge ein Bruchteil?
Was ist ein Systemaufruf?
Dies ist eine Webiopi-Frage
Über den 02. Februar 2020 * Dies ist ein Python-Artikel.
Was ist eine Distribution?
Was ist ein Terminal?
Was ist ein Hacker?
Was ist ein Zeiger?
Dies ist ein Beispiel für eine Funktionsanwendung im Datenrahmen.
Was ist ein Entscheidungsbaum?
Was ist ein Kontextwechsel?
Was ist ein Superuser?
[Definition] Was ist ein Framework?
Was ist eine Rückruffunktion?
Das Bild ist Namekuji
Ist Go-Template perfekt zum Tuling? Ich habe ein Brainf * ck-Verarbeitungssystem gemacht
[Python] Was ist eine Zip-Funktion?
[Python] Was ist eine with-Anweisung?
Gibt es ein besonderes in scipy? ??
Notizen, wenn gcloud kaputt ist
Was ist ein lexikalischer / dynamischer Bereich?
Was ist das Convolutional Neural Network?
Was für ein Kernel ist dieser Kernel?
Was ist das X Window System?
Erstellen Sie ein Empfehlungssystem mit Python
Ist "destruktive Methode" ein Ruby-Begriff?