Systemhandel ab Python3: langfristige Investition

Der Inhalt dieses Artikels ist eine kurze Zusammenfassung des Inhalts von "Pann Rolling beginnend mit Python 3".

Am 3. November "3. US Stock Online Study Group (Wiederholung vom 21. September)", "4. US Stock Online Study Group (Wiederholung)" Wiederholen Sie 9/21) ”.

Grundlagen langfristiger Investitionen

In diesem Artikel lernen Sie die grundlegendsten Datenanalysemethoden für langfristige Investitionen kennen.

Analyse der Merkmale von Preisbewegungen mit langfristig verfügbaren Daten

Denken Sie, dass es besser ist, die neuesten Daten für eine ordnungsgemäße Analyse zu verwenden? Ich höre manchmal, dass der Aktienmarkt etwas Lebendiges ist und sich seine Natur ändert, daher sollte er mit kurzen Daten analysiert werden. Aber das ist ein Fehler. Mit dieser Art von Analysemethode wird das erwartete Analyseergebnis sofort veröffentlicht. Die für die Daten verwendeten Daten waren noch nie so lang. Es ist nie zu lang. Manchmal ist es notwendig, Pseudodaten mit der Monte-Carlo-Methode zu erstellen.

Die Marktgröße verstehen

Die Basis für langfristige Investitionen ist es, die andere Partei gut zu kennen. Es beginnt mit dem Vergleich mit anderen. Stellen Sie sicher, dass Sie die genaue Größe des Marktes verstehen, wenn Sie eine Investition tätigen.

image.png

image.png

Hast du ein Gefühl für Skalierbarkeit bekommen? Zumindest der US-Finanzmarkt ist größer als Japan. Und während Japans Markt für Staatsanleihen größer ist als der Aktienmarkt, ist dies in den USA nicht der Fall. Welcher Aktienmarkt wird mit größerer Wahrscheinlichkeit steigen, da das Pro-Kopf-BIP in beiden Ländern gleich ist? Ich denke, dass mit so viel Analyse verschiedene Bilder erstellt werden können.

Gefälschte Trends und zufällige Spaziergänge

Viele wirtschaftliche Zeitpläne und Aktienkurse folgen einem zufälligen Spaziergang. Die Zeitreihen, die einem zufälligen Spaziergang folgen, ändern sich im Durchschnitt und in der Varianz im Laufe der Zeit. Bei einem zufälligen Spaziergang ändert sich der Mittelwert wahrscheinlich über die Zeit und die Varianz nimmt proportional zur Quadratwurzel des Zeitablaufs zu. Daher ist die Zukunft dieser Aktie nicht vorhersehbar. Unvorhersehbar zu sein bedeutet, dass es keinen Sinn macht, Kauf und Verkauf zeitlich zu steuern. Sie wissen nicht, wohin Sie in Zukunft gehen sollen, da der Random Walk mit einem betrunkenen, versetzten Fuß verglichen wird. Und die Breite nimmt mit der Zeit zu. Mit anderen Worten, es kann erheblich ansteigen, aber es wird auch fallen.

Es ist auf zwei Arten wichtig zu wissen, ob Bestandsdaten einem zufälligen Spaziergang folgen:

  1. Ist der aufgetretene Trend ein gefälschter Trend oder tritt der Trend auf?
  2. Wenn die beiden Zeitreihen eine Korrelation zeigen, handelt es sich um eine gefälschte Korrelation oder treten sie zufällig auf? Das ist der Punkt.

Lassen Sie uns einen zufälligen Spaziergang in Python erstellen. Als nächstes zeigt die Abbildung die Abwärtsbewegung, die durch Zufallszahlen erzeugt wird. Es fällt in fast eine Richtung.

%matplotlib inline 
import matplotlib.pyplot as plt
import pandas_datareader.data as web #Daten-Download-Bibliothek
import numpy as np
import pandas as pd
def generate(y0,rho,sigma,nsample):
    e = np.random.normal(size=nsample)
    y=[]
    y.append(rho*y0+e[0])
    for i,u in enumerate(e[1:]):
        y.append(rho*y[i]+u)
    plt.plot(y)
generate(1,1,1,100)    

image.png

Als nächstes schauen wir uns den tatsächlichen Aktienkurs an. Mit dem Dicky Fuller-Test können Sie feststellen, ob es sich bei einer Aktie um eine zufällige Wanderung handelt. Für diesen Test

es gibt. Wenn diese Ergebnisse weniger als 0,1 betragen, ist es wahrscheinlicher, dass Sie kein zufälliger Spaziergang sind.

Schauen wir uns das Portfolio mit minimaler Diversifikation (usmv), NASDAQ 100 (qqq), S & P500 (spy) und Dow Average (dia) an.

from statsmodels.tsa.stattools import adfuller

BASIC=['usmv','qqq','spy','dia']

ror = web.DataReader("DGS1","fred","1980/1/4")#Laden Sie die US-Zinssätze von der Homepage der US Federal Preparatory Commission herunter
#ror.plot()
ror = ror/250/100#jpy

