Twitter stellte die Risiko-Rendite-Karte des Portfolios vor, das SPXL und TMF kombiniert.
Speichern Sie den Code, um dieses Diagramm hier zu erstellen.
Beziehen Sie die TMF-, SPXL- und VTI-CSV-Dateien im Voraus von der folgenden Site (der Zeitraum ist MAX). (Eigentlich sollte ich nur den Code anwenden, um ...)
TMF: https://www.nasdaq.com/market-activity/funds-and-etfs/tmf/historical SPXL: https://www.nasdaq.com/market-activity/funds-and-etfs/spxl/historical VTI: https://www.nasdaq.com/market-activity/funds-and-etfs/vti/historical
Speichern Sie sie mit den Dateinamen "TMF.csv", "SPXL.csv" bzw. "VTI.csv".
#Invite frends to the party...
import numpy as np
import pandas as pd
from datetime import datetime
import seaborn as sns
sns.set()
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
def make_df(etfs):
df = pd.DataFrame()
for etf in etfs:
csvfile = etf +'.csv'
csv_data = pd.read_csv(csvfile)
csv_data.Date = pd.to_datetime(csv_data.Date)
csv_data = csv_data.set_index('Date')
csv_data= csv_data.rename(columns={' Close/Last': etf})
df[etf] = csv_data[etf]
df = df.sort_index().dropna()
return df
def make_port_df(df):
#Rückgabeberechnung
rtn = (df / df.shift(1) -1).fillna(0)
#Erstellen Sie Portfoliodaten für jedes Verhältnis
for w in [9, 8, 7, 6, 5, 4, 3, 2, 1]:
rtn['SPXL'+str(w)+' : TMF'+str(10-w)] =rtn['SPXL']*(w/10) + rtn['TMF']*(1-w/10)
rtn += 1
df = rtn.cumprod()
return df
def rr_map(df):
#Berechnung der monatlichen Rendite
dfm = df.resample('M').ffill()
m_rtn = (dfm / dfm.shift(1) -1).dropna()
#Risikoberechnung
std = (m_rtn.std())*(12**0.5)
#Berechnung der jährlichen Rendite
cum = m_rtn+1
a_rtn = (cum.product())**(12/len(m_rtn))-1
#Erstellung einer Risiko-Rendite-Karte
plt.figure(figsize=(6, 6))
for asset in list(a_rtn.index):
plt.scatter(x = std[asset], y = a_rtn[asset],label = asset)
plt.xlabel('Risk')
plt.ylabel('Return')
plt.xlim(0,std.max()*1.1)
plt.ylim(0,a_rtn.max()*1.1)
plt.legend(loc = 'best')
plt.title('Risk Return Map')
plt.savefig('rr_map.png',bbox_inches="tight")
etfs = ['SPXL','TMF','VTI']
df = make_df(etfs)
df = make_port_df(df)
rr_map(df)
↓ Diese Grafik wird angezeigt.
Etwa die Hälfte von SPXL und die Hälfte von TMF führen wahrscheinlich zu einem Portfolio mit besseren Risiko-Rendite-Eigenschaften als VTI (bitte investieren Sie auf eigenes Risiko).
Recommended Posts