Berechnung der Rendite einer Reihe von Aktienpositionen mit mehreren ungleichmäßigen Transaktionen

Wie kann ich die Rendite einer Reihe von Aktienpositionen mit mehreren ungleichmäßigen Transaktionen berechnen, die ich mit der entsprechenden Buy-and-Hold-Rendite über denselben Zeitraum vergleichen kann?

Random Example: Starting cash = $6000 Day[0]: Buy 100 shares of stock A @ $50 -- Long Position opened Day[3]: Buy 10 shares of stock A @ $52 Day[6]: Sell 50 shares of stock A @ $60 Day[7]: Sell 60 shares of stock A @ $58 -- Position closed w/ zero shares Day[10]: Buy 100 shares of stock A @ $55 -- Long Position opened Day[16]: Sell 50 shares of stock A @ $65 Day[20]: Sell 50 shares of stock A @ $58 -- Position closed w/ zero shares Return: ?

Buy and Hold: Day[0]: Buy $6000 worth of stock A @ $50 (120 shares) Day[20]: Sell 120 shares @ $58 ($6960) Return = ($6960 - $6000) / $6000 * 100 = 16%

Ich versuche, dies im Code zu implementieren und muss eine generische Formel/einen Algorithmus finden, der jeden Fall abdecken würde.

BEARBEITEN:

Das habe ich mir vielleicht vorher überlegt...

Nur den Wert des Kontos bei jeder Transaktion zu verfolgen und am Ende den Endbetrag zu berechnen, kann mich zur Antwort bringen. Zum Beispiel: Der Endwert nach allen Aktiengeschäften beträgt 7610 $. Deshalb:

Return = (7610-6000)/6000 * 100 = 26.8%

Vielleicht gibt es eine andere fortgeschrittene Renditekennzahl, die mir nicht bekannt ist, aber dies scheint mir die offensichtliche Lösung zu sein.

Antworten (1)

Wenn Sie die FIFO-Buchhaltung (first in, first out) verwenden, müssen Sie die Transaktionen im Allgemeinen basierend auf der Anzahl der Aktien abgleichen.

In Ihrem Beispiel hatten Sie zu Beginn von Tag 6 zwei Lots mit Aktien, 100 @ 50 und 10 @ 52. An diesem Tag haben Sie 50 Aktien verkauft, und mit FIFO haben Sie 50 Aktien des ersten Lots verkauft. Dies lässt Sie mit 50 @ 50 und 10 @ 52 und einem steuerpflichtigen Kapitalgewinn auf die 50 verkauften Anteile zurück.

Beachten Sie, dass Provisionen, die beim Kauf der Anteile anfallen, Ihre Basis erhöhen und Provisionen, die beim Verkauf der Anteile anfallen, Ihren Erlös verringern. Wenn Sie also 10 US-Dollar pro Trade ausgegeben haben, betrug Ihre Basis für das 100 @ 50-Los 5010 US-Dollar, und der Erlös aus Ihrem 50 @ 60-Verkauf betrug 2990 US-Dollar. In diesem Beispiel haben Sie die Hälfte des Loses verkauft, also war Ihre Basis für den Verkauf die Hälfte von 5010 $ oder 2505 $, also beträgt Ihr Kapitalgewinn 2990 $ - 2505 = 485 $.

Die von Ihnen beschriebenen Verkäufe sind auch "Waschverkäufe", da Sie Lagerbestände verkauft und innerhalb von 30 Tagen einen gleichwertigen Lagerbestand zurückgekauft haben. Im Allgemeinen ist dies nur relevant, wenn bei einem der Verkäufe ein Verlust erzielt wurde, aber Sie müssen dies in Ihrem Code berücksichtigen. Sie können die Definition von Waschverkauf nachschlagen, es wird komplex.

Wenn Sie Code schreiben, um dies in einer beliebigen allgemeinen Situation zu handhaben, müssen Sie auch Aktiensplits, Spin-Offs, Fusionen usw. handhaben, die die Anzahl Ihrer Aktien und ihre Kostenbasis ändern. Ich habe dies selbst implementiert und ungefähr 25-30 benutzerdefinierte Routinen geschrieben, eine für jede Art von Transaktion, auf die ich gestoßen bin. Die Struktur dieser Deals ist nur durch die Vorstellungskraft von Investmentbankern begrenzt, daher denke ich, dass es unmöglich ist, einen einzigen generischen Algorithmus zu schreiben, der sie alle handhabt, stattdessen habe ich einen Rahmen, den ich jedes Quartal aktualisiere, wenn neue Transaktionen stattfinden.