MKZR:sandbox

Z Skrypty dla studentów Ekonofizyki UPGOW

(Różnice między wersjami)
(Stopa zwrotu w terminie do wykupu (Yield to maturity))
m (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.
 +
<source lang="matlab">
function r=YTM(P0,PN,m,n,C)
function r=YTM(P0,PN,m,n,C)
Linia 79: Linia 80:
endfunction
endfunction
 +
</source>
=== 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