Matematyka finansowa w pakiecie Matlab - Wyk ad 3. …joanka/zajecia/mat_finansowa/wyklad3.pdf ·...

55
Matematyka finansowa w pakiecie Matlab Wyklad 3. Podstawowe obliczenia finansowe w Matlabie. Obligacje Bartosz Ziemkiewicz Wydzial Matematyki i Informatyki UMK Kurs letni dla studentów studiów zamawianych na kierunku „Matematyka w ekonomii i finansach” Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 1/55

Transcript of Matematyka finansowa w pakiecie Matlab - Wyk ad 3. …joanka/zajecia/mat_finansowa/wyklad3.pdf ·...

Matematyka finansowa w pakiecie MatlabWykład 3. Podstawowe obliczenia finansowe w Matlabie. Obligacje

Bartosz Ziemkiewicz

Wydział Matematyki i Informatyki UMK

Kurs letni dla studentów studiów zamawianychna kierunku „Matematyka w ekonomii i finansach”

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 1/55

Wartość pieniądza w czasie

Jedną z podstawowych kwestii, którą zajmuje się matematykafinansowa jest porównywanie wartości pieniądza w różnychmomentach czasu.Złotówkę, która posiadamy teraz, możemy wpłacić na bezpiecznąlokatę bankową i za rok, dzięki odsetkom, wypłacić kwotęodpowiednio większą. Przyszła wartość naszej złotówki jest więcwiększa od obecnej.Z drugiej strony jeżeli wiemy, że za rok będziemy potrzebowalizłotówki, możemy dziś wpłacić na konto mniejszą kwotę, która zarok po dopisaniu do niej odsetek, da nam potrzebną złotówkę.Wynika stąd, że obecna wartość tej złotówki jest mniejsza odprzyszłorocznej.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 2/55

Podstawowe pojęcia

Kt — kapitał posiadany w chwili czasu t.K0 — kapitał początkowy, czyli pierwotnie zainwestowaną kwotąpieniędzy.podstawowa jednostka czasu (okres bazowy) to 1 rok.K1 − K0 — zysk (roczny), albo odsetki (roczne).Stosunek zysku do zainwestowanego kapitału

r =K1 − K0

K0(1)

nazywać będziemy stopą procentową lub stopą zwrotu(ang. interest rate, rate of return).Wzór (1) zapisujemy często w innej formie

K1 = K0 + rK0 = K0(1+ r).

(1+ r) — czynnik oprocentowującyStopa procentowa jest ściśle związana z wybraną jednostką czasu.Zmiana tej jednostki prowadzi do innej wartości stopy procentowej.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 3/55

Stopy procentowe

Na rynku funkcjonuje wiele różnych stóp procentowych.Najważniejsze polskie stopy procentowe to ustalane przez NBPstopy: referencyjna, lombardowa, depozytowa, redyskontowa, orazustalane przez 13 banków stopy WIBOR i WiWID.W naszych rozważaniach najczęściej będziemy posługiwali się tzw.stopą procentową wolną od ryzyka (ang. risk-free interest rate).Pojęcie to odnosi się do stopy, przy której udzielenie pożyczki lublokata terminowa nie są zagrożone możliwością niewywiązania siędrugiej strony takiej transakcji z warunków umowy.Jest to wielkość teoretyczna, w praktyce przyjmujemy najczęściej,że jest ona równa oprocentowaniu gwarantowanemu przezkrótkoterminowe obligacje rządowe.Z reguły będziemy zakładać, że stopa ta jest stała w czasie i niezależy od długości inwestowania.Będziemy zakładać, że oprocentowanie lokat i kredytów jestjednakowe. Jest to pewne uproszczenie, ale w stosunku do dużychi wiarygodnych inwestorów nie odbiega zbytnio od rzeczywistości.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 4/55

Kapitalizacja prosta

Proces dopisywania odsetek do kapitału nazywamy kapitalizacją.Kapitalizacja prosta polega na obliczaniu odsetek od tego samegostałego kapitału początkowego.Same odsetki nie są kapitalizowane w następnych okresach.Możemy zakładać, że nie są one dopisywane do kapitału, ale są odrazu wypłacane posiadaczowi tego kapitału.Schemat kapitalizacji prostej wygląda następująco:

K0,

K1 = K0 + rK0 = K0(1+ r),K2 = K1 + rK0 = K0(1+ 2r),...

Kn = Kn−1 + rK0 = K0(1+ nr).

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 5/55

Kapitalizacja złożona

Kapitalizacja złożona polega na każdorazowym dopisywaniuodsetek do kapitału.Przynoszą one dodatkowy zysk w następnym okresie, ponieważ sąrównież kapitalizowane.Schemat kapitalizacji złożonej wygląda tak:

K0,

K1 = K0 + rK0 = K0(1+ r),

K2 = K1(1+ r) = K0(1+ r)2,...

Kn = Kn−1(1+ r) = K0(1+ r)n.

W dalszej części stosować będziemy głównie kapitalizację złożoną.W obu opisanych modelach odsetki dopisywane były na końcukażdego okresu. Jest to tzw. kapitalizacja z dołu. Czasamirozważamy modele, w których odsetki dopisujemy na początkuokresu, mówimy wówczas o kapitalizacji z góry.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 6/55

Kapitalizacja w podokresach

Do tej pory zakładaliśmy, że odsetki dopisywane są jednorazowona końcu każdego okresu (roku).Często okres kapitalizacji jest mniejszy od okresu stopyprocentowej, tzn. odsetki dopisywane są częściej, np. raz wmiesiącu. Mówimy wówczas o kapitalizacji w podokresach.W dalszym ciągu zakładać będziemy, że

