ich hoffe ihr könnt mir helfen. Eigentlich bekomme ich die meisten Probleme mit googlen und scharfem Nachdenken gelöst, dabei hilft mir oft auch dieses Forum. Bei meinem aktuellen Problem komme ich aber echt nicht mehr weiter.

Die Tabelle ist mit Beispieldaten im Anhang, aber erst einmal von vorne. Ich Verkaufe Opionen und habe mir dazu ein Journal entworfen. Das Jorunal ist mit der Zeit immer Komplexer geworden. Dort gibt es verschiedene Aktionen die verschieden verrechnet werden.
Ich versuche euch mit Zellbezügen und Erklärungen mein Problem zu verdeutlichen, falls es immer noch zu abstrakt ist lasst es mich Wissen damit ich es vielleicht etwas genauer erklären kann.
---
Grundlagen:
Die ganzen grundlegenden Daten werden in der Tabelle Trades eingetragen. Verarbeitet und in anderen Tabellen weiterverwendet. Optionen handelt man in Kontrakten ein Kontrakt sind immer exakt 100 Aktien, daher wird in der Tabelle immer mal /100 geteilt oder einfach mit einer Kontrakt Anzahl Multipliziert.
Problem:
In der Tabelle Assets werden Aktien aufgeführt die irgendwann einmal eingeliefert wurden. Jede Einlieferung wird in der Tabelle Assets einzeln und automatisch erfasst. Diese Aktien werden dann wieder angeboten und irgendwann an den Käufer ausgeliefert. Dieses Angebot kann aber verschiedene Größenordnungen haben, siehe Bsp.:
Eingeliefert:
01.02.2021 - Aktie A - 500 - Preis X
02.02.2021 - Aktie A- 300 - Preis Y
Ausgeliefert:
03.02.2021 - Aktie A - 300 - Preis Z
04.02.2021 - Aktie A- 500 - Preis W
Hier sieht man schon, dass es eine große Varianz der Positionsgrößen, des Datums und des Preises geben kann. Auch kann sich das komplexer gestallten, wenn mehr Einlieferungen und Auslieferungen dazu kommen, oder gar im Zeitlichen Verlauf mischen. Z.b:
Eingeliefert:
01.02.2021 - Aktie A - 500 - Preis X
03.02.2021 - Aktie A - 300 - Preis y
Ausgeliefert:
02.02.2021 - Aktie A- 300 - Preis Z
04.02.2021 - Aktie A- 500 - Preis W
Detailproblem:
In der Tabelle Assets werden die Einlieferungen nach Datum sortiert. Wenn nun Auslieferungen sind, soll die Tabelle von oben nach unten abverkauft erfasst werden.
Daher gibt der erste Verkauf natürlich die Aktien der ersten eingelieferten identischen wieder ab. Ist die Positionsgröße noch nicht voll. Weil z.b. wurden 500 eingeliefert und nur 300 wurden verkauft. Dann kommt der nächste Verkauf on Top. Übersteigt der nächste Verkauf die erste Position von 500, wird der rest auf die folgende Position gerechnet.
Bsb.
Eingeliefert:
01.02.2021 - Aktie A - 500 - Preis X
02.02.2021 - Aktie A - 300 - Preis y
Ausgeliefert:
02.02.2021 - Aktie A- 300 - Preis Z
Es sind also noch 200 offen.
Werden nun nochmal 300 verkauft
03.02.2021 - Aktie A- 300 - Preis Z
Dann gehen 200 auf die Einlieferung vom 01.02.2021 und 100 auf die vom 02.02.2021.
---
Das von oben erklärte ist Funktionsfähig in der Tabelle....
Was brauch ich denn nun...
Und zwar... ich möchte den Durchschnitts-Verkaufspreis je nach Anteilsmenge die auf eine eingelieferte Aktie beim, Verkaufen anfällt:
Bsp:
Eingeliefert:
01.02.2021 - Aktie A - 400 - Preis X
Ausgeliefert:
02.02.2021 - Aktie A- 200 - Preis 23 $
03.02.2021 - Aktie A - 200 - Preis 24 €$
Daher, Durchschnitts Verkaufspreis 23,50 $. Das ist in diesem Beispiel ganz easy, aber mit den oben beschriebenen Komplexitäten bekomm ich das aktuell nicht hin.
Mit dieser Formel, kann ich die ( Verkaufte Anzahl der Kontrakte * Verkaufspreis je Verkauf ) / Kontrakt Anzahl mit Sumproduct berechnen:
Code: Alles auswählen
=IF( C2 = "" ; "" ; IFERROR( SUMPRODUCT( Trades.$O$11:$O$10006 ; Trades.$P$11:$P$10006 ; Trades.$N$11:$N$10006 = E2 ; Trades.$M$11:$M$10006 = "x" ; Trades.$I$11:$I$10006 = "CALL-Sell" ; Trades.$L$11:$L$10006 >= IF( IFERROR( MAXIFS( $D$1:$D1 ; $E$1:$E1 ; "=" & E2 ) ; "" ) < C2 ; C2 ; IFERROR( MAXIFS( $D$1:$D1 ; $E$1:$E1 ; "=" & E2 ) ; "" ) ) ; Trades.$L$11:$L$10006 <= IF( D2 = "" ; TODAY() ; D2 ) ) / ( M2 / 100 ) ; "" ) )
Im Anhang könnt ihr nun die Datei mit Beispieldaten ansehen. Ignoriert einfach alle Tabellen außer Trades und Assets.
In der Tabelle Assets in Spalte L muss der Durchschnittsverkaufspreis eingepflegt werden.
In der Tabelle Trades, sind in Spalte I die Aktionen zu sehen, "PUT-Sell" oder "BUY" mit einem "x" (für executed) in Spalte M
für eine Erfolgte Einlieferung und "CALL-Sell" oder "Sell" mit einem "x" (für executed) für eine Auslieferung. Andere Einträge in Spalte M haben keine Auswirkung auf die Ein- oder Auslieferung.
Ich habe sämtliche Hilfsspalten eingeblendet gelassen, damit man die nicht erst groß suchen muss. Sind oft Schwarz oder komisch beschriftet

Spalte O beinhaltet die Kontrakt Anzahl, steht da eine 3 sind das 300 Aktien für jeweils den Preis von z.b. 24$
Selbst wenn keine Lösung gefunden wird, weil zu Aufwendig, freu ich mich über Algorithmus Ideen oder Formel Ideen die evtl in Richtung Ziel führen könnten.
Wer Interesse an dem Journal ansich hat, dem kann ich gerne eine Funktionsfähige Version + Erklärung zukommen lassen^^.
Besten Gruß
Criseas