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
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
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%.
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)