Commerce système à partir de Python3: investissement à long terme

Le contenu de cet article est un bref résumé du contenu de "Pann Rolling commençant avec Python 3".

Le 3 novembre, "3rd US Stock Online Study Group (Repeat 9/21)", 4th US Stock Online Study Group ( Répétez 9/21) ».

Bases de l'investissement à long terme

Dans cet article, vous apprendrez les méthodes d'analyse de données les plus élémentaires avec un investissement à long terme à l'esprit.

--Analyser les caractéristiques des mouvements de prix avec des données disponibles sur le long terme

Analyser les caractéristiques des mouvements de prix avec des données disponibles sur le long terme

Pensez-vous qu'il vaut mieux utiliser les dernières données pour une analyse correcte? J'entends parfois que le marché boursier est une chose vivante et que sa nature change, il faut donc l'analyser avec des données courtes. Mais c'est une erreur. Avec ce type de méthode d'analyse, le résultat de l'analyse que vous attendez sortira immédiatement. Les données utilisées pour les données n'ont jamais été aussi longues. Ce n'est jamais trop long. Parfois, il est nécessaire de créer des pseudo-données à l'aide de la méthode Monte Carlo.

Comprendre la taille du marché

La base d'un investissement à long terme est de bien connaître l'autre partie. Cela commence par une comparaison avec les autres. Assurez-vous de comprendre la taille exacte du marché lors d'un investissement.

image.png

image.png

Avez-vous une idée de l'échelle? Au moins, le marché financier américain est plus grand que le Japon. Et si le marché japonais des obligations d'État est plus important que le marché boursier, ce n'est pas le cas aux États-Unis. Étant donné que le PIB par habitant est le même dans les deux pays, quel marché boursier est le plus susceptible d'augmenter? Je pense que diverses images peuvent être créées avec autant d'analyse.

Fausses tendances et promenades aléatoires

De nombreux calendriers économiques et cours des actions suivent une marche aléatoire. La série chronologique qui suit une marche aléatoire changera en moyenne et en variance au fil du temps. Dans une marche aléatoire, la moyenne change de manière probabiliste au fil du temps et la variance augmente proportionnellement à la racine carrée du passage du temps. Par conséquent, l'avenir de ce stock est imprévisible. Le fait que vous ne pouvez pas prédire n'a pas de sens même si vous planifiez le moment de l'achat et de la vente. Vous ne savez pas où aller dans le futur, car la Random Walk est assimilée à un pied ivre décalé. Et la largeur augmente avec le temps. En d'autres termes, il peut augmenter considérablement, mais il diminuera également.

Savoir si les données de stock suivent une marche aléatoire est important de deux manières:

  1. La tendance qui s'est produite est-elle une fausse tendance ou la tendance se produit-elle?
  2. Lorsque les deux séries chronologiques montrent une corrélation, s'agit-il d'une fausse corrélation ou se produisent-elles? C'est le but.

Créons une promenade aléatoire en Python. Ensuite, la figure montre le mouvement vers le bas créé par des nombres aléatoires. Il tombe dans presque une direction.

%matplotlib inline 
import matplotlib.pyplot as plt
import pandas_datareader.data as web #Bibliothèque de téléchargement de données
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

Ensuite, regardons le prix réel de l'action. Le test Dicky Fuller est un moyen de déterminer si un stock est une marche aléatoire. Pour ce test

il y a. Si ces résultats sont inférieurs à 0,1, il est plus probable que vous ne soyez pas une marche aléatoire.

En fait, jetons un coup d'œil au portefeuille de diversification minimum (usmv), au NASDAQ 100 (qqq), au S & P500 (espion) et à la moyenne Dow (dia).

from statsmodels.tsa.stattools import adfuller

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

ror = web.DataReader("DGS1","fred","1980/1/4")#Téléchargez les taux d'intérêt américains sur la page d'accueil de la Commission préparatoire fédérale américaine
#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()#Téléchargez les cours des actions de Yahoo Finance France
        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

Les résultats sont, dans l'ordre, une marche aléatoire sans dérive, une marche aléatoire avec dérive, un spectacle aléatoire avec dérive de tendance temporelle et une marche aléatoire avec dérive de tendance temporelle avec accélération. Les résultats suggèrent qu'il peut y avoir une tendance temporelle (tdrw, qtdrw) dans tous les cas.

Pour éviter la faillite

Laquelle des quatre stratégies de négociation d'actions de base a la plus faible probabilité d'échec?

--Rebalancing: Une stratégie pour restaurer le ratio d'investissement s'il s'écarte de la valeur cible en raison des mouvements de prix.

Parmi celles-ci, le rééquilibrage et l'achat sont les seules stratégies à faible probabilité d'échec.

Simulons en utilisant les actions Apple et Intel. Le programme suivant est une simulation du cas où la position n'est pas déplacée après le premier semestre d'investissement. Dans ce cas, le ratio de la valeur de l'investissement sera plus élevé pour l'action dont le cours de l'action est le plus élevé.

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]#Indexation des cours des actions
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

