Systemhandel ab Python 3: Investition und Risiko

Dieser Artikel richtet sich an Anfänger von (Aktien-) Anlagen.

Wenn Sie wenig Anlageerfahrung haben

Aus diesem Grund tendieren Sie dazu, Aktien sofort zu verkaufen, wenn Sie Aktien kaufen und der Preis sinkt. Und aufgrund dieses Fehlers wächst der Verlust immer wieder. Wenn Sie wenig Erfahrung haben, fällt der Aktienkurs zu stark, unabhängig davon, wie viele Aktien Sie auswählen und wann Sie kaufen und verkaufen. Manchmal funktioniert es von Anfang an, aber es ist einfach ein Glücksfall und hält nicht lange an.

Daher ist es wichtig, Aktienkursdaten zu analysieren. Die Ergebnisse der Analyse, die auf den Daten verschiedener Aktienmärkte der Welt basiert, sind einfach.

Niemand ist begeistert von dem Kursverfall der von ihnen gekauften Aktien. Es ist schwer für jemanden, das zu tun. Selbst wenn Sie Geld verlieren, tendieren Sie daher dazu, es zu verkaufen. Wer diese Erfahrung hat, muss überdenken, wie er mit Risiken umgeht. Reduzieren wir das Risiko. Sie sollten in Aktien mit geringeren Kursschwankungen investieren. Wenn Sie immer noch dieselbe Erfahrung wiederholen, ist der Kauf von Aktien möglicherweise nicht angemessen. Es kann besser sein, in Anleihen mit geringeren Preisschwankungen zu investieren. Natürlich werden auch die Anleihen fallen, so dass Sie möglicherweise ähnliche Erfahrungen machen. In solchen Fällen kann die Auswahl von Anleihen mit geringeren Preisschwankungen oder Bareinlagen angemessener sein. Diese Tendenz des Menschen kann nicht durch den Erwerb von Erfahrung und Wissen überwunden werden. Es beginnt damit, sich selbst zu kennen.

Wenn der Kurs einer Aktie fällt und Sie ihn auch dann halten, wenn Sie begeistert sind, müssen Sie sich die Art der Aktie genauer ansehen. Weil das Ihre Risikotoleranz ist. Eine der damaligen Richtlinien ist die Rentabilität und Preisvolatilität. Die Rentabilität ist ein Maß dafür, wie stark die Aktienkurse in der Vergangenheit gestiegen sind. Die Preisvolatilität ist ein Maß dafür, wie stark der Aktienkurs schwankt.

Lassen Sie uns tatsächlich lernen, wie man Daten analysiert. Python ist nützlich für die Datenanalyse. Wir empfehlen, dass Sie das Jupyter-Notebook zu diesem Zeitpunkt installieren. Dieser Artikel ist in Jupyter Notizbuch geschrieben. Außerdem wird der Code des Programms unter der Annahme eines Jupyter-Notizbuchs geschrieben. Sie benötigen auch einen Pandas-Datenleser. Informationen zur Installation des Jupyter-Notebooks finden Sie unter Systemhandel ab Python3: Installation des Jupyter-Notebooks. Hier finden Sie auch Anweisungen zur Installation von pandas-datareader.

Informationen zur Verwendung von pandas-datareader finden Sie unter Ich habe den Aktienkurs von Yahoo Finance US heruntergeladen.

Anlageziel

Die Aktienauswahl ist für Anfänger sehr schwierig. Manchmal geht die Firma, die Sie gekauft haben, bankrott. Schauen wir uns also zunächst den Aktienindex an, der aus verschiedenen Aktien besteht. Bei der Analyse langfristiger Aktienkurse ist es wichtig, den Logarithmus des Aktienkurses zu berücksichtigen. Weitere Informationen finden Sie unter Systemhandel ab Python 3: Die Rolle der Logistik im Systemhandel.

ETF (Listed Investment Trust)

Bei der Anlage in einen Aktienindex sind ETFs (börsennotierte Investmentfonds), die jederzeit gekauft und verkauft werden können und eine hohe Preistransparenz aufweisen, die Grundlagen.