def LongtermInvest(PORT,ror,start):
    i=1
    for asset in PORT:
        tsd = web.DataReader(asset,"yahoo",start).dropna()#Laden Sie die Aktienkurse von Yahoo Finance Us herunter
        dtsd=tsd.pct_change()
        tmp=pd.concat([dtsd.loc[:,'Adj Close'],ror],axis=1).dropna()
        tmp['adj']=(1+tmp.iloc[:,0]/(1+tmp.iloc[:,1]))
        tsda=tmp.iloc[:,2].cumprod()
        ts=np.log(tsda.dropna())
        ts.plot(label=str(asset))
        print(asset,adfuller((ts),regression='nc')[1:3],# ADF test
            adfuller((ts),regression='c')[1:3],
            adfuller((ts),regression='ct')[1:3],
            adfuller((ts),regression='ctt')[1:3])
        if i==5:
            plt.legend()
            plt.show()
            i=0
        i+=1
    if i!=1:
        plt.legend()
        plt.show()        
i=1
LongtermInvest(BASIC,ror,'2015/1/4')
usmv (0.9545542347136421, 23) (0.8638006294387173, 23) (0.0012513095084584341, 11) (0.005811135279764244, 11)
qqq (0.9917530792757916, 9) (0.9725398688611976, 9) (0.13498405344227182, 9) (0.09924300082908494, 9)
spy (0.8831775184401023, 9) (0.8368954755934965, 9) (0.00474390277885088, 9) (0.018407642576579095, 9)
dia (0.8438357944084672, 10) (0.7816330208711864, 10) (0.05496092342671481, 9) (0.08039004988307125, 9)

image.png

Die Ergebnisse sind in der Reihenfolge ein zufälliger Spaziergang ohne Drift, ein zufälliger Spaziergang mit Drift, eine zufällige Show mit Zeittrenddrift und ein zufälliger Spaziergang mit Zeittrenddrift mit Beschleunigung. Die Ergebnisse legen nahe, dass in allen Fällen ein Zeittrend (tdrw, qtdrw) vorliegen kann.

Um Insolvenz zu vermeiden

Welche der vier grundlegenden Aktienhandelsstrategien weist die geringste Ausfallwahrscheinlichkeit auf?

Von diesen sind Neuausrichtung und Kauf die einzigen Strategien mit einer geringen Ausfallwahrscheinlichkeit.

--Optionen scheitern, wenn der den Optionsgebühren entsprechende Gewinn nicht erzielt wird.

Simulieren wir mit Apple-Aktien und Intel-Aktien. Das folgende Programm ist eine Simulation des Falls, in dem die Position nach der Investition im ersten Halbjahr nicht verschoben wird. In diesem Fall ist das Verhältnis des Wertes der Investition für die Aktie mit dem höheren Aktienkurs höher.

aapl=web.DataReader("AAPL", "yahoo","1981/12/31","2020/12/31")['Adj Close']
intc=web.DataReader("INTC", "yahoo","1981/12/31","2020/12/31")['Adj Close']

aapl=aapl/aapl.iloc[0]#Indexierung der Aktienkurse
lnaapl=np.log(aapl)
dlnaapl=lnaapl.diff().dropna()
intc=intc/intc.iloc[0]
intc
lnintc=np.log(intc)
dlnintc=lnintc.diff().dropna()
lnaapl.plot(label='apple',style='-.')
lnintc.plot(label='intel',linestyle='--')
lnport=0.5*lnaapl+0.5*lnintc
lnport.plot(label='no rebalance')
plt.legend(loc='upper left')

image.png

Die folgende Simulation ist ein Programm, das täglich neu ausbalanciert und den Wert der Investition immer auf ein Verhältnis von 50% bis 50% anpasst.

def portfolio_rebalance(tsd1,tsd2):
    port=pd.concat([tsd1,tsd2],axis=1).dropna()
    port.columns=('p1','p2')
    port['a1']=0
    port['a2']=0
    port['v']=1
    n=len(port)
    p1=port['p1'].iloc[0]
    p2=port['p2'].iloc[0]
    v=port['v'].iloc[0]
    a1=float(v/2/p1)
    a2=float(v/2/p2)
    port.iloc[0,2]=a1
    port.iloc[0,3]=a2
    for i in range(1,len(port)):
        p1=port['p1'].iloc[i]#Apple Aktie heute
        p2=port['p2'].iloc[i]#Intel Aktienkurs heute
        p1_0=port['p1'].iloc[i-1]#Apple-Aktienkurs am Vortag
        p2_0=port['p2'].iloc[i-1]#Intel-Aktienkurs am Vortag
        a1_0=port['a1'].iloc[i-1]#Anzahl der von Apple am Vortag gehaltenen Aktien
        a2_0=port['a2'].iloc[i-1]#Anzahl der Intel-Bestände am Vortag
        v_0=port['v'].iloc[i-1]#Wert des Ausgleichsportfolios des Vortages
        #v=a1_0*(p1-p1_0)+a2_0*(p2-p2_0)+v_0#Wert des heutigen Ausgleichsportfolios
        v=a1_0*p1+a2_0*p2#Wert des heutigen Ausgleichsportfolios
        port.iloc[i,4]=v#Neuausrichtung der Portfolio-Wertaktualisierungen
        a1=float(v/2/p1)#Apple-Anteil angepasst
        a2=float(v/2/p2)#Angepasste Intel-Aktien
        port.iloc[i,2]=a1#Apple Stock Update
        port.iloc[i,3]=a2#Intel Share Count Update
    port['v2']=0.5*port.p1+0.5*port.p2#Wert des Portfolios ohne Neuausrichtung
    return port