La simulation suivante est un programme qui rééquilibre quotidiennement et ajuste toujours la valeur de l'investissement à un ratio de 50% 50%.

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]#Stock Apple aujourd'hui
        p2=port['p2'].iloc[i]#Cours de l'action Intel aujourd'hui
        p1_0=port['p1'].iloc[i-1]#Cours de l'action Apple la veille
        p2_0=port['p2'].iloc[i-1]#Cours de l'action Intel la veille
        a1_0=port['a1'].iloc[i-1]#Nombre d'actions détenues par Apple la veille
        a2_0=port['a2'].iloc[i-1]#Nombre de participations Intel la veille
        v_0=port['v'].iloc[i-1]#Valeur du portefeuille de rééquilibrage de la veille
        #v=a1_0*(p1-p1_0)+a2_0*(p2-p2_0)+v_0#Valeur du portefeuille de rééquilibrage actuel
        v=a1_0*p1+a2_0*p2#Valeur du portefeuille de rééquilibrage actuel
        port.iloc[i,4]=v#Rééquilibrer les mises à jour de la valeur du portefeuille
        a1=float(v/2/p1)#Part Apple ajustée
        a2=float(v/2/p2)#Partages Intel ajustés
        port.iloc[i,2]=a1#Mise à jour du stock Apple
        port.iloc[i,3]=a2#Mise à jour du nombre de partages Intel
    port['v2']=0.5*port.p1+0.5*port.p2#Valeur du portefeuille sans rééquilibrage
    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

Je pense que vous avez une image de l'efficacité d'investissement du rééquilibrage.

Maintenant, cela peut-il éviter l'effondrement? Même si vous choisissez deux actions, les chances que deux entreprises fassent faillite ne sont pas nulles. Vous pouvez éviter ce risque en investissant dans un indice boursier. C'est pourquoi nous encourageons les débutants à investir dans les indices boursiers.

Est-il possible d'éviter la faillite avec la méthode de la moyenne des coûts en dollars (investissement financé)? La faillite est évitée. Son efficacité d'investissement est proche de celle d'une stratégie «buy and hold». Mais que se passe-t-il si les actifs d'investissement continuent de baisser pendant longtemps? Ne pensez-vous pas que cela mettra beaucoup de pression sur votre cœur? Prenons la moyenne du Nikkei après l'effondrement de la bulle, le marché de l'or dans les années 1990. Si je l'abaisse pendant plus de 10 ans, pouvez-vous continuer à investir dans cet actif? Si vous pouvez faire cela, la méthode de calcul de la moyenne des coûts en dollars est l'une de vos stratégies. Cependant, je ne pense pas que le dieu de la victoire sourira de la méthode d'investissement de cette application.

Résultats de l'analyse de cet article et autres que cet article

Débutants

Pour ceux qui ne connaissent pas Python

Installation du notebook Jupyter J'ai téléchargé le cours de l'action sur Yahoo Finance US

Recommended Posts

Commerce système à partir de Python3: investissement à long terme
Trading système commençant par Python 3: investissement et risque
"Commerce du système à partir de Python3" lecture du mémo
Python à partir de Windows 7
GRPC commençant par Python
Apprentissage amélioré à partir de Python
Système de support de présentation avec Python3
Python commençant par Hello world!
J'ai évalué la stratégie de négociation du système boursier avec Python.
Commerce du système à partir de Python3: obtenez le dernier code de programme
Créer un système de recommandation avec python
Analyse de données à partir de python (visualisation de données 1)
Analyse de données à partir de python (visualisation de données 2)
Système de trading automatique FX réalisé avec python et algorithme génétique Partie 1
Efficacité commerciale à partir de zéro avec Python
Analyse de données à partir de python (pré-traitement des données-apprentissage automatique)
"Première recherche élastique" commençant par un client python
Développons un algorithme d'investissement avec Python 1
FizzBuzz en Python3
Grattage avec Python
Apprentissage automatique à partir de Python Personal Memorandum Part2
Statistiques avec python
Grattage avec Python
Python avec Go
Apprentissage automatique à partir de Python Personal Memorandum Part1
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Commerce de système à partir de Python3: les stocks de bio-santé à examiner dans le nouveau Corona
[Introduction au trading système] J'ai dessiné un oscillateur stochastique avec python et joué avec ♬
Discord Bot avec fonction d'enregistrement commençant par Python: (3) Coopération avec la base de données
Discord Bot avec fonction d'enregistrement commençant par Python: (1) Introduction discord.py
J'ai essayé d'utiliser TradeWave (commerce du système BitCoin en Python)
Introduction aux mathématiques à partir du mémo d'étude Python Vol.1
Commerce système à partir de Python 3: hedge fund et CTA
Articles permettant le développement de systèmes avec Django (Python) _Introduction
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Exécutez Python avec VBA