- •"Дослідження математичних моделей інвестиційного аналізу"
- •1. Вступ
- •1) Поняття фінансів та фінансової математики.
- •2) Основні напрями фм:
- •3) Чинник часу
- •2. Історія фінансової математики
- •3. Фінансова ефективність капіталовкладень
- •Показники фінансової ефективності та методи їх обчислення
- •1. Чиста приведена вартість (npv, чистий наведений ефект) .
- •2. Індекс рентабельності інвестицій pi (Profitability Index)
- •3.Метод розрахункукоефіцієнтів ефективності
- •4. Визначеннястроку окупностіінвестицій (рр, dpp)
- •5. Методи визначення внутрішньої норми прибутковості (irr)
- •Розділ II Аналіз ефективності цінних паперів
- •Облігації, їх види і основні характеристики
- •2.За терміном звернення :
- •Вартість облігацій
- •Доходність облігацій
- •Ризик. Методи оцінки й аналізу ризику інвестиційних проектів.
- •Методи аналізу ризику
- •II) будемо використовувати дані попередньої задачі:
- •4) Аналіз запасу безпеки інвестиційних проектів та аналіз беззбиктовості (cvp-analysis, break-even analysis).
- •1. Розрахунок статичної точки беззибтковості (break-even point):
- •2. Динамічна точка беззибтковості:
- •3. Запас безпеки інвестиційних проектів:
- •4. Динамічний аналіз беззбитковості виробництва багатономенклатурної продукції:
2. Динамічна точка беззибтковості:
Припустимо, що фірма збирається придбати нову виробничу лінію, яка потребує первинних додаткових інвестицій F в сумі 2млн. дол., прогнозна ціна за одиницю продукції – 8 дол, змінні витрати на одиницю – 6 дол, термін життя проекту -10 років. Класична точка беззбитковості, розрахована для цих даних, показує обсяг виробництва N=1 млн. од., проте це статична картина, "малюнок" процесу, яка не відображає тимчасових аспектів виробництва, що триває 10 років, і не враховує цінність продукту відносно часу, щоб окупити початкові інвестиції.
У таких випадках використаємо формулу динамічної точки беззбитковості:
Перетворимо цю формулу:
,
де
В інвестиційних розрахунках залишкову вартість S частіше приймають рівною нулю. Тоді отримаємо:
3. Запас безпеки інвестиційних проектів:
Нехай нам відомо значення NPV (Qt) - цільове (те, яке відповідає заданому обсягу виробництва Qt). Будемо вважати, що проект прибутковий , тобто NPV (Qt) > 0.
Розв’яжемо рівняння NPV (Q0) = 0 відносно невідомого Q0. Та знайдемо Q0.
Отже, Q0 – мінімально допустиме значення обсягу виробництва, нижче якого проект буде приносити збитки.
Важливою характеристикою успішних капіталовкладень є запас безпеки проекту. Абсолютний динамічний запас безпеки проекту визначається як:
.
Тобто, як різниця між цільовим значення обсягу виробництва та мінімально допустимим. Очевидно, що > 0.
Відносний динамічний запас безпеки проекту :
4. Динамічний аналіз беззбитковості виробництва багатономенклатурної продукції:
Якщо локалізувати постійні витрати по видам продукції та розглянути прибутковість та запас безпеки для кожної окремої продукції можно найти динамічну точку беззбитковості для кожного виду за формулою :
де i-го виду продукції,
m – число видів продукції.
Але, як правило, локалізувати постійні витрати достатьно важко (так якздебільшого майже неможливо визначити всі вхідні дані проекту). Тому доцільніше використовувати точку беззбитковості – як обсяг сукупної виручки від продажу всіх видів продукції, при яких сумарний NPV = 0. Тобто , таким чином :
, звідки отримаємо :
Виразимо через сукупну виручку:
Тобто, точка беззбитковості буде мати вигляд :
Приклад 4.
Візьмемо умову задачі з приклада 1:
I0 = 2000.
F= 500.
P – V = 20.
A=100 .
T= 23%.
Ставка дисконтування r= 12%.Знайдемо запас безпеки для проекту при теміну:
n= 6, 9, 12 ,15.
Нехай :
n, p. |
6 |
9 |
12 |
15 |
NPVt |
2432 |
3744 |
4678 |
5342 |
, цільове |
93.5 | |||
, мінім.допустиме |
55.09 |
47.88 |
44.47 |
42.57 |
38.41 |
45.62 |
49.03 |
50.93 | |
41 % |
48.79 % |
52.44 % |
54.47 % |
:
n, p. |
6 |
9 |
12 |
15 |
NPVt |
1507 |
2819 |
3752 |
4417 |
, цільове |
95.8 | |||
, мінім.допустиме |
67.52 |
55.81 |
50.66 |
47.9 |
28.28 |
39.99 |
45.14 |
47.9 | |
29.52 % |
41.74 % |
47.12 % |
50 % |
Як бачимо , проект першого типу більш надійніший в декілька перших років. Потім запас безпеки проектів вирівнюється.
Додаток 1.
Програма обчислення IRR (внутрішньої норми прибутковості) проекту за допомогою методу половинного ділення.
using System;
using System.Collections.Generic;
using System.Text;
namespace IRR_bisek
{
class Program
{
public static int j, n, z;
public static double a, b, c, d, t, f1, f2, f3, e;
public static double[] p = new double[100];
public static double[] v = new double[3];
public static double[] q = new double[100];
public static bool flag;
public static double f(double d)
{
double s = d / 100 + 1;
t = 0;
for (int i = 0; i < n + 1; i++)
{
t = t + p[i] / (Math.Exp((i - 1) * Math.Log(s)));
}
t = t + v[0] / (Math.Log(s)) * (1 / (Math.Exp(v[1] * Math.Log(s))) - 1 / (Math.Exp(v[2] * Math.Log(s))));
return t;
}
public static void root()
{
j = 1;
for (int k = 0; k < 100; k++)
{
q[k] = f(j);
j = j + 5;
}
z = 0;
for (int k = 0; k < 99; k++)
{
if (((q[k] < 0) && (q[k + 1] > 0)) || ((q[k] > 0) && (q[k + 1] < 0)))
{ z = z + 1; }
}
}
public static void bisek()
{
while (!flag)
{
c = (a + b) / 2;
f1 = f(a);
f2 = f(b);
f3 = f(c);
if (b-a<e)
{
flag = true;
Console.WriteLine(String.Format("IRR = {0} \n", b));
break;
}
else
{
if (f1 * f3 < 0)
{ b = c; }
else
{ a = c; }
}
}
}
static void Main()
{
Console.WriteLine("VVedi srok proekta");
n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Vvedi investicii");
for (int k = 0; k < n + 1; k++)
{
p[k] = Convert.ToDouble(Console.ReadLine());
}
Console.WriteLine("Esli kus.nepr. potok platejey - vvedi summu,na4alo i konec");
for (int k = 0; k < 3; k++)
{
v[k] = Convert.ToDouble(Console.ReadLine());
}
e = 0.001;
a = 1;
b = 5;
bisek();
root();
if (z > 2)
{
a = 300;
b = 310;
bisek();
}
Console.ReadLine();
}
}
}
Додаток 2.
Програма обчислення IRR (внутрішньої норми прибутковості) проекту за допомогою методу січних.
using System;
using System.Collections.Generic;
using System.Text;
namespace IRR_sek
{
class Program
{
public static int j, n, z;
public static double a, b, x1, x2, x3, t, e;
public static double[] p = new double[100];
public static double[] v = new double[3];
public static double[] q = new double[100];
public static bool flag;
public static double f(double d)
{
double s = d / 100 + 1;
t = 0;
for (int i = 0; i < n+1 ; i++)
{
t = t + p[i] / (Math.Exp((i - 1) * Math.Log(s)));
}
t = t + v[0] / (Math.Log(s)) * (1 / (Math.Exp(v[1] * Math.Log(s))) - 1 / (Math.Exp(v[2] * Math.Log(s))));
return t;
}
public static void root()
{
j = 1;
for (int k = 0; k < 100; k++)
{
q[k] = f(j);
j = j + 5;
}
z = 0;
for (int k = 0; k < 99; k++)
{
if (((q[k] < 0) && (q[k + 1] > 0)) || ((q[k] > 0) && (q[k + 1] < 0)))
{ z = z + 1; }
}
}
public static void sek()
{
x1 = a;
x2 = b;
while (!flag)
{
x3 = x1 - (f(x1) * (x2 - x1)) / (f(x2) - f(x1));
if (Math.Abs(x2 - x3) < e)
{
flag = true;
Console.WriteLine(String.Format("IRR = {0} \n", x3));
break;
}
else
{
x1 = x2;
x2 = x3;
}
}
}
static void Main()
{
Console.WriteLine("VVedi srok proekta");
n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Vvedi investicii");
for (int k = 0; k < n+1 ; k++)
{
p[k] = Convert.ToDouble(Console.ReadLine());
}
Console.WriteLine("Esli kus.nepr. potok platejey - vvedi summu,na4alo i konec");
for (int k = 0; k < 3; k++)
{
v[k] = Convert.ToDouble(Console.ReadLine());
}
e = 0.001;
a = 1;
b = 5;
sek();
root();
if (z > 2)
{
a = 300;
b = 310;
sek();
}
Console.ReadLine();
}
}
}
Результати обчислень IRR за допомогою программи з методом січних:
1) VVedit' termin proekta
5
Vvedit' investicii
-20
0
-8
0
0
40
kuso4no.neper. potik platejiv - vvedit' summu,na4alo i kinec'
0
0
0
IRR = 8,3247954935484
2) VVedit' termin proekta
4
Vvedit' investicii
-15
3
4
8
7
kuso4no.neper. potik platejiv - vvedit' summu,na4alo i kinec'
0
0
0
IRR = 14,704942330788.
3) VVedit' termin proekta
4
Vvedit' investicii
-4
-2
4
-1
5
kuso4no.neper. potik platejiv - vvedit' summu,na4alo i kinec'
0
0
0
IRR = 11,0507041582152
4) VVedit' termin proekta
10
Vvedit' investicii
-30
0
0
-10
0
20
0
-4
0
0
40
kuso4no.neper. potik platejiv - vvedit' summu,na4alo i kinec'
2
2
10
IRR = 8,54258754906807
Додаток 3.
i |
j |
Проект А |
Проект В |
Вибір | ||||||
NPV |
PI |
DPP |
IRR |
NPV |
PI |
DPP |
IRR | |||
1 |
1 |
14396,30 |
0,2360 |
3,8 |
20,006 |
15108,89 |
0,2477 |
4,3 |
17,763 |
B |
2 |
14874,66 |
0,2399 |
3,7 |
20,150 |
15444,13 |
0,249 |
4,3 |
17,799 |
B | |
3 |
15353,02 |
0,2437 |
3,7 |
20,289 |
15779,38 |
0,2505 |
4,3 |
17,834 |
B | |
4 |
15831,38 |
0,2464 |
3,6 |
20,423 |
16114,62 |
0,2518 |
4,2 |
17,868 |
B | |
5 |
16309,73 |
0,2509 |
3,5 |
20,554 |
16449,86 |
0,2530 |
4,2 |
17,901 |
B | |
6 |
16788,09 |
0,2544 |
3,4 |
20,6797 |
16785,11 |
0,2543 |
4,1 |
17,932 |
A | |
7 |
17266,45 |
0,2577 |
3,2 |
20,802 |
17120,35 |
0,2555 |
4,1 |
17,963 |
A | |
8 |
17744,81 |
0,2610 |
3,2 |
20,921 |
17455,59 |
0,2567 |
4,1 |
17,992 |
A | |
2 |
1 |
9746,987 |
0,1373 |
4,5 |
17,407 |
10314,21 |
0,1453 |
4,7 |
16,130 |
B |
2 |
10188,90 |
0,1415 |
4,4 |
17,570 |
10604,91 |
0,1473 |
4,7 |
16,185 |
B | |
3 |
10630,81 |
0,1456 |
4,4 |
17,728 |
10895,62 |
0,1493 |
4,7 |
16,239 |
B | |
4 |
11072,72 |
0,1496 |
4,3 |
17,881 |
11186,32 |
0,1512 |
4,6 |
16,291 |
B | |
5 |
11414,63 |
0,1535 |
4,3 |
18,031 |
11477,02 |
0,1530 |
4,6 |
16,3412 |
B | |
6 |
11956,54 |
0,1573 |
4,2 |
18,176 |
11767,72 |
0,1548 |
4,5 |
16,3904 |
A | |
7 |
12398,45 |
0,161 |
4,2 |
18,317 |
12058,42 |
0,1566 |
4,5 |
16,4383 |
A | |
8 |
12840,36 |
0,1646 |
4,1 |
18,455 |
12349,12 |
0,1583 |
4,5 |
16,4849 |
A | |
3 |
1 |
4820,443 |
0,0595 |
4,9 |
15,4125 |
5124,645 |
0,0595 |
4,9 |
14,8650 |
B |
2 |
5227,335 |
0,0637 |
4,8 |
15,5823 |
5372,829 |
0,0655 |
4,9 |
14,9302 |
B | |
3 |
5634,2278 |
0,0679 |
4,8 |
15,7479 |
5642,135 |
0,0676 |
4,9 |
14,9937 |
B | |
4 |
6041,1203 |
0,0719 |
4,8 |
15,9091 |
5869,195 |
0,0699 |
4,9 |
15,0557 |
A | |
5 |
6448,013 |
0,0759 |
4,7 |
16,0664 |
6117,378 |
0,07197 |
4,9 |
15,1611 |
A | |
6 |
6854,905 |
0,0797 |
4,7 |
16,2198 |
6365,562 |
0,07402 |
4,8 |
15,1751 |
A | |
7 |
7261,798 |
0,0835 |
4,7 |
16,3695 |
6613,745 |
0,07602 |
4,8 |
15,2326 |
A | |
8 |
7668,69 |
0,0871 |
4,6 |
16,5156 |
7000,538 |
0,07955 |
4,8 |
15,3346 |
A |
ЗАВДАННЯ :
Підприємство повинно зробити вибір між двома інвестиційними проектами А та В :
початкові інвестиції – (50+10і+j)*1000 грн. і ідентичні для обох проектів;
доходи за проектом А : (180+20і+4j)*100 кожний рік протягом 5 років, за В : 1-й рік – W, 2-й рік - 2W , третій - 3W, четвертий - 5W, п’ятий - 9W,
W = (50+6і+j)*100 грн.
- ставка приведення - (10 + і) % .
Обчислити :
NPV, IRR, PI, DPP обох проектів;
Оцінити проект на основі критерію NPV та IRR.
і = 1, …, 8; j= 1, 2, 3.
Як бачимо, при тому, що у всіх випадках IRRпроекту А вище. Але, враховуючи те, що при одинакових початкових інвестиціях в деяких випадках NPV проекту В вище, слід скоріше прийняти його.
Додаток 4. Программа для обчислення прибутковостідо погашення методомсічних.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Anal_oblig
{
class Program
{
public static int N = 100, P = 5;
public static int j, n, z;
public static double a, b, x1, x2, x3, t, e;
public static double[] p = new double[100];
public static double[] v = new double[3];
public static double[] q = new double[100];
public static bool flag;
public static double f(double d)
{
double s = d / 100 + 1;
t = 0;
for (int i = 1; i < n + 1; i++)
{
t = t + p[i] / (Math.Exp((i ) * Math.Log(s)));
}
t = t + N / (Math.Exp((n ) * Math.Log(s))) - P;
return t;
}
public static void root()
{
j = 1;
for (int k = 0; k < 100; k++)
{
q[k] = f(j);
j = j + 5;
}
z = 0;
for (int k = 0; k < 99; k++)
{
if (((q[k] < 0) && (q[k + 1] > 0)) || ((q[k] > 0) && (q[k + 1] < 0)))
{ z = z + 1; }
}
}
public static void sek()
{
x1 = a;
x2 = b;
while (!flag)
{
x3 = x1 - (f(x1) * (x2 - x1)) / (f(x2) - f(x1));
if (Math.Abs(x2 - x3) < e)
{
flag = true;
Console.WriteLine(String.Format("IRR = {0} \n", x3));
break;
}
else
{
x1 = x2;
x2 = x3;
}
}
}
static void Main()
{
n = 25;
for (int k = 0; k < n + 1; k++)
{ p[k] = 6; }
e = 0.001;
a = 1; b = 5;
sek();
root();
if (z > 2)
{
a = 300;
b = 310;
sek();
}
Console.ReadLine();
} } }
Додаток 5 .
Программа в Matlab знаходження IRR проекту.
1) function analiz_IRR
clc;
Q = 100;
P_V = 15;
T = 0.23;
F = 500;
Am = 200;
I = 1000;
eps = 0.000001;
z = fsolve(@VND, 0.5, 0.00001 )
end
function res = VND (IRR)
Q = 60;
P_V = 15;
T = 0.23;
F = 500;
Am = 100;
I = 2000;
NPV = -I;
NPV = NPV + ((0.5* Q * P_V - F - Am) * (1 - T) + Am) / ((1 + IRR)) ;
NPV = NPV + ((0.7* Q * P_V - F - Am) * (1 - T) + Am) / ((1 + IRR)^2);
NPV = NPV + ((0.9* Q * P_V - F - Am) * (1 - T) + Am) / ((1 + IRR)^3);
for i = 4 : 6
NPV = NPV + (( Q * P_V - F - Am ) * (1 - T)+Am) / ((1 + IRR)^i);
end
res = NPV;
end
2) function analiz_IRR
clc;
Q = 100;
P_V = 15;
T = 0.23;
F = 500;
Am = 200;
I = 1000;
eps = 0.000001;
z = fsolve(@VND, 0.5, 0.00001 )
end
function res = VND (IRR)
Q = 60;
P_V = 15;
T = 0.23;
F = 500;
Am = 100;
I = 2000;
NPV = -I;
for i = 1 : 6
NPV = NPV + (( Q * P_V - F - Am ) * (1 - T)+Am) / ((1 + IRR)^i);
end
res = NPV;
end
Додаток 6.
Програма Matlab знаходження NPV проекту:
1) function analiz_NPV
clc;
Q = 100;
P_V = 20;
T = 0.23;
F = 500;
Am = 100;
I = 2000;
IRR = 0.12;
NPV = -I;
NPV = NPV + ((0.5*Q * P_V - F - Am) * (1 - T) + Am) / ((1 + IRR)) ;
NPV = NPV + ((0.7*Q * P_V - F - Am) * (1 - T) + Am) / ((1 + IRR)^2) ;
NPV = NPV + ((0.9*Q * P_V - F - Am) * (1 - T) + Am) / ((1 + IRR)^3);
for i = 4 : 15
NPV = NPV + (( Q * P_V - F - Am ) * (1 - T)) / ((1 + IRR)^i);
end
NPV
end
2) function analiz_NPV
clc;
Q = 100;
P_V = 20;
T = 0.23;
F = 500;
Am = 100;
I = 2000;
IRR = 0.12;
NPV = -I;
for i = 1 : 15
NPV = NPV + (( Q * P_V - F - Am ) * (1 - T)) / ((1 + IRR)^i);
end
NPV
end
Додаток 7.
Программа для розв’язання рівняння NPV (Q) = 0.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
public static int j, n, z;
public static double a, b, x1, x2, x3, t, e;
public static double[] p = new double[100];
public static double[] v = new double[3];
public static double[] q = new double[100];
public static bool flag;
public static double f(double d)
{
double Am = 100, T = 0.23, P_V = 20, F = 500, I0 = 2000;
double IRR = 0.12;
t = 0;
t = t - I0;
t = t + ((0.5*d * P_V - F - Am) * (1 - T) + Am) / (Math.Pow(1 + IRR, 1)); ;
t = t + ((0.7*d * P_V - F - Am) * (1 - T) + Am) / (Math.Pow(1 + IRR, 2)); ;
t = t + ((0.9*d * P_V - F - Am) * (1 - T) + Am) / (Math.Pow(1 + IRR, 3)); ;
for (int i = 4; i < n + 1; i++)
{
t = t + ((d * P_V - F - Am) * (1 - T) + Am) / (Math.Pow(1 + IRR, i)); ;
}
return t;
}
public static void root()
{. . . }
public static void sek()
{. . . }
static void Main()
{
Console.WriteLine("VVedi srok proekta");
n = Convert.ToInt32(Console.ReadLine());
e = 0.001;
a = 1;
b = 5;
sek();
root();
if (z > 2)
{
a = 300;
b = 310;
sek();
}
Console.ReadLine();
}
}
}
Перелік використаної літератури:
1. Жуленев С. В. «Фінансова математика : Введення в класичну теорію» - М., Вид-во МГУ, 2001. - 480 с.
2. Малихін В. І. «Фінансова математика: Навч. посібник для вузів» - 2-е вид., – М.: ЮНИТИ-ДАНА, 2003. - 237 с.
3. С.С. Кліменко, В.М. Мацкул, Н.Л. Воропай «Методичні вказівки та завдання до самостійної роботи з курсу «Фінансова математика». – Одеса: ОДЕУ, 2005. – 343 с.
4. І. Я. Лукасевич. «Аналіз фінансових операцій.» М., ФиС, 1998г. – 402 с.
5. Я. С. Мелкунов. Теоретичний і практичний посібник по фінансовим обчисленням., М., ІНФРА-М, 1996 р.
6. Інтернет-ресурси : http://fin-admin.com;http://ru.wikipedia.org та ін.