Dow Jones

Der ETF des durchschnittlichen Dow-Aktienkurses, dem am längsten etablierten Aktienindex der Vereinigten Staaten, ist "DIA".

%matplotlib inline 
import matplotlib.pyplot as plt #Zeichnungsbibliothek
import pandas_datareader.data as web #Daten-Download-Bibliothek
import numpy as np
import pandas as pd
import seaborn as sns
tsd = web.DataReader("dia","yahoo","1980/1/1").dropna()#jpy
np.log(tsd.loc[:,'Adj Close']).plot()

image.png

NASDAQ 100

Der ETF des Aktienindex für NASDAQ, einen aufstrebenden Aktienmarkt, der in den USA ein Wirtschaftswachstum erzielt hat, lautet "QQQ".

tsd = web.DataReader("qqq","yahoo","1980/1/1").dropna()#jpy
np.log(tsd.loc[:,'Adj Close']).plot()

image.png

S&P500 Der von der US-Pensionskasse bewertete Aktienindex lautet S & P500 und der ETF lautet "SPY".

tsd = web.DataReader("spy","yahoo","1980/1/1").dropna()#jpy
np.log(tsd.loc[:,'Adj Close']).plot()

image.png

Sie können sehen, dass sie alle auf lange Sicht steigen.

Andere ETFs

ETF=['DIA','SPY','QQQ','IBB','XLV','IWM','EEM','EFA','XLP','XLY','ITB','XLU','XLF',
     'VGT','VT','FDN','IWO','IWN','IYF','XLK','XOP','USMV'] #ETF des Aktienindex
ETF2=['BAB','GLD','VNQ','SCHH','IYR','AGG','BND','LQD','VCSH','VCIT','JNK'] #Andere ETFs als Aktienindizes

Erfassen Sie den Grad der Aufregung anhand des Verhältnisses von Risiko und Rendite

Welche Art von Bewegung macht Sie der Aktienkurs aufgeregt? Es ist wichtig, das eigene Muster zu kennen. Zu wissen, dass dies der Ausgangspunkt für Aktieninvestitionen ist. Sie können sich dieses Muster von niemand anderem beibringen lassen. Sie haben keine andere Wahl, als es selbst zu finden. Und bis Sie dieses Muster gefunden haben, sollten Sie so wenig wie möglich investieren.

Lassen Sie mich ein Werkzeug vorstellen, um dieses Muster zu finden. Das ist das Verhältnis von Risiko zu Rendite. Teilen Sie die annualisierte Rendite durch die annualisierte Standardabweichung (Volatilität). Lassen Sie uns die Bewegung nach dem Lehman-Schock sehen.

m=[]#Speichert annualisierte Durchschnittsdaten für jede Aktie
v=[]#Speichern Sie die annualisierte Standardabweichung jedes Bestands
PORT=ETF
j=0
for i in range(len(PORT)):
    tsd=web.DataReader(PORT[i], "yahoo",'1980/1/1')#Aktienkursdaten herunterladen
    tsd2=tsd.loc['2010/1/1':]#Nach dem Lehman-Schock
    tsd3=tsd.loc['1980/1/1':'2009/12/31']#Vor dem Lehman-Schock
    if len(tsd3)>1000:
        lntsd=np.log(tsd2.iloc[:,5])#Nehmen Sie den natürlichen Logarithmus der Daten
        m.append((lntsd.diff().dropna().mean()+1)**250-1)
        v.append(lntsd.diff().dropna().std()*np.sqrt(250))
        print('{0: 03d}'.format(j+1),'{0:7s}'.format(PORT[i]),'durchschnittlich{0:5.2f}'.format(m[j]),
          'Volatilität{0:5.2f}'.format(v[j]),'m/v {0:5.2f}'.format(m[j]/v[j]),
          'Die Anzahl der Daten{0:10d}'.format(len(tsd)))
        j+=1
