Лаб 2
.docxФЕДЕРАЛЬНОЕ Государственное АВТОНОМНОЕ образовательное УЧРЕЖДЕНИЕ ВЫСШЕГО образования
«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ
ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»
(НИУ «БелГУ»)
ИНСТИТУТ ИНЖЕНЕРНЫХ И ЦИФРОВЫХ ТЕХНОЛОГИЙ
Кафедра прикладной информатики и информационных технологий
Отчет по лабораторной работе № 1
Анализ хозяйственной деятельности заказчика (определение инвестиционной привлекательности заказчика)
по дисциплине «Автоматизация финансовых вычислений»
студента (ки) заочного отделения
2 курса 12002166 группы
Зубенко Михаила Петровича
Проверил:
Асс. Свиридова И. В.
БЕЛГОРОД, 2022
Цель работы
Освоить навыки работы с финансовыми инструментами, позволяющими осуществить привлечение необходимого объема денежных средств.
Общая постановка задачи
В лабораторной работе по исходным данным для объекта Волоконовский РУС необходимо рассчитать краткосрочный, долгосрочный и потребительский кредиты, а также произвести расчёт лизинга. Также необходимо рассчитать цену учёта векселя банком.
Результаты выполнения работы
Исходные данные приведены на рисунке 1
Рисунок 1 – Исходные данные
Для вычисления необходимых данных была написана программа на языке Java с графическим интерфейсом.
Рисунок 2 – Вычисление краткосрочного кредита
Рисунок 3 – Вычисление долгосрочного кредита с погашением в конце
Рисунок 4 – Вычисление долгосрочного кредита с фондом погашения и ежегодной выплатой процентов
Рисунок 5 – Вычисление долгосрочного кредита с погашением равными долями
Рисунок 6 – Вычисление потребительского кредита
Рисунок 7 – Вычисление цены учёта векселя банком
Рисунок 8 – Исходные параметры лизинга
Рисунок 9 – Расчёт лизинга по исходным параметрам
Также был создан файл в программе Excel, в который были введены формулы для вычисления тех же показателей. Работа с файлом представлена на рисунках 5 и 6
Рисунок 5 – Расчёт кредитов в программе Excel
Рисунок 6 – Расчёт лизинга в программе Excel
Вывод
Освоили навыки работы с финансовыми инструментами, позволяющими осуществить привлечение необходимого объема денежных средств.
Приложение 1
Код программы
public class finModel { //Все переменные указаны в миллионах рублей double [] cashFlow = new double[]{3.5, 5.37, 7.1, 9.25, 12.16, 15.59}; //Денежный поток double [] discCashFlow = new double[cashFlow.length]; //Дисконтированный денежный поток double [] accDiscCashFlow = new double[cashFlow.length + 1]; //Накопленный дисконтированный денежный поток //E - ставка дисконтирования //NPV - ЧДД, чистый дисконтироанный доход //IC - необходимые инвестиции //CC - необходимая норма прибыли //PI - индекс доходности //Per - срок окупаемости в годах //IRR = внутренняя норма доходности int length = cashFlow.length; private double E = 0.135, NPV = 0, PV, CC = 9, IC = 27.641, IRR, PI = 0, Per; private boolean isNPV = false;
public finModel() {
//Конструктор по умолчанию. Заполняются массивы дисконтированного и накопленного //дисконтированного денежных потоков accDiscCashFlow[0] = -IC; //Заполняем нулевой год накопленных потоков //Дисконтируем каждый год for (int i = 0; i < length; i++) discCashFlow[i] = cashFlow[i] / (1 + E); //Вычитаем для каждой ячейки из первоначальных инвестиций поступивший доход /*for (int k = 1; k < length; k++) { for (short i = 0; i < k; i++) accDiscCashFlow[k] += discCashFlow[i]; accDiscCashFlow[k] = -(IC - accDiscCashFlow[k]); }*/ } public finModel(double[] cashFlow, double CC, double IC, double E) { this.cashFlow = cashFlow; this.CC = CC; this.IC = IC; this.E = E; //Конструктор по умолчанию. Заполняются массивы дисконтированного и накопленного //дисконтированного денежных потоков //accDiscCashFlow[0] = -IC; //Заполняем нулевой год накопленных потоков //Дисконтируем каждый год for (int i = 0; i < length; i++) discCashFlow[i] = cashFlow[i] / (1 + E); //Вычитаем для каждой ячейки из первоначальных инвестиций поступивший доход /*for (int k = 1; k < length; k++) { for (short i = 0; i < k; i++) accDiscCashFlow[k] += discCashFlow[i]; accDiscCashFlow[k] = -(IC - accDiscCashFlow[k]); }*/ }
public double calcNPV() //Считаем ЧДД и текущую стоимость проекта { NPV = 0;
for (int i = 1; i <= length; i++) { NPV += cashFlow[i - 1] / (Math.pow(1 + E, i)); } PV = NPV; NPV -= IC; isNPV = true; //ЧДД уже вычислен return NPV; }
public double calcPI() //Считаем индекс доходности на основе ЧДД { if (!isNPV) calcNPV(); //Если ЧДД не вычислен, вычисляем PI = 1 + NPV/IC; return PI; }
public double paybackPeriod() //Считаем срок окупаемости проекта { double midCashFlow = 0; int i; for (i = 0; i < cashFlow.length; i++) midCashFlow += discCashFlow[i]; //System.out.println(midCashFlow); midCashFlow /= i; //System.out.println(midCashFlow); Per = IC/midCashFlow; return Per; }
public double getPV() //Считаем и возвращаем текущую стоимость на основе ЧДД { if (! isNPV) calcNPV(); return PV; }
private double calcNPV(double E1) //Считаем ЧДД по нужной ставке дисконтирования для определения ВНД { double NPV1 = 0; for (int i = 1; i <= length; i++) { NPV1 += cashFlow[i - 1] / (Math.pow(1 + E1, i)); } NPV1 -= IC; return NPV1; }
public double calcIRR() //Считаем ВНД { double i1 = 0, i2; double temp = 0; //Перебираем проценты по одному для более точных вычислений ВНД for (double i = 0; i < 100; i++) { if (calcNPV(i / 100) > 0) temp = i; else i1 = temp; } i2 = (i1 + 1) / 100; i1 /= 100;
//System.out.println(i1 + " " + i2 + " " + calcNPV(i1) + " " + calcNPV(i2));
IRR = i1*100 + calcNPV(i1) / (calcNPV(i1) - calcNPV(i2)) * (i2*100 - i1*100);
return IRR; } } |