{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Kennsluefni þetta var samið af Valborgu Sturludóttur og er gefið út undir leyfi CC 3.0, heimilt er að afrita, nota, deila og vinna áfram með efnið ef vísað er í höfund, óheimilt er að hagnast á efninu. \n", "Kennsluefni þetta fylgir bókinni Python fyrir byrjendur - inngangur að forritun sem kom út í fyrstu útgáfu í ágúst 2022. \n", "Þetta er fyrsta útgáfan af þessari verkefnabók, gefin út í ágúst 2022." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Föll og útreikningar\n", "\n", "Áherslan í þessari vinnubók er að nota föll. Til þess notum útreikninga sem eru of flóknir til að gera í höndunum, útreikninga sem við viljum að tölvan geri fyrir okkur. Við viljum nota föll sem reikna út flóknar stærðfræðiformúlur án þess að skipta okkur of mikið af því hvað þær þýða. Við viljum bara setja tölur inn og fá tölur út. Þetta gerum við til þess að geta borið saman mismunandi leiðir til að ávaxta pening eða greiða niður lán.\n", "\n", "Gott er að skilja hvers vegna eitt lán með 7% vöxtum getur verið ódýrara yfir 40 ára tímabil heldur en öðruvísi lán á 1.5% vöxtum. Einnig er gott að átta sig á því að reikningur með 12 vaxtatímabil á ári getur samt gefið minna af sér en reikningur með 1 vaxtatímabil. \n", "\n", "Við ætlum fyrst að hugsa um vaxtareikning, því hann er kunnugari úr grunnskóla. \n", "Svo ætlum við að hugsa um lán, bæði húsnæðislán og skammtímalán.\n", "\n", "Rifjið upp hér wikibooks " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import math" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Búum okkur til föll fyrir vaxtareikning\n", "\n", "Byrjum á því að átta okkur á því hvað er verið að reikna. Næstu tvær formúlur snúa að einföldum útreikningi þar sem ekki er gert ráð fyrir að vextir leggist ofan á vextina okkar. Margir reikningar í bönkum eru svona, þar sem vextir leggjast inn á annan reikning og vaxa því ekki með reikningnum.
\n", "\n", "Athugið að vaxtaprósenta er fleytitala á bilinu 0-1 þar sem 1 væru 100% vextir.\n", "\n", "gróði = vaxtahlutfall * höfuðstóll * fjöldi ára
\n", "$g = v * h * n$

\n", "nýr höfuðstóll = Höfuðstóll + vaxtahlutfall * höfuðstóll * fjöldi ára
\n", "$nh = h + v * h * n$

\n", "\n", "##### Næstu formúlur sem við viljum skoða er hvernig á að reikna út gróða og innistæðu þegar vextir leggjast ofan á höfuðstól á milli vaxtatímabila á einu ári og eru því teknir með í reikninginn þegar á að reikna vexti á næsta tímabili.
\n", "\n", "gróði = Höfuðstóll * (1 + vaxtahlutfall/fjöldi vaxtatímabila)^(fjöldi vaxtatímabila) - Höfuðstóll
\n", "$g = h *(1 + \\frac{v}{f} )^f - h$

\n", "nýr höfuðstóll = Höfuðstóll * (1 + vaxtaprósenta/fjöldi vaxtatímabila)^fjöldi vaxtatímabila
\n", "$nh = h * (1 + \\frac{v}{f})^f$

\n", "\n", "\n", "##### Nú skoðum við þegar við fáum vaxtavexti yfir nokkur tímabil, köllum þau ár til einföldunar.\n", "\n", "gróði eftir árin = Höfuðstóll * (vaxtahlutfall/fjöldi vaxtatímabila)^(fjöldi vaxtatímabila * fjöldi ára) - Höfuðstóll
\n", "$g = h *(1 + \\frac{v}{f} )^{fn} - h$

\n", "nýr höfuðstóll eftir árin = Höfuðstóll*(1 + vaxtahlutfall/fjöldi vaxtatímabila)^fjöldi vaxtatímabila * fjöldi ára
\n", "$nh = h * (1 + \\frac{v}{f})^{fn}$

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Athugasemd um breytuheiti\n", "\n", "n   fyrir n mörg ár
\n", "v   fyrir hlutfall af vaxtaprósentu (tugabrot, við gerum ráð fyrir að búið sé að deila prósentunni með 100)
\n", "h   fyrir höfuðstól
\n", "nh   fyrir nýjan höfuðstól
\n", "f   fyrir fjölda tímabila
\n", "g   fyrir gróði
\n", "\n", "Þetta er gert til að kóðinn sé sem minnstur, og rugli ykkur ekki of mikið. Þið ættuð að sjá að röðin á viðföngunum inn í föllin eru í þeirri röð sem þau birtast í formúlunum" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# gerum þetta að föllum\n", "\n", "# byrjum á einföldu formúlunum\n", "def einfalt_grodi(v, h, n):\n", " return v * h * n\n", "\n", "def einfalt_nyr_hofudstoll(v, h, n):\n", " return h + v * h * n\n", "\n", "# nú vaxtavextir yfir eitt ár\n", "def vaxtavextir_eitt_ar_grodi(v, h, f):\n", " return h * (1 + v / f)**f - h\n", "\n", "def vaxtavextir_eitt_ar_nyr_hofudstoll(v, h, f):\n", " return h * ( 1 + v / f )**f\n", "\n", "# loks vaxtavextir yfir n ár\n", "\n", "def vaxtavextir_morg_ar_grodi(v, h, f, n):\n", " return h * ((1 + v / f)**(f * n)) - h\n", "\n", "def vaxtavextir_morg_ar_nyr_hofudstoll(v, h, f, n):\n", " return h * (1 + v / f)**(f * n)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Hvað setjum við inn?\n", "\n", "Nú erum við komin með helstu skilgreiningar, eina sem við þurfum að vita er í hvaða röð á að setja tölur inn í föllin svo að við fáum út vitræn svör.\n", "Takið einnig eftir að hér er algerlega treyst á að við fáum einungis tölur og 0 er ekki leyfilegt.\n", "Verkefni þessarar bókar er ekki að villuprófa neitt heldur æfa okkur í notkun falla og átta okkur á því hvernig úttakið okkar breytist miðað við það sem við setjum inn.\n", "\n", "Vonandi lærum við líka í leiðinni hvað er góð fjárfestingaleið.\n", "\n", "Hér eru viðmið sem eru viðeigandi fyrir hvern flokk fyrir sig, eðlilegt er að spara í nokkur ár, eðlilegt er að vaxtaprósenta sé milli 0.1% og 2.7% (fyrir okkar æfingu). Eðlilegt er að byrja með klinkið í vasanum eða mánaðarlaun. Óskagróði gæti verið fyrir gítar eða utanlandsferð og tímabil sem vextir eru reiknaðir eru oft niður í mánaðarlega." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Gerið prófanir\n", "Prófið nú og sjáið að reikningur með vaxtavöxtum endar með hærri ávöxtun eftir 5 ár heldur en sá sem fær bara vextina greidda meðfram.\n", "Prófið einnig og sjáið að 12% vextir skila sér í sama gróða þó að vaxtatímabilin séu fleiri.\n", "Gerið aðrar prófanir til þess að fullvissa ykkur um að þetta séu réttar formúlur." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# prófana sella\n", "vextir = 0.01\n", "vaxta_timabil = 3\n", "ar = 40\n", "hofudstoll = 40000\n", "\n", "tilfelli1_grodi = einfalt_grodi(vextir, hofudstoll, ar)\n", "tilfelli1_nyr_hofudstoll = einfalt_nyr_hofudstoll(vextir, hofudstoll, ar)\n", "\n", "# er þetta rétt reiknað?\n", "print(tilfelli1_nyr_hofudstoll - tilfelli1_grodi == hofudstoll)\n", "\n", "tilfelli2_grodi = vaxtavextir_morg_ar_grodi(vextir, hofudstoll, vaxta_timabil, ar)\n", "tilfelli2_nyr_hofudstoll = vaxtavextir_morg_ar_nyr_hofudstoll(vextir, hofudstoll, vaxta_timabil, ar)\n", "\n", "#hvort er meira?\n", "print(\"Engir vaxtavextir: \", tilfelli1_grodi+hofudstoll) \n", "print(\"Vaxtavextir: \", tilfelli2_grodi+hofudstoll)\n", "# hvernig er hægt að fá nýja höfuðstólinn í báðum tilfellum beint\n", "# ??\n", "\n", "# Prófið að breyta tölunum" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Einangun\n", "\n", "Við sjáum núna að það er ekki alltaf það verðmætasta að vita gróðann og höfuðstólinn, við viljum einnig fá að vita hvað það tekur langan tíma að fá einhverja niðurstöðu eða hversu háa ávöxtun þarf að fá til að ná einhverri niðurstöðu.\n", "\n", "Til þess þarf að snúa formúlunum á haus. Rifjið upp einangrun og logra til að átta ykkur á því sem er að gerast hér.\n", "\n", "##### Einföldu formúlurnar:
\n", "vaxtahlutfall = gróði / (höfuðstóll * tímabil)
\n", "$v = \\frac{g}{h*n}$

\n", "tímabil = gróði / (vaxtahlutfall * höfuðstóll)
\n", "$n = \\frac{g}{v*h}$

\n", "höfuðstóll = nýr höfuðstóll / (1 + vaxtahlutfall * tímabil)
\n", "$h = \\frac{nh}{1 + v * n}$

\n", "\n", "\n", "##### Vaxtavextir á einu ári, hér koma ögn flóknari reikningar:
\n", "\n", "vaxtahlutfall = fjöldi vaxtatímabila * ( nýr Höfuðstóll / Höfuðstól ) ^ (1 / fjöldi vaxtatímabila)
\n", "$v = f*((\\frac{nh}{h})^{\\frac{1}{f}}-1)$

\n", "Höfuðstóll = nýr Höfuðstóll / ((1 + vaxtahlutfall / fjöldi vaxtatímabila) ^ fjöldi vaxtatímabila)
\n", "$h = \\frac{nh}{(1 + v * f)^{f}}$

\n", "fjöldi vaxtatímabila verður ekki einangrað
\n", "\n", "##### Nú skoðum við þegar við fáum vaxtavexti yfir nokkur tímabil, köllum þau ár til einföldunar.
\n", "\n", "vaxtahlutfall = fjöldi vaxtatímabila * ((( nýr Höfuðstóll / Höfuðstól) ^ (1 / (fjöldi vaxtatímabila * ár)))-1)
\n", "$v = f*((\\frac{nh}{h})^{\\frac{1}{f*n}}-1)$

\n", "Höfuðstóll = (nýr Höfuðstóll / (1 + vaxtahlutfall / fjöldi vaxtatímabila) )^ (fjöldi vaxtatímabila * ár)
\n", "$h = \\frac{nh}{(1 + v * f)^{f*n}}$

\n", "ár = log(nýr Höfuðstóll / Höfuðstóll) / (fjöldi vaxtatímabila * log(1 + vaxtahlutfall / fjöldi vaxtatímabila))
\n", "$n = \\frac{log*(\\frac{nh}{h})}{(f * log(1 + \\frac{v}{f})}$

\n", "fjöldi vaxtatímabila verður ekki einangraður
" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# gerum þetta að föllum\n", "\n", "# allar einföldu formúlurnar eru komnar, hvernig sem er snúið þá getum við fundið það sem okkur vantar\n", "def einfalt_vaxtahlutfall(g, h, n):\n", " return g / (h * n)\n", "\n", "def einfalt_timabil(g, v, h):\n", " return g / (v * h)\n", "\n", "def einfalt_hofudstoll(nh, v, n):\n", " return nh / (1 + v * n)\n", "\n", "# vaxtavextir á einu ári, einangrað fyrir það sem var ekki í upphaflegu formúlunum eins og að ofan\n", "def vaxtavextir_eitt_ar_vaxtahlutfall(f, nh, h):\n", " return f * ((nh / h) ** (1 / f) - 1)\n", "\n", "def vaxtavextir_eitt_ar_hofudstoll(nh, v, f):\n", " return nh / ((1 + v / f)**f)\n", "\n", "# vaxtavextir yfir mörg ár (eða eitt, það er líka leyfilegt)\n", "def vaxtavextir_morg_ar_vaxtahlutfall(f, nh, h, n):\n", " return (f * ((nh / h)**(1 / (f * n)) - 1))\n", "\n", "def vaxtavextir_morg_ar_hofudstoll(nh, v, f, n):\n", " return nh / ((1 + v / f) ** (f * n))\n", "\n", "def vaxtavextir_morg_ar_ar(nh, h, f, v):\n", " return math.log(nh / h)/ (f * math.log(1 + v / f)) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Frekari prófanir\n", "\n", "Nú getum við athugað hvað vaxtahlutfallið þarf að vera til að ná sömu ávöxtun með mismunandi leiðum. Þetta gerum með því að stinga gildum inn í föllin okkar." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Hversu mikinn vöxt þarf?\n", "grodi = 500000\n", "ar = 1 # hér er bara verið að reikna vaxtavöxt yfir eitt ár, svo ef þessu er breytt er samanburðurinn skakkur\n", "hofudstoll = 200000\n", "fjoldi_timabila_a_ari = 12\n", "nyr_hofudstoll = hofudstoll + grodi\n", "\n", "einfalt_voxtur = einfalt_vaxtahlutfall(grodi, hofudstoll, ar)\n", "vaxtavextir_voxtur = vaxtavextir_eitt_ar_vaxtahlutfall(fjoldi_timabila_a_ari, nyr_hofudstoll, hofudstoll)\n", "print(\"einfaldur vöxtur: \", einfalt_voxtur)\n", "print(\"vaxtavöxtur: \", vaxtavextir_voxtur)\n", "\n", "# Hversu mikinn vöxt þarf yfir fleiri ár?\n", "grodi = 500000\n", "ar = 12\n", "hofudstoll = 20000\n", "fjoldi_timabila_a_ari = 1\n", "nyr_hofudstoll = hofudstoll + grodi\n", "\n", "\n", "einfalt_voxtur_morg_ar = einfalt_vaxtahlutfall(grodi, hofudstoll, ar)\n", "vaxtavextir_voxtur_morg_ar = vaxtavextir_morg_ar_vaxtahlutfall(fjoldi_timabila_a_ari, nyr_hofudstoll, hofudstoll, ar)\n", "print((\"einfaldur vöxtur á {} árum: \").format(ar), einfalt_voxtur_morg_ar)\n", "print((\"vaxtavöxtur á {} árum: \").format(ar), vaxtavextir_voxtur_morg_ar)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Hvað er eðlilegt?\n", "\n", "Við erum nú búin að skoða frekar skrítið dæmi, þar sem óskin var að enda með hálfa milljón í gróða. \n", "\n", "Í fyrra tilfellinu vorum við uphaflega með 200.000 kr., vildum enda í 700.000 kr. og höfðum bara eitt ár til þess.\n", "Sem skilaði okkur svörunum 250% vextir annars vegar og 132% vextir hins vegar. Það er algerlega ómögulegt að fá slíka ávöxtun í banka svo við þurfum greinilega að stilla væntingum okkar í hóf.\n", "\n", "Í seinna tilfellinu byrjum við með minni höfuðstól en við höfum núna tólf ár til að ná markmiðinu.\n", "Sem skilaði samt óraunhæfum niðurstöðun, 200% vextir annars vegar og 31,2% vextir hins vegar.\n", "\n", "##### Vöxtur\n", "Prófið ykkur áfram með því að skipta út tölum, breyta fjölda vaxtatímabila eða stilla væntingum um gróða í hóf.\n", "\n", "Setjið inn tölur miðað við aðstæður ykkar og sjáið hvort að þið fáið út ávöxtun sem er fýsileg." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Hversu mikinn vöxt þarf ég til að safna því sem ég vil yfir eitt eða fleiri ár?\n", "markmid = \"??\" # það sem ég er að safna fyrir fer í þennan streng\n", "grodi = ??\n", "ar = ?? # má vera 1\n", "hofudstoll = ??\n", "fjoldi_timabila_a_ari = 1 # set þetta sem 1 því það er algengt, 12 er það líka\n", "nyr_hofudstoll = hofudstoll + grodi\n", "\n", "\n", "einfalt_voxtur_morg_ar = einfalt_vaxtahlutfall(grodi, hofudstoll, ar)\n", "vaxtavextir_voxtur_morg_ar = vaxtavextir_morg_ar_vaxtahlutfall(fjoldi_timabila_a_ari, nyr_hofudstoll, hofudstoll, ar)\n", "print((\"söfnun fyrir {} með einföldum hætti á {} árum krefst: \").format(markmid, ar), \"{}% ávöxtunar á ári\".format(einfalt_voxtur_morg_ar*100))\n", "print((\"söfnun fyrir {} með vaxtavexti á {} árum krefst: \").format(markmid, ar), \"{}% ávöxtunar á ári\".format(vaxtavextir_voxtur_morg_ar*100))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Gerum nú það sama fyrir hinar breyturnar\n", "\n", "##### Höfuðstóll\n", "Skoðum hvað við þurfum að byrja með mikinn höfuðstól miðað við þekktar aðstæður (allar hinar breyturnar eru þá ákveðnar)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Hversu mikinn höfuðstól þarf ég til að safna því sem ég vil yfir eitt eða fleiri ár?\n", "markmid = \"??\" # það sem ég er að safna fyrir fer í þennan streng\n", "\n", "ar = ??\n", "vextir = ??\n", "fjoldi_timabila_a_ari = 1 # set þetta sem 1 því það er algengt, 12 er það líka\n", "nyr_hofudstoll = ??\n", "\n", "\n", "einfalt_hofudstoll_morg_ar = einfalt_hofudstoll(nyr_hofudstoll, vextir, ar)\n", "vaxtavextir_hofudstoll_morg_ar = vaxtavextir_morg_ar_hofudstoll(nyr_hofudstoll, vextir, fjoldi_timabila_a_ari, ar)\n", "print((\"söfnun fyrir {} með einföldum hætti á {} árum krefst: \").format(markmid, ar), \"{} kr í upphafi\".format(einfalt_hofudstoll_morg_ar))\n", "print((\"söfnun fyrir {} með vaxtavexti á {} árum krefst: \").format(markmid, ar), \"{} kr í upphafi\".format(vaxtavextir_hofudstoll_morg_ar))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Tími\n", "\n", "Skoðum nú hvað það tekur okkur langan tíma að ná einhverju markmiði. Athugið að hér þarf að fylla meira inn en áður." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Hversu mikinn tíma þarf ég til að safna því sem ég vil yfir eitt eða fleiri ár?\n", "markmid = \"??\" # það sem ég er að safna fyrir fer í þennan streng\n", "\n", "hofudstoll = ??\n", "grodi = ??\n", "vextir = ??\n", "fjoldi_timabila_a_ari = 1 # set þetta sem 1 því það er algengt, 12 er það líka\n", "nyr_hofudstoll = hofudstoll + grodi\n", "\n", "\n", "?? = einfalt_??(??)\n", "?? = vaxtavextir_morg_ar_??(??)\n", "print((\"söfnun fyrir {} með einföldum hætti krefst: \").format(markmid), \"{} ára söfnunar\".format(??))\n", "print((\"söfnun fyrir {} með vaxtavexti krefst: \").format(markmid), \"{} ára söfnunar\".format(??))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Endurnýtanleiki\n", "\n", "Nú erum við búin að sjá hvernig má snúa öllum þessum formúlum þannig að flest sé hægt að einangra og reikna út ef hitt er þekkt. Nú þurfum við aldrei að reikna það út aftur heldur látum við þennan endurnýtanlega kóða gera það fyrir okkur það sem eftir er.\n", "\n", "#### Hvað með reglulegan sparnað?\n", "\n", "Hingað til höfum við bara reiknað með því að skilja peninginn okkar eftir og vona það besta. Við erum hins vegar með smá auka pening sem við getum notað til að leggja til hliðar í lok hvers mánaðar. Við viljum líka vita hvaða áhrif það hefur að auka við höfuðstólinn sjálf.\n", "\n", "Eins og áður þá eru þessar formúlur alger skrímsli, eina sem við viljum gera er að átta okkur á því hvaða breytur fara inn í þær og í hvaða röð. Hér er alltaf gert ráð fyrir vaxtavöxtum og að það megi vera yfir margra ára tímabil.\n", "\n", "Við bætum við nýjum breytum
\n", "a   fyrir aukningu inn á reikning
\n", "fa   fyrir fjölda aukninga á hverju ári
\n", "\n", "nýr höfuðstóll = h * (1 + v/f)^(f * n) + a * (fa/f) * ((1+(v/f))^(f * n)-1) / ( v / f ))
\n", "$nh = h * (1 + \\frac{v}{f})^{fn} + a * \\frac{fa}{f} * \\frac{(1 + (\\frac{v}{f})^{fn}) - 1}{\\frac{v}{f}}$

\n", "aukning = (nh - h * (1 + v/f)^(f * n) ) / ((fa/f) * ((1+(v/f))^(f * n)-1) / ( v / f )))
\n", "$a = \\frac{nh - h * (1 + v/f)^{f * n}}{\\frac{fa}{f} * \\frac{(1 + (\\frac{v}{f})^{fn}) - 1}{\\frac{v}{f}}}$

