HeikoH: Kredit berechnen mit PHP

Hallo an Alle,

ich möchte eine Kreditrate mit einem PHP Script berechnen, doch meine Mathekenntnisse habe mich verlassen.
Im Excel gibt es z.B. eine RMZ Funktion welche mir bei der Berechnung hilft.

Frage: Gibt es bei PHP eine ähnliche Funktion oder kann mir bei einer Formelerstellung jemand auf die Sprünge helfen?

Danke schön im Voraus

HeikoH

  1. Hallo HeikoH,

    was willst du genau? Eine Kredit- Monatsrate berechnen?

    Also du gibst die Kreditsumme, Laufzeit, Zins, Kosten usw. an und willst dann als Antwort haben: Macht xxx EUR im Monat?

    1. Hallo Kalle und alle anderen,

      genauso, ich möchte eine Monatsrate berechnen:

      $ks = 1000; // Kreditsumme in EUR
      $lz = 36;   // Laufzeit in Monate
      $zs = 10;   // Zins in Prozent

      $monatlRate = " meine Frage der Formel"

      So sollte es in etwa aussehen, nur leider sind meine Mathekenntnisse diesbezüglich begrenzt.

      Viele Grüsse
      HeikoH

      1. Hello,

        genauso, ich möchte eine Monatsrate berechnen:

        $ks = 1000; // Kreditsumme in EUR
        $lz = 36;   // Laufzeit in Monate
        $zs = 10;   // Zins in Prozent

        $monatlRate = " meine Frage der Formel"

        Man könnte da ja eine gute Iteration aufbauen.

        Da wären dann aber noch mehr Rahmenbedingugnen erforderlich:

        Mit vieviel Tagen wird das Jahr gerechnet?
        Mit vieviel Tagen wird der Monat gerechnet?
        Wann wird die erste Rate fällig?
        Wann werden die Zinsen fällig?
        Wann werden die Zinsen der Schuldsumme zugeschlagen?
        Rechnet man da mit monatlicher Verzinsung?
        Wird der jährlich effektive oder der nominelle Zinssatz angegeben?

        Man kann mit ca. fünf bis zehn Iterationen zum Ziel kommen. Die Auflösung einr komplexen Formel hierfür würde wahrscheinlich mehr Rechenpower kosten.

        Also angenommen,

        Schuldsumme 10000
          Zinssatz       14% jährlich nominal
          Ratenzahl      36
          Zinsen werden monatlich der Schuldsumme zugeschlagen
          Monate werden alle mit 30 Tagen berechnet
          Erste Rate nach dem ersten Monat

        dann hat man

        nach Monat
          1    10000 + 0.14/12*10000 - Rate   ==> 10000 * (1+0.14/12) - Rate
          2    (10000 * (1+0.14/12) - Rate) * (1+0.14/12) - Rate
                ==> 10000 * (1+0.14/12)² - Rate*(2+0.14/12)
          3    (10000 * (1+0.14/12)² - Rate*(2+0.14/12)) * (1+0.14/12) - Rate
                ==> 10000 * (1+0.14/12)³ - Rate*(3+0.14/12)
          ...

        sehe ich das richtig?

        Das kann man dann umkehren und daraus die Kapitalsumme abschätzen, die eigentlich zurückgeführt wird. Die benutz man dann zur Ermittlund der Einstiegsrate und lässt die Funktion wieder von vorne mit der originalen Auszahlungsssumme laufen. Je nachdem, ob man dann am Ende > 0, < 0 oder gar ==0 herausbekommt, mus man die Rate vergrößern, verkleinern oder abbrechen.

        Man muss aber darauf achten, dass das Increment/Dekrement der Rate von einem Rechenversuch zum nächsten nicht kleiner 0.01 (kleinste Währungsstückelung) wird und monatlich darauf gerundet wird. Denn das tut die Bank auch. Insofern bringt eine Iteration ohnehin die wirklichkeitsgetreuere  Lösung.

        Hoffe jetzt, dass ich nicht selber einen Denkfehler drinstecken habe. Ist bei mir auch "verdamp lang her".

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hallo Tom,

          $ks = 1000; // Kreditsumme in EUR
          $lz = 36;   // Laufzeit in Monate
          $zs = 10;   // Zins in Prozent

          $monatlRate = " meine Frage der Formel"

          nur diese Formel, mehr nicht.

          Rechnet man da mit monatlicher Verzinsung?
          Wird der jährlich effektive oder der nominelle Zinssatz angegeben?

          Nicht so kompliziert.

          Schuldsumme 10000
            Zinssatz       14% jährlich nominal
            Ratenzahl      36
            Zinsen werden monatlich der Schuldsumme zugeschlagen
            Monate werden alle mit 30 Tagen berechnet
            Erste Rate nach dem ersten Monat

          dann hat man

          nach Monat
            1    10000 + 0.14/12*10000 - Rate   ==> 10000 * (1+0.14/12) - Rate
            2    (10000 * (1+0.14/12) - Rate) * (1+0.14/12) - Rate
                  ==> 10000 * (1+0.14/12)² - Rate*(2+0.14/12)
            3    (10000 * (1+0.14/12)² - Rate*(2+0.14/12)) * (1+0.14/12) - Rate
                  ==> 10000 * (1+0.14/12)³ - Rate*(3+0.14/12)
            ...

          Weiss nich, es muss 341,78 rauskommen (laut Excel).
          Wieviel sind es bei Dir?

          Heiko

          1. Hello,

            Hallo Tom,

            $ks = 1000; // Kreditsumme in EUR
            $lz = 36;   // Laufzeit in Monate
            $zs = 10;   // Zins in Prozent

            $monatlRate = " meine Frage der Formel"

            nur diese Formel, mehr nicht.

            Wie meisnt Du das?
            Du willst im Selfraum eine Formel "abstauben" und weigerst Dich sogar, die Funktionsweise zu verstehen? Da sehe ich wenig Chance für Dich, eine schnelle Antwort zu bekommen ;-)

            Rechnet man da mit monatlicher Verzinsung?
            Wird der jährlich effektive oder der nominelle Zinssatz angegeben?

            Nicht so kompliziert.

            Nur so kompliziert. Viellicht kann man die Mathematik dabei etwas auffrischen. Unter anderem bin ich auch deshalb so gerne hier, weil es da Leute gibt, von ich sowas nochmal wieder lernen kann. Die Schule ist eben doch schon zu lange her.

            Schuldsumme 10000
              Zinssatz       14% jährlich nominal
              Ratenzahl      36
              Zinsen werden monatlich der Schuldsumme zugeschlagen
              Monate werden alle mit 30 Tagen berechnet
              Erste Rate nach dem ersten Monat

            dann hat man

            nach Monat
              1    10000 + 0.14/12*10000 - Rate   ==> 10000 * (1+0.14/12) - Rate
              2    (10000 * (1+0.14/12) - Rate) * (1+0.14/12) - Rate
                    ==> 10000 * (1+0.14/12)² - Rate*(2+0.14/12)
              3    (10000 * (1+0.14/12)² - Rate*(2+0.14/12)) * (1+0.14/12) - Rate
                    ==> 10000 * (1+0.14/12)³ - Rate*(3+0.14/12)
              ...
            Weiss nich, es muss 341,78 rauskommen (laut Excel).
            Wieviel sind es bei Dir?

            Ich habe die Iteration nicht fertig gemacht. Ich dachte, dass Du das mal versuchen willst?

            Ich habe mich da oben wohl sowieso geirrt beim Ausmultiplizieren und wieder zusammenfassen, oder?

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Hallo Tom,

              Wie meisnt Du das?
              Du willst im Selfraum eine Formel "abstauben" und weigerst Dich sogar, die Funktionsweise zu verstehen? Da sehe ich wenig Chance für Dich, eine schnelle Antwort zu bekommen ;-)

              So soll es nicht sein. Ich verstehe es besser anhand eines Beispiels.

              Nur so kompliziert. Viellicht kann man die Mathematik dabei etwas auffrischen. Unter anderem bin ich auch deshalb so gerne hier, weil es da Leute gibt, von ich sowas nochmal wieder lernen kann. Die Schule ist eben doch schon zu lange her.

              So wie ich

              Ich habe die Iteration nicht fertig gemacht. Ich dachte, dass Du das mal versuchen willst?

              Dann muss ich von vorn anfangen. Der Befriff Iteration sagt mir nichts, ich habe nur die 10. Klasse gemacht (und das ist 20 Jahre her).

              Ich habe mich da oben wohl sowieso geirrt beim Ausmultiplizieren und wieder zusammenfassen, oder?

              Es war ein wenig viel für mich, aber ich danke Dir sehr.
              Es würde mich freuen wenn Du mich ein wenig noch aufklärst.
              Aber bitte mit einfachen Worten.

              HeikoH

              1. Hello,

                Ich habe die Iteration nicht fertig gemacht. Ich dachte, dass Du das mal versuchen willst?
                Dann muss ich von vorn anfangen. Der Befriff Iteration sagt mir nichts, ich habe nur die 10. Klasse gemacht (und das ist 20 Jahre her).

                Iteration ist die möglichst konvergente Annäherung an den gesuchten Wert durch Proberechnung. Konvergenz ist das Gegenteil von Divergenz und bedeutet, dass man sich eben dem Wert mit jeder Proberechnung annähert und nicht das Gegenteil. Also ist "konvergente Annäherung" eigentlich doppelt gemoppelt.

                Die Überlegung mit der Formel galt der Abschätzung des ersten Annahmewertes für die Rate. Man schätzt einfach das gesamte zurückzuführende Kapital ab und nimmt dann nur eine einfache teilung durch die Anzahl der zu lesitenden Raten vor, um die Rate zu ermitteln.

                mit dieser Rate steigt man dann in die Berechnungsschleife nach der ersten Formel ein, und schaut, was nach der vorgegeben Anzahl von Raten übrig bleibt. Ist es zuviel, muss die Rate erhöht werden, ist das Ergebnis kleiner 0, muss sie eben verringert werden. Der Trick an einer guten Iteration ist eigentlich die Wahl eines möglichst passenden Startwertes UND einer schlau gewählten Formel für das Incrementes/Decrementes. Zweiteres ist eigentlich noch viel wichtiger.

                Wenn also der Fehler am Ende 10% beträgt, also nach der 36. Rate noch 1000 übrig sind, dann könnte man jetzt die Rate auch um 10% erhöhen, was aber leicht voraussehbar zu einer Überzahlung (alsoe negativem Endwert führen wird).

                Bei diesen Zinsaufgaben hat sich als Dekrement/Increment die Wurzel des Fehlers bewährt.

                Die Abweichung beträgt 0.1 (10%) dann müsste die Rate also mit sqrt(1.1) verändet werden.
                Wenn jetzt als nächstes ein negativer Betrag rauskommt, ist der Fehler z.B  -0.05
                Dann müsste die Rate ja verringert werden, und da bietet sich sqrt(0.95) als Faktor an.

                Du müsstest also versuchen, dass nun in eine Funktion zu gießen, die den Restwert ermittelt und eine Funktion, die den Faktor für die neue Rate der nächsten Proberechnung bestimmt.

                Und dann darauf achten, dass die Fehler eben immer kleiner werden, und nicht größer.

                Pseudocode:

                Kapital  = 10000

                Restwert = Kapitel

                sooft Raten gezahlt werden sollen >>
                    Restwert = Restwert * (1+Zins_decimal/12) - Rate
                 <<Rückgabe Restwert

                Faktor = sqrt(Kapital/Restwert);

                Rate = Rate * Faktor;

                und die obere Schleife nochmal.

                Das ganze solange, wie der Betrag der Abweichung von einem zum nächsten Durchlauf immer
                  kleiner wird.

                Harzliche Grüße aus http://www.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                1. Hallo Tom,

                  noch einmal vielen Dank für Deine Erklärungen.
                  Es hat ein wenig gedauert bis ich mich melde, aber ich musste das erst mal verarbeiten (in meinem Kopf reinbekommen).
                  Jetzt verstehe ich auch warum es so kompliziert sein muss.
                  Aber die grösste Aufgabe steht noch bevor.
                  Das ganze in einem PHP Script verpacken (und immer fleissig mit dem Ergebniss aus Excel vergleichen)!
                  Sicherlich werden noch einige Fragen auftauchen, aber dazu wenn die Zeit reif ist.

                  Also noch mal vielen Dank

                  HeikoH