port=portfolio_rebalance(aapl,intc)
lnport=np.log(port)
lnport.v.plot(label="port daily rebalance",linewidth=1.0)
lnaapl.plot(label='apple',style='-.')
lnintc.plot(label='intel',linestyle='--')
plt.legend(loc="upper left")

image.png

Ich denke, Sie haben ein Bild von der Investitionseffizienz der Neuausrichtung.

Kann dies nun den Zusammenbruch vermeiden? Selbst wenn Sie zwei Aktien wählen, ist die Wahrscheinlichkeit, dass zwei Unternehmen bankrott gehen, nicht Null. Sie können dieses Risiko vermeiden, indem Sie in einen Aktienindex investieren. Aus diesem Grund empfehlen wir Anfängern, in Aktienindizes zu investieren.

Ist es möglich, eine Insolvenz mit der Methode der Mittelung der Dollarkosten (finanzierte Investition) zu vermeiden? Insolvenz wird vermieden. Die Investitionseffizienz entspricht in etwa der einer "Buy-and-Hold" -Strategie. Was aber, wenn das Anlagevermögen noch lange sinkt? Glaubst du nicht, dass es viel Druck auf dein Herz ausüben wird? Betrachten Sie den Nikkei-Durchschnitt nach dem Zusammenbruch der Blase, den Goldmarkt in den 1990er Jahren. Können Sie weiterhin in diesen Vermögenswert investieren, wenn ich ihn länger als 10 Jahre absenke? Wenn Sie dies tun können, ist die Methode zur Mittelung der Dollarkosten eine Ihrer Strategien. Ich glaube jedoch nicht, dass der Gott des Sieges über die Anlagemethode dieser Anwendung lächeln wird.

Ergebnisse der Analyse dieses Artikels und anderer als dieses Artikels

Anfänger

Für diejenigen, die mit Python nicht vertraut sind

Jupyter-Notebook installieren Ich habe den Aktienkurs von Yahoo Finance US heruntergeladen

Recommended Posts

Systemhandel ab Python3: langfristige Investition
Systemhandel ab Python 3: Investition und Risiko
"Systemhandel beginnt mit Python3" Lesememo
Python ab Windows 7
GRPC beginnend mit Python
Verbessertes Lernen ab Python
Präsentationsunterstützungssystem mit Python3
Python beginnend mit Hallo Welt!
Ich habe die Strategie des Aktiensystemhandels mit Python evaluiert.
Systemhandel ab Python3: Holen Sie sich den neuesten Programmcode
Erstellen Sie ein Empfehlungssystem mit Python
Datenanalyse beginnend mit Python (Datenvisualisierung 1)
Datenanalyse beginnend mit Python (Datenvisualisierung 2)
Automatisches FX-Handelssystem mit Python und genetischem Algorithmus Teil 1
Geschäftseffizienz von Grund auf mit Python
Datenanalyse beginnend mit Python (Datenvorverarbeitung - maschinelles Lernen)
"Erste elastische Suche" beginnend mit einem Python-Client
Lassen Sie uns mit Python 1 einen Investitionsalgorithmus entwickeln
FizzBuzz in Python3
Scraping mit Python
Maschinelles Lernen beginnend mit Python Personal Memorandum Part2
Statistik mit Python
Scraping mit Python
Python mit Go
Maschinelles Lernen beginnend mit Python Personal Memorandum Part1
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Systemhandel beginnend mit Python3: Bio-Health-Aktien in der neuen Corona
[Einführung in den Systemhandel] Ich habe einen Stochastic Oscillator mit Python gezeichnet und damit gespielt ♬
Discord Bot mit Aufnahmefunktion beginnend mit Python: (3) Zusammenarbeit mit der Datenbank
Discord Bot mit Aufnahmefunktion beginnend mit Python: (1) Einführung discord.py
Ich habe versucht, TradeWave zu verwenden (BitCoin-Systemhandel in Python)
Einführung in die Mathematik ab Python Study Memo Vol.1
Systemhandel ab Python 3: Hedge Fund und CTA
Artikel, die die Systementwicklung mit Django (Python) ermöglichen _Einführung
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Führen Sie Python mit VBA aus