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