CSV-Import: Reihenfolge von Trades ohne Uhrzeit am selben Tag

Beobachtetes Verhalten:

  1. Sortierung nach Typ: PP sortiert Einträge ohne Uhrzeit mit gleichem Datum beim Import aus einer CSV-Datei nach Typ (z.B. “Kauf” vor “Verkauf”).
  2. Reihenfolge innerhalb eines Typs: Die Sortierung innerhalb eines Typs, wie “Kauf” entspricht größtenteils der Reihenfolge in der CSV-Datei, jedoch nicht immer (siehe Screenshot).

Gewünschtes Verhalten:

  • Einhaltung der Reihenfolge: Um eine korrekte Berechnung der einzelnen Trades und der FIFO-Methode bei Einträgen mit fehlender Uhrzeit zu gewährleisten, wäre es wünschenswert wenn PP die Möglichkeit bieten würde, Transaktionen genau in der Reihenfolge zu importieren, wie sie in der CSV-Datei aufgeführt sind.
  • Optionale Einstellung: Falls dies generell problematisch ist, wäre eine zusätzliche Option im Importmenü wünschenswert, um die Reihenfolge bei Bedarf anzupassen.

TEST.csv (1.9 KB)

Die „zusätzliche Option, um die Reihenfolge bei Bedarf anzupassen“ nennt sich Uhrzeit. Nötigenfalls musst du eine erfinden.

Vielen Dank für deine Antwort. Das war mein erster Versuch, und es hat auch funktioniert. Allerdings war es praktisch unmöglich, manuell hunderte oder gar tausende von Transaktionen einzupflegen. Du hast mir jedoch eine Idee gegeben: Ich könnte natürlich ein kleines Python-Skript schreiben, das meine CSV-Datei so bearbeitet, dass es für mehrere Einträge aufsteigende Uhrzeiten in eine separate Spalte schreibt, etwa 00:00, 00:01, 00:02 usw.

Dennoch bleibt die Frage: Wie ordnet PP Einträge zeitlich, wenn eine Uhrzeit fehlt und das Datum dasselbe ist? Wenn dies bisher mehr oder weniger zufällig geschieht, spräche doch– abgesehen von dem vermeintlich überschaubaren Programmieraufwand – nichts dagegen, einfach die Reihenfolge in der CSV-Datei beizubehalten. Oder gibt es andere Überlegungen, die ich übersehe?

@Jannis

Was glaubst Du, wie wichtig das für Deine Performance - oder für sonst irgend etwas - ist, zu welcher Uhrzeit ein Deal stattgefunden hat? Zinsen werden nicht stündlich berechnet.

CU, Laura

Zur korrekten Berechnung von FIFO in einem bestimten Zeitraum sehr. Siehe Screenshots unten, jeweils einmal wie importiert und einmal händisch in die richtige Reihenfolge gebracht.

Screenshot 2024-05-04 at 2.57.24 PM
Screenshot 2024-05-04 at 2.57.14 PM



@Jannis

Ja, wenn der Zeitraum obszön kurz ist. :pleading_face: Dann ist PP aber nicht das Tool der Wahl.

1 Like

Unter den oben geschilderten Bedingungen berechnet PP die Zahlungen für die angezeigten Jahre falsch. Wenn PP diese Bedingungen nicht handhaben können soll, ist das in Ordnung. Das ist eine Gestaltungsentscheidung.

Es wäre jedoch sehr hilfreich (und zeitsparend), wenn im Programm ein entsprechender Hinweis vorhanden wäre. Ich möchte nur konstruktives Feedback auf Basis meiner Nutzererfahrung geben, in der Hoffnung, dass es anderen in ähnlichen Situationen Zeit sparen könnte.

Der Aufwand ist in der Tat nur vermeintlich überschaubar. (Schlag nach, was das Wort bedeutet.)

Die Uhrzeit ist wirklich genau dafür da, Transaktionen innerhalb eines Tages zu ordnen.

@Jannis

Das glaube ich Dir unbesehen. Trotzdem solltest Du Dir überlegen, was DIR das bringt. Wenn Du Uhrzeiten in Deine Performanceberechnungen einbeziehst, weißt Du so oder so nicht, was Du tust:

  • Entweder brauchst Du ein anderes Tool als PP,
  • oder Du nutzt PP falsch.

Ich habe absolut Verständnis dafür, wenn das Implementieren meines Vorschlags zu aufwändig ist. Soweit ich das Verstehe, arbeiten ja alle unentgeltlich neben Ihren Hauptberufen an PP.

