Z Skrypty dla studentów Ekonofizyki UPGOW
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] ) + PN/(1+r)^n; endfunction
Dysponując taką funkcją możemy narysować wykres zależności ceny obligacji od stopy procentowej r:
r=linspace(0.01,0.5,25) for i=1:length(r) p(i)=Bond_Fair_Price(100,r(i),7,25); endfor plot(r,p)
Uwaga: Proszę zwrócić uwagę na fragment:
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)\).
Działanie można sobie przećwiczyć na prostym przykładzie:
octave:271> idx=[1:4] idx = 1 2 3 4 octave:272> idx.^2 ans = 1 4 9 16
Przeliczmy teraz przykład ze skryptu Instrumenty Rynku :
octave:157>P0=1 octave:157>PN=100 octave:157>r=0.07 octave:157>C=6 octave:157>Bond_Fair_Price(PN,r,C,2) ans = 98.192
Analogicznie możemy zaimplementować naszą funkcje dla przypadków: m wypłat kuponu w jednym roku:
function P0=Bond_Fair_Price_multi(PN,r,C,n,m) P0 = sum ( (C/m)./(1+r/m).^[1:n] ) + PN/(1+r/m)^n; endfunction
oraz dla kapitalizacji ciągłej gdzie mamy:
function P0=Bond_Fair_Price_cont(PN,r,C,t) ti=1:floor(t); P0 = sum (C*exp(-r*ti)) + (t-floor(t))*C*exp(-r*t) + PN*exp(-r*t); endfunction