[Python] 2 Créez une carte risque-rendement pour votre portefeuille d'actifs

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".

1. Chargez la bibliothèque.


#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()

2. Une fonction qui combine des fichiers csv dans un DataFrame


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

3. Une fonction qui ajoute un indice de portefeuille diversifié à un DataFrame


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 

4. Fonction de création d'une carte risque-rendement


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")

4. Exécutez la fonction ci-dessus


etfs = ['SPXL','TMF','VTI']
df = make_df(etfs)
df = make_port_df(df)
rr_map(df)

↓ Ce graphique s'affiche. rr_map.png

5. Résumé

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).

6. Prochain numéro

Recommended Posts

[Python] 2 Créez une carte risque-rendement pour votre portefeuille d'actifs
Créez un modèle pour votre planning Django
Créez un environnement python sur votre Mac
Créons un environnement virtuel pour Python
Créer un LINE BOT avec Minette pour Python
Créer une carte Web en utilisant Python et GDAL
Créer un module Python
Créer un environnement Python
Créez votre propre Big Data en Python pour validation
Créer une couche pour AWS Lambda Python dans Docker
Créer un plugin Wox (Python)
Créer une fonction en Python
Créer un dictionnaire en Python
Créer un tableau numpy python
Créer un répertoire avec python
Créer un compte enfant de connect with Stripe en Python
[Python] Créer une liste de dates et d'heures pour une période spécifiée
Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python
Créer un script Python pour Wake on LAN (Wake on LAN over NAT [5])
Créer un environnement virtuel pour python sur mac [Très facile]
Créez un environnement python sur CentOS 7.7 pour votre serveur domestique
[Python] Créer un écran pour le code d'état HTTP 403/404/500 avec Django
Concurrence avec VS Code Créez un environnement Python pour les professionnels sous Windows
Créer un environnement d'exécution Windows Python avec VScode + Remote WSL
Créer une interface graphique python à l'aide de tkinter
Créer un conteneur DI avec Python
Créer un environnement Python sur Mac (2017/4)
Créez une illusion rayée avec correction gamma pour Python3 et openCV3
Créez un sélecteur de couleurs pour la roue chromatique avec Python + Qt (PySide)
Créez un environnement virtuel avec Python!
Créer un fichier binaire en Python
Essayez docker: créez votre propre image de conteneur pour une application Web Python
Créer un environnement python dans centos
Créer un framework de décorateur à usage général pour Python
Python vba pour créer une chaîne de date pour créer un nom de fichier
5 façons de créer un chatbot Python
Créer une chaîne aléatoire en Python
Créer un Ubuntu de démarrage USB avec un environnement Python pour l'analyse des données
Préparez un environnement virtuel Python pour votre projet avec venv avec VS Code
Créez des raccourcis pour exécuter des fichiers Python sur le terminal avec VScode
Créez un modèle de prédiction de survie pour les passagers du Kaggle Titanic sans utiliser Python
[Python / Tkinter] Rechercher Pandas DataFrame → Créer un formulaire de recherche simple à afficher
Créer un décorateur de fonction Python avec Class
Créez vos propres commandes Linux en Python
Créer un nouveau projet de calcul numérique Python
Créez wordcloud à partir de votre tweet avec python3
Créez une image factice avec Python + PIL.
Créer une application GUI simple en Python
[Python] Créez un environnement virtuel avec Anaconda
Créons un groupe gratuit avec Python
Carte des informations de location sur une carte avec python
[Python] Créer un environnement Batch à l'aide d'AWS-CDK
[Mac] Création d'un environnement virtuel pour Python
[Python] [LINE Bot] Créer un robot LINE de retour de perroquet
Qt pour l'application de bureau de l'application Python