If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.
Здравейте,
Когато се търси ефективен лихвен процент, той винаги е свързан със потоци за определено време.
В рамките на това време може да има много парични потоци с различен матуритет(условието все пак е матуритета на единичен поток да не надвишава времето,за което калкулираш).
Калкулираш за всеки поток по отделно EAR и тъй като EAR изразява годишна база за всеки поток, намираш средно претеглен EAR.
В инвестицийте това е приемливо, от математична гледна точка вероятно не е напълно точно.
Може, ако толкова ти харесва . Аз не го обичам по две причини:
Първо, convergence-а му си е пак линеен като при Newton-Raphson и нищо не се печели - сравнително бавен е.
Второ и по-важно, методът не е достатъчно стабилен при по-сложни функции с няколко корена в разглеждания интервал. Например, представи си, че имаш функция, която има два корена отляво на средата и един отдясно. Взимаш средата и виждаш, че има корен отдясно, но нищо няма да ти подскаже, че има и два отляво. Този проблем го има и при Newton-Raphson, тъй като и той търси локално, но поне може лесно да се провери като вземеш първоначални стойности в двата края на интервала и видиш дали ще ти дадат един и същи корен.
Разбира се, при простия пример, с който се занимава темата всички тези неща нямат никакво значение и трите метода дават еднакъв отговор за еднакво време...
прав си. мен ми се е налагало редко да иzплоzвам теzи методи (вав враzка с implied volatility). ина4е zа GARCH полzвам Nelder–Mead макар и тои да не е перфектен
Ще ти покажа най-простият начин за изчисляване на ефективен лихвен процент.
EAR=((1+HPY)^365/t)-1
Където:
EAR = Effective Annual Return или приеми го ефективния лихвен процент на годишна база
HPY = Holding Period Yield доходността или сумата платена за периода като лихва.
HPY=(End Amount/Begining Amount)-1
t= период в дни.
Примерно за три месеца влагаш 10 000 лева и получаваш 10 200лева, колко е ефективната лихва?
1.HPY=(10200/10000)-1=0,02 или 2%
2.ЕАR=(1,02^365/90)-1 = 0,0836 ли 8.36%
Или примерно за две години влагаш 10 000 и получаваш 17 000
1.HPY=(17000/10000)-1=0.7 или 70%
2.EAR=(1.7^365/730)-1=0.3038 или 30.38%
Това е начина на смятане със суми.
Ако се търси ефективен лихвен процент при начисляване на лихва за различни периоди от годината, тогава формулите са по-различни.
Примерите си ги измислих не са реални, показват само изчисленията
Това хубаво, ама какво се случва ако имаш много потоци през неравни интервали?
"The best is always the enemy of good enough." - Mikhail Kalashnikov
вместо с Newton-Raphson не може ли с Bisection method
Може, ако толкова ти харесва . Аз не го обичам по две причини:
Първо, convergence-а му си е пак линеен като при Newton-Raphson и нищо не се печели - сравнително бавен е.
Второ и по-важно, методът не е достатъчно стабилен при по-сложни функции с няколко корена в разглеждания интервал. Например, представи си, че имаш функция, която има два корена отляво на средата и един отдясно. Взимаш средата и виждаш, че има корен отдясно, но нищо няма да ти подскаже, че има и два отляво. Този проблем го има и при Newton-Raphson, тъй като и той търси локално, но поне може лесно да се провери като вземеш първоначални стойности в двата края на интервала и видиш дали ще ти дадат един и същи корен.
Разбира се, при простия пример, с който се занимава темата всички тези неща нямат никакво значение и трите метода дават еднакъв отговор за еднакво време...
"The best is always the enemy of good enough." - Mikhail Kalashnikov
Ще ти покажа най-простият начин за изчисляване на ефективен лихвен процент.
EAR=((1+HPY)^365/t)-1
Където:
EAR = Effective Annual Return или приеми го ефективния лихвен процент на годишна база
HPY = Holding Period Yield доходността или сумата платена за периода като лихва.
HPY=(End Amount/Begining Amount)-1
t= период в дни.
Примерно за три месеца влагаш 10 000 лева и получаваш 10 200лева, колко е ефективната лихва?
1.HPY=(10200/10000)-1=0,02 или 2%
2.ЕАR=(1,02^365/90)-1 = 0,0836 ли 8.36%
Или примерно за две години влагаш 10 000 и получаваш 17 000
1.HPY=(17000/10000)-1=0.7 или 70%
2.EAR=(1.7^365/730)-1=0.3038 или 30.38%
Това е начина на смятане със суми.
Ако се търси ефективен лихвен процент при начисляване на лихва за различни периоди от годината, тогава формулите са по-различни.
Примерите си ги измислих не са реални, показват само изчисленията
Аз пък не разбрах защо многото периоди ти причиняват затруднение...
Иначе колегата Dash Riprock те е насочил много правилно. Единствената малка добавка, която мога да направя е в случай, че те дразни бавния convergence rate на Newton-Raphson; в такъв случай може да използваш higher order схеми като тази на Halley примерно. С нея ще постигнеш кубична конвергенция, но пък се хаби време да сметнеш и втората производна вместо само първата. В дебелите книги по числов анализ предпочитат по-висок convergence rate - ти си прецени дали има смисъл в твоя случай. Поствам и моята версия на алгоритъма на Dash Riprock. Успех.
[CODE]function [result, iter] = IRR( mat, freq, c, FV, BP )
%Iterative root finding.
%mat - maturity in years.
%freq - coupon frequency.
%c - annual coupon.
%FV - face value.
%BP - quoted bond price.
vec = ones( ( mat * freq ), 1 );
bond = vec .* ( c/freq );
bond ( mat * freq, 1 ) = ( c/freq ) + FV;
per = vec;
for i = 1 : mat * freq
per( i, 1 ) = i;
end;
ep = 10 ^ ( -10 );
%Initial guess.
yield = c / BP;
price = FV;
iter = 0;
while abs( price - BP ) > 0.05;
yield = yield + ep;
df = ( vec .* ( 1 / ( 1 + yield / freq + ep ) ) ) .^ per;
price = sum( bond .* df );
a = ( bond .* df ) .* per;
b = 1 + yield / freq + ep;
a1 = ( bond .* df ) .* ( per .* (per - 1) );
%Newton-Raphson. Numerator is f(yield). Denominator is f'(yield).
% yield = yield + ( price - BP ) / ( sum( a ) / ( b ) );
%Halley. Cubic rate of convergence. Slower - second derivative calculation.
num = 2 * ( price - BP ) * ( sum( a ) / ( b ) );
denom = 2 * ( ( sum( a ) / ( b ) ) ^ 2 ) - ( price - BP ) * ( sum( a1 ) / ( b ^ 2 ) );
yield = yield + num / denom;
iter = iter + 1;
end;
result = yield * 100; [/CODE]
вместо с Newton-Raphson не може ли с Bisection method
Интересувам се как се изчислява: Ефективен Лихвен Процент.
В работата ми предоставиха формула за входящи и изходящи парични потоци:
COF = CIF/(1+rate)^1 + CIF/(1+rate)^2 + ... CIF/(1+rate)^N
Неприятната част от формулата, е че в знаменател има елементи, които са на степен, която е напълно възможно да има стойности от порядъка на 60 или 70.
Изчисления с метода на приближението, не смятам че ще ми свършат работата.
Ако някой може да ми помогне, ще съм много благодарен.
Аз пък не разбрах защо многото периоди ти причиняват затруднение...
Иначе колегата Dash Riprock те е насочил много правилно. Единствената малка добавка, която мога да направя е в случай, че те дразни бавния convergence rate на Newton-Raphson; в такъв случай може да използваш higher order схеми като тази на Halley примерно. С нея ще постигнеш кубична конвергенция, но пък се хаби време да сметнеш и втората производна вместо само първата. В дебелите книги по числов анализ предпочитат по-висок convergence rate - ти си прецени дали има смисъл в твоя случай. Поствам и моята версия на алгоритъма на Dash Riprock. Успех.
[CODE]function [result, iter] = IRR( mat, freq, c, FV, BP )
%Iterative root finding.
%mat - maturity in years.
%freq - coupon frequency.
%c - annual coupon.
%FV - face value.
%BP - quoted bond price.
vec = ones( ( mat * freq ), 1 );
bond = vec .* ( c/freq );
bond ( mat * freq, 1 ) = ( c/freq ) + FV;
per = vec;
for i = 1 : mat * freq
per( i, 1 ) = i;
end;
ep = 10 ^ ( -10 );
%Initial guess.
yield = c / BP;
price = FV;
iter = 0;
while abs( price - BP ) > 0.05;
yield = yield + ep;
df = ( vec .* ( 1 / ( 1 + yield / freq + ep ) ) ) .^ per;
price = sum( bond .* df );
a = ( bond .* df ) .* per;
b = 1 + yield / freq + ep;
a1 = ( bond .* df ) .* ( per .* (per - 1) );
%Newton-Raphson. Numerator is f(yield). Denominator is f'(yield).
% yield = yield + ( price - BP ) / ( sum( a ) / ( b ) );
%Halley. Cubic rate of convergence. Slower - second derivative calculation.
num = 2 * ( price - BP ) * ( sum( a ) / ( b ) );
denom = 2 * ( ( sum( a ) / ( b ) ) ^ 2 ) - ( price - BP ) * ( sum( a1 ) / ( b ^ 2 ) );
yield = yield + num / denom;
iter = iter + 1;
end;
result = yield * 100; [/CODE]
"The best is always the enemy of good enough." - Mikhail Kalashnikov
m - периоди в годината = 12 (при 1м.ср.)
n - срочност = 1 (при 1м.ср.)
;
m - периоди в годината = 4 (при 3м.ср.)
n - срочност = 3 (при 3м.ср.)
;
m - периоди в годината = 2 (при 6м.ср.)
n - срочност = 6 (при 6м.ср.)
Коментар