\n", "Höfuðstóll = (nh - a * (fa/f) * ((1+(v/f))^(f * n)-1) / ( v / f )))/ ((1 + v/f)^(f * n))
\n", "$h = \\frac{nh - a * \\frac{fa}{f} * \\frac{(1 + (\\frac{v}{f})^{fn}) - 1}{\\frac{v}{f}}}{(1 + \\frac{v}{f})^{fn}}$" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def aukning_nyr_hofudstoll(h, v, f, n, a, fa):\n", " return h*((1+v/f)**(f*n))+a*(fa/f)*((((1+(v/f))**(f*n))-1)/(v/f))\n", "\n", "def aukning_aukning(nh, h, v, f, n, fa):\n", " return (nh - h*((1+v/f)**(f*n)))/((fa/f)*((((1+(v/f))**(f*n))-1)/(v/f)))\n", "\n", "def aukning_hofudstoll(nh, a, fa, f, v, n):\n", " return (nh - a*(fa/f)*(((1+(v/f))**(f*n))-1)/(v/f))/((1+v/f)**(f*n))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Nýr höfuðstóll \n", "\n", "Við kjósum að leggja inn 500 krónur í hverjum mánuði á reikning sem ber 1% vexti, einu sinni á ári. Við ætlum að gera það í 4 ár og upphafsinnleggið okkar er 1000 krónur. Við erum að safna fyrir ferð í bláa lónið.\n", "\n", "
  • Þá er höfuðstóllinn 1000\n", "
  • vextir 0.01\n", "
  • vaxta tímabil 1\n", "
  • ár 4\n", "
  • aukning 500\n", "
  • fjöldi aukninga er 12\n", " \n", "
  • Náum við markmiði okkar? Hvaða upphæð endum við með?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "blaa_lonid = aukning_nyr_hofudstoll(1000, 0.01, 1, 4, 500, 12)\n", "print(blaa_lonid)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Gerið álíka tilraun hér\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Hver þarf aukningin að vera?\n", "\n", "Ef við vitum hvar við viljum enda, upphæðina í lokin, og vitum hvar við byrjum þá er bara spurning hvernig við komumst þangað.\n", "\n", "Nú ætlum við að athuga hversu mikið við þurfum að leggja til hliðar til þess að komast á einhverja tiltekna endastöð." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "hofudstoll = 10000 # upphafsstaða\n", "nyr_hofudstoll = 500000 # óskastaða í lokin\n", "vextir = 0.01 # þetta fer algerlega eftir sparnaðarleið\n", "ar = 4 # þetta fer algerlega eftir því hvað við erum þolinmóð\n", "fjoldi_timabila = 1 # 1 - 12 er raunhæft\n", "fjoldi_aukninga = 12 # frá 1 - 365 er raunhæft\n", "\n", "tilfelli1 = aukning_aukning(nyr_hofudstoll, hofudstoll, vextir, fjoldi_timabila, ar, fjoldi_aukninga)\n", "print(\"Ef við byrjum með {} þyrfti {} kr. í hverri aukningu til að ná {} kr. árangri\".format(hofudstoll,int(tilfelli1), nyr_hofudstoll))\n", "\n", "hofudstoll = 100 \n", "nyr_hofudstoll = 500000 \n", "vextir = 0.01 \n", "ar = 4 \n", "fjoldi_timabila = 1 \n", "fjoldi_aukninga = 12 \n", "\n", "tilfelli2 = aukning_aukning(nyr_hofudstoll, hofudstoll, vextir, fjoldi_timabila, ar, fjoldi_aukninga)\n", "print(\"Ef við byrjum með {} þyrfti {} kr. í hverri aukningu til að ná {} kr. árangri\".format(hofudstoll,int(tilfelli2), nyr_hofudstoll))\n", "\n", "# gerið tilraunir hér, skiptið út tölunum" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Hvað þarf höfuðstóllinn að vera í byrjun?\n", "\n", "Við vitum hvar við viljum enda og við vitum hvað við getum lagt mikið til hliðar. Miðað við einhverjar gefnar forsendur um ávöxtunarreikning, hver þarf höfuðstóllinn að vera í upphafi?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "nyr_hofudstoll = ??\n", "aukning = ??\n", "fjoldi_aukninga = ??\n", "fjoldi_timabila = ??\n", "vextir = ??\n", "ar = ??\n", "\n", "?? = aukning_hofudstoll(??)\n", "print(\"Við þurfum að byrja með {} kr. til þess að enda með {} kr., ef við leggjum alltaf {} kr. til hliðar reglulega\"\n", " .format(??, ??, ??))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Opið verkefni\n", "\n", "Nú skulum við skoða nokkra lista af gögnum." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true }, "outputs": [], "source": [ "# listasegðir notaðar til að búa til gögn í lista\n", "hofudstolar = [ x*1000 for x in range(1,550) if x % 30 == 0] \n", "print(hofudstolar)\n", "nyir_hofudstolar = [ x*3000 for x in range(200, 1500) if x%100 == 0 ]\n", "print(nyir_hofudstolar)\n", "aukningar = [x for x in range(250, 10001) if x % 500 == 0]\n", "print(aukningar)\n", "fjoldi_aukninga_a_ari = [x for x in range(1,13)]\n", "print(fjoldi_aukninga_a_ari)\n", "fjoldi_vaxta_timabila_a_ari = [(x*x//2 - 1*x) for x in range(3,29) if (x*x//2 - 1*x) < 32 or (x*x//2 - 1*x) > 360 ]\n", "print(fjoldi_vaxta_timabila_a_ari)\n", "vextir_a_ari = [round(x/(10*(x+20)), 3) for x in range(1, 15)]\n", "print(vextir_a_ari)\n", "fjoldi_ara = [x for x in range(1, 40) if x%3 == 0]\n", "print(fjoldi_ara)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "hofudstoll = 1000\n", "aukning = 1000\n", "fjoldi_aukninga = 12\n", "fjoldi_vaxtatimabila = 1\n", "markmid = 50000\n", "\n", "\n", "for ar in fjoldi_ara:\n", " for vextir in vextir_a_ari:\n", " # komumst að því hvaða vöxtur skilar okkur sem fyrst markmidinu okkar" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Prófið að kalla í fall með gildum úr listunum af handahófi \n", "# prentið út gildin svo þið vitið hvað var að skila ykkur niðurstöðunni" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Notum klasa\n", "\n", "Búum okkur til klasa sem heitir Sparibanki, sem heldur utan um peninginn okkar. Við viljum geta kallað á aðferðir innan klasans sem ávaxta peninginn. \n", "\n", "Þannig getum við búið til tvö eintök af sama klasanum og átt hluti eins og sparibaukur og havaxtareikningur sem eru bæði eintök af Sparibanki og fylgst þannig með breytingum á upphæðum með mismunandi aðferðum." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# \n", "class Sparibanki():\n", " # Hér koma klasabreytur ef þið viljið hafa einhverjar\n", " \n", " def __init__(self, peningur, manadarlegt, markmid):\n", " self.peningur = peningur\n", " self.manadarlegt = manadarlegt\n", " self.markmid = markmid\n", "\n", " # Næstu þrjár aðferðir eru til að spyrja hvort skilyrðin sem voru sett inn \n", " # passi við markmiðið okkar eða upphafsstöðu\n", " \n", " # Hér er búið að straumlínulaga viðföngin, þau eru nú alltaf í sömu röð\n", " def markmidi_nad(self, v, f, n, fa):\n", " h = self.peningur\n", " a = self.manadarlegt\n", " nyr_hofudstoll = h*((1+v/f)**(f*n))+a*(fa/f)*((((1+(v/f))**(f*n))-1)/(v/f))\n", " if(nyr_hofudstoll >= self.markmid):\n", " return True\n", " return False\n", "\n", " def manadarlegt_nog(self, v, f, n, fa):\n", " nh = self.markmid\n", " h = self.peningur\n", " aukning = (nh - h*((1+v/f)**(f*n)))/((fa/f)*((((1+(v/f))**(f*n))-1)/(v/f)))\n", " if(aukning <= self.manadarlegt):\n", " return True\n", " return False\n", "\n", " def naegur_peningur(self, v, f, n, fa):\n", " nh = self.markmid\n", " a = self.manadarlegt\n", " hofudstoll = (nh - a*(fa/f)*(((1+(v/f))**(f*n))-1)/(v/f))/((1+v/f)**(f*n))\n", " if(self.peningur <= hofudstoll):\n", " return True\n", " return False\n", " \n", " # Við viljum geta uppfært gildin okkar:\n", " \n", " def uppfaera_gildi(self, peningur = 0, manadarlegt = 0, markmid = 0):\n", " if(peningur != 0):\n", " self.peningur = peningur\n", " if(manadarlegt != 0):\n", " self.manadarlegt = manadarlegt\n", " if(markmid != 0):\n", " self.markmid = markmid" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Tilraun\n", "\n", "Næsta kóðasella er hugmynd að því sem mætti nýta sparibanka í. \n", "\n", "Vegna þess að við erum búin að gera klasa þá er svo auðvelt fyrir okkur að halda utan um ástand. Þarna eru tvær manneskjur sem hafa ólík markmið og þurfa að ná þeim með ólíkum leiðum.\n", "\n", "Prófið að nýta þennan klasa, gera tilraunir með tölurnar í næstu sellu eða búa ykkur til heilan annan klasa sem geymir ástand banka sem er með viðskipta vini sem vilja geta séð stöðuna sína og lagt inn á reikninginn sinn." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sigrun = Sparibanki(1000, 500, 50000)\n", "dagmar = Sparibanki(5000, 5000, 1000000)\n", "\n", "def n_ar(sparibanki, vextir, f_vaxtatimabila, f_aukninga, byrja, stoppa):\n", " for i in range(byrja, stoppa):\n", " if(sparibanki.markmidi_nad(vextir, f_vaxtatimabila, i, f_aukninga)):\n", " return (i, vextir, f_vaxtatimabila, f_aukninga)\n", " return (0, 0, 0, 0)\n", "\n", "# Hér er Sigrún að skoða hvernig hún eigi að fara að því að ná markmiði sínu, hvað það taki langan tíma\n", "# Hún sér að það tekur fyrst átta ár svo hún reynir að byrja með meiri pening og svo leggja alltaf meira inn\n", "print(n_ar(sigrun, 0.01, 1, 12, 1, 12))\n", "sigrun.uppfaera_gildi(peningur = 20000)\n", "print(n_ar(sigrun, 0.01, 1, 12, 1, 12))\n", "sigrun.uppfaera_gildi(manadarlegt = 2000)\n", "print(n_ar(sigrun, 0.01, 1, 12, 1, 12))\n", "\n", "\n", "def x_vextir(sparibanki, ar, f_vaxtatimabila, f_aukninga, byrja, stoppa):\n", " for i in range(10*(stoppa-byrja)):\n", " if(sparibanki.markmidi_nad((byrja+(i/10))/100, f_vaxtatimabila, ar, f_aukninga)):\n", " return ((byrja+(i/10))/100, f_vaxtatimabila, ar, f_aukninga )\n", " return (0, 0, 0, 0)\n", "\n", "\n", "# Dagmar hins vegar býst ekki við sömu vöxtum, hún vonast eftir betri ávöxtun\n", "# hún hefur takmarkaðan tíma, þegar hún er búin í námi þarf hún að vera búin að ná markmiði sínu\n", "# Hún reynir að finna skref fyrir skref áætlun sem er fýsileg\n", "print(x_vextir(dagmar, 4, 12, 12, 3, 6))\n", "dagmar.uppfaera_gildi(peningur = 10000)\n", "print(x_vextir(dagmar, 4, 12, 12, 3, 8))\n", "dagmar.uppfaera_gildi(manadarlegt = 17000)\n", "print(x_vextir(dagmar, 4, 12, 12, 3, 10))\n", "dagmar.uppfaera_gildi(peningur = 50000)\n", "print(x_vextir(dagmar, 4, 12, 12, 3, 10))\n", "dagmar.uppfaera_gildi(manadarlegt = 18000)\n", "print(x_vextir(dagmar, 4, 12, 12, 3, 10))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Lán\n", "\n", "Lán eru í raun bara sparnaður nema með höfuðstól í mínus og markmiðið með mánaðarlegu aukalegu innleggi er að komast á núll." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "lan1_afborgun_a_manudi = int(aukning_aukning(0, -25000000, 0.07, 12, 40, 12))\n", "print(lan1_afborgun_a_manudi)\n", "lan2_afborgun_a_manudi = int(aukning_aukning(0, -20000000, 0.08, 12, 25, 12))\n", "print(lan2_afborgun_a_manudi)\n", "# Hvað erum við þá í raun búin að borga mikið?\n", "print(int(lan1_afborgun_a_manudi*12*40), \"samtals, borguðum\", int(lan1_afborgun_a_manudi*12*40) - 25000000, \"umfram\")\n", "print(int(lan2_afborgun_a_manudi*12*25), \"samtals, borguðum\", int(lan1_afborgun_a_manudi*12*25) - 20000000, \"umfram\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true }, "outputs": [], "source": [ "# Nú reiknum við hvað við getum tekið hátt lán miðað við hvað við getum borgað\n", "lan3_upphaflegur_hofudstoll = -1*int(aukning_hofudstoll(0, 150000, 12, 12, 0.07, 40))\n", "print(lan3_upphaflegur_hofudstoll)\n", "lan4_upphaflegur_hofudstoll = -1*int(aukning_hofudstoll(0, 150000, 12, 12, 0.07, 25))\n", "print(lan4_upphaflegur_hofudstoll)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Alvöru* lánareiknivél og samanburður\n", "\n", "Nú erum við búin að skoða hvernig má reikna afborgun á láni, gróflega, en við viljum geta skoðað í hverju skrefi, hver staðan er á láninu okkar og hvort að það borgi sig að greiða aukalega inn á það.\n", "\n", "Byrjum á að skoða lánareiknivélar með jöfnum afborgunum. Jafnar afborganir þýðir að búið er að jafna út hvað kostnaðurinn er yfir lánatímabilið og greiðandi greiðir þá alltaf sömu upphæð í afborgun inn á höfuðstólinn, en vextirnir eru breytilegir. Heildar greiðslan, sem greiðandi greiðir þá veltur á vöxtum.\n", "\n", "Þetta er ákjósanlegt fyrir fólk sem vill hafa stöðugar afborganir og greiða mest alla vextina í upphafi og greiða kröftuglega strax inn á höfuðstólinn.\n", "\n", "Önnur leið til að greiða niður lán eru jafnar greiðslur, þá er heildargreiðslan alltaf sú sama. Afborganirnar eru lægri hlutinn af heildargreiðslunni, afborganirnar hækka svo stöðugt út lánatímabilið. Þetta er ákjósanlegt fyrir fólk sem sér fram á að vera með stöðugar tekjur og ráða við þessa greiðslubyrði eða þau sem geta greitt aukalega með inn á lánið og velja sér því lægri greiðslubyrði.\n", "\n", "Hér sjáum við tvær reiknivélar, þið getið breytt þeim til að láta þær prenta út á hverju ári, til að láta þær reikna út í hverjum mánuði eða til að skila öðrum eða fleiri upplýsingum.\n", "\n", "Eins og er sýna þær að 10.000.000 kr. lán með 1% vexti og 4% verðbólguspá er óhagstæðara verðtryggt lán með 8% vöxtum.\n", "\n", "#### Jafnar afborganir" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def lan_verdbolga_jafnarafborganir(h, v, n, b):\n", " #ný breyta fyrir verðbóguhlutfallið sem við reiknum með að meðaltali yfir tímabilið\n", " afborgun = (h*b+h) / n\n", " skil_afborgun = afborgun\n", " greiddir_vextir = h * v\n", " heildar_greidsla = greiddir_vextir + afborgun\n", " ah = [afborgun, afborgun]\n", " for i in range(n-1):\n", " afborgun = ah[0] + (h*b)/(n-i)\n", " h = h + (h-ah[0])*b-ah[0]\n", " greiddir_vextir = h*v\n", " heildar_greidsla += greiddir_vextir + afborgun\n", " ah[0] = afborgun\n", " ah[1] += afborgun\n", " # skilagildi eru:\n", " # fyrsta afborgunin inn á höfuðstól\n", " # síðasta afborgunin inn á höfuðstól\n", " # heildar afborgun inn á höfuðstól\n", " # heildargreiðsla með vöxtum\n", " return int(skil_afborgun), int(ah[0]), int(ah[1]), int(heildar_greidsla)\n", "\n", "lan5_verdbolga = lan_verdbolga_jafnarafborganir(10000000, 0.01, 39, 0.04)\n", "print(lan5_verdbolga)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def lan_overdtryggt_jafnarafborganir(h, v, n):\n", " afborgun = h / n\n", " skil_afborgun = afborgun\n", " greiddir_vextir = h * v\n", " heildar_greidsla = greiddir_vextir + afborgun\n", " for i in range(1,n):\n", " h = h - afborgun\n", " greiddir_vextir = h*v\n", " heildar_greidsla += greiddir_vextir + afborgun\n", " # skilagildi eru:\n", " # fyrsta afborgunin inn á höfuðstól\n", " # síðasta afborgunin inn á höfuðstól\n", " # heildar afborgun inn á höfuðstól\n", " # heildargreiðsla með vöxtum\n", " return int(afborgun), int(afborgun), int(afborgun*n), int(heildar_greidsla)\n", " \n", "lan6_verdtryggt = lan_overdtryggt_jafnarafborganir(10000000, 0.08, 39)\n", "print(lan6_verdtryggt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Prófið ykkur áfram með mismunandi tölur, skoðið til dæmid hvernig væri að taka núlán fyrir bíl eða yfirdráttalán fyrir námslánum." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Jafnar greiðslur\n", "\n", "Nú skoðum við tvær reiknivélar í viðbót til að meta muninn á verðtryggðum lánum með jöfnum greiðslum og svo óverðtryggðum lánum með jöfnum greiðslum," ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def lan_verdbolga_jafnargreidslur(h, v, n, b):\n", " #sama breyta fyrir verðbóguhlutfallið sem við reiknum með að meðaltali yfir tímabilið\n", " \n", " heildar_greidsla = v*h*(1+v)**(n-0)/((1+v)**(n-0)-1)\n", " greiddir_vextir = h * v\n", " afborgun = heildar_greidsla - greiddir_vextir\n", " skil_afborgun = afborgun\n", " h = h + (h - afborgun)*b - afborgun\n", " heildar_afborgun = afborgun\n", " samtals_greidsla = heildar_greidsla\n", " # J7*(100%+$G$2)^($D$2-H6)*$G$2/((100%+$G$2)^($D$2-H6)-1))\n", "\n", " for i in range(1,n):\n", " heildar_greidsla = v*h*(1+v)**(n-i)/((1+v)**(n-i)-1)\n", " greiddir_vextir = h * v\n", " afborgun = heildar_greidsla - greiddir_vextir\n", " h = h + (h - afborgun)*b - afborgun\n", " \n", " \n", " heildar_afborgun += afborgun\n", " samtals_greidsla += heildar_greidsla\n", " # skilagildi eru:\n", " # fyrsta afborgunin inn á höfuðstól\n", " # síðasta afborgunin inn á höfuðstól\n", " # heildar afborgun inn á höfuðstól\n", " # heildargreiðsla með vöxtum\n", " return int(skil_afborgun), int(afborgun), int(heildar_afborgun), int(samtals_greidsla)\n", "\n", "lan7_verdbolga = lan_verdbolga_jafnargreidslur(10000000, 0.01, 40, 0.04)\n", "print(lan7_verdbolga)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def lan_overdtryggt_jafnargreidslur(h, v, n):\n", " # $H$6*(100%+$J$1)^$D$2*$J$1/((100%+$J$1)^$D$2-1)\n", " hofudstoll = h\n", " heildar_greidsla = v*hofudstoll*(1+v)**n/((1+v)**n-1)\n", " greiddir_vextir = h*v\n", " afborgun = heildar_greidsla - greiddir_vextir\n", " skil_afborgun = afborgun\n", " heildar_afborgun = afborgun\n", " samtals_greidsla = heildar_greidsla\n", " h = h - afborgun\n", " for i in range(1,n):\n", " \n", " greiddir_vextir = h*v\n", " heildar_greidsla = hofudstoll*(1+v)**n*v/((1+v)**n-1)\n", " afborgun = heildar_greidsla - greiddir_vextir\n", " h = h - afborgun\n", " heildar_afborgun += afborgun\n", " samtals_greidsla += heildar_greidsla\n", " # skilagildi eru:\n", " # fyrsta afborgunin inn á höfuðstól\n", " # síðasta afborgunin inn á höfuðstól\n", " # heildar afborgun inn á höfuðstól\n", " # heildargreiðsla með vöxtum\n", " return int(skil_afborgun), int(afborgun), int(heildar_afborgun), int(samtals_greidsla)\n", " \n", "lan8_overdtryggt = lan_overdtryggt_jafnargreidslur(10000000, 0.06, 40)\n", "print(lan8_overdtryggt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Aukaleg inngreiðsla\n", "\n", "Borgar það sig að greiða aukalega inn á lán? Nú hefur verið í boði að taka út úr séreignarlífeyrissparnaði til þess (þegar þetta er ritað). Ef slíkt úrræði væri nýtt eða síðustu krónurnar í mánuðinum, hvaða máli myndi það skipta?\n", "\n", "Byrjum á lánum með jöfnum afborgunum" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def lan_verdbolga_jafnarafborganir_auka(h, v, n, b, a):\n", " #ný breyta fyrir verðbóguhlutfallið sem við reiknum með að meðaltali yfir tímabilið\n", " afborgun = (h*b+h) / n\n", " skil_afborgun = afborgun\n", " greiddir_vextir = h * v\n", " heildar_greidsla = greiddir_vextir + afborgun\n", " ah = [afborgun, afborgun]\n", " h = h + (h-ah[0])*b-ah[0] - a \n", " for i in range(n-1):\n", " afborgun = ah[0] + (h*b)/(n-i)\n", " h = h + (h-ah[0])*b-ah[0] - a\n", " greiddir_vextir = h*v\n", " heildar_greidsla += greiddir_vextir + afborgun\n", " ah[0] = afborgun\n", " ah[1] += afborgun\n", " # skilagildi eru:\n", " # fyrsta afborgunin inn á höfuðstól\n", " # síðasta afborgunin inn á höfuðstól\n", " # heildar afborgun inn á höfuðstól\n", " # heildargreiðsla með vöxtum\n", " return int(skil_afborgun), int(ah[0]), int(ah[1]), int(heildar_greidsla)\n", "\n", "lan9_verdbolga = lan_verdbolga_jafnarafborganir_auka(10000000, 0.01, 39, 0.04, 120000)\n", "print(lan9_verdbolga)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def lan_overdtryggt_jafnarafborganir_auka(h, v, n, a):\n", " afborgun = h / n\n", " skil_afborgun = afborgun\n", " greiddir_vextir = h * v\n", " heildar_greidsla = greiddir_vextir + afborgun\n", " h = h - afborgun - a\n", " for i in range(1,n):\n", " h = h - afborgun - a\n", " greiddir_vextir = h*v\n", " heildar_greidsla += greiddir_vextir + afborgun\n", " # skilagildi eru:\n", " # fyrsta afborgunin inn á höfuðstól\n", " # síðasta afborgunin inn á höfuðstól\n", " # heildar afborgun inn á höfuðstól\n", " # heildargreiðsla með vöxtum\n", " return int(afborgun), int(afborgun), int(afborgun*n), int(heildar_greidsla)\n", " \n", "lan10_verdtryggt = lan_overdtryggt_jafnarafborganir_auka(10000000, 0.08, 39, 120000)\n", "print(lan10_verdtryggt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Athugið að þetta er reiknað yfir eitt ár í einu og 120 þúsund væri eins og 10.000 krónur að meðaltali yfir árið, en við erum ekki að reikna einn mánuði í einu þó að það væri vissulega áreiðanlegra og ákjósanlegra. Lesanda er frjálst að laga til reikniritin til að prófa það en vegna einfaldleika í útprentunum var ákveðið að hafa einungis reiknað á einu ári í einu.\n", "\n", "Athugið sérstaklega hvað það hefur mikil áhrif að borga aukalega inn á lánin.\n", "\n", "Skoðum nú jafnar greiðslur og sjáum hvað gerist." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def lan_verdbolga_jafnargreidslur_auka(h, v, n, b, a):\n", " #sama breyta fyrir verðbóguhlutfallið sem við reiknum með að meðaltali yfir tímabilið\n", " \n", " heildar_greidsla = v*h*(1+v)**(n-0)/((1+v)**(n-0)-1)\n", " greiddir_vextir = h * v\n", " afborgun = heildar_greidsla - greiddir_vextir\n", " skil_afborgun = afborgun\n", " h = h + (h - afborgun)*b - afborgun - a \n", " heildar_afborgun = afborgun\n", " samtals_greidsla = heildar_greidsla\n", " # J7*(100%+$G$2)^($D$2-H6)*$G$2/((100%+$G$2)^($D$2-H6)-1))\n", "\n", " for i in range(1,n):\n", " heildar_greidsla = v*h*(1+v)**(n-i)/((1+v)**(n-i)-1)\n", " greiddir_vextir = h * v\n", " afborgun = heildar_greidsla - greiddir_vextir\n", " h = h + (h - afborgun)*b - afborgun - a \n", " heildar_afborgun += afborgun\n", " samtals_greidsla += heildar_greidsla\n", " # skilagildi eru:\n", " # fyrsta afborgunin inn á höfuðstól\n", " # síðasta afborgunin inn á höfuðstól\n", " # heildar afborgun inn á höfuðstól\n", " # heildargreiðsla með vöxtum\n", " return int(skil_afborgun), int(afborgun), int(heildar_afborgun), int(samtals_greidsla)\n", "\n", "lan11_verdbolga = lan_verdbolga_jafnargreidslur_auka(10000000, 0.01, 40, 0.04, 120000)\n", "print(lan11_verdbolga)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def lan_overdtryggt_jafnargreidslur_auka(h, v, n, a):\n", " # $H$6*(100%+$J$1)^$D$2*$J$1/((100%+$J$1)^$D$2-1)\n", " hofudstoll = h\n", " heildar_greidsla = v*hofudstoll*(1+v)**n/((1+v)**n-1)\n", " greiddir_vextir = h*v\n", " afborgun = heildar_greidsla - greiddir_vextir\n", " skil_afborgun = afborgun\n", " heildar_afborgun = afborgun\n", " samtals_greidsla = heildar_greidsla\n", " h = h - afborgun - a\n", " for i in range(1,n):\n", " if(h <= 0):\n", " break\n", " greiddir_vextir = h*v\n", " heildar_greidsla = hofudstoll*(1+v)**n*v/((1+v)**n-1)\n", " afborgun = heildar_greidsla - greiddir_vextir\n", " h = h - afborgun - a\n", " heildar_afborgun += afborgun\n", " samtals_greidsla += heildar_greidsla\n", " # skilagildi eru:\n", " # fyrsta afborgunin inn á höfuðstól\n", " # síðasta afborgunin inn á höfuðstól\n", " # heildar afborgun inn á höfuðstól\n", " # heildargreiðsla með vöxtum\n", " return int(skil_afborgun), int(afborgun), int(heildar_afborgun), int(samtals_greidsla)\n", " \n", "lan12_overdtryggt = lan_overdtryggt_jafnargreidslur_auka(10000000, 0.06, 40, 120000)\n", "print(lan12_overdtryggt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Frekari prófanir\n", "\n", "Reynið að átta ykkur á því hvenær það er sem verðtryggð lán geta borgað sig, prófið að ná í pandas og setja upp töflu fyrir niðurstöðurnar ykkar svo þið áttið ykkur betur á samanburðinum sem þið eruð að framkvæma." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\* fyrirvari á þessum lánareiknivélum að ekki er verið að hugsa um hvernig síðustu greiðslunni er háttað og því er stundum verið að ofgreiða en þar sem þetta er á frekar löngu tímabili þá skiptir kannski ekki öllu máli hvort að krónutalan sé sú nákvæmasta í lokagreiðslunni, einnig er ekki gert alltaf ráð fyrir að verðbætur hafi bæst við fyrir fyrsta greiðsluseðil í verðtryggðu reiknivélunum." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# kannski væri skemmtilegt að búa til fall sem setur þúsundspunkta í stórar tölur?" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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.3" } }, "nbformat": 4, "nbformat_minor": 4 }