Plotta sammansatt ränta i Python
Som en fortsättning på artikeln om att skapa diagram med Python tänkte jag nu istället skriva om hur man plottar data med Python och Matplotlib. Nu kommer vi alltså inte att använda oss av färdig data – här kommer vi istället använda data som genereras av en formel, i det här fallet för sammansatt ränta.
Vi kommer att gå igenom det hela steg för steg. Vi börjar med att titta på hur formeln för sammansatt ränta ser ut.
\[p = s \times (1+r)^y\]Där $p$ är den sammanlagda summan vi kommer att ha på vårt konto efter det specificerade antalet år har gått. $s$ är startkapitalet vi sätter in på kontot när vi börjar spara. $r$ är räntan på kontot och $y$ är antalet år.
Om vi bryter ner formeln så börjar vi med att ta vårt startkapital, till exempel 100 000 kr och multiplicerar detta med räntan + 1. Observera att räntan + 1 måste räknas ut först, därav parenteserna. En ränta på 8% skrivs som 0.08. Om vi då tar 0.08 + 1, får vi 1.08, alltså blir det en ökning av värdet med 8%. Detta blir alltså 108 000 kr. Detta är alltså den summa vi har efter ett år.
Men för att få den sammansatta räntan över ett visst antal år, måste vi höja upp procentsatsen med antalet år, till exempel med 30. Eftersom räntan + 1 upphöjt till antalet år beräknas först innan vi multiplicerar med startkapitalet får vi ett korrekt svar på den sammansatta räntan, eller ränta på ränta-effekten som det också kallas.
Vi kan nu göra ett enkelt Python-program för att få reda på hur mycket pengar vi kommer att ha på vårt konto efter $y$ antal år. Ett sådant program ser ut som nedan.
#!/usr/bin/env python3
s = 100000
r = 0.08
y = 30
print ("%.1f" %(s*(1+r)**y))
Om vi kör denna kodsnutt kommer vi få svaret 1 006 265,7 kr. Alltså har vi lyckats tjäna in över en miljon kronor på vårt konto efter 30 år med 8% ränta. Nu är visserligen 8% ränta inte särskilt realistiskt med tanke på dagens räntenivåer. Men som ett matematiskt experiment så är det en intressant nivå. Vi kan ändra räntan i vårt program och köra det igen. Denna gång kan vi välja en ränta på 0,6% vilket en del banker erbjuder idag. 0,6% ränta skrivs som 0.006. Vi får då istället den lite mer blygsamma summan 119 657,4 kr.
Skapa årsdata att plotta
Men vi väljer att ändra tillbaks räntan till 8% (alltså 0.08) tillfälligt medan vi bygger vidare på vårt program. När väl programmet är klart kan vi jämföra grafen med olika räntor. Vi har ju redan formeln i programmet klar för att räkna ut räntan över ett visst antal år.
För att kunna skapa en graf behöver vi datan som vi ska plotta i “färdigt
format”, alltså summan på kontot för varje år. Det enklaste sättet att få denna
data på är att skapa en lista i Python, där varje element innehåller summan på
kontot, år för år. Själva datan i sig genererar vi med en for
-loop. Varje gång
loopen körs så lägger vi till det årets summa i listan. Varje iteration i loopen
är alltså ett år. Så den femte iterationen är således det femte året.
#!/usr/bin/env python3
s=100000
r=0.08
y=30
data = list()
for i in range(1, (1+y)):
data.append(s*(1+r)**i)
print (data)
Om vi kikar på koden här ovanför så ser vi att vi först skapar en tom lista, som
vi kallar för data. Därför startar vi en for
-loop med startvärdet 1 och
slutvärdet 30. Detta gör vi med range
. Eftersom argumenten till range
är
startvärdet och slutvärdet är upp till, men inte inkluderat det värde vi
anger, måste vi addera 1 här.
När vi sedan är inne i loopen så lägger vi till varje års summa på kontot i
listan data med data.append
. Och det vi lägger till är alltså formeln för
sammansatt ränta s*(1+r)**i
. i är den iteration vi just nu är på, från for
i in range
, och motsvarar året vi är på.
Slutligen på sista raden så skriver vi ut hela listan med alla värdena – alltså varje års totala summa på kontot.
Plotta data
Nu har det blivit dags att plotta datan som vi skapade här ovanför. Detta är
faktiskt det enklaste av alltihop. Vi behöver bara importera Matplotlib, tala
om att vi vill använda Qt4Agg för att visa grafen, importera pyplot från
Matplotlib som plt samt byta ut print
-raden mot plt.plot(data)
. Och till
sist lägga till plt.show()
för att visa programmet med grafen. Det slutgiltiga
programmet ser alltså ut så här:
#!/usr/bin/env python3
import matplotlib
matplotlib.use("Qt4Agg")
import matplotlib.pyplot as plt
s=100000
r=0.08
y=30
data = list()
for i in range(1, (1+y)):
data.append(s*(1+r)**i)
plt.plot(data)
plt.show()
Om vi nu kör ovanstående program kommer vi att få upp ett litet program som visar nedanstående graf.
Nu kan vi experimentera lite och titta på olika grafer över olika räntenivåer, antal år och startkapital. Om vi till exempel ändrar räntan till dagens nivå på 0,6% så ser vi att grafen blir lite “tråkigare” som visas här nedanför.
Svårare än så här var det inte att plotta sammansatt ränta. Med dessa kunskaper kan vi plotta mycket annat intressant, nu är det bara fantasin som sätter gränser.
Nyhetsbrev
Nyhetsuppdateringar från tidningen direkt till din inkorg, helt kostnadsfritt. Avsluta när du vill.
Kommentarer
Kommentarsfältet är modererat. Det innebär att alla kommentarer granskas av ansvarig utgivare före publicering.
Du väljer själv om du vill ange ditt riktiga namn, en pseudonym eller vara helt anonym. Ingen registrering behövs.
Relaterade artiklar
-
Skapa fristående binärer av Python-skript
Docker har blivit det nya sättet att paketera och köra Python-skript, även när skripten körs från exempelvis ett cronjob. Men ibland behöver vi inte en hel Docker-miljö med den overhead det innebär för väldigt små skript. Då är det smidigare att göra om skriptet till en körbar binärfil. Då kan vi även enkelt flytta filen mellan olika Linuxsystem.
-
Hämta data från API:er med cURL och jq
Med cURL och jq går det att extrahera data från API:er direkt från kommandoraden. Jq är en JSON-tolkare och beskrivs av utvecklarna som sed och awk för JSON.
-
Pythonmiljö i Docker
Ett vanligt användningsområde för Docker är att skapa och köra virtuella Pythonmiljöer. Med en Dockerfile och Docker Compose kan vi automatisera hela processen, från skapandet av miljön till exekveringen.
-
Python och trigonometri
Lite uppfräschning av trigonometri och Python är aldrig fel. Här får vi lära oss hur man kan rita upp rätvinkliga trianglar – direkt i Python – om vi känner till två av sidorna. För detta kommer vi att använda modulerna turtle och math.
-
Python i Windows utan installation
Det går att använda Python i Windows, även utan att installera det. Detta är användbart om du har en dator där du inte har rättigheter att installera program. Det kan till exempel vara en skoldator eller arbetsdator.
Senaste nyheterna och inläggen
-
Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I kombination med
tshark
kan vi dessutom avlyssna trafiken på en server i realtid. -
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Sommarens skånska demopartyn
Årets sommar bjuder på två skånska demopartyn. Först ut är Reunion i Kvidinge den 28–30 juni. Därefter är det Pågadata i Örtofta den 9–11 augusti.
-
Riskerna med BankID som ingen pratar om
BankID är ett säkert och smidigt sätt att identifiera sig online. Men i takt med dess ökade popularitet och användning har det blivit en svag länk – en single point of failure – på mer än ett sätt.
-
Polisernas fängelsedomar står fast
Efter tre år är målet mot de två poliser som olovligen tog sig in i en berusad mans bostad i Landskrona och misshandlade honom klart. Högsta domstolen beslutade den sjätte mars att avvisa överklagan. Fängelsedomarna för poliserna står därmed fast.
Utvalda artiklar
-
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Datorparty i Landskrona
I helgen höll Syntax Society sitt årliga sommarparty. Platsen var en källarlokal i Landskrona där ett femtontal personer medverkade.
-
Det första Pågadata har ägt rum
I helgen ägde det första Pågadata rum – uppföljaren till Gubbdata. Platsen var Folkets Hus i Kvidinge. Organisatör av partyt var Johan “z-nexx” Osvaldsson med hjälp från Jesper “Skuggan” Klingvall. Partyt hade över 100 anmälda deltagare.
-
Även hovrätten fäller poliserna för att ha satt dit oskyldig
Hovrätten fastställer straffet för de två poliser som förra året dömdes till vardera ett års fängelse av Lunds tingsrätt för att ha misshandlat och satt dit en oskyldig man. De båda poliserna ska även betala skadestånd till mannen.
-
Retroloppis i Påarp
Idag var det retroloppis hos Andreas Nilsson i Påarp. På baksidan av huset fanns hundratals spel uppradade på långa bord. Trots friska vindar och sval temperatur var loppisen välbesökt.
CyberInfo Sverige är ett it- och medieföretag i nordvästra Skåne som tillhandahåller böcker, utbildningar, nyheter och konsulttjänster inom Linux, säkerhet och programmering.
CyberInfo Sverige är godkänd för F-skatt, är momsregistrerat och innehar
utgivningsbevis för webbplatsen www.cyberinfo.se.