Ich bin Programmierer und brauche eine Formel zur Berechnung des Gesamt-ROI [Duplikat]

Ich programmiere eine Web-App, um die Performance meiner Hedgefonds zu verfolgen. Ich möchte meinen Gesamt-ROI für alle Zeiten ermitteln.

Wenn ich ein Anfangsguthaben und mein aktuelles Guthaben hatte, ist es einfach, den ROI zu finden. Zum Beispiel ((aktuelles Guthaben / Anfangsguthaben) * 100), um den Prozentsatz zu erhalten.

Wo ich Schwierigkeiten habe, ist die Tatsache, dass es jede Woche Belastungen/Gutschriften auf dem Konto gibt.

Wie kann ich also einen lebenslangen ROI genau berechnen, wenn ich jede Woche Gelder hinzufüge/entferne?

Hier ist ein Beispiel für einen Wochenbericht.

9/9/2013-9/13/2013 : 
beginning balance = 25000 : 
Profit/Loss in % = 16.45 : 
Gross Profit/Loss = 4,112.72 : 
Debit/Credit = -2000 : 
New Balance 27,114

Stellen Sie sich vor, die nächsten 9 Wochen sehen ähnlich aus mit schwankenden Gewinn-/Verlustprozentsätzen (wöchentliche Roi's).

Kann mir einer von euch Genies eine Formel geben, wie ich genau feststellen kann, wie gut der Hedgefonds-Manager bis heute gearbeitet hat, unabhängig davon, wie viele Wochen ich daran beteiligt war? Ich gehe von einer Art wöchentlicher Aufzinsung aus.

BEARBEITEN: Also habe ich eine Formel gefunden, die ich für nützlich halte, und Daten im Wert von 4 Wochen eingefügt

    25000((1+i)^4) - 4000((1+i)^3) - 300((1+i)^2) - 1500((1+i)) = 32318.63

Wie könnte ich nach 'i' auflösen?

Sie haben einen Hedgefonds, der nur 25.000 $ akzeptiert und wöchentliche Einzahlungen/Auszahlungen erlaubt?
Lol, nein, es wird in ungefähr 2 Monaten ein Hedgefonds sein, im Moment ist es nur mein Bruder, der seit ungefähr 10 Jahren handelt und mir auf Anfrage Schecks schickt ;)
Ich sehe deine Bearbeitung. Hat der Link zu einer ähnlichen Frage nicht geholfen?
Ich schlage vor, Sie verwenden geldgewichtete oder kontinuierlich zusammengesetzte (logarithmische) Renditen - im Grunde dasselbe - wie hier erläutert , um die periodischen Renditen zu berechnen - in Ihrem Fall anscheinend wöchentlich. (Dafür ist ein Root-Solver-Algorithmus erforderlich.) Akkumulieren Sie dann die wöchentlichen Renditen für eine jährliche Rendite auf die hier gezeigte Weise . Ich würde eine vollständigere Antwort hinzufügen, aber die Frage wurde als doppelt markiert und Antworten können jetzt nicht gepostet werden.
Danke Chris. Ich habe dafür tatsächlich einen Root-Solver-Algorithmus programmiert :) Für mein obiges Beispiel bekomme ich 0,098, wenn ich nach i löse. Ich nehme an, das (9,8%) ist der Wochendurchschnitt? Um also den Gesamt-ROI zu erhalten, müsste ich diese Zahl einfach mit der Anzahl der Iterationen (Wochen) multiplizieren? Oder übersehe ich ein großes Puzzleteil?
Hallo. Ich würde die Geldgewichtsrendite nach IRR für die gesamten 4 Wochen berechnen, indem 25000/(1 + x)^0 - 4000/(1 + x)^0.25 - 300/(1 + x)^0.5 - 1500/(1 + x)^0.75 = 32318.63/(1 + x)^1ich 60,34 % erhalte. Für wöchentlich ist das (1 + 0,6034)^(1/4) - 1 = 12,53 %, was dem Lösen von entspricht 25000/(1 + x)^0 - 4000/(1 + x)^1 - 300/(1 + x)^2 - 1500/(1 + x)^3 = 32318.63/(1 + x)^4. Hoffentlich hilft das.
Entschuldigung, mit meinen Methoden habe ich tatsächlich 0,12529 erhalten, was 12,53% entspricht. Meine Formel funktioniert also in dieser Hinsicht, um die wöchentlichen Ergebnisse zu erhalten. Gibt es einen schnellen Weg, um rückwärts zu gehen und die Gesamtergebnisse zu erhalten, in diesem Fall für insgesamt 4 Wochen, wenn ich bereits weiß, dass 12,53 % mein wöchentlicher durchschnittlicher ROI ist. Ihre obige Formel ist großartig, und ich verstehe, wie, ich muss sie nur in ein Computerprogramm einfügen, also wären alle Verknüpfungen großartig. Vielen Dank für deine Hilfe. Ich arbeite jetzt seit 3 ​​Tagen daran und habe viel gelernt, bin aber immer noch nicht dort angekommen, wo ich unbedingt sein möchte ;)
Egal, ich habe gerade genommen (1,1253 ^ (Anzahl der Iterationen = '4') - 1) * 100 und das entspricht 60,34 %, was, wie Sie erwähnt haben, der ROI für die gesamten 4 Wochen ist. Wenn ich richtig liege, dann möchte ich Ihnen so sehr danken, dass Sie mir geholfen haben, hierher zu kommen. Ich bin sicher, Sie haben mir ein paar weitere Tage des Haareausreißens erspart. Wenn Sie das nächste Mal in Columbus, Ohio sind, spendiere ich Ihnen ein Bier!