okres stopy procentowej = m ·okres kapitalizacji, gdzie m ∈ N.

Najczęściej używane wartości m to:

m = 1 — kapitalizacja roczna,m = 2 — kapitalizacja półroczna,m = 4 — kapitalizacja kwartalna,

m = 12 — kapitalizacja miesięczna,m = 360 (lub 365) — kapitalizacja dzienna,

m = 8640 — kapitalizacja godzinna.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 7/55

Stopa nominalna, a stopa względna

Niech r będzie roczną stopą procentową, a kapitalizacjadokonywana będzie w m podokresach. Wówczas kapitał pon podokresach wynosić będzie:

Kn/m = K0(1+ r

m

)n.

Wówczas r (m) = r/m nazywamy względną stopą procentową,a r nominalną stopą procentową (ang. nominal interest rate).Wartość kapitału po roku wynosi

K1 = Km/m = K0(1+ rm )m.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 8/55

Stopa nominalna, a stopa efektywna

Niech r będzie roczną stopą procentową, a kapitalizacjadokonywana będzie w m podokresach.Efektywną stopą procentową (roczną) (ang. effective interest rate)nazywamy liczbę r (m)

eff spełniającą równanie

K0(1+ r (m)eff ) = K0

(1+ r

m

)m. (2)

Jest to taka wartość stopy procentowej, dla której zysk przykapitalizacji rocznej jest taki sam jak zysk przy kapitalizacjiw m podokresach z względną stopą r

m . Z wzoru (2) łatwo wynika,że

r (m)eff =

(1+ r

m

)m − 1.

Możemy rozważać też problem odwrotny, przy ustalonej stopieefektywnej r (m)

eff i ustalonej liczbie podokresów m znaleźć wartośćstopy nominalnej r spełniającej równanie (2). Nietrudno zauważyć,że:

r = m[(

1+ r (m)eff

)1/m− 1].

Stopa względna odpowiadająca tej stopie efektywnej jestoczywiście równa

r (m) = rm =

(1+ r (m)

eff

)1/m− 1.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 9/55

Funkcje effrr i nomrr

Matlab udostępnia dwie funkcje effrr i nomrr służące dozamiany stopy nominalnej na efektywną i odwrotnie.Przyjmują one dwa parametry: stopę procentową, którą chcemyzamienić i liczbę podokresów.Załóżmy, że nominalna stopa procentowa wynosi r = 0,08.W przypadku kapitalizacji miesięcznej stopa efektywna wynosi> > effrr(0.08,12)ans =

0.0830a w przypadku kapitalizacji dziennej> > effrr(0.08,360)ans =

0.0833Wyznaczymy ponownie nominalną stopę procentową:> > nomrr(0.0830,12)ans =

0.0800Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 10/55

Kapitalizacja ciągła

Wraz ze wzrostem liczby podokresów stopa efektywna rośnie.Możemy wyobrazić sobie, że kapitalizację wykonujemy w każdejchwili, tzn. przechodzimy z m do nieskończoności. Efektywnastopa procentowa rośnie wówczas do

reff = limm→∞

[(1+ r

m

)m − 1]= er − 1,

a czynnik oprocentowujący wynosi 1+ reff = er .Liczbę r nazywamy wówczas intensywnością oprocentowania.Dopisywanie odsetek w sposób ciągły może wydawać się niecosztuczne, lecz upraszcza wiele obliczeń.Możemy np. wyznaczyć wartość kapitału w dowolnej chwili t,a nie tylko w momentach będących wielokrotnościami okresukapitalizacji. Nietrudno zauważyć, że wynosi ona

Kt = ertK0.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 11/55

Dyskontowanie

Do tej pory zajmowaliśmy się odpowiedzią na pytanie jaka będziewartość naszego kapitału w przyszłości.Możemy odwrócić problem — jaką kwotę musimy mieć teraz, abyw przyszłości wartość naszego kapitału wynosiła Kt . Inaczejmówiąc, jaka jest obecna wartość tego kapitału.Jeżeli stosujemy kapitalizację złożoną z roczną stopąprocentową r , to z podanych wcześniej wzorów wynika, że

K0 =Kn

(1+ r)n.

Operację obliczania wartości obecnej nazywamy dyskontowaniem,a liczbę (1+ r)−1 czynnikiem dyskontującym (ang. discountfactor).Jeżeli stosujemy ciągły model kapitalizacji z intensywnościąoprocentowania r , to

K0 = e−rtKt .

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 12/55

Strumień pieniądza

Strumieniem pieniądza (ang. cash flow)nazywamy ciąg płatnościCk w określonych momentach czasu t = t0, t1, . . . , tk .Najczęściej momenty te są równomiernie rozłożone, płatnościnastępują np. na końcu każdego roku, wówczas t = 0, 1, 2, . . . , k .Przyjmujemy następującą konwencję: jeżeli my płacimy komuś, topłatność zapisujemy ze znakiem „minus” (Ck < 0), jeżeli ktoś nampłaci, to ze znakiem „plus” (Ck > 0).

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 13/55

Wartość przyszła (FV)

Niech C0,C1, . . . ,Cn będzie strumieniem pieniądza. Załóżmy, żeC0 oznacza płatność dokonaną w chwili początkowej t = 0,C1 płatność dokonaną na końcu pierwszego roku, C2 drugiego itd.Niech r będzie roczną stopą procentową. Załóżmy, że stosujemykapitalizację złożoną roczną z dołu. Ile będzie wynosić wartośćtego strumienia na końcu n-tego roku?Wielkość tę nazywamy wartością przyszłą strumienia i oznaczamysymbolem FV (z ang. future value). Jak łatwo sprawdzić,w naszym przypadku