v_m=pd.DataFrame({'v':v,'m':m})
plt.scatter(v_m.v,v_m.m,color="g")
plt.ylabel('return')
plt.xlabel('volatility')
01 DIA Durchschnitt 0.12 Volatilität 0.17 m/v  0.68 Anzahl der Daten 5710
02 SPY Durchschnitt 0.13 Volatilität 0.17 m/v  0.73 Anzahl der Daten 6966
03 QQQ Durchschnitt 0.19 Volatilität 0.20 m/v  0.97 Anzahl der Daten 5424
04 IBB Durchschnitt 0.16 Volatilität 0.24 m/v  0.65 Anzahl der Daten 4937
05 XLV Durchschnitt 0.14 Volatilität 0.17 m/v  0.80 Anzahl der Daten 5476
06 IWM Durchschnitt 0.10 Volatilität 0.22 m/v  0.43 Anzahl der Daten 5116
07 EEM Durchschnitt 0.02 Volatilität 0.23 m/v  0.09 Anzahl der Daten 4395
08 EFA Durchschnitt 0.04 Volatilität 0.19 m/v  0.20 Anzahl der Daten 4801
09 XLP-Durchschnitt 0.11 Volatilität 0.14 m/v  0.80 Anzahl der Daten 5476
10 XLY Durchschnitt 0.17 Volatilität 0.19 m/v  0.93 Anzahl der Daten 5476
11 XLU-Durchschnitt 0.10 Volatilität 0.18 m/v  0.57 Anzahl der Daten 5476
12 XLF-Durchschnitt 0.11 Volatilität 0.25 m/v  0.45 Anzahl der Daten 5476
13 VGT Durchschnitt 0.18 Volatilität 0.21 m/v  0.88 Anzahl der Daten 4194
14 IWO-Durchschnitt 0.12 Volatilität 0.23 m/v  0.53 Anzahl der Daten 5073
15 IWN-Durchschnitt 0.07 Volatilität 0.22 m/v  0.30 Anzahl der Daten 5073
16 IYF-Durchschnitt 0.09 Volatilität 0.21 m/v  0.42 Anzahl der Daten 5116
17 XLK-Durchschnitt 0.18 Volatilität 0.20 m/v  0.88 Anzahl der Daten 5476

image.png

Schauen wir uns als nächstes den Lehman-Schock an.

m2=[]#Speichert annualisierte Durchschnittsdaten für jede Aktie
v2=[]#Speichern Sie die annualisierte Standardabweichung jedes Bestands
PORT=ETF
j=0
for i in range(len(PORT)):
    tsd=web.DataReader(PORT[i], "yahoo",'1980/1/1')#Aktienkursdaten herunterladen
    tsd2=tsd.loc['1980/1/1':'2009/12/31']#Aktienkursdaten herunterladen
    if len(tsd2)>1000:
        lntsd=np.log(tsd2.iloc[:,5])#Nehmen Sie den natürlichen Logarithmus der Daten
        m2.append((lntsd.diff().dropna().mean()+1)**250-1)
        v2.append(lntsd.diff().dropna().std()*np.sqrt(250))
        print('{0: 03d}'.format(j+1),'{0:7s}'.format(PORT[i]),'durchschnittlich{0:5.2f}'.format(m2[j]),
          'Volatilität{0:5.2f}'.format(v2[j]),'m/v {0:5.2f}'.format(m2[j]/v2[j]),
          'Die Anzahl der Daten{0:10d}'.format(len(tsd2)))
        j+=1
