Sluttverdien av et beløp

Bruk av sluttverdiformelen:

\[ SV=NV(1+r)^{n} \]

En kan lage sin egen funksjon.

sv <- function(r, nv, n) nv*(1 + r)^n

En kan deretter putte inn verdier i formelen. Rente (r) på 5%, beløp (nv) og antall perioder (n).

sv(0.05,100,5)
[1] 127.6282

Alternativt, dersom en spesifiserer hvilke verdier som går inn i funksjonen, kan rekkefølgen på input i formelen endres.

sv(nv=100, r=0.05, n=5)
[1] 127.6282

Det er enkelt å endre verdiene i formelen, f.eks. beregne for alle periodene fra 0 til 5.

sv(nv=100, r=0.05, n=0:5)
[1] 100.0000 105.0000 110.2500 115.7625 121.5506 127.6282

En kan lage et plot av disse verdiene.

plot(0:5, sv(nv=100, r=0.05, n=0:5), main="Sluttverdi", xlab="periode")

En enklere fremgangsmåte er å benytte ferdige funksjoner i bibliotek. Pakken FinCal har slike. Lenke til pakken.

suppressPackageStartupMessages(require(FinCal))
fv.simple(r=0.05, n=0:5, pv=-100)
[1] 100.0000 105.0000 110.2500 115.7625 121.5506 127.6282

Beløpet øker med følgende verdier mellom hver periode.

diff(fv.simple(r=0.05, n=0:5, pv=-100))
[1] 5.000000 5.250000 5.512500 5.788125 6.077531

Renten utgjør til sammen.

sum(diff(fv.simple(r=0.05, n=0:5, pv=-100)))
[1] 27.62816

Som er differansen mellom sluttverdi på 127.6281563 og startverdi 100.

Sluttverdi av en annuitet beregnet i slutten av perioden:

fv.annuity(r=0.05, n=4, pmt=-1000)
[1] 4310.125

Finne renta som dobler et beløp

Hvilken rentesats klarer å doble et innskudd i løpet av 5 år. Matematisk er dette: \(1 \times (1+r)^5=2\), omskrevet på formen: \(1 \times (1+r)^5 -2=0\). Vi kan skrive en egen funksjon, som finner verdien av r slik at ligningen er lik null.

suppressPackageStartupMessages(require(mosaic))
f <- function(r) 1*(1+r)^5-2
findZeros(f(r) ~ r)
       r
1 0.1487

Alternativt kan vi benytte den ferdige funksjonen, der r er den ukjente renta.

findZeros(fv.simple(r, n=5, pv=-1) -2 ~ r)
       r
1 0.1487

Vi kan lagre verdien og putte rentesatsen inn i formelen for sluttverdi.

solution <- findZeros(fv.simple(r, n=5, pv=-1) -2 ~ r)
solution$r
[1] 0.1487
fv.simple(solution$r, n=5, pv=-1)
[1] 2.000014

Hvor mange perioder tar det å doble et beløp

Denne gangen er det n som er den ukjente.

findZeros(fv.simple(r=0.05, n, pv=-1) -2 ~ n)
        n
1 14.2067

Det tar altså 14.2 perioder å doble et beløp med en rente på 5%.

Ressurser i finans

Det finner mange online ressurser (blogger med eksempler) som benytter R til finans, se f.eks denne lenken eller online kurs, f.eks introduksjon i finans og anvendt finans. Det er skrevet mange bøker der R benyttes i finans. Til sist er det svært mange bibliotek i R som er dedikert finans.

Sist, men ikke minst er R gratis (open source). Det samme gjelder for RStudio som etter min mening er den beste softwaren å jobbe med R i. Ønsker du å benytte en server-versjon (ingen installasjon påkrevd), kan du gå til https://rstudio.uit.no. Logg deg på med UiT brukernavn og passord.

Dette dokumentet er skrevet i R Markdown i RStudio, kompilert til html format, og deretter publisert på min konto i Rpubs. Det får da en permanent lenke på nett.

Her er all R kode:

sv <- function(r, nv, n) nv*(1 + r)^n
sv(0.05,100,5)
sv(nv=100, r=0.05, n=5)
sv(nv=100, r=0.05, n=0:5)
plot(0:5, sv(nv=100, r=0.05, n=0:5), main="Sluttverdi", xlab="periode")

suppressPackageStartupMessages(require(FinCal) || {install.packages("FinCal");require(FinCal)})
fv.simple(r=0.05, n=0:5, pv=-100)
diff(fv.simple(r=0.05, n=0:5, pv=-100))
sum(diff(fv.simple(r=0.05, n=0:5, pv=-100)))
fv.annuity(r=0.05, n=4, pmt=-1000)

suppressPackageStartupMessages(require(mosaic) || {install.packages("mosaic");require(mosaic)})
f <- function(r) 1*(1+r)^5-2
findZeros(f(r) ~ r)
findZeros(fv.simple(r, n=5, pv=-1) -2 ~ r)
solution <- findZeros(fv.simple(r, n=5, pv=-1) -2 ~ r)
solution$r
fv.simple(solution$r, n=5, pv=-1)
findZeros(fv.simple(r=0.05, n, pv=-1) -2 ~ n)