FVn =n∑

k=0

Ck(1+ r)n−k . (3)

Widzimy, że płatność początkowa jest kapitalizowana n razy,następna n − 1 razy, a ostatnia płatność Cn w ogóle nie jestkapitalizowana.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 14/55

Wartość przyszła (FV)

W przypadku, gdy stosujemy inny model kapitalizacji, wzór (3)zmienia się. Jeżeli np. płatności dokonywane są m razy do rokuw równych odstępach czasu, to wartość przyszła po n latachwynosić będzie

FVn =mn∑k=0

Ck(1+ r/m)nm−k .

Jeżeli płatności nie są dokonywane regularnie, ale w dowolnychmomentach t0, t1, . . . , tn, to wzór może przyjąć skomplikowanąpostać. W takim przypadku wygodniej jest użyć ciągłego modelukapitalizacji. Otrzymujemy wówczas

FVtn =n∑

k=0

Cketn−tk .

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 15/55

Funkcja fvvar

Do obliczania wartości przyszłej służy funkcja fvvar(str,r)str — wektor zawierający kolejne płatności wykonywanew regularnych odstępach, na końcu każdego okresu,r — okresowa stopa procentowa.Funkcja zwraca wartość przyszłą strumienia w momenciedokonywania ostatniej płatności.

Załóżmy, że roczna stopa procentowa wynosi 7%. Wpłacamy nakonto najpierw 100 zł, po roku 300 zł, a po kolejnym roku 200 zł.Jaka będzie wartość naszej lokaty po dokonaniu ostatniej wpłaty,a jaka po 4 latach od dokonania pierwszej wpłaty?> > fvvar([100 300 200],0.07)ans =

635.4900> > fvvar([100 300 200 0 0],0.07)ans =

727.5725

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 16/55

Funkcja fvvar

Funkcja fvvar pozwala obliczać wartość przyszłą równieżw przypadku, gdy wpłaty nie są dokonywane regularnie.Wywołujemy ją wówczas z dodatkowym parametrem — wektoremzawierającym daty, w których dokonywane są płatności.Obliczmy wartość przyszłą następującego strumienia:10 grudnia 2007 — 1000 zł 13 lutego 2008 — 1500 zł,14 maja 2008 — 3000 zł, 5 listopada 2009 — 2000 zł,2 grudnia 2010 — 1500 zł.

Jaka będzie wartość tego strumienia 2 grudnia 2010 roku, jeżeliroczna stopa procentowa wynosi 8%?> > str = [1000 1500 3000 2000 1500];> > r = 0.08;> > daty = [’10-Dec-2007’ ; ’13-Feb-2008’ ;’14-May-2008’ ; ’05-Nov-2009’ ; ’02-Dec-2010’ ];> > fvvar(str,r,daty)ans =

10440.57Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 17/55

Funkcja fvfix

Jeżeli płatności mają zawsze tę samą wartość i dokonywane sąregularnie, to do obliczania wartości przyszłej wygodniej jest użyćfunkcji fvfix(r,n,C,C0,d).Jej trzy pierwsze parametry są obowiązkowe, dwa kolejneopcjonalne:

r — okresowa stopa procentowa,n — liczba okresów,C — wysokość pojedynczej płatności. Opcjonalnie możemy podaćC0 — początkowa wartość strumienia (domyślnie C0=0)d — czy płatności na końcu każdego okresu (d=0, wartośćdomyślna), czy na początku (d=1).

Załóżmy, że początkowy stan konta to 1500 zł. Przez 20 lat nakońcu każdego miesiąca wpłacamy 200 zł. Roczna stopaprocentowa jest stała i wynosi 8%, a odsetki dopisywane są comiesiąc, obliczyć stan lokaty po 20 latach.> > fvfix(0.08/12, 12 * 20, 200, 1500 )ans =

125194.29Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 18/55

Wartość obecna (PV)

Obecna wartość (ang. present value (PV)) przyszłej kwotypieniądza to ilość pieniędzy, jaką należy wpłacić dziś na rachunekbankowy, aby w przyszłości otrzymać daną kwotę.Inaczej mówiąc jest to zdyskontowana wartość tej kwoty.Wartość obecna strumienia pieniądza jest równa sumie wartościobecnych poszczególnych płatności należących do tego strumienia.Niech C0,C1, . . . ,Cn będzie strumieniem pieniądza, a r będzieroczną stopą procentową. Zakładamy, że stosujemy kapitalizacjęzłożoną roczną z dołu. Wówczas

PV =n∑

k=0

Ck

(1+ r)k.

Jeżeli stosujemy ciągły model kapitalizacji, a strumień składa sięz płatności wykonywanych w momentach t0, t1, . . . , tn, to

PV =n∑

k=0

Cke−rtk .

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 19/55

Wartość obecna (PV)

Warto zauważyć, że między wartością przyszłą FVn, a wartościąobecną PV zachodzą związki

FVn = PV · (1+ r)n

w przypadku dyskretnym i

FVt = PV · ert .

w przypadku ciągłym.W Matlabie do obliczania wartości obecnej służą funkcjepvvar(str,r,daty) i pvfix(r,n,C,Cn,d).Używamy ich w sposób podobny do funkcji fvvar i fvfix.Jedyna różnica to czwarty parametr funkcji pvfix. Cn oznaczadodatkową płatność dokonywaną w ostatnim momencie.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 20/55

Wartość obecna netto (NPV)

