Python-Code zur Bestimmung der monatlichen Signale für Investitionen mit relativer Stärke

Aktualisiertes monatliches Signal für Relative Strength Investment auf Mein Blog Bisher musste ich jedoch Daten manuell erfassen und in Excel berechnen.

Dieses Mal habe ich Python-Code geschrieben, um das monatliche Signal zu beurteilen. Ich bin seit einigen Monaten ein Anfänger mit Python. Bitte verzeihen Sie mir, obwohl es sich möglicherweise um unansehnlichen Code handelt. Soweit ich sehen kann, scheint es richtig zu funktionieren.

1. Daten-Scraping

[Monthly_check]RS_signal.ipynb


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

#Erhalten und speichern Sie Investment Trust Data CSV von der SMTAM-Website.
#Nach dem Scraping als CSV-Datei speichern, um das Scraping zu minimieren.

#JE:Japanische Aktie, EE:Schwellenländeraktien, IE:Aktien aus Industrieländern, JB:Japanische Anleihe, EB:Emerging Market Bonds, IB:Fortgeschrittene Staatsanleihen, IR:Industrieland Reet, JR:Japan 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. Signalbeurteilung

[Monthly_check]RS_signal.ipynb


#Erstellen Sie Daten, die den kumulierten Grundpreis aller Fonds zusammenfassen
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]


#Signalbeurteilung durch Umwandlung von Tagesdaten in Monatsdaten
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'] = ['Japanische Aktie','Aktien aus Schwellenländern','Bestand in Industrieländern','Japanische Anleihe','Anleihen aus Schwellenländern',
                          'Fortgeschrittene Staatsanleihen','Japan Riet','Industrieland 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')

#Monatliches Signalbeurteilungsergebnis anzeigen
date = dfm.index.max()
print(str(date.year) + 'Jahr' + str(date.month) + 'Das Signal am Monatsende lautet wie folgt.')
calc.T.set_index('rank')[['asset class', 'Buy/Sell']].sort_index()

Bei der Ausführung wird auf dem Jupyter-Notizbuch Folgendes angezeigt (sollte es sein). output.png

3. Reflektiert im Blog

Hier ist ein Blog-Beitrag, der das obige Signal widerspiegelt.  ↓ [Monatlicher Signalkommentar zur Investition in relative Stärke (basierend auf Ende März 2020)]

4. Fazit

Monatliches Signal-Excel-Update Es dauerte Jahrzehnte manueller Arbeit. Es muss jahrzehntelang verwendet werden, um kostengünstig zu sein.

Der Code, der das Signal beurteilt, ist wirklich amateurhaft. Ich möchte mich verbessern, wenn ich mich verbessere.

Recommended Posts

Python-Code zur Bestimmung der monatlichen Signale für Investitionen mit relativer Stärke
So bestimmen Sie die Existenz eines Selenelements in Python
Python Hinweis: Das Rätsel, einer Variablen eine Variable zuzuweisen
Anzeige der Signalstärke RSSI einer bestimmten SSID (Mac)
So überprüfen Sie die Speichergröße einer Variablen in Python
Erste Python ② Versuchen Sie, Code zu schreiben, während Sie die Funktionen von Python untersuchen
Ich habe den Code geschrieben, um den Brainf * ck-Code in Python zu schreiben
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
Implementieren Sie einen deterministischen endlichen Automaten in Python, um Vielfache von 3 zu bestimmen
[Python3] Definition eines Dekorators, der die Ausführungszeit einer Funktion misst
[Python] Ein Hinweis, dass ich das Verhalten von matplotlib.pyplot zu verstehen begann
[Python] Eine einfache Funktion zum Ermitteln der Mittelkoordinaten eines Kreises
[Python] Ein Programm, das den Inhalt der Liste nach links dreht
Messen Sie die Assoziationsstärke in einer Kreuztabelle
[Python3] Schreiben Sie das Codeobjekt der Funktion neu
[Python] [Meta] Ist der Python-Typ ein Typ?
[Python] Ruft den Zeichencode der Datei ab
Die Geschichte der Verarbeitung A von Blackjack (Python)
Anzeige der Signalstärke RSSI einer bestimmten SSID (Himbeer-Pi (Linux))
[Python] Ein Programm, das die Anzahl der gepaarten Socken berechnet
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Codelesen von Safe, einer Bibliothek zur Überprüfung der Kennwortstärke in Python
Python: Ich möchte die Verarbeitungszeit einer Funktion genau messen
Ich habe eine Funktion erstellt, um die Bewegung eines zweidimensionalen Arrays (Python) zu sehen.
Ich fand es heraus, indem ich ein Python-Skript erstellte, um Radiko aufzuzeichnen, während ich den Code der Vorgänger las
So führen Sie den Übungscode des Buches "Profitable KI mit Python erstellen" in Google Colaboratory aus
"Buch, um die Programmierfähigkeit zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel --1.9 Drehung der Zeichenkette
Verschiedene Möglichkeiten, die letzte Zeile einer CSV-Datei in Python zu lesen
So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
So berechnen Sie die Volatilität einer Marke
Versuchen Sie, das Problem des Handlungsreisenden mit einem genetischen Algorithmus (Python-Code) zu lösen.
[Python] Lesen Sie den Quellcode von Flasche Teil 2
[Circuit x Python] So ermitteln Sie die Übertragungsfunktion eines Schaltkreises mit Lcapy
Holen Sie sich den Aufrufer einer Funktion in Python
[Python] Testen Sie die Mondmatagi des relativen Deltas
Kopieren Sie die Liste in Python
Schreiben Sie eine Notiz über die Python-Version von Python Virtualenv
Erstellen Sie eine Python-Umgebung, um die Theorie und Implementierung von Deep Learning zu erlernen
[Python] Ein grobes Verständnis des Protokollierungsmoduls
Python-Skript zum Abrufen einer Liste von Eingabebeispielen für den AtCoder-Wettbewerb
Ausgabe in Form eines Python-Arrays
Code zum Überprüfen des Betriebs von Python Matplot lib
Konvertieren Sie den Zeichencode der Datei mit Python3
Python Amateur versucht die Liste zusammenzufassen ②
Ich habe versucht, den Code des Python-Anfängers (Schüler der Mittelstufe) zu überarbeiten.
Ich habe ein Skript erstellt, das das aktive Fenster mit win32gui von Python aufzeichnet
Berücksichtigung der Stärken und Schwächen von Python
[Python] Wirf eine Nachricht an den Slack-Kanal
[Python] Bestimmen Sie den Typ der Iris mit SVM
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Beispiel für die Antwort auf den Python-Code --1.2 Zählen Sie die Anzahl der gleichen Zeichen
Verwenden Sie tkinter, um den Ausgabecode in Python als "A und vorgeben, B zu sein" zu verschieben
Wie identifiziere ich das Element mit der geringsten Anzahl von Zeichen in einer Python-Liste?
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
Ein Hinweis auf Missverständnisse beim Versuch, das gesamte selbst erstellte Modul mit Python3 zu laden
Eine Geschichte über den Versuch, Linter mitten in einem Python (Flask) -Projekt vorzustellen
Nehmen Sie eine Instanz einer Python-Ausnahmeklasse nicht direkt als Argument für die Ausnahmeklasse!