Twitter a présenté la carte risque-rendement du portefeuille qui combine SPXL et TMF.
Enregistrez le code pour créer ce graphique ici.
Procurez-vous à l'avance les fichiers csv TMF, SPXL, VTI sur le site suivant (la période est MAX). (En fait, je devrais simplement appliquer le code pour obtenir ...)
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
Enregistrez-les respectivement sous les noms de fichier "TMF.csv", "SPXL.csv" et "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):
#Calcul du retour
rtn = (df / df.shift(1) -1).fillna(0)
#Créer des données de portefeuille pour chaque ratio
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):
#Calcul du retour mensuel
dfm = df.resample('M').ffill()
m_rtn = (dfm / dfm.shift(1) -1).dropna()
#Calcul des risques
std = (m_rtn.std())*(12**0.5)
#Calcul du rendement annuel
cum = m_rtn+1
a_rtn = (cum.product())**(12/len(m_rtn))-1
#Création d'une carte risque-retour
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)
↓ Ce graphique s'affiche.
Avoir environ la moitié de SPXL et la moitié de TMF est susceptible de se traduire par un portefeuille avec de meilleures caractéristiques risque-rendement que VTI (veuillez investir à vos propres risques).
Recommended Posts