Wartość obecna jest często stosowanym kryterium opłacalnościinwestycji.Załóżmy, że w czasie trwania inwestycji ma miejsce n+1przepływów gotówki C0,C1, . . . ,Cn w momentach 0, 1, 2, . . . n.Najczęściej (choć nie zawsze) C0 < 0 — na początku inwestujemypieniądze, i Ck > 0 dla k > 1 — inwestycja przynosi nam zysk.Wartością obecną netto (ang. net present value (NPV)) tejinwestycji nazywamy liczbę

NPV =n∑

k=0

Ck

(1+ r)k.

Jeżeli NPV < 0, to inwestycja jest nieopłacalna, lepiej wpłacićpieniądze na lokatę bankową. Jeżeli NPV > 0, to wartozainwestować.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 21/55

Wartość obecna netto (NPV) — przykład

Znajomy proponuje nam żebyśmy zainwestowali w jego firmę10 000 zł.Obiecuje, że w pięciu kolejnych latach inwestycja przyniesie namzyski równe odpowiednio 3000, 2500, 3000, 2000 i 2000 zł.Czy warto przyjąć propozycję, jeżeli roczna stopa procentowawynosi a) 7%, b) 10%?> > str = [-10000 3000 2500 3000 2000 2000];> > r = 0.07;> > pvvar(str,r)ans =

387.9916

Wynika stąd, że warto zainwestować. Czy na pewno?

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 22/55

Wartość obecna netto (NPV) — przykład

Sprawdźmy. Jeżeli wpłacimy 10 000 zł na lokatę bankową, to po 5latach otrzymamy:> > 10000*(1+0.07)ˆ 5ans =

14025.52

Jeżeli zainwestujemy w firmę znajomego, a wypłacane zyskibędziemy wpłacać na lokatę, to po 5 latach jej stan wynosićbędzie:> > fvvar([3000 2500 3000 2000 2000],r)ans =

14569.69

Zysk jest o około 544,18 zł większy. Warto zauważyć, że taka jestwłaśnie przyszła wartość naszej inwestycji> > fvvar(str,r)ans =

544.18

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 23/55

Wartość obecna netto (NPV) — przykład

Sprawdźmy teraz, czy sytuacja zmieni się, jeżeli stopa procentowawzrośnie do 10%.> > r = 0.1;> > pvvar(str,r)ans =

-344.80

Widzimy, że inwestycja przestała być opłacalna. Rzeczywiście,10 000 zł wpłacone na lokatę po 5 latach da nam> > 10000*(1+0.1)ˆ 5ans =

16105.10

Wpłacanie na lokatę zysków z inwestycji przyniesie tylko> > 3000*(1.1)ˆ 4 + 2500*(1.1)ˆ 3 + 3000 *(1.1)ˆ 2 +2000*(1.1)+2000ans =

15549.80

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 24/55

Wartość obecna netto (NPV) — przykład

Ostatni przykład pokazuje, że dla niższej stopy procentowejbardziej opłacalna była inwestycja w firmę, a dla wyższej wpłatapieniędzy na lokatę bankową.Możemy sobie zadać pytanie, czy istnieje taka wartość stopyprocentowej, że obie te inwestycje będą jednakowo opłacalne?Inaczej mówiąc, czy istnieje taka wartość stopy procentowej, dlaktórej wartość obecna inwestycji jest równa zero?

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 25/55

Wewnętrzna stopa zwrotu (IRR)

Niech C0,C1, . . . ,Cn będzie strumieniem pieniądza. Wewnętrznąstopą zwrotu (ang. internal rate of return (IRR)) nazywamy takąwartość stopy procentowej, dla której obecna wartość strumieniajest równa zero. Inaczej mówiąc, jest to wartość r spełniającarównanie

NPV =n∑

k=0

Ck

(1+ r)k= 0

lub, w przypadku kapitalizacji ciągłej,

NPV =n∑

k=0

Cke−rtk = 0.

W Matlabie do wyznaczania wewnętrznej stopy zwrotu służyfunkcja irr.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 26/55

Wewnętrzna stopa zwrotu (IRR) — przykład

Wyznaczymy wewnętrzną stopę zwrotu dla strumieniaz poprzedniego przykładu:> > irr([-10000 3000 2500 3000 2000 2000])ans =

0.0854Rzeczywiście,> > pvvar([-10000 3000 2500 3000 2000 2000],ans)ans =

0

Przy takiej stopie procentowej nie ma znaczenia, czyzainwestujemy w firmę znajomego, czy wpłacimy pieniądze nalokatę bankową.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 27/55

Wewnętrzna stopa zwrotu (IRR) — wady

Niestety przy obliczaniu wewnętrznej stopy zwrotu mogą pojawićsię problemy.Równanie

NPV =n∑

k=0

Ck

(1+ r)k= 0 (4)

może nie mieć rozwiązania, może mieć więcej niż jednorozwiązanie, może mieć też tylko rozwiązania zespolone.Wiadomo jednak, że jeżeli wszystkie wpłaty nastąpiły przedwypłatami, oraz przynajmniej jedna wpłata i jedna wypłata byłyróżne od zera, to równanie (4) ma jednoznaczne rozwiązanierzeczywiste.Wewnętrzna stopa zwrotu może posłużyć jako kryteriumopłacalności inwestycji. Jeżeli jest ona wyższa od obowiązującej narynku stopy procentowej, to inwestycja warta jest rozważenia,w przeciwnym wypadku lepiej włożyć pieniądze do banku.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 28/55

Wewnętrzna stopa zwrotu (IRR) — wady

