Code Python pour déterminer les signaux mensuels pour les investissements de force relative

Mise à jour du signal mensuel pour Relative Strength Investment sur My Blog Cependant, jusqu'à présent, je devais acquérir manuellement des données et calculer dans Excel.

Cette fois, j'ai écrit du code python pour juger du signal mensuel. Je suis un débutant avec python depuis plusieurs mois, alors pardonnez-moi s'il peut s'agir d'un code inesthétique. D'après ce que je peux voir, cela semble fonctionner correctement.

1. Grattage des données

[Monthly_check]RS_signal.ipynb


import numpy as np
import pandas as pd
from datetime import datetime
import urllib.request

#Obtenez et enregistrez les données de fiducie d'investissement csv à partir du site Web SMTAM.
#Enregistrez en tant que fichier csv une fois récupéré pour minimiser le scraping.

#JE:Stock japonais, EE:Stock des pays émergents, IE:Stock des pays développés, JB:Obligation japonaise, EB:Obligations des marchés émergents, IB:Obligations d'État avancées, IR:Pays développé Reet, JR:Japon Riet
url_list = {'JE':'https://www.smtam.jp/chart_data/140833/140833.csv',
            'EE':'https://www.smtam.jp/chart_data/140841/140841.csv',
            'IE':'https://www.smtam.jp/chart_data/140834/140834.csv',
            'JB':'https://www.smtam.jp/chart_data/140835/140835.csv',
            'EB':'https://www.smtam.jp/chart_data/140842/140842.csv',
            'IB':'https://www.smtam.jp/chart_data/140836/140836.csv',
            'IR':'https://www.smtam.jp/chart_data/140838/140838.csv',
            'JR':'https://www.smtam.jp/chart_data/140837/140837.csv'} 

for key in url_list:
    url = url_list[key]
    title = "{0}.csv".format(key)
    urllib.request.urlretrieve(url,title)

2. Jugement du signal

[Monthly_check]RS_signal.ipynb


#Créer des données qui résument le prix de base cumulé de tous les fonds
assets = ['JE','EE','IE','JB','EB','IB','JR','IR']
df_all = pd.DataFrame()
for asset in assets:
    asset_file = "{0}.csv".format(asset)
    df = pd.read_csv(asset_file, skiprows = [0], names = ['date','nav', 'div', 'aum'],
                    parse_dates = True, index_col = 0)

    df['div'] = pd.to_numeric(df['div'],errors='coerce')
    df['div'] = df['div'].fillna(0)
    
    df['cum_nav'] = (df['nav'] + df['div']) / df['nav'].shift(1)
    df[asset] = df['cum_nav'].cumprod()
    df_all[asset] = df[asset]


#Jugement du signal en convertissant les données quotidiennes en données mensuelles
dfm = df_all.resample('M').ffill()
dfm = dfm[dfm.index < datetime.now()] 

