[Python] 2 Erstellen Sie eine Risiko-Rendite-Karte für Ihr Asset-Portfolio

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

1. Laden Sie die Bibliothek.


#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. Eine Funktion, die CSV-Dateien in einem DataFrame kombiniert


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. Eine Funktion, die einem DataFrame einen diversifizierten Portfolio-Index hinzufügt


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 

4. Funktion zum Erstellen einer Risiko-Rendite-Karte


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

4. Führen Sie die obige Funktion aus


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

↓ Diese Grafik wird angezeigt. rr_map.png

5. Zusammenfassung

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

6. Nächste Ausgabe

Recommended Posts

[Python] 2 Erstellen Sie eine Risiko-Rendite-Karte für Ihr Asset-Portfolio
Erstellen Sie ein Modell für Ihren Django-Zeitplan
Erstellen Sie eine Python-Umgebung auf Ihrem Mac
Erstellen wir eine virtuelle Umgebung für Python
Erstellen Sie mit Minette für Python einen LINE BOT
Erstellen Sie eine Webmap mit Python und GDAL
Erstellen Sie ein Python-Modul
Erstellen Sie eine Python-Umgebung
Erstellen Sie Ihre eigenen Big Data in Python zur Validierung
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
Erstellen Sie ein Wox-Plugin (Python)
Erstellen Sie eine Funktion in Python
Erstellen Sie ein Wörterbuch in Python
Erstellen Sie ein Python-Numpy-Array
Erstellen Sie ein Verzeichnis mit Python
Erstellen Sie ein untergeordnetes Konto für die Verbindung mit Stripe in Python
[Python] Erstellen Sie eine Datums- und Zeitliste für einen bestimmten Zeitraum
Erstellen Sie einen Twitter-BOT mit dem GoogleAppEngine SDK für Python
Erstellen Sie ein Python-Skript für Wake on LAN (Wake on LAN über NAT [5])
Erstellen einer virtuellen Umgebung für Python auf dem Mac [Sehr einfach]
Erstellen Sie unter CentOS 7.7 eine Python-Umgebung für Ihren Heimserver
[Python] Erstellen Sie mit Django einen Bildschirm für den HTTP-Statuscode 403/404/500
Wettbewerb mit VS-Code Erstellen Sie eine Python-Umgebung für Profis unter Windows
Erstellen Sie eine Windows Python-Ausführungsumgebung mit VScode + Remote WSL
Erstellen Sie mit tkinter eine Python-GUI
Erstellen Sie einen DI-Container mit Python
Erstellen Sie eine Python-Umgebung auf dem Mac (2017/4)
Erstellen Sie eine gestreifte Illusion mit Gammakorrektur für Python3 und openCV3
Erstellen Sie mit Python + Qt (PySide) einen Farbwähler für das Farbrad.
Erstellen Sie eine virtuelle Umgebung mit Python!
Erstellen Sie eine Binärdatei in Python
Docker ausprobieren: Erstellen Sie Ihr eigenes Container-Image für eine Python-Web-App
Erstellen Sie eine Python-Umgebung in Centos
Erstellen Sie ein universelles Dekorationsframework für Python
Python vba zum Erstellen einer Datumszeichenfolge zum Erstellen eines Dateinamens
5 Möglichkeiten zum Erstellen eines Python-Chatbots
Erstellen Sie eine zufällige Zeichenfolge in Python
Erstellen Sie ein USB-Boot-Ubuntu mit einer Python-Umgebung für die Datenanalyse
Bereiten Sie mit venv mit VS Code eine virtuelle Python-Umgebung für Ihr Projekt vor
Erstellen Sie Verknüpfungen, um Python-Dateien auf dem Terminal mit VScode auszuführen
Erstellen Sie ein Überlebensvorhersagemodell für Passagiere der Kaggle Titanic, ohne Python zu verwenden
[Python / Tkinter] Suche nach Pandas DataFrame → Erstellen Sie ein einfaches Suchformular zur Anzeige
Erstellen Sie mit Class einen Python-Funktionsdekorator
Erstellen Sie Ihre eigenen Linux-Befehle in Python
Erstellen Sie ein neues numerisches Python-Berechnungsprojekt
Erstellen Sie mit python3 eine Wortwolke aus Ihrem Tweet
Erstellen Sie mit Python + PIL ein Dummy-Image.
Erstellen Sie eine einfache GUI-App in Python
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen wir mit Python eine kostenlose Gruppe
Kartenmietinformationen auf einer Karte mit Python
[Python] Erstellen Sie eine Stapelumgebung mit AWS-CDK
[Mac] Erstellen einer virtuellen Umgebung für Python
[Python] [LINE Bot] Erstellen Sie einen LINE Bot mit Papageienrückgabe
Qt für Python App Desktop App