Wewnętrznej stopy zwrotu nie należy natomiast używać doporównywania różnych projektów. Może się zdarzyć, że projekt Ama wyższą IRR niż projekt B, a mimo to bardziej opłacalna jestinwestycja w ten drugi projekt.Przy obliczaniu IRR zakłada się, że wszystkie zyski, jakie przynosiprojekt, są inwestowane w ten sam projekt lub w inny o takiejsamej rentowności. Często jednak zyski inwestuje się w inneprojekty o niższej stopie zwrotu. Również koszty pozyskaniakapitału są zazwyczaj różne od IRR.Bardziej wiarygodnym kryterium oceny może być tzw.zmodyfikowana wewnętrzna stopa zwrotu (ang. modified internalrate of return (MIRR)). Uwzględnia ona wymienione wyżejproblemy, ma również tę zaletę, że zawsze jest jednoznaczniewyznaczona.Aby obliczyć MIRR w Matlabie, używamy funkcjimirr(str,r1,r2), gdzie r1 jest stopą według której pozyskujemykapitał, a r2 stopą według której reinwestujemy zyski z projektu.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 29/55

Spłata kredytu

Najważniejszymi wartościami charakteryzującymi kredyt są:jego wysokość P,oprocentowanie r ,czas spłaty n,wysokość raty C .

Ograniczymy się do przypadku, gdy oprocentowanie jest stałeprzez cały okres spłaty pożyczki, raty są płacone w równychodstępach czasu i są równej wysokości.Wówczas parametry charakteryzujące kredyt są powiązanenastępującym wzorem:

P =n∑

k=1

C(1+ r)k

. (5)

Jeżeli znamy trzy parametry kredytu możemy obliczyć czwarty.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 30/55

Funkcja payper

Funkcja payper(r,n,pv,fv,d) dla danej okresowej stopyprocentowej r, liczby okresów spłaty n oraz obecnej wysokościkredytu pv wyznacza wysokość raty.Opcjonalnie możemy podać wartość kredytu fv, którą chcemyosiągnąć po n okresach, domyślnie jest to 0 (tzn. chcemy spłacićcały kredyt) oraz informację, czy raty będziemy płacić na końcukażdego okresu (d=0, wartość domyślna), czy na początku d=1.Załóżmy, że bierzemy kredyt w wysokości 10 000 zł i musimy gospłacić w ciągu 5 lat. Ile powinna wynosić miesięczna rata, jeżeliroczna stopa procentowa wynosi 10%?> > payper(0.1/12, 5*12, 10000)ans =

212.47Miesięczna rata wynosi nieco ponad 212 zł.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 31/55

Funkcja annuterm

Jeżeli znamy obecną wysokość kredytu pv, wysokość pojedynczejraty c oraz okresową stopę procentową r, to za pomocą funkcjiannuterm(r,c,pv,fv,d) możemy obliczyć jak długo będziemymusieli spłacać kredyt.Pozostałe dwa parametry tej funkcji są opcjonalne i ich znaczeniejest takie samo jak w przypadku funkcji payper.Tak samo jak w poprzednim przykładzie bierzemy kredytw wysokości 10 000 zł, roczna stopa procentowa wynosi 10%,a wysokość miesięcznej raty to 212,47 zł. Jak długo będziemymusieli spłacać taki kredyt?> > annuterm(0.1/12,212.47,-10000)ans =

60.00Kredyt będziemy spłacać przez 60 miesięcy, czyli 5 lat. Wynik tenzgadza się z poprzednim przykładem. Zauważmy, że wysokośćkredytu podaliśmy ze znakiem „minus”.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 32/55

Funkcja annurate

Załóżmy teraz, że znane są wysokość kredytu pv, wysokość raty coraz liczba okresów spłaty n. Na podstawie tych danych zapomocą funkcji annurate(n,c,pv,fv,d) możemy wyznaczyćwysokość okresowej stopy procentowej.Ponownie bierzemy kredyt w wysokości 10 000 zł i spłacamy gow całości w ciągu 5 lat w miesięcznych ratach w wysokości 212,47zł. Ile wynosi oprocentowanie tego kredytu?> > annurate(5*12, 212.47, 10000)ans =

0.0083Jest to miesięczna stopa procentowa, aby otrzymać roczną trzebają przemnożyć przez 12.> > ans * 12ans =

0.1000Czyli około 10%.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 33/55

Funkcja pvfix (raz jeszcze)

Pozostała jeszcze jedna możliwość: znamy wysokość raty,oprocentowanie i okres spłaty kredytu. Za pomocą omawianejwcześniej funkcji pvfix możemy obliczyć początkową wysokośćkredytu:> > pvfix(0.1/12, 5*12, 212.47)ans =

10000

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 34/55

Funkcja amortize

Funkcja amortize(r,n,pv,fv,d) przyjmuje takie sameargumenty jak funkcja payper, ale pozwala uzyskać bardziejszczegółowe informacje na temat miesięcznej raty.Wiadomo, że każda rata składa się z części kapitałowejprzeznaczonej na spłatę podstawowej pożyczki oraz z częściodsetkowej przeznaczonej na spłatę odsetek.Funkcja amortize zwraca cztery wartości. Dwie pierwsze ton-elementowe wektory zawierające części kapitałowe i odsetkowekażdej z rat. Trzecia ze zwracanych wartości to równieżn-elementowy wektor zawierający wartości długu bieżącego pokażdym okresie (czyli ile zostało jeszcze do spłaty), a czwarta toskalar zawierający wysokość miesięcznej raty.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 35/55

Funkcja amortize

Sprawdźmy, jak zmieniają się części odsetkowe i kapitałowe ratydla danych z naszego przykładu.Aby zaoszczędzić miejsce, podajemy tylko dwie pierwsze i dwieostatnie wartości każdego z 60-elementowych wektorów.> > [rkap rods biez rata] = amortize(0.1/12, 5*12,10000)rkap =