calc = pd.DataFrame(columns = ['JE','EE','IE','JB','EB','IB','JR','IR'])
calc.loc['asset class'] = ['Stock japonais','Actions des pays émergents','Stock des pays développés','Bond japonais','Obligations des pays émergents',
                          'Obligations d'État avancées','Japon Riet','Pays développé Riet']
calc.loc['3 months'] = (dfm.iloc[-1] / dfm.iloc[-4] -1)*100
calc.loc['6 months'] = (dfm.iloc[-1] / dfm.iloc[-7] -1)*100
calc.loc['12 months'] = (dfm.iloc[-1] / dfm.iloc[-13] -1)*100
calc.loc['mean'] = (calc.loc['3 months']+calc.loc['6 months']+calc.loc['12 months'])/3
calc.loc['rank'] = calc.loc['mean'].rank(ascending = False).astype(int)
calc.loc['latest nav'] = dfm.iloc[-1]
calc.loc['12ma NAV'] = dfm.iloc[-12:].mean()
calc.loc['Buy/Sell'] = np.where(calc.loc['latest nav'] > calc.loc['12ma NAV'], 'Buy', 'Sell')

#Afficher le résultat du jugement mensuel du signal
date = dfm.index.max()
print(str(date.year) + 'Année' + str(date.month) + 'Le signal de fin de mois est le suivant.')
calc.T.set_index('rank')[['asset class', 'Buy/Sell']].sort_index()

Une fois exécuté, ce qui suit sera affiché (devrait être) sur le bloc-notes Jupyter. output.png

3. Reflété dans le blog

Voici un article de blog qui reflète le signal ci-dessus.  ↓ [Commentaire mensuel du signal relatif à l'investissement relatif à la force (basé sur fin mars 2020)]

4. Conclusion

Mise à jour mensuelle de Signal Excel Il a fallu des décennies de travail manuel pour terminer. Il doit être utilisé pendant des décennies pour être rentable.

Le code qui juge le signal est vraiment amateur. Je voudrais m'améliorer quand je m'améliore.

Recommended Posts

Code Python pour déterminer les signaux mensuels pour les investissements de force relative
Comment déterminer l'existence d'un élément sélénium en Python
Note Python: Le mystère de l'attribution d'une variable à une variable
Afficher la force du signal RSSI d'un SSID spécifique (Mac)
Comment vérifier la taille de la mémoire d'une variable en Python
Premier python ② Essayez d'écrire du code tout en examinant les fonctionnalités de python
J'ai écrit le code pour écrire le code Brainf * ck en python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Implémenter un automate fini déterministe en Python pour déterminer des multiples de 3
[Python3] Définition d'un décorateur qui mesure le temps d'exécution d'une fonction
[python] Une note que j'ai commencé à comprendre le comportement de matplotlib.pyplot
[Python] Une fonction simple pour trouver les coordonnées du centre d'un cercle
[Python] Un programme qui fait pivoter le contenu de la liste vers la gauche
Mesurer la force de l'association dans un tableau croisé
[Python3] Réécrire l'objet code de la fonction
[python] [meta] Le type de python est-il un type?
[Python] Récupère le code de caractère du fichier
L'histoire du traitement A du blackjack (python)
Afficher la force du signal RSSI d'un SSID spécifique (raspberry pi (linux))
[Python] Un programme qui calcule le nombre de chaussettes jumelées
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Lecture de code de Safe, une bibliothèque pour examiner la force des mots de passe en Python
Python: je souhaite mesurer proprement le temps de traitement d'une fonction
J'ai créé une fonction pour voir le mouvement d'un tableau à deux dimensions (Python)
J'ai découvert en créant un script python pour enregistrer radiko tout en lisant le code des prédécesseurs
Comment exécuter le code pratique du livre "Making Profitable AI with Python" sur Google Colaboratory
"Livre pour former la capacité de programmation à se battre dans le monde" Exemple de réponse de code Python --1.9 Rotation de la chaîne de caractères
Différentes façons de lire la dernière ligne d'un fichier csv en Python
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Comment calculer la volatilité d'une marque
Essayez de résoudre le problème du voyageur de commerce avec un algorithme génétique (code Python)
[Python] Lire le code source de Bottle Part 2
[Circuit x Python] Comment trouver la fonction de transfert d'un circuit en utilisant Lcapy
Récupérer l'appelant d'une fonction en Python
[Python] Teste le matagi lunaire du delta relatif
Copiez la liste en Python
Écrire une note sur la version python de python virtualenv
Créez un environnement python pour apprendre la théorie et la mise en œuvre de l'apprentissage profond
[Python] Une compréhension approximative du module de journalisation
Script Python pour obtenir une liste d'exemples d'entrée pour le concours AtCoder
Sortie sous la forme d'un tableau python
Code pour vérifier le fonctionnement de Python Matplot lib
Convertir le code de caractère du fichier avec Python3
amateur python tente de résumer la liste ②
J'ai essayé de refactoriser le code de Python débutant (lycéen)
J'ai fait un script pour enregistrer la fenêtre active en utilisant win32gui de Python
Prise en compte des forces et faiblesses de Python
[Python] Lancer un message sur le canal Slack
[Python] Déterminez le type d'iris avec SVM
Comment obtenir une liste de fichiers dans le même répertoire avec python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
"Livre pour former la capacité de programmation à se battre dans le monde" Exemple de réponse de code Python --1.2 Compter le nombre des mêmes caractères
Utilisez tkinter pour déplacer le code de sortie en tant que "A et prétendant être B" en python
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
Une note de malentendu lors de la tentative de chargement de l'intégralité du module self-made avec Python3
Une histoire sur la tentative d'introduire Linter au milieu d'un projet Python (Flask)
Ne prenez pas une instance d'une classe d'exception Python directement comme argument de la classe d'exception!