Ich verstehe leider nicht, was du meinst, @Laura. Die oben angehängte test.csv zeigt ganz normale Wertpapierkäufe und Verkäufe (keine Leerverkäufe, Optionen, o.Ä.). Die Zeit, die PP ja unterstützt, fehlt halt, was ein realistisches Szenario für viele User sein wird. Die Frage ist doch dann, wie könnte man dieses Szenario mit abdecken, damit möglichst viele von PP profitieren können?

Mein Verständnis ist das PP finanzmathematisch auf der FIFO Methode beruht, dafür ist nun mal wichtig den zeitlichen Ablauf der Transaktionen korrekt zu erfassen, ob das nun nur mit dem Datum passiert, weil die Transaktionen mehr als 24h auseinander liegen, oder nicht ist doch mathematisch völlig irrelevant. Ich verstehe also nicht, wie ich PP falsch nutze. Aber ich lasse mich gerne aufklären.

Falls jemand in der selben Situation ist, also Uhrzeit fehlt, aber die Daten sind in der richtigen zeitlichen Abfolge in der CSV-Datei gespeichert: Hier mein jupyter notebook script. Es fügt eine Zeit-Spalte mit aufsteigenden Minuten für alle Einträge mit dem selben Datum hinzu.

import pandas as pd
from datetime import datetime, timedelta

# Load the CSV file
file_path = 'TEST.csv'
df = pd.read_csv(file_path)

# Function to generate times starting from 00:01 with increments of 1 minute for rows with the same date
def apply_times(x):
    return (datetime.min + timedelta(minutes=x)).strftime('%H:%M')

# Generate a 'Time' column that increments by 1 minute for each duplicate date entry
df['Time'] = df.groupby('Date').cumcount()
mask = df.groupby('Date')['Date'].transform('size') > 1  # Only apply to dates with multiple rows
df.loc[mask, 'Time'] = df.loc[mask, 'Time'].apply(apply_times)
df.loc[~mask, 'Time'] = ''  # Leave blank for single entries

# Insert the 'Time' column after the 'Date' column
date_index = df.columns.get_loc('Date')
df.insert(date_index + 1, 'New Time', df.pop('Time'))

# Save new csv
output_file_path = 'updated_TEST.csv'
df.to_csv(output_file_path, index=False)

df  # Display the DataFrame to verify the new 'Time' column

1 Like

Mir war so das die kleinste Zeiteinheit in PP nur der Tag ist. Die Uhrzeit wird nur optisch für die Sortierung verwendet, nicht für Berechnungen. Aber ich kann mich täuschen.

Es wirkt sich auf die Berechnung aus, siehe oben, z.b. hier:

Die einen Transaktionen habe ich durch hinzufügen einer Zeit sortiert, die anderen nicht.

Die Reihenfolge ist relevant für die Trades (wie das Beispiel von @Jannis). Die Logik ist dabei: es wird nach Datum und Uhrzeit sortiert. Buchungen ohne Uhrzeit haben die Uhrzeit “00:00”.

Wenn Buchungen die gleiche Zeit haben, dann werden zunächst die Käufe und dann Verkäufe sortiert. Der Gedanke dabei: Trades können immer zugeordnet werden - es kann nie erste ein Verkauf und dann der Kauf kommen. Ich denke danach ist der Sortierreihenfolge in Java einfach nicht determiniert.

Für die allermeisten ist das völlig egal. Aber wenn man intraday handelt, dann ist die Uhrzeit eben doch relevant. Wenn man morgens eine existierende Position verkauft und Abends wieder kauft, dann würde PP das ohne Uhrzeit als einen intraday Trade ansehen.

Und für genau solche Fälle gibt es die Uhrzeit.

@Jannis

Ich meine …

CU, Laura

Du kannst leichte deine csv bearbeiten mit Excel.

Einfach eine weitere Spalte C einfügen. Spalte B und C als Uhrzeit formatieren. Wenn eine Uhrzeit vorhanden ist wird die übernommen wenn nicht wird die aus der Zeile davor verwendet + 1Minute.

Einschränkungen bisher:
-die Formel funktioniert ab der zweiten Zeile.
-23:59 wird zu 00:00
-das Datum wird nicht beachtet

1 Like

Ich nutze leider kein Excel, aber trotzdem danke für den Hinweis! Mein obiges Skript hat mir zum Glück gute Dienste geleistet.

Hi,

ich glaube die naheliegendste Lösung wurde noch nicht angesprochen, deswegen will ich ganz kurz fragen: Woher kommt denn die CSV Datei, und wieso hat die Datenquelle keine Uhrzeiten?

Grüße
Alexander

Von meinem Broker: Charles Schwab. Warum die die Uhrzeit nicht mit angeben weiß ich auch nicht.