v_m2=pd.DataFrame({'v2':v2,'m2':m2})
plt.scatter(v_m2.v2,v_m2.m2,color="g")
plt.ylabel('return')
plt.xlabel('volatility')
01 DIA Durchschnitt 0.04 Volatilität 0.21 m/v  0.21 Anzahl der Daten 3008
02 SPY Durchschnitt 0.08 Volatilität 0.20 m/v  0.38 Anzahl der Daten 4264
03 QQQ Durchschnitt-0.01 Volatilität 0.34 m/v -0.02 Anzahl der Daten 2722
04 IBB Durchschnitt-0.03 Volatilität 0.30 m/v -0.09 Anzahl der Daten 2235
05 XLV Durchschnitt 0.03 Volatilität 0.20 m/v  0.16 Anzahl der Daten 2774
06 IWM Durchschnitt 0.05 Volatilität 0.26 m/v  0.17 Anzahl der Daten 2414
07 EEM Durchschnitt 0.23 Volatilität 0.37 m/v  0.62 Anzahl der Daten 1693
08 EFA Durchschnitt 0.05 Volatilität 0.25 m/v  0.21 Anzahl der Daten 2099
09 XLP-Durchschnitt 0.02 Volatilität 0.17 m/v  0.11 Anzahl der Daten 2774
10 XLY Durchschnitt 0.02 Volatilität 0.26 m/v  0.09 Anzahl der Daten 2774
11 XLU-Durchschnitt 0.04 Volatilität 0.22 m/v  0.18 Anzahl der Daten 2774
12 XLF-Durchschnitt-0.02 Volatilität 0.36 m/v -0.06 Anzahl der Daten 2774
13 VGT Durchschnitt 0.02 Volatilität 0.24 m/v  0.11 Anzahl der Daten 1492
14 IWO-Durchschnitt-0.01 Volatilität 0.28 m/v -0.02 Anzahl der Daten 2371
15 IWN-Durchschnitt 0.08 Volatilität 0.26 m/v  0.30 Anzahl der Daten 2371
16 IYF-Durchschnitt-0.04 Volatilität 0.33 m/v -0.11 Anzahl der Daten 2414
17 XLK Durchschnitt-0.02 Volatilität 0.31 m/v -0.07 Anzahl der Daten 2774

image.png

Das Verhältnis ist nach dem Lehman-Schock tendenziell relativ höher.

Als nächstes vergleichen wir die beiden Perioden.

plt.scatter(v_m.m/v_m.v,v_m2.m2/v_m2.v2)
plt.ylabel('2009-now')
plt.xlabel('1980-2009')

image.png

Eigentlich wäre es schön, wenn wir eine gerade Linie nach rechts ziehen könnten, aber leider scheint es keine solche Beziehung zu geben. Dies liegt daran, dass der Aktienindex stark vom Zusammenbruch der Internetblase im Jahr 2000 betroffen ist. Der Zusammenbruch der Blase wird die Investitionseffizienz erheblich verringern. Es kann jedoch nicht vermieden werden. Beachten Sie, dass Aktieninvestitionen immer mit unvorhersehbaren Risiken verbunden sind.

Als nächstes analysieren wir andere ETFs als den Aktienindex. Gold, Real Estate Reet (RIET) und Anleihenindex.

m=[]#Speichert annualisierte Durchschnittsdaten für jede Aktie
v=[]#Speichern Sie die annualisierte Standardabweichung jedes Bestands
PORT=ETF2
j=0
for i in range(len(PORT)):
    tsd=web.DataReader(PORT[i], "yahoo",'1980/1/1')#Daten herunterladen
    tsd2=tsd.loc['2010/1/1':]
    tsd3=tsd.loc['1980/1/1':'2009/12/31']
    if len(tsd3)>100:
        lntsd=np.log(tsd2.iloc[:,5])#Nehmen Sie den natürlichen Logarithmus der Daten
        m.append((lntsd.diff().dropna().mean()+1)**250-1)
        v.append(lntsd.diff().dropna().std()*np.sqrt(250))
        print('{0: 03d}'.format(j+1),'{0:7s}'.format(PORT[i]),'durchschnittlich{0:5.2f}'.format(m[j]),
          'Volatilität{0:5.2f}'.format(v[j]),'m/v {0:5.2f}'.format(m[j]/v[j]),
          'Die Anzahl der Daten{0:10d}'.format(len(tsd)))
        j+=1
v_m=pd.DataFrame({'v':v,'m':m})
plt.scatter(v_m.v,v_m.m,color="g")
plt.ylabel('return')
plt.xlabel('volatility')