Antworten (3)

Kapitalrendite (%) = (Nettogewinn / Investition) × 100

^ Eine viel klarere Formel, auf der Sie Ihre Berechnungen aufbauen können. Jetzt müssen Sie nur noch Ihren Nettogewinn für jede Woche berechnen, alles zusammenzählen, dasselbe für Investitionen tun, und Sie haben Ihre Antwort.

Diese Formel funktioniert, wenn ich nicht ständig wöchentlich Geld hinzufüge/abhebe. Es sei denn, ich vermisse etwas?

Sie haben einen ungleichen Zahlungsstrom, der in variablen Zeitabständen auftritt. Und Sie kennen die Formel für den ROI. Was Sie zu bestimmen versuchen, ist, welcher Zinssatz für den gesamten Zeitraum den kumulierten Wert des Fonds am besten widerspiegelt, und Sie haben die Formel zur Berechnung jedes ...

Time    Amount  Effect
4        25000  25000((1+i)^4) #contribution due to first deposit
3         4000  4000((1+i)^3) #contribution due to second deposit
2         -300  -300((1+i)^2) #contribution due to third (withdrawal)
1         1500  1500((1+i)^1) #contribution due to fourth deposit

Sie brauchen eine iterative Lösung. Sie müssen mit einer Schätzung für Ihren Zinssatz i beginnen und dann über Ihren Einzahlungsvektor iterieren, um den Fonds mit dem geschätzten Zinssatz neu zu berechnen. Sie müssen Ihren geschätzten Zinssatz während der Iteration anpassen, und der Betrag, um den Sie Ihren geschätzten Zinssatz anpassen, wirkt sich darauf aus, wie schnell Sie zu einer Lösung kommen.

Der Betrag, um den Sie Ihre geschätzte Rate ändern, bestimmt, wie schnell Sie sich einer Lösung nähern (tatsächlich, ob Sie sich einer Lösung nähern). Der allgemeine Algorithmus unten wird Ihnen den Einstieg erleichtern. Sie müssen an der Anpassungsberechnung in der Schätzfunktion basteln. Die Komplikation besteht darin, dass die ROI-Berechnung nicht linear ist, sodass Sie etwas benötigen, das sich nicht linear und in einer ähnlichen Reihenfolge wie der Berechnungswert anpasst. Meine Beispielschätzfunktion ist linear, also müssen Sie die Funktion verfeinern.

Versuchen Sie eine iterative Lösung. Wählen Sie einen Wert für i und iterieren Sie

intialize_fund
{
    value = 32318.63

    //initialize your deposit/withdrawal vector/array
    deposits[]
    deposits[0] = +25000
    deposits[1] =  +4000
    deposits[2] =   -300
    deposits[3] =  +1500
    duration = 5  //number of periods
}

calcval( deposits[], rate, duration )
{
    accum = 0.0
    for period=0; period<duration; ++period)
    {
        accum = accum * (1+rate)
        if( exists deposits[period] ) accum += deposits[period]
    }
    return accum
}

#you will need to tinker with this until you get a function that
#converges
#converges quickly
guessrate( actual, calculated, rate )
{
    adjustby = abs(actual - calculated) / actual
    if(calculated > actual) rate = rate * (1.0 - adjustby)
    else rate = rate * (1.0 + adjustby)
    return rate
}

guessRoi
{
    guess = 0.01 #initial guess
    tryVal = calcval( guess, changes, duration )
    while( abs(actual - tryVal) > .01 )
    {
        rate = guessrate( actual, tryVal, rate )
        tryVal = calcval( deposits, rate, duration )
    }
    #guess has calculated rate, i
    #tryRoi should have converged to actual accumulation
}

Was zum Teufel ist ein Einzahlungsvektor?

Aber ja, Sie müssen mit 2 (ZWEI) Schätzungen für i beginnen - eine, von der Sie wissen, dass sie zu hoch ist, und eine, von der Sie wissen, dass sie zu niedrig ist. Probieren Sie dann mit dem Mittelpunkt aus, ob er zu hoch oder zu niedrig ist. Wenn zu hoch, ist Ihr neuer Bereich die untere Hälfte - andernfalls die obere Hälfte. Wiederholen Sie dies nun mit diesem neuen kleineren Bereich immer wieder.

Die Funktion ist nichtlinear, aber glatt und brav, sodass Sie sich keine Gedanken über die Konvergenz machen müssen. Halbieren Sie einfach das Intervall bei jeder Iteration, bis Sie so nah dran sind, wie Sie es möchten.

Die Excel-Kohlesuchfunktion erledigt dies für Sie ...