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