{ "cells": [ { "cell_type": "markdown", "id": "ac35c4d4-cba5-4602-9b90-8ec3ecc4a370", "metadata": {}, "source": [ "## Die Macht der Schleifen!\n", "\n", "Mit Schleifen und Verzweigungen lassen sich bereits sehr komplexe Abläufe simulieren. Sie ersparen auch oft das Suchen und Entwickeln von analytischen Lösungen (Formeln).\n" ] }, { "cell_type": "markdown", "id": "ace902fc-39de-44e0-9d6a-5ef604d0270e", "metadata": { "tags": [] }, "source": [ "#### Unsere Aufgabe:\n", "\n", "Hurra, Sie haben 1000000 CHF in einer Lotterie gewonnen -- ist Ihr Leben nun finanziert? \n", "\n", "Genauer, ist dieses Startkapital ausreichend sich ein sparsames Leben ganz zu finanzieren? Sie haben gehört, dass bei Geldanlagen der Zinseszins wie ein Turbo der Geldvermehrung wirken soll. Sie haben aber auch gehöhrt, dass sich die Kaufkraft des Geldes durch die Inflation jedes Jahr verringern soll. Was überwiegt?\n", "\n", "Um hier eine Antwort zu bekommen, entschliessen Sie sich das Ganze zu simulieren.\n", "Die Simulation vereinfacht sich wenn man nur in Jahresschritten rechnet, das heisst zu Beginn des Jahres entnehmen Sie den ganzen Jahresbedarf vom Kapital und das Restkapital wird zum Jahresende um seine Rendite erhöht. \n", "Bei Lebenserwartung, Inflation und möglicher Rendite des Kapitals ist eine genaue Prognose schwierig.\n", "Glaubt man Experten, so können Sie durchaus mit einer Lebenserwartung von 100 Jahren rechnen. Bei einer Investition in den SMI scheint langfristing eine Redite von 4% (nach Steuern und Kosten) möglich und in der Vergangenheit betrug die Inflation etwa 2 % im Jahr.\n", "\n", "\n", "Für alle Grössen und Annahmen definieren wir uns je eine Variable.\n", "\n", "```python\n", "alter = 20 # aktuelles Alter\n", "max_alter = 100 # die Lebenserwartung\n", "kapital = 1000000 # der Lotteriegewinn\n", "rendite = 4 # jährliche Rendite (Zins) in Prozent\n", "inflation = 2 # jährliche Inflation in Prozent\n", "m_bedarf = 2500 # monatlicher finanzieller Bedarf\n", "```\n", "\n", "\n", " " ] }, { "cell_type": "markdown", "id": "d5e8595c-f662-467b-8c0a-8537875be32d", "metadata": {}, "source": [ "#### Schritt 1\n", "\n", "Da die gesamte Aufgabe doch sehr komplex ist, beginnen wir mit einer einfacheren Teilaufgabe.\n", "\n", "Wie würde sich Ihr Lotteriegewinn vermehren wenn Sie diesen Ihr ganzes Leben lang nicht antasten würden?" ] }, { "cell_type": "code", "execution_count": 4, "id": "42e14054-7098-49fe-aeeb-1ca6f70ad07b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Im Alter von 100 ist mein Kapital : 23049799.069873296\n" ] } ], "source": [ "alter = 20 # aktuelles Alter\n", "max_alter = 100 # die Lebenserwartung\n", "kapital = 1000000 # der Lotteriegewinn\n", "rendite = 4 # jährliche Rendite (Zins) in %\n", "\n", "# Nachfolgend die Simulation \n", "while ( alter < max_alter ) :\n", " kapital = kapital * ( 1 + rendite/100)\n", " alter = alter + 1\n", " \n", "print( \"Im Alter von\",alter ,\"ist mein Kapital :\", kapital) " ] }, { "cell_type": "markdown", "id": "7bdd46f9-2c2c-4007-b5df-d7baca63bb67", "metadata": {}, "source": [ "#### Schritt 2\n", "\n", "Eine weitere einfache Teilaufgabe ist, wie viel Geld benötigen Sie in Ihrem ganzen Leben bei konstanten Ausgaben?" ] }, { "cell_type": "code", "execution_count": 5, "id": "1ff06e5c-c590-4a56-866f-a76c8d15aacf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Bis zum 100. Geburtstag benötige ich: 2400000\n" ] } ], "source": [ "alter = 20 # aktuelles Alter\n", "max_alter = 100 # die Lebenserwartung\n", "m_bedarf = 2500 # der monatliche finanzielle Bedarf\n", "sum_bedarf = 0 # gesamter finanzieller Bedarf im Leben\n", "\n", "# Nachfolgend die Simulation \n", "while ( alter < max_alter ) :\n", " sum_bedarf = sum_bedarf + 12 * m_bedarf\n", " alter = alter + 1\n", " \n", "print(\" Bis zum 100. Geburtstag benötige ich:\", sum_bedarf)" ] }, { "cell_type": "markdown", "id": "1c62a39f-15c4-48c0-b8bb-90a384de73bb", "metadata": {}, "source": [ "### Schritt 3 \n", "\n", "Aber welche Rolle spielt nun die Inflation in dieser Rechnung? Inflation bedeutet, dass alles um die Inflation teurer wird! Entweder nehmen Sie in Kauf, dass Sie sich jedes Jahr weniger leisten können oder Sie erhöhen ihren Bedarf jedes Jahr um die Inflationsrate. Da 2500 CHF nicht allzu üppig sind, entschliessen Sie sich Ihren Bedarf jährlich anzupassen.\n", "\n", "Auf wieviel steigt nun Ihr gesamter Bedarf und auf wieviel der monatliche Bedarf wenn Sie die Kaufkraft erhalten wollen?\n", "\n", "Fromal ist dies zum Schritt 1 sehr ähnlich.\n", "\n" ] }, { "cell_type": "code", "execution_count": 6, "id": "0479fd9b-2aaf-46f3-b280-2e3762d25b96", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Bis zum 100. Geburtstag benötige ich: 5813158.734144585 bei einem monatlichen Bedarf von: 12188.597890240982\n" ] } ], "source": [ "alter = 20 # aktuelles Alter\n", "max_alter = 100 # die Lebenserwartung\n", "m_bedarf = 2500 # der monatl. finzielle Bedarf\n", "sum_bedarf = 0 # gesamter finanz. Bedarf im Leben\n", "infl = 2 # Inflation in %\n", "\n", "# Nachfolgend die Simulation\n", "while ( alter < max_alter ) :\n", " sum_bedarf = sum_bedarf + 12 * m_bedarf\n", " m_bedarf = m_bedarf * ( 1 + infl / 100 )\n", " alter = alter + 1\n", " \n", "print(\" Bis zum 100. Geburtstag benötige ich:\", sum_bedarf, \"bei einem monatlichen Bedarf von: \", m_bedarf )" ] }, { "cell_type": "markdown", "id": "16f4bf10-0fbc-4a4f-818b-0fff9bc00745", "metadata": {}, "source": [ "#### Schritt 4: Alles fügt sich zusammen.\n", "\n", "Sie legen ihren Lotteriegewinn an und entnehmen Ihren Bedarf. \n", "\n", "Sie rechnen weiterhin nur in Jahresschritten, das heisst zu Beginn des Jahres entnehmen Sie den ganzen Jahresbedarf vom Kapital und das Restkapital wird zum Jahresende um die Rendite erhöht.\n", "\n", "Sie müssen noch festlegen was Sie eigentlich berechnen wollen. Es gibt mehrere Möglichkeiten:\n", "\n", "1. Sie möchten wissen wie viel Kapital zu ihrem 100. Geburtstag noch vorhanden ist?\n", "\n", "2. Sie möchten wissen bis zu welchem Alter Sie sich finanzieren können?\n", "\n", "Da es auf negatives Kapital keine Zinsen gibt, simulieren Sie nur bis zu dem Alter bei welchem noch Ihr gesamter Jahresbedarf gedeckt ist.\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 7, "id": "10373756-4e77-4a3b-9c16-2d0e87889b4f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Im Alter von : 72 ist der monatl. Bedarf 7000.82046362045 bei einem Restkapital : 64022.29319177835\n" ] } ], "source": [ "alter = 20 # aktuelles Alter\n", "kapital = 1000000 # der Lotteriegewinn\n", "rendite = 4 # jährliche Rendite (Zins) in %\n", "m_bedarf = 2500 # der monatliche finzanielle Bedarf\n", "infl = 2 # Inflation in %\n", "\n", "\n", "# Nachfolgend die Simulation \n", "while ( kapital - (12 *m_bedarf) > 0 ) : \n", " kapital = kapital - (12 *m_bedarf)\n", " kapital = kapital * (1 + rendite/100)\n", " m_bedarf = m_bedarf * (1 + infl/100)\n", " alter = alter + 1 \n", "print( \"Im Alter von :\",alter , \" ist der monatl. Bedarf\",m_bedarf,\"bei einem Restkapital :\", kapital) " ] }, { "cell_type": "code", "execution_count": null, "id": "d35cbfd6-b29a-48d4-aa2d-91a673cdf557", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "9804ac1d-ab52-4e39-a1b6-09313c2597eb", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3.8 (standard)", "language": "python", "name": "python3.8" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.11" } }, "nbformat": 4, "nbformat_minor": 5 }