Post by Klaus ReiserPost by Werner HoltfreterAusgezeichnet, eine passende Funktion ist ideal.
Sie funktioniert so weit, bis auf ein kleines Manko. Du stoppst
anscheinend bei einer Null in der Kurs-Spalte, so dass sich die Rendite
bei Rückfluss der Investition in Zeile 6 nicht mehr berechnen lässt
Wenn man die Formel weiter runter zieht, als Werte eingegeben sind
würden irgendwelche Sachen angezeigt (Fehlermeldungen oder so ;-) ).
Das vermeide ich indem die Funktion nur durchlaufen wird solange in der
Kursspalte auch Werte stehen.
Wäre es machbar (und sogar logischer) wenn auch bei Verkauf der Betrag
in der Kurszeile stehen würde (denn das ist ja an dem Tag der Kurs)
Im Beispiel müsste die 1100 also einfach nach "B". Oder wird dann eine
falsche Rendite berechnet?
Dadurch wird die gleiche Rendite berechnet, denn A und B wird ja addiert.
Es widerspricht aber dem logischen Aufbau der Tabelle. Dazu mehr ganz
unten.
Post by Klaus ReiserWenn man diese Zeilen entfernt bzw. vor jede REM schreibt dann stoppt
es nicht.
REM if VerkWert = 0 then
REM IRRKR = ""
REM exit function
REM end if
Oder man müsste prüfen ob Spalte A und Spalte B leer sind und dann die
Funktion stoppen.
Entweder das oder aber allgemeingültiger, weil ja auch Datensätze
vorhanden sein können, die keine gültige Rendite ergeben: Die Funktion
liefert Error in die Zelle, wie jede andere Funktion auch. Ein
Makrofehler oder ein Programmabsturz, wie mehrfach erlebt, sollte
möglichst nicht erfolgen.
Post by Klaus Reiserhttp://www.ooowiki.de/StarBasic und die Links dort
http://www.dannenhoefer.de/faqstarbasic/index.html
Danke, sobald ich Zeit finde, werde ich lesen.
Post by Klaus ReiserPost by Werner HoltfreterÜbrigens: Mit nur einem weiteren optionalen Parameter für =IRRKR ließen
sich auch ganz leicht gleitende Renditen über beliebige Zeiträume
ermitteln. Die optionale Zelle müsste dann vom ersten Wert des
Bereiches *abgezogen* werden.
Immer diese Sonderwünsche ;-)
Ganz durchschaut hab ich deinen Wunsch noch nicht. Ist diese
Zusatzberechnung auch in allen Zeilen nötig oder nur in der letzten
Zeile und in welchen Zellen soll die Ausgabe erfolgen?
In jeder Zelle, die Funktion soll ja gleich bleiben, damit man sie
herunterkopieren kann.
Ich hole mal weiter aus.
Du kennst sicher den Begriff des gleitenden Durchschnitts. Es wird z.B.
immer über die letzten 10 Werte der Durchschnitt ermittelt.
Man muss aber nicht zwangsläufig die *letzten* 10 Werte nehmen, sondern
kann über jede 10er-Sequenz den Durchschnitt ermitteln. Denke dir für
Durchschnitt nun Rendite.
=IRRKR(A$1:A2;B2)
-^-
Diese Funktion rufen wir bisher mit einer festen Startzelle auf, so dass
die Zeit, über die die Rendite berechnet wird, immer länger wird. Das ist
oft sinnvoll, insbesondere weil dadurch der Basiseffekt entfällt.
Will man aber einen gleitenden Durchschnitt mit fester Zeitdauer, also
z.B. 12 Perioden, also ein Jahr, dann muss Start und Endwert wandern.
Was berechnen wir eigentlich?
Die Funktion =IRR bzw. deutsch =IKV zinst jeden Einzelwert der Reihe mit
einem Schätzwert des Zinses zum Endtermin auf und addiert sie dort
vorzeichenbehaftet.
Die Rechnung wird iterativ wiederholt, bis ein Zins gefunden ist, bei dem
die Summe aller aufgezinsten Einzelbeträge Null ergibt. (Übrigens kann
=IRR auch zum Starttermin abzinsen oder zu einem beliebigen Termin
innerhalb oder außerhalb der Zeitreihe hochrechnen - das Ergebnis bleibt
immer gleich.)
Praktische Anwendung ist eine Investition, in was auch immer, die im
Laufe der Zeit wechselnde Erträge und/oder weitere Kosten verursacht. Am
Ende wird das Investitionsgut verkauft oder verschrottet. Im letzteren
Fall gibt es keinen Verkaufserlös, statt dessen muss die Summe der
verzinsten Erträge die Investition rechtfertigen.
Wenn man jedes Vorzeichen der Zahlungsreihe ändert, erfolgt die Rechnung
aus der Perspektive des Darlehensnehmers, z.B. des Häuslebauers. Durch
diesen Vorzeichen- und Perspektivwechsel muss der errechnete Zins
natürlich unverändert bleiben.
Es sollte nun klar sein, dass mindestens ein Wert der Reihe ein vom Rest
abweichendes Vorzeichen haben muss, andernfalls gäbe es keinen Rückfluss
des Geldes und der Zins geht gegen plus oder minus unendlich. So etwas
geht nur in *Staats*haushalten - naja, zumindest bis zur nächsten
Währungsreform.
Zurück zum gleitenden Durchschnitt bzw. zur gleitenden Rendite. Dabei
steigt man mittendrin in die Tabelle ein. Stellvertretend für die
Anfangsinvestition muss man dann den aktuellen Kurswert der Investition
nehmen. Daher die Berücksichtigung des Kurses zusätzlich ersten Wert der
Reihe. Hierbei hatte ich aber noch einen Denkfehler:
In der Zeile des Kaufs erscheint der Kaufpreis und der daraus
resultierende Kurs in der gleichen Zeile. Damit der Kaufpreis nicht
doppelt gewertet wird, muss die Zelle der Kurszelle *darüber*
berücksichtigt werden. Das ist aber keine Frage des Makros sondern des
Aufrufs der Funktion. Beim Anfangs- und beim Endwert soll einheitlich
addiert werden. Der Anwender der Formel muss dann die Vorzeichen im
Aufruf setzen, um die Perspektive des Investors oder des Kreditnehmers
abzubilden.
Bisher hatten wir ein L-Feld berücksichtigt, neu wäre nun ein
aufgebogenes, liegendes U:
| A B C
--+---------------------
1 | E/A Kurs Rendite
2 |
3 |
4 | #
5 | #
6 | #
8 | #
9 | # # =IRRKR(A5:A9;B9;-B4)
10 |
11 |
12 |
In allgemeiner Schreibweise: =IRRKR(Feldanfang:Feldende;X;Y)
wobei X zum letzten und Y zum ersten Wert des Feldes addiert werden soll,
bevor das Feld an =IRR übergeben wird. Y ist optional und steht an
letzter Stelle, damit es einfach weggelassen werden kann.
Den umgekehrten Fall haben wir ja schon berücksichtigt: Da die Berechnung
erfolgt, *bevor* der Verkauf des Investionsguts erfolgt ist, muss der
negative Kurswert als Verkaufswert berücksichtigt werden.
Vielleicht wird nun auch klar, dass man die Spalte "Einnahmen/Ausgaben"
und die Spalte "Kurs" nicht vermischen sollte. Erstere enthält
tatsächliche Zahlungen, letztere nur Kurse, die für die Renditeberechnung
nur hilfsweise berücksichtigt werden.
Wenn die neue Funktion getestet und bewährt ist, sollte man die
optionalen Parameter zur Ergänzung der vorhandenen Funktion =IRR den
Entwicklern vorschlagen. Dann hat Libre/OpenOffice mal die Nase vorn.
--
Gruß Werner