am 09.07.2024 18:04
Seit dem 08. Juli 2024 vermisse ich auf der Seite zur Risikoanalyse die bislang dort zu findende Korrelationsmatrix. Kommt dieses hilfreiche Tool wieder und kann jemand verraten wann? Schon wäre es auch, wenn Comdirect solche Veränderungen vorab ankündigen, zumindest aber kommentieren könnte (Zuvor fehlte in der Risikoanalyse mehr als ein halbes Jahr die Portfolio-Übersicht). Tut mir leid, aber das gibt Abzüge bei der nächsten Bewertung für Comdirect 😢😞
Gelöst! Gzum hilfreichen Beitrag.
am 14.07.2025 22:13
Hallo zusammen,
auch wenn es vermutlich nicht viel nutzt, so möchte auch ich mein bedauern, dass das Tool gestrichen wurde.
am 14.07.2025 22:20
Bedauern ausdrücken..
am 15.07.2025 09:54
Ich fand das Tool auch sehr gut und habe es immer mal wieder genutzt,
da ich mich mit Python auskenne habe ich mir das Ding selber gebastelt.
Wer mag kann es kopieren und selber nutzen:
# -*- coding: utf-8 -*-
import yfinance as yf
import pandas as pd
import tkinter as tk
import os
from tkinter import ttk
from tkinter import simpledialog
from datetime import datetime, timedelta
# Zeiträume als Dropdown-Optionen
time_options = {
"6 Monate": 6,
"1 Jahr": 12,
"3 Jahre": 36,
"5 Jahre": 60,
"10 Jahre": 120
}
# Funktion zur Berechnung und Speicherung der Korrelationsmatrix
def fetch_data():
# Abfrage nach den Aktien-Tickern (über das Textfeld)
tickers_input = ticker_entry.get()
if tickers_input:
tickers = [ticker.strip() for ticker in tickers_input.split(',')] # Ticker in Liste umwandeln
selected_option = time_var.get()
months = time_options[selected_option]
# Startdatum basierend auf der Auswahl berechnen
end_date = datetime.today()
start_date = end_date - timedelta(days=months * 30) # Durchschnittlich 30 Tage pro Monat
# Daten abrufen
# data = yf.download(tickers, start=start_date.strftime('%Y-%m-%d'), end=end_date.strftime('%Y-%m-%d'))[
# "Adj Close"]
# Daten abrufen mit auto_adjust=False, um 'Adj Close' wieder zu bekommen
# data = yf.download(tickers, start=start_date.strftime('%Y-%m-%d'), end=end_date.strftime('%Y-%m-%d'),
# auto_adjust=False)
data = yf.download(tickers, start=start_date.strftime('%Y-%m-%d'), end=end_date.strftime('%Y-%m-%d'))
# Nur die 'Adj Close' Spalte extrahieren (falls mehrere Spalten geladen werden)
if "Close" in data.columns: #Adj Close
data = data["Close"] #Adj Close
else:
status_label.config(text="Fehler: 'Adj' Spalte nicht gefunden!", style="Error.TLabel") #Adj Close
return
# Renditen berechnen (logarithmierte tägliche Renditen für eine bessere Normalverteilung)
returns = data.pct_change().dropna()
# Korrelationsmatrix berechnen
correlation_matrix = returns.corr()
# Ergebnis in Excel speichern
excel_file = f"Korrelationsmatrix_{selected_option.replace(' ', '_')}.xlsx"
# Die Aktiennamen vertikal in die Excel-Datei einfügen
with pd.ExcelWriter(excel_file) as writer:
correlation_matrix.to_excel(writer, sheet_name="Korrelationsmatrix")
# Aktiennamen vertikal oben einfügen
tickers_df = pd.DataFrame(tickers, columns=["Aktien-Ticker"])
tickers_df.to_excel(writer, sheet_name="Aktien", index=False)
# Erfolgsmeldung im Label anzeigen
# status_label.config(text=f"Korrelation in '{excel_file}' gespeichert!", fg="green")
status_label.config(text=f"Korrelation in '{excel_file}' gespeichert!")
# Farbe mit Style setzen
style = ttk.Style()
style.configure("Success.TLabel", foreground="green")
status_label.config(style="Success.TLabel")
# Tkinter-GUI erstellen
root = tk.Tk()
root.title("Korrelationsmatrix der Aktien")
# Label für das Dropdown-Menü
ttk.Label(root, text="Zeitraum auswählen:").pack(pady=5)
# Dropdown-Menü
time_var = tk.StringVar(value="6 Monate")
dropdown = ttk.Combobox(root, textvariable=time_var, values=list(time_options.keys()))
dropdown.pack(pady=5)
# Label für das Textfeld zur Eingabe der Ticker
ttk.Label(root, text="Aktien-Ticker (kommagetrennt):").pack(pady=5)
# Textfeld für die Ticker-Eingabe
ticker_entry = ttk.Entry(root, width=50)
ticker_entry.pack(pady=5)
# Button zum Starten der Berechnung
fetch_button = ttk.Button(root, text="Berechnen & Speichern", command=fetch_data)
fetch_button.pack(pady=10)
# Statusanzeige
status_label = ttk.Label(root, text="", font=("Arial", 10))
status_label.pack(pady=5)
# GUI starten
root.mainloop()