Hilfe
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 

Korrelationsmatrix vermisst

12 ANTWORTEN

Rick_F360
Beobachter
2 Beiträge

Hallo zusammen,

 

auch wenn es vermutlich nicht viel nutzt, so möchte auch ich mein bedauern, dass das Tool gestrichen wurde.

 

Rick_F360
Beobachter
2 Beiträge

Bedauern ausdrücken..

Ghost_69
Autor ★★
11 Beiträge

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