Z Skrypty dla studentów Ekonofizyki UPGOW
m (→Stopa zwrotu w terminie do wykupu (Yield to maturity)) |
(→Stopa zwrotu w terminie do wykupu (Yield to maturity)) |
||
Linia 72: | Linia 72: | ||
Analitycznie nie ma ogólnych wzorów na pierwiastki wielomianu dowolnego stopnia, ale instnieją procedury numeryczne, które bardzo dobrze wykonują to zadanie. | Analitycznie nie ma ogólnych wzorów na pierwiastki wielomianu dowolnego stopnia, ale instnieją procedury numeryczne, które bardzo dobrze wykonują to zadanie. | ||
+ | function r=YTM(P0,PN,m,n,C) | ||
+ | |||
+ | a = [P0, -1/m*fliplr(C)(2:length(C)), -C(n)/m-PN ]; | ||
+ | myroots=roots(a); | ||
+ | r= ( max( myroots(find( imag(myroots)==0 )) ) - 1)*m; | ||
+ | |||
+ | endfunction | ||
=== Ryzyko === | === Ryzyko === | ||
Duration według Macaulay’a - Duration obligacji przy kapitalizacji dyskretnej | Duration według Macaulay’a - Duration obligacji przy kapitalizacji dyskretnej |
Wersja z 09:54, 8 cze 2010
Obligacja ze stałym kuponem
Mamy obligację, której emitent zobowiązuje się do płacenia odsetek regularnie raz do roku i zamierza zwrócić zaciągnięte zobowiązanie (wartość nominalną) w chwili wykupu, na koniec życia zobowiązania. Wartość takie obligacji dane jest wzorem
\(\ P_o=\sum\limits_{i=1}^n\frac{C}{(1+r)^i} +\frac{P_N}{(1+r)^n},\)
który możemy zaimplementować jako funkcję w matlabie:
function P0=Bond_Fair_Price(PN,r,C,n) P0 = sum ( C./(1+r).^[1:(n-1)] ) + PN/(1+r)^n; endfunction
Proszę zwrócić uwagę na frangment:
C./(1+r).^[1:(n-1)]
który tworzy wektor o elementach będących funkcją wskaźnika \(\frac{C}{(1+r)^i} \) dla \(i=1..(n-1)\).
Dysponując tą funkcją przykład ze skryptu Instrumenty Rynku można przeliczyć wywołując:
octave:157>P0=1 octave:157>PN=106 octave:157>r=0.07 octave:157>C=6 octave:157>Bond_Fair_Price(PN,r,C,2) ans = 98.192
W przypadku m wypłat kuponu w jednym roku mamy
function P0=Bond_Fair_Price_multi(PN,r,C,n,m) P0 = sum ( (C/m)./(1+r/n).^[1:n] ) + PN/(1+r/m)^n; endfunction
a w przypadku kapitalizacji ciągłej mamy:
function P0=Bond_Fair_Price_cont(PN,r,C,t) P0 = sum ( (C)*exp(-r*t) ) + PN*exp(-r*t(length(x)) endfunction
Stopa zwrotu w terminie do wykupu (Yield to maturity)
Mamy równanie na wartość obligacji po n latach z m okresami wypłaty kupona:
\(\ P_o=\sum\limits_{i=1}^n\frac{C_i/m}{(1+r/m)^i} +\frac{P_N}{(1+r/m)^n}\)
i chcemy rozwiązać je na stopę r.
W tym celu przepiszmy do postaci:
\( P_0 (1+r/m)^n -\sum\limits_{i=1}^{n-1} \frac{C_{n-i}}{m}(1+r/m)^i + (-\frac{C_n}{m}-P_N) =0 \)
Czyli mamy wielomian stopnia n-tego na \((1+r/m)\) o współczynnikach:
\[ \displaystyle a_n=P_0\] \[ a_i=-\frac{C_{n-i}}{m}\] dla i=2,3,...,n-1 \[ a_0=-\frac{C_n}{m}-P_N\]
Analitycznie nie ma ogólnych wzorów na pierwiastki wielomianu dowolnego stopnia, ale instnieją procedury numeryczne, które bardzo dobrze wykonują to zadanie. function r=YTM(P0,PN,m,n,C)
a = [P0, -1/m*fliplr(C)(2:length(C)), -C(n)/m-PN ]; myroots=roots(a); r= ( max( myroots(find( imag(myroots)==0 )) ) - 1)*m;
endfunction
Ryzyko
Duration według Macaulay’a - Duration obligacji przy kapitalizacji dyskretnej