129.1371 130.2133 ... 208.9731 210.7145rods =

83.3333 82.2572 ... 3.4974 1.7560biez =

9870.9 9740.6 ... 210.7 0.0rata =

212.4704Wraz ze spłatą długu, część kapitałowa raty rośnie, a odsetkowamaleje. Na początku odsetki stanowią około 40% raty, na końcujest to już niecały 1%. Wartość bieżąca długu maleje do zera.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 36/55

Obligacje

Obligacja (ang. bond) jest papierem wartościowym, w którymemitent (wystawca) stwierdza istnienie określonego zobowiązaniafinansowego w stosunku do nabywcy obligacji, zobowiązując sięjednocześnie do jego spełnienia w określony sposób i w określonymczasie.Innymi słowy emitent potwierdza zaciągnięcie pożyczkiw określonej kwocie i zobowiązuje się do jej zwrotu w określonymterminie.W odróżnieniu od akcji obligacje nie dają ich posiadaczowiżadnych uprawnień typu współwłasność, dywidenda, czyuczestnictwo w walnych zgromadzeniach. Obligacje mogą byćemitowane przez skarb państwa, samorządy oraz przedsiębiorstwa.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 37/55

Obligacje

Obligacje emitowane są z określoną wartością nominalną(ang. face value, par value, principal).Jest to suma, jaką emitent zobowiązuje się wypłacić posiadaczowiobligacji po upływie terminu wykupu (ważności) (ang. maturitydate).Dodatkowo co pewien ustalony okres (np. co rok lub co miesiąc)posiadaczowi obligacji wypłaca się odsetki ze względówhistorycznych nazywane kuponami (ang. coupons).Kupony przynoszą posiadaczowi pewien stały dochód, dlategoobligacje zaliczamy do tzw. fixed income securities. (Czasamidochód ten zmienia się, wysokość kuponu może zależeć np. odaktualnej stopy procentowej.)Istnieją również tzw. obligacje zerokuponowe (ang. zero-couponbonds), od których nie otrzymuje się odsetek.Po upływie terminu wykupu posiadacz obligacji otrzymuje odemitenta kwotę równą wartości nominalnej. Takie obligacjesprzedawane są z dyskontem, tzn. po cenie niższej od nominalnej.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 38/55

Obligacje

Obligacji nie musimy kupować bezpośrednio od ich wystawcyw momencie ich emisji, nie musimy ich też trzymać aż domomentu wykupu.Dlatego musimy odróżniać datę emisji (ang. issue date) od datydokonania transakcji kupna-sprzedaży (ang. settlement date).Funkcjonuje dobrze rozwinięty wtórny rynek obligacji, na którymmożemy je kupować i sprzedawać w dowolnym momencie.Pojawia się zatem problem właściwej wyceny obligacji.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 39/55

Cena sprawiedliwa i arbitraż

Zanim zajmiemy się wyceną obligacji musimy się zastanowić, jakajest właściwa definicja ceny instrumentu finansowego i jakiewarunki powinna ona spełniać.W matematyce finansowej najczęściej korzystamy z pojęcia tzw.ceny sprawiedliwej (ang. fair price).Nazywamy tak cenę, która nie faworyzuje żadnej ze strontransakcji. Sprzedaż czy kupno po tej cenie nie powinny przynieśćzysku ani straty.Inaczej mówiąc, jest to cena niedopuszczająca możliwości arbitrażu(ang. arbitrage), czyli osiągania zysku bez ponoszenia ryzyka.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 40/55

Cena sprawiedliwa i arbitraż — przykład

Jeżeli w banku A roczna stopa oprocentowania kredytów wynosi10%, a w banku B roczna stopa oprocentowania depozytówwynosi 12%, to możemy zaciągnąć kredyt w banku A i wpłacićcałą otrzymaną kwotę do banku B. Po upływie roku likwidujemylokatę i zwracamy kredyt. Z każdej pożyczonej złotówki zostanąnam dwa grosze. Osiągnęliśmy więc zysk i to bez angażowaniaśrodków własnych.Przykład ten uzasadnia inną często spotykaną definicją arbitrażu.Jest to taka strategia gry rynkowej, w której startując z zerowegokapitału początkowego, nasz kapitał końcowy na pewno nie będzieujemny, a z niezerowym prawdopodobieństwem będzie dodatni.Czyli na pewno nie stracimy, a być może nawet zyskamy.W praktyce na rynku występują możliwości arbitrażu, ale prawarynku szybko je eliminują. Bank A po stwierdzeniu wzmożonegopopytu na kredyty podniesie ich oprocentowanie, a duży napływgotówki do banku B spowoduje spadek oprocentowania lokat i poniedługim czasie obie stopy procentowe powinny się wyrównać.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 41/55

Wycena obligacji zerokuponowych

Rozważmy obligację zerokuponową, o wartości nominalnej F .Załóżmy, że kupujemy ją dokładnie rok przed terminem ważnościpo cenie P . Roczna stopa zwrotu naszej inwestycji wynosioczywiście

r =F − PP

.

Jeżeli to F i r są ustalone, to po przekształceniu otrzymamy wzórna bieżącą cenę obligacji

P =F

1+ r. (6)

Pozostaje pytanie: jaką wartość r powinniśmy wstawić dopowyższego wzoru, aby otrzymana cena P była ceną sprawiedliwą?Pokażemy, że r powinno być równe obowiązującej na rynku stopieprocentowej wolnej od ryzyka.W praktyce często mamy do czynienia z sytuacją odwrotną. Toustalona przez skarb państwa cena obligacji wyznacza stopęprocentową wolną od ryzyka.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 42/55

Wycena obligacji zerokuponowych

Załóżmy najpierw, że obligacje są sprzedawane po cenie P1 niższejniż ta określona wzorem (6), tzn.

P1 < P =F

1+ r.

Wówczas możemy pożyczyć kwotę P1 i kupić za nią jednąobligację. Po roku za obligacje otrzymamy F i zwracamy dług,który wraz z odsetkami wynosi P1(1+ r). Ponieważ P1 < P , to

F − P1(1+ r) > F − P(1+ r) = 0.

Widzimy, że udało nam się osiągnąć zysk bez żadnego wkładuwłasnego. Istnieje zatem możliwość arbitrażu.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 43/55

Wycena obligacji zerokuponowych

Załóżmy, że obligacje sprzedawane są po cenie P1 wyższej niż P

P1 > P =F

1+ r.

Tym razem zamiast gotówki pożyczamy jedną obligacjęi sprzedajemy ją po cenie P1.Jest to tzw. krótka sprzedaż (ang. short selling). W praktyce jestona obłożona wieloma ograniczeniami, ale w modelachteoretycznych zwykle zakłada się, że jest ona dopuszczalna.Pieniądze otrzymane ze sprzedaży obligacji wpłacamy na lokatę.Po roku jej wartość wzrośnie do P1(1+ r). Po oddaniupoprzedniemu właścicielowi obligacji jej wartości nominalnej Fzostaje nam kwota

P1(1+ r)− F > P(1+ r)− F = 0.

Osiągnęliśmy zysk bez żadnego wkładu własnego. Wynika stąd, żeP określone wzorem (6) jest jedyną ceną niedającą możliwościarbitrażu, czyli ceną sprawiedliwą.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 44/55

Wycena obligacji kuponowych

Obligacje kuponowe przynoszą posiadaczowi pewien dodatkowydochód wypłacany przed terminem wykupu.Wysokość tego dochodu najczęściej wyraża się jako pewienprocent nominalnej wartości obligacji, nazywany stopąoprocentowania obligacji (ang. coupon rate).Jeżeli np. nominalna wartość obligacji wynosi 100 zł, a jej stopaoprocentowania 8%, to posiadacz obligacji co roku otrzyma 8 zł,a w terminie wykupu 108 zł (wartość nominalna plus ostatnikupon). Zdarza się, że kupony wypłacane są częściej, np. co półroku. Wówczas posiadacz otrzymuje 4 zł co 6 miesięcy.Załóżmy, że wartość nominalna obligacji wynosi F , wysokośćpojedynczego kuponu C , a do terminu wykupu zostało n lat.Postępując podobnie jak w przypadku obligacji zerokuponowych,można pokazać, że sprawiedliwa cena takiej obligacji wynosi:

P =n∑

k=1

C(1+ r)k

+F

(1+ r)n,

gdzie r jest roczną stopą procentową.Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 45/55

Wycena obligacji kuponowych

Jeżeli kupony wypłacane są częściej, np. m razy do roku, to

P =m·n∑k=1

C/m(1+ r/m)k

+F

(1+ r/m)m·n.

Zauważmy, że cena obligacji jest wartością bieżącą strumieniapieniądza związanego z tą obligacją. Znając bieżącą cenę obligacjii jej wszystkie parametry, możemy zadać sobie pytanie, jakidochód ona przynosi. Musimy rozwiązać równanie

P =m·n∑k=1

C/m(1+ λ/m)k

+F

(1+ λ/m)m·n

ze względu na λ.Otrzymane rozwiązanie nazywamy wewnętrzną wartością obligacjilub stopą dochodu w terminie do wykupu (ang. yield to maturity).

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 46/55

Cena czysta i cena brudna

Obligacjami możemy handlować w dowolnym momencie. Jeżelikupujemy obligację w dniu znajdującym się pomiędzy dniami,w których wypłacane są kupony, część wartości następnegokuponu należy się poprzedniemu właścicielowi obligacji.Jeżeli np. kupony wypłacane są co roku, a my kupujemy obligację3 miesiące przed następnym terminem płatności, to musimyzapłacić poprzedniemu właścicielowi dodatkowo 3/4 wartościkuponu.Tę dodatkową kwotę nazywamy narosłymi odsetkami(ang. accrued interest).Cenę uwzględniającą te odsetki nazywamy ceną brudną (ang. dirtyprice), a cenę bez nich ceną czystą (ang. clean price).

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 47/55

Funkcja bndprice

Funkcja bndprice służy do wyznaczania ceny obligacji,a wywołujemy ją tak:[Price, AccruedInt]

= bndprice(Yield, CouponRate, Settle, Maturity, Period,Basis, EndMonthRule, IssueDate, FirstCouponDate,LastCouponDate, StartDate, Face)

Na szczęście wystarczy podać tylko 4 pierwsze argumenty,pozostałe są opcjonalne, jeżeli ich nie podamy, to przyjmą wartościdomyślne. Cztery parametry obowiązkowe to:

Yield — stopa dochodu w terminie do wykupu, przy założeniu, żekupony wypłacane są dwa razy do roku,CouponRate — roczne oprocentowanie wyznaczające wartośćkuponów (np. dla 0,06 wartość kuponu wynosi 6),Settle — data kupna/sprzedaży obligacji,Maturity — data wykupu obligacji.

Funkcja (wywołana z 4 argumentami) zwraca cenę czystą (Price)i narosłe odsetki (AccruedInt) obligacji o cenie nominalnej 100z kuponami wypłacanymi co pól roku.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 48/55

Funkcja bndprice — przykład

