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.

ANNONS FÖR VÅRA EGNA BÖCKER Demonerna på internet

#!/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.

Graf över sammansatt ränta

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.

Sammansatt ränta, 0.6%

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.