01 GLD Durchschnitt 0,04 Volatilität 0,16 m / v 0,28 Anzahl der Daten 3991 02 VNQ Durchschnitt 0,10 Volatilität 0,21 m / v 0,45 Anzahl der Daten 4027 03 IYR Durchschnitt 0,09 Volatilität 0,21 m / v 0,44 Anzahl der Daten 5101 04 AGG Durchschnitt 0,04 Volatilität 0,04 m / v 1,00 Anzahl der Daten 4279 05 BND Durchschnitt 0,04 Volatilität 0,04 m / v 0,95 Anzahl der Daten 3392 06 LQD Durchschnitt 0,06 Volatilität 0,07 m / v 0,85 Anzahl der Daten 4573 07 JNK Durchschnitt 0,05 Volatilität 0,09 m / v 0,61 Anzahl der Daten 3226

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/74e510f5-49da-fc6d-2838-0d6ee52a83ee.png)


Es scheint, dass die allgemeine Tendenz durch die nach rechts ansteigende Gerade erfasst werden kann. Wenn Sie ein großes Risiko eingehen, erhalten Sie eine große Rendite.

```python
 m2 = [] # Speichern Sie Daten zum annualisierten Durchschnitt jedes Aktienkurses
 v2 = [] # Speichern Sie die annualisierte Standardabweichung jedes Aktienkurses
PORT=ETF2
j=0
for i in range(len(PORT)):
 tsd = web.DataReader (PORT [i], "yahoo", '1980/1/1') # Daten herunterladen
    tsd2=tsd.loc['1980/1/1':'2009/12/31']
    if len(tsd2)>100:
 lntsd = np.log (tsd2.iloc [:, 5]) # Nehmen Sie den natürlichen Logarithmus der Daten
        m2.append((lntsd.diff().dropna().mean()+1)**250-1)
        v2.append(lntsd.diff().dropna().std()*np.sqrt(250))
 print ('{0: 03d}'. Format (j + 1), '{0: 7s}'. Format (PORT [i]), 'Durchschnitt {0: 5.2f}'. Format (m2 [j]) ,
 'Volativität {0: 5.2f}'. Format (v2 [j]), 'm / v {0: 5.2f}'. Format (m2 [j] / v2 [j]),
 'Anzahl der Daten {0: 10d}'. Format (len (tsd2)))
        j+=1
v_m2=pd.DataFrame({'v2':v2,'m2':m2})
plt.scatter(v_m2.v2,v_m2.m2,color="g")
plt.ylabel('return')
plt.xlabel('volatility')
 01 GLD Durchschnitt 0,19 Volatilität 0,22 m / v 0,84 Anzahl der Daten 1289
 02 VNQ Durchschnitt 0,04 Volatilität 0,45 m / v 0,08 Anzahl der Daten 1325
 03 IYR Durchschnitt 0,08 Volatilität 0,34 m / v 0,24 Anzahl der Daten 2399
 04 AGG Durchschnitt 0,04 Volatilität 0,06 m / v 0,72 Anzahl der Daten 1577
 05 BND Durchschnitt 0,06 Volatilität 0,07 m / v 0,84 Anzahl der Daten 690
 06 LQD Durchschnitt 0,06 Volatilität 0,10 m / v 0,62 Anzahl der Daten 1871
 07 JNK Durchschnitt 0,02 Volatilität 0,25 m / v 0,08 Anzahl der Daten 524

image.png

Es hat die gleiche Tendenz wie nach dem Lehman-Schock.

Als nächstes vergleichen wir die beiden Perioden.

plt.scatter(v_m.m/v_m.v,v_m2.m2/v_m2.v2)
plt.ylabel('2009-now')
plt.xlabel('1980-2009')

image.png

In vielen Fällen scheint die Tendenz zu höheren Renditen bei höheren Risiken vor und nach dem Lehman-Schock gleich zu sein. Daraus können wir ersehen, dass das Muster der Preisbewegungen im Anleihenmanagement leichter vorherzusagen ist als im Aktienmanagement.

Dann die Notiz am Anfang

-Langfristige Investitionen sind grundlegend -Investieren Sie in einen langfristig steigenden Markt -Gehen Sie Risiken in dem Maße ein, in dem Sie sich auf dem Down Market nicht aufregen -Verkaufen Sie nicht, bis Sie einen Gewinn erzielen -Wenn Sie der Meinung sind, dass der Aktienmarkt für Sie riskant ist, investieren Sie in den Rentenmarkt, und wenn Sie immer noch der Meinung sind, dass er riskant ist, Bankeinlagen

Es scheint, dass wir zu dem Schluss kommen können. Diese Schlussfolgerung ist jedoch für jede Person unterschiedlich. Holen Sie sich also Ihre eigene.

Recommended Posts

Systemhandel ab Python 3: Investition und Risiko
Systemhandel ab Python3: langfristige Investition
"Systemhandel beginnt mit Python3" Lesememo
Automatisches FX-Handelssystem mit Python und genetischem Algorithmus Teil 1
Python ab Windows 7
GRPC beginnend mit Python
Systemhandel ab Python 3: Hedge Fund und CTA
Programmieren mit Python und Tkinter
Ver- und Entschlüsselung mit Python
Python und Hardware-Verwenden von RS232C mit Python-
Verbessertes Lernen ab Python
Python mit Pyenv und Venv
Präsentationsunterstützungssystem mit Python3
Python beginnend mit Hallo Welt!
[Einführung in den Systemhandel] Ich habe einen Stochastic Oscillator mit Python gezeichnet und damit gespielt ♬
Ich habe die Strategie des Aktiensystemhandels mit Python evaluiert.
Analysieren Sie Aktien mit Python und suchen Sie nach günstigen Handelsphasen
Systemhandel ab Python3: Holen Sie sich den neuesten Programmcode
Kommunizieren Sie mit FX-5204PS mit Python und PyUSB
Leuchtendes Leben mit Python und OpenCV
Roboter läuft mit Arduino und Python
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
Neuronales Netzwerk mit OpenCV 3 und Python 3
AM-Modulation und Demodulation mit Python
Scraping mit Node, Ruby und Python
Scraping mit Python, Selen und Chromedriver
Kratzen mit Python und schöner Suppe
JSON-Codierung und -Decodierung mit Python
Hadoop-Einführung und MapReduce mit Python
[GUI in Python] PyQt5-Drag & Drop-
Erstellen Sie ein Empfehlungssystem mit Python
Lesen und Schreiben von NetCDF mit Python
Ich habe mit PyQt5 und Python3 gespielt
Lesen und Schreiben von CSV mit Python
Mehrfachintegration mit Python und Sympy
Datenanalyse beginnend mit Python (Datenvisualisierung 1)
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Datenanalyse beginnend mit Python (Datenvisualisierung 2)
Sugoroku-Spiel und Zusatzspiel mit Python
FM-Modulation und Demodulation mit Python
Kommunizieren Sie mit gRPC zwischen Elixir und Python
Datenpipeline-Aufbau mit Python und Luigi
Berechnen Sie das Standardgewicht und zeigen Sie es mit Python an
Überwachen Sie Mojo-Ausfälle mit Python und Skype
FM-Modulation und Demodulation mit Python Part 3
[Automatisierung] Bearbeiten Sie Maus und Tastatur mit Python
Passwortlose Authentifizierung mit RDS und IAM (Python)
Python-Installation und Paketverwaltung mit pip
Verwenden von Python und MeCab mit Azure Databricks
Bilder mit Pupil, Python und OpenCV aufnehmen
Fraktal zum Erstellen und Spielen mit Python
Ein Memo mit Python2.7 und Python3 in CentOS
Geschäftseffizienz von Grund auf mit Python
Verwenden Sie PIL oder Pillow mit Cygwin Python
Erstellen und entschlüsseln Sie Caesar-Code mit Python
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Lesen und Schreiben von JSON-Dateien mit Python
Ich habe Numba mit Python3.5 installiert und verwendet
Abrufen und Konvertieren der aktuellen Zeit in der lokalen Systemzeitzone mit Python