Wyznaczymy cenę obligacji o następujących parametrach:> > Yield = 0.07;> > CouponRate = 0.05;> > Settle = ’01-Jan-2007’;> > Maturity = ’01-Jan-2010’;> > [Price, AccruedInt] = bndprice(Yield, CouponRate,Settle, Maturity)Price =

94.6714AccruedInt =

0

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 49/55

Funkcja bndprice — przykład

Poprawność wyniku możemy sprawdzić za pomocą funkcji pvvar.Strumień pieniądza generowany przez obligację to[0 2.5 2.5 2.5 2.5 2.5 102.5]. W momencie zakupu nie dostajemynic, potem co pól roku 2,5, a po trzech latach 100+2,5.Półroczna stopa procentowa to 0,07/2 = 0,035. Stąd> > pvvar([0 2.5 2.5 2.5 2.5 2.5 102.5],0.035)ans =

94.6714Ponieważ obligację kupiliśmy w dniu wypłaty odsetek, cena czystarówna się cenie brudnej. Jeżeli zmienimy date zakupu> > Settle = ’12-Feb-2007’> > [Price, AccruedInt] = bndprice(Yield, CouponRate,Settle, Maturity)Price =

94.8501AccruedInt =

0.5801to pojawiają się dodatkowe odsetki.Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 50/55

Funkcja bndprice — parametry opcjonalne

Opcjonalne parametry funkcji bndprice to:Period — liczba kuponów wypłacanych co roku. Może być równa:0, 1, 2, 3, 4, 5, 12. Wartością domyślną jest 2, co oznacza, żekupony wypłacane są co pół roku.Basis — sposób obliczania liczby dni między datami. Parametrten może przyjmować wartości od 0 do 12. Domyślna wartość 0oznacza, że obliczana jest prawdziwa liczba dni, a rok ma zawszeprawdziwą długość.EndMonthRule — ma zastosowanie tylko w przypadku, gdyMaturity wypada w ostatni dzień miesiąca mającego mniej niż 31dni. Jeżeli argument ten ma wartość zero, to kupony wypłaca sięzawsze dokładnie w tym dniu miesiąca (np. 30). Domyślnieparametr ten ma wartość jeden, co oznacza, że kupony wypłacanesą zawsze w ostatnim dniu miesiąca.IssueDate — data emisji obligacji.FirstCouponDate i LastCouponDate — pozwalają określićniestandardowe daty płatności dla pierwszego i ostatniego kuponu.StartDate — obecnie ignorowany,Face — nominalna cena obligacji, domyślnie równa 100.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 51/55

Funkcja bndyield

Służy do wyznaczania stopy dochodu w terminie do wykupu.Yield = bndyield(Price, CouponRate, Settle, Maturity,

Period, Basis, EndMonthRule, IssueDate,FirstCouponDate, LastCouponDate,StartDate, Face)

Lista argumentów jest taka sama jak w przypadku w funkcjibndprice z jednym wyjątkiem: jej pierwszym argumentem jestPrice — czysta cena obligacji.Wyznaczymy stopę dochodu obligacji z poprzedniego przykładu:> > Price = 94.6714; CouponRate = 0.05;> > Settle = ’01-Jan-2007’; Maturity = ’01-Jan-2010’;> > Yield = bndyield(Price, CouponRate, Settle,Maturity)Yield =

0.0700Otrzymaliśmy stopę dochodu z poprzedniego przykładu. Funkcjebndprice i bndyield są w pewnym sensie odwrotne.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 52/55

Funkcja cfdates

Służy do wyznaczania dat płatności kuponów.CFlowDates = cfdates(Settle, Maturity, Period, Basis,

EndMonthRule, IssueDate,FirstCouponDate, LastCouponDate)

Musimy podać tylko datę kupna/sprzedaży obligacji i datęwykupu. Pozostałe parametry są opcjonalne.Sprawdźmy kiedy wypłacane są kupony obligacji omawianej wewcześniejszych przykładach.> > Settle = ’01-Jan-2007’; Maturity = ’01-Jan-2010’;> > CFlowDates = cfdates(Settle, Maturity)CFlowDates =

733224 733408 733590 733774 733955 734139Przekształcimy otrzymany wynik do bardziej czytelnej postaci.> > datestr(CFlowDates)ans =

01-Jul-2007 01-Jan-2008 01-Jul-2008 01-Jan-200901-Jul-2009 01-Jan-2010Widzimy, że rzeczywiście kupony wypłacane są co pól roku.Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 53/55

Funkcja cfamounts

[CFlowAmounts, CFlowDates, TFactors, CFlowFlags]= cfamounts(CouponRate, Settle, Maturity,

Period, Basis, EndMonthRule,IssueDate, FirstCouponDate,LastCouponDate, StartDate, Face)

Tylko trzy pierwsze argumenty są obowiązkowe.Funkcja zwraca strumień pieniądza generowany przez obligację(CFlowAmounts) oraz daty wypłaty kuponów (CFlowDates).TFactors i CFlowFlags to czynniki czasowe używane przydyskontowaniu kuponów oraz typy płatności (dokładniejszeinformacje można znaleźć w dokumentacji funkcji).

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 54/55

Funkcja cfamounts — przykład

Sprawdźmy, jaki strumień czasowy jest związany z omawianąobligacją.> > Settle = ’01-Jan-2007’;> > Maturity = ’01-Jan-2010’;> > CouponRate = 0.05;> > CFlowAmounts = cfamounts(CouponRate, Settle,Maturity)CFlowAmounts =

0 2.5000 2.5000 2.5000 2.5000 2.5000 102.5000

Tak, jak się należało spodziewać co pół roku mamy wypłacane2,5, a w momencie wykupu 100+2,5.

Bartosz Ziemkiewicz Matematyka finansowa w pakiecie Matlab 55/55