Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Анализ и оценка средств реализации структурных методов и проектирования экономической информационной системы

Содержание:

ВВЕДЕНИЕ

Абсолютно все компании и предприятия из любой отрасли зависят от своего финансового состояния. Оно, прежде всего, определяет, насколько рентабельна фирма на данный период, сможет ли фирма выполнить обязательства, которые на нее наложены, является ли компания надежным клиентом банка, способным выполнить кредит. Финансовое состояние также является одним из ключевых факторов для конкурентов и партнеров, позволяющим им оценить компанию. Вопросы анализа и прогнозирования финансовой стабильности предприятия недостаточно изучены даже в 21 веке. Отсутствуют также и нормативные документы, которые регламентировали бы процесс анализа, поэтому и ответственность за достоверность результатов не определена. На данный момент, поиск и разработка методов для оценки устойчивости предприятия в финансовом плане, относят к наиболее актуальным темам современной практики ведения бизнеса и экономической теории. Статистика на также подтверждает, что оценка финансового состояния необходима. По данным центра макроэкономического анализа и краткосрочного прогнозирования, на первый квартал 2017 года число обанкротившихся предприятий увеличилось на 1,6% по сравнению с предыдущем годом. Несмотря на то, что это свою очередь меньше, чем в кризисном 2015 году, обратная тенденция к росту банкротств не радует специалистов. Обобщая результаты в цифрах, можно указать от 1000 до 1050 предприятий, теряющих финансовую стабильность, в месяц.

На данный момент уже опробованы многие способы для решения этого вопроса: это и различные эконометрические модели (в основном модели MDA для российского бизнеса и logit-модели в западной практике), модели на основе искусственного интеллекта и дерево-решений, которые активно используют менеджеры, модели нейросети, обретающие все большую популярность, и даже гибридные модели, сочетающие в себе два или три способа. Несомненно, все эти методы имеют свои преимущества и недостатки, но большинство из них применимы только в случае большого набора данных, огромного числа показателей в различные периоды времени для получения точных и несмещенных оценок. При наличие такой выборки, данные методы позволят владельцам бизнеса вполне точно оценить свое финансовое состояние.

В реальной жизни не все компании обладают столь большим набором данным. Это касается, прежде всего, малого и среднего бизнеса, и фирм, только начинающих свой путь. Такие фирмы прежде всего нуждаются в оценке своего финансового состояния. По данным глобального мониторинга предпринимательства, описанного Высшей школой менеджмента СанктПетербургского государственного университета, на 2017 год около 3,5% представителям малого бизнеса в России удается оставаться на рынке в течение 3-х последующих лет. Возможно, оценка финансового состояния помогла бы владельцам вовремя принять соответствующие меры: пересмотреть бизнеспроцессы компании, урезать затраты, найти спонсоров и, как следствие, избежать банкротства, но у таких компаний нет достаточных данных для такой оценки с помощью имеющих методов. Это определяет актуальность поиска методов, которые давали бы верные прогнозные значения даже на коротких временных рядах.

Еще одним вопрос актуальности является автоматизация полученного метода. Само применение, например, эконометрической модели, может быть сложно и непонятно для владельцев бизнеса. Таким образом, для оценки риска дефолта компаниям придется привлекать специалистов со стороны. Это может оказаться непосильными затратами для малого бизнеса. К тому же, анализ финансового состояния не всегда требуется только на конец периода (например, года или полугода), оценка может понадобиться и перед слиянием с другой компанией, расширением, принятием решения по взятию кредита и т.п. В таком случае, привлечение специалиста на аутсорсинге будет довольно дорого, наличие такого специалиста в штате может оказаться не рентабельным, а применение методов самостоятельно может вести к ошибкам и большим временным затрат. Эту проблему можно решить, предоставляя конечному пользователю, например, приложение с дружелюбным интерфейсом, которое позволит формировать для них конечный результат, основываясь только на входных данных. Так владельцы бизнеса могут обращаться к оценке риска банкротства Таким образом, для малого и среднего бизнеса очень актуально получить автоматизированный метод для оценки финансового состояния, причем с использованием коротких временных рядов.

Обобщая все вышеописанное, мы можем выделить проблему, которая на данный момент не решена в рамках имеющихся подходов: отсутствует способ прогнозирования финансового состояния предприятия на основе данных краткосрочного периода. Малый и средний бизнес, в большинстве своем, не может воспользоваться имеющимися методами и нуждается в разработке новых. В рамках данной работы будет спрогнозировано финансовое состояние одной компании на основе их годовых данных в период с 2009 года. Исходя из этого, объектом нашего исследования выступает компания N. Предметом исследования выступают ее финансовые показатели, взятые за короткий промежуток времени.

Цель работы: разработать приложение для оценки финансовой устойчивости компании N на основе данных краткосрочного периода.

Для достижения поставленной цели, были определены задачи, которые необходимо выполнить в ходе работы:

1. Провести сравнительный анализ методов работы с короткими временными рядами: в задачу включается изучение методов работы с короткими временными рядами, провести их сравнение и выбрать метод для прогнозирования финансовой устойчивости предприятия N.

2. Построить модели для прогнозирования финансовой устойчивости компании N: в задачу входит построение модели при помощи выбранного метода, а также оценка адекватности данной модели. Для прогнозирования финансовой устойчивости компании N также будет построена регрессионная модель, которая не является методом работы с короткими временными рядами, однако может применяться для прогнозирования в случае доказательства адекватности ее прогнозов. В задачу также входит выбор моделей дискриминантного анализа для прогноза вероятности банкротства предприятия как частный случай финансовой устойчивости.

3. Разработать веб-приложение для прогнозирования финансовой устойчивости предприятия N на основе разработанных моделей: в задачу входят этапы анализа, проектирования, разработки и тестирования приложения.

Данная работа имеет два фактических результата: эта модель, позволяющая оценить финансовое состояние компании именно на краткосрочном периоде, и приложение, которое позволит конечному пользователю применять разработанную модель самостоятельно. Модель определяет теоретическую значимость работы, так как она дополняет теорию анализа и прогнозирования финансовой устойчивости предприятия в структуре нехватки данных. Приложение определяет практическую значимость работы, так как это позволит конечным пользователем частично автоматизировать процесс оценки финансового состояния и применять сложные методы анализа и прогнозирования самостоятельно.

Для создания модели прогнозирования финансовой устойчивости предприятия использован метод, выбранный в ходе анализа в первой главе. Исходными данными для построения модели являются финансовые показатели компании N в период с 2009 по 2017 год. Для проверки адекватности модели были проведены эконометрические тесты на автокорреляцию, гетероскедастиность, избыточные и пропущенные переменные в модели и др. [6]. Для построения регрессионной модели был использован пакет математического и эконометрического моделирования Gretl, для разработки приложения – язык графического описания для объектного моделирования UML (Unfified Modeling Languge), среда разработки Microsoft Visual Studio 2013 и объектно-ориентированный язык программирования C#.

Работа состоит из введения, основной части из трех глав, заключения, библиографического списка и приложений.

ГЛАВА 1. ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ АНАЛИЗА И ОЦЕНЩИКИ СРЕДСТВ РЕАЛИЗАЦИИ СТРУКТУРНЫХ МЕТОДОВ АНАЛИЗА И ПРОЕКТИРОВАНИЯ ЭКОНОМИЧЕСКИХ ИНФОРМАЦИОННЫХ СИСТЕМ

1.1. Метод взвешенных тангенсов и метод фазовых трендов

Для реализации поставленной цели необходимо рассмотреть методы работы с короткими временными рядами и сравнить в рамках обозреваемой предметной области. Прежде чем перейти к методам работы с временными рядами, отметим, что для прогнозирования так же могут применяться MDA-модели статические модели, построенные с помощью данных финансовой отчетности предприятия за предыдущий год. Чаще всего они применяются не для прогнозирования финансовой устойчивости, а для предупреждения банкротства предприятия. Среди разработанных моделей зарубежных и российских авторов известны методики, которые предложили Э. Альтман, Р. Лис, Эдвардс-Белла-Ольсон, Р. Таффлер, Гордон Л. В. Спрингейт, Д. Фулмер, У. Бивер, Р.С. Сайфуллин, Г.Г. Кадыков, О.П. Зайцева и многие другие [8]. Многие модели активно применяются и сейчас, причем используются как для небольших, так и крупных компаний, поэтому в разрабатываемом приложении будут запрограммированы наиболее популярные из них и их можно будет применить для прогнозирования банкротства предприятия, как частный случай его финансовой устойчивости. Однако данные модели не используют временные ряды, то есть исторические данные за несколько лет, что может привести к проблемам: например, только начинающие компании первый год могут работать себе в убыток, что приведет к негативной прогнозной оценке, хотя в целом компания вполне может существовать и дальше. Также при инвестировании в какой-либо проект финансовые показатели компании в один год значительно упадут, но это не означает ее банкротство в скором времени. MDA-модели будут включены в реализуемое приложение, однако этого недостаточно для обеспечения прогнозирования финансовой устойчивости, поэтому в задачах данной работы стоит нахождение метода работы с короткими временными рядами.

Для обзора были выбраны несколько методов работы с короткими выборками, а именно метод взвешенных тангенсов и метод фазовых трендов, освещенных в работе доктора физико-математических наук А.В. Шатрова и кандидата технических наук Ю.Л. Кошкина [3], анализ временных рядов на базе графов и матриц подобия, с применением визуализации, предложенный профессором «Кубанского государственного аграрного университета» Е.В. Поповой [15], метод кажущихся несвязанных регрессий (SUR-метод или SURE-метод) широко применяемый для анализа данных при относительно небольшой выборке [15] и метод аналогов, сочетающий в себе использования объективных и субъективных данных для прогнозирования [5]. Для сравнения вышеперечисленных методов будет составлена сравнительная таблица.

В основе метода взвешенных тангенсов лежит другой похожий метод, называемый методом средних тангенсов. Идея второго метода, МСТ, состоит в следующем: каждая линия, соединяющая пары точек поля корреляции (xi, yi) и (xj, yj), является линией регрессии, а коэффициентом регрессии для такой линии является тангенс угла α ее наклона с осью абсцисс. В следующем шаге в качестве делителя выступает сумму тангенсов по всем линиям, а делимым - число, равное при заданном объеме выборки n. Результатом такого частного станет средний коэффициент регрессии, а при расчете свободного члена этого достаточно для составления уравнение регрессии для данной выборки.

Метод взвешенных тангенсов несколько отличается, так как для каждой линии регрессии и её тангенса (то есть ее коэффициента) вычисляется определённый вес, который пропорционален разности абсцисс точек, образующих линию. Как показала практика, применение такого метода для временных рядов эквивалентно методу наименьших квадратов, но при небольшой выборке именно такой подход позволит создать лучшую модель, так как менее чувствителен к исходному объему данных.

Для более наглядного представления метода взвешенных тангенсов рассмотрим пример, представленный в работе А.В. Шатрова и Ю.Л. Кошкина [3]. Для этого возьмем небольшую выборку данных, состоящую из 4 наблюдений и представленную в табл. 1.1. Для данной выборки изначально был применен метод наименьших квадратов, дающий следующее уравнение регрессии:

Данная модель необходима нам для дальнейшего сравнения с уравнением, полученным в результате применения метода взвешенных тангенсов.

Таблица 1.1. Исходные данные выборки для примера

i – номер наблюдения

x – входной параметр

y – выходной параметр

1

1

1

2

2

2

3

3

4

4

4

5

Для данной совокупности прежде всего применим уже рассмотрении нами метод средних тангенсов. Для этого произведем ряд вычислений, а именно, найдем количество линий и тангенсы каждой из получаемых линий регрессии. Расчеты данных показателей представлены ниже:

Аналогично вычисляем оставшиеся тангенсы, которые будут равны соответственно Используя полученные показатели, мы можем вычислить оценку коэффициента b для модели, используя формулу ниже. Все значения для данной формулу уже были вычислены нами ранее – это количество линий и тангенсы, с помощью которых мы легко находим оценку:

Свободный член также вычисляет по формуле через уже найденный коэффициент b, и в конечном итоге получаем уравнение регрессии, как показано в формуле (1). Если сравнить полученную формулу с уже известной нам моделью МНК, то можно заметить, что уравнения очень близки, но результат все же различен:

​​​​​(1)

Как мы уже выяснили, метод взвешенных тангенсов отличается тем, что необходимо учитывать веса каждой из «промежуточных регрессий». Таким образом, для МВТ формула нахождения оценки коэффициента примет следующий вид:

С использованием последней формулы можно рассчитать оценку коэффициента регрессии, который будет равен 1,4. Для расчета свободного члена a применим уже известную формулу, что даст нам оценку свободного коэффициента равную -0,5. Таким образом уравнение регрессии примет вид:

В данном конкретно случае, уравнение регрессии, полученное при помощи метода наименьших квадратов и уравнение регрессии, полученное при помощи метода взвешенных тангенсов имеет одинаковый вид, но это лишь случайность, а не закономерность. Возьмем второй набор данных, немного отличающийся от первого, где выборка будет состоять из 5 наблюдений, представленных в табл. 1.2.

Таблица 1.2. Исходный данные для которых МНК и МВТ не совпадают

i – номер наблюдения

x – входной параметр

y – выходной параметр

1

1

1

2

2

3

3

2

2

4

3

5

5

4

10

Применения метода наименьших квадратов, то есть МНК-метода, и метода взвешенных тангенсов, то есть МВТ-метода, дало два совершенно разных уравнения, представленных в двух следующих формулах:

Рассмотренные примеры доказали, что метод взвешенных тангенсов может применяться и даже давать лучшие оценки в случае коротких выборок, небольшого набора исходных данных, но этого недостаточно для применения этого метода к временным рядам. Наблюдения в таком случае обычно происходит через какие-то равные промежутки времени, например, через месяц, квартал или год, и тогда формула для расчета оценки коэффициента регрессии b, исходя из исследований Шатрова и Кошкина [3], будет несколько скорректирована, как раз на появившеюся циклическую компоненту, и примет вид:

где – количество наблюдений в одном цикле,

– количество циклов временного ряда,

p– номер цикла, в котором находится первая из точек с номером t отрезка частного тренда,

q – номер цикла для второй точки,

t – номер периода циклической компоненты в отрезке от 1 до ,

Свободный член можно найти по следующей формуле:

где - номер цикла.

Для лучшего понимания таких величин как и , приведем простой пример. Пусть мы имеем наблюдения за финансовыми показателями компании в период с 2000 по 2016 год за кварталы. Тогда, , так как всего у нас 16 повторяющихся циклов, 16 годов наблюдения, а вот , ведь в каждом цикле (году) у нас есть по 4 наблюдения (за каждый из кварталов). Для вычислений p и q возьмем любые две точки, например, первые две: показатель за I квартал 2000 года и за II квартал этого же года. Для них эти значения будут одинаковыми и равны 1, так как это первый цикл, первый из рассматриваемых годов. Аналогично, если мы возьмем первый и последний элементы выборки, для первого имеем p и q равные 1 и 4 соответственно.

В данном случае, найденные оценки используется для линейного уравнения тренда T, который в свою очередь наравне с циклической компонентой S и остаточной компонентой E позволит нам найти искомую переменную y:

Остаточная компонента, по своему определению, случайна и может быть как одинакова, так и различна в каждом рассмотренном цикле, поэтому для нахождения циклической компоненты используется усредненное значение каждой ее точки t по всем циклам сразу:

где – номер цикла,

S(t) – усредненная функция циклической компоненты,

S – значение циклической компоненты,

E – остаточная компонента,

– количество наблюдений в одном цикле.

Шатров и Кошкин также привели примеры применения метода взвешенных тангенсов для временного ряда [3] и смогли достать, что данный метод действительно можно применять, так как результат эквивалентен исходной формуле, к тому же полученный результат можно считать эффективней, так как остаточная сумма квадратов немного меньше исходного результата. Как вывод из этого, метод взвешенных тангенсов не так требователен к объему данных, как метод наименьших квадратов, МВТ также может обойтись одним циклом статистики, что позволит прогнозировать данные, имея данные всего за один год, квартал или месяц до этого. Однако для циклической компоненты требуется, как минимум, один дополнительный цикл, которого может и не быть. Кроме того, неизменность циклической компоненты и трендовой оставляющей не всегда соответствует действительности, что может привести к неточным оценкам.

Чтобы избежать недостатков, имеющихся у вышеописанного метода, был предложен метод фазовых компонент. Метод фазовых трендов выделяется тем, что не требуется поиска циклической компоненты как таковой, а для применения метода достаточно только знать о ее наличии. Например, для этого используют автокорреляционную функцию временного ряда или периодограмму. Все остальные предпосылки остаются как в методе взвешенных тангенсов, то есть имеются периоды с фиксированным количеством наблюдений в каждой из них. Применение такого метода значительно улучшает модель и такие ее показатели как коэффициенты детерминации, а также критерий Фишера и средняя ошибка аппроксимации. Кроме того, так как мы не выделяем общую циклическую компоненту, есть возможность выбрать различные функции тренда для каждого цикла, что также может поспособствовать улучшению модели.

Для данного метода, возьмем уже сформированные данные из работ Кошкина и Шатрова [3] и Семенычевых [9], и сравним их, чтобы доказать действенность метода фазовых трендов. Для этого возьмем довольно распространенные данные о индексе реального ВВП в период за 2003-2008 год, и приведем только результаты, полученных авторами в ходе работы с данными из табл. 1.3 и применения двух разных моделей. Несмотря на близость результатов, некоторые показатели все же имеют различие.

Таблица 1.3. Данные индекса реального ВВП по данным Росстата

Год

Квартал

Индекс по Семенычевым

МФТ

2003

1

100

98

2

106,9

105,2

3

121,4

119,1

4

120,7

122,4

2004

1

107

106,7

2

115,2

114,8

3

130,2

129,2

4

128,7

131

2005

1

112,8

115,2

2

122,3

124,3

3

138,3

139,4

4

138,4

139,6

2006

1

120,2

123,7

2

131,7

133,9

3

138,3

149,6

4

138,4

148,1

2007

1

129,3

132,2

2

124,2

143,5

3

160,5

159,7

4

163,6

156,7

2008

1

140,5

140,6

2

153

153

3

170,2

169,9

4

165,5

165,2

В первом случае [9] использованная модель ARMA выражалась в полиномиальном уравнении 20-ого порядка, а для сохранения точности модели использовались 80-разрядные коэффициенты, что делает модель невероятно трудоемкой для расчетов. Однако коэффициент детерминации данной модели составил 0,99, средняя абсолютная ошибка модели в процентах составила 2,74%. Это хорошие показатели. Модель, полученная авторами по методу фазовых трендов, имела соответствующие показатели в размере 0,9999 и 1,93%. Эти показатели можно считать лучше, чем у предыдущей модели, так как коэффициенты детерминации практически идентичны, а средняя ошибка меньше. К сожалению, в статье не приведено само уравнение, однако указано, что все четыре фазовых тренда (по кварталам) выбраны линейными, что дает нам право утверждать, что данная модель значительно проще в расчетах, чем предыдущая, к тому же позволяет изменять уравнение фазового тренда в каждом цикле, что уже ближе к реальным данным. Однако Кошкин и Шатров отмечают, что данный метод более требователен к объему исходных данных, хотя выборка из табл. 1.4 также относительно небольшая. Для такого метода остро встает вопрос, какой минимальный набор данных необходим для получения точных и несмещенных оценок.

1.2. Анализ временных рядов на базе графов и матриц подобия

Данный метод, как показывает практика, часто применяется в экономической сфере, так зачастую значения финансовых или налогооблагаемых показателей оказывается недостаточно для прогноза. Он основан на методе визуализации, где информационной базой как раз и выступают короткие временные ряды. Данный метод будет рассмотрен на примере исследований профессора Тамбиевой, которая в своей статье [15] решала проблему недостаточности информации для принятия решений экспертами налоговой службы. Предпосылками для работы, как и в данном случае, стали малые и средние предприятия.

Исходными данными стали значения 119 различных экономических, финансовых и налоговых показателей 27 предприятий в 10-13 квартальный периоды. Таким образом, длина временного ряда составила n=13, что интерпретируется как «очень короткие временные ряды». Для демонстрации метода были выбраны 15 «основных» показателей для предприятий, среди который выручка от реализации, продажи, налоги (за исключением налога на прибыль), прибыль (убыток) от выбытия и снижения стоимости активов, прибыль от основной деятельности, текущий налог на прибыль, суммарный налог на прибыль, чистая прибыль, прибыль до налогообложения, социальные налоги и отчисления в России и за рубежом (как две отдельные переменные), экспорт и продажи на международном рынке (за исключением СНГ), экспорт и продажи в странах СНГ, продажи на внутреннем рынке.

Для первой фазы анализа были взяты 6 основных «налоговых» переменных: налоги, текущий налог на прибыль, суммарный налог на прибыль, социальные налоги и отчисления в России и эти же налоги за рубежом. Остальные переменные были объединены в группу экономических показателей. Для демонстрации также были отобраны 8 предприятий, объединенных в три группы: группа p (,,), группа s (,,,) и отдельная компания vik. К сожалению, автор не уточняет, по какому принципу были разделены предприятия-налогоплательщики.

Суть методы заключена в установлении наличия (либо отсутствия) подобия между временными рядами групп показателей, то есть находится схожесть временного ряда налогового показателя и временного ряда экономического показателя. Для краткости автор назвала данный метод ЭП-НП [15]. На основе таких пар строится граф, в котором где в качестве левой доли выступают экономические показатели, правой доли – налоговые показатели, линией отрезка соединяются показатели с подобными временными рядами, пунктирной линией отражено слабое подобие, а отсутствие отрезка указывает на отсутствие подобия как такого. Для примера, приведен граф для предприятия на рисунке 1.1.

Рисунок 1.1 Граф наличия подобия пар временных рядов пар для предприятия

На рисунке видно, что переменная , выражающая продажи, имеет схожий временной ряд с переменной , выражающий текущий налог на прибыль. Аналогично подобия имеют пары и , прибыль (убыток) от выбытия и снижения стоимости активов и налоги (за исключением налога на прибыль), и , чистая прибыль и текущий налог на прибыль, а также и , чистая прибыль и налог на прибыль. Также слабое подобие имеют переменные и , то есть продажи и прибыль (убыток) от выбытия и снижения стоимости активов. Для любого предприятия «степень подобия» высчитывается по формуле, представленной ниже:

где γ – множество предприятий {p1,p2,p3,s1,s2,s3,s4},

- множество ребер двудольного графа,

Множество ребер двудольного графа в свою очередь высчитывается:

где – множество вершин экономических показателей,

– множество вершин налоговых показателей,

а – множество ребер графа, в случае если бы граф был полным, т.е.:

В приведенной статье [15] были найдены данные показатели только для 5 предприятий: всех 4 из группы s и p1. Данные расчеты представлены в табл.1.4.

Таблица 1.4. Расчет показателей для предприятия p1 и группы предприятий s

Предприятие

p1

5

70

0,071

s1

5

70

0,071

s2

5

70

0,071

s3

8

70

0,114

s4

4

70

0,057

На базе метода ЭП-НП налоговая служба или другой орган могут создать базовые, эталонные графы и высчитать допустимые значения , а значительные отклонения показателя могут служить сигналом для проведения дополнительных проверок. Это касалось групп предприятий p и s, но данный метод слегка отличается по своему применению для предприятия типа vik. Для данной группы выделяются существенное отличие: все 119 показателей компании можно разбить 12 групп, в которых каждый показатель имеет либо сильное, либо слабое подобие. Иными словами, двудольный граф является полным, однако его лучше всего представить в виде матрицы подобия. Пересечение строки и столбца образуют пару с определенным подобием, черный цвет обозначает сильное подобие, серый – слабое подобие. Главная диагональ выделяется белыми клетками. В большинстве случаев, группы имеют отношение сильного и слабого подобия в соотношении 50/50.

Данный метод решает проблему коротких временных рядов, его преимуществом также является и то, что он применяется для расчета экономических и финансовых показателей, что важно именно для данной работы, однако для применения метода необходима статистика большого числа предприятий для выявления эталонного показателя, что неприменимо в случае выборки только одного предприятия.

1.3. Метод внешне несвязанных регрессий

Данный метод чаще всего называют его английской аббревиатурой SUR. Данный подход был предложен еще в 1968 году, но активно применяется до сих пор. Его название говорит само за себя – в своей основе метод имеет систему уравнений, которые, на первый взгляд, никак не связаны между собой, однако случайные ошибки всех уравнений системы коррелированы между собой [16].

Предпосылки метода внешне несвязанных регрессий следующие: пусть каждое из уравнений системы - это линейная регрессия, вид которой в матричной форме представлен формулой:

где m – количество уравнений в системе.

Также метод предполагает, что случайная ошибка каждого уравнения системы не имеет гетероскедастичности и автокорреляции также отсутствует. Данные выводы позволяют нам записать вектор случайных ошибок каждого уравнения в виде ковариационной матрицы. При этом, имеет место быть корреляция случайных ошибок между уравнениями и дисперсии этих ошибок различны. Тогда ковариационная матрица вектора случайных ошибок для каждого наблюдения имеет вид, как в формуле:

где – ковариация между случайными ошибками в разных уравнениях.

Саму модель можно записать через матрицы и векторы переменных:

Общая ковариационная матрица такой модели будет состоять из блоков, каждый из который равен , тогда матрица будет иметь вид:

Для оценки выведенной модели обычно используют обобщенный метод наименьших квадратов. Однако применение данного метода не дает возможности расчета ковариационной матрицы случайных ошибок, поэтому обычно применяется обычный метод МНК, находится оценка ковариации между случайными ошибками в разных уравнениях:

где e – это ошибки уравнений,

n – количество наблюдений.

Уже после нахождения ковариации между ошибками уравнений, применяется обобщенный метод МНК:

где X – матрица независимых переменных моделей,

y – матрица зависимых переменных,

V – матрица ковариаций ошибок.

Кроме метода наименьших квадратов также применяют метод максимального правдоподобия при условии, что случайные ошибки имеют нормальное распределение.

В качестве примера использования данного метода, была взята работа по изучению слияний и поглощений в финансовой индустрии Сингапура Енрике Такувиджажа [16]. Была выдвинута нулевая гипотеза об отсутствии влияния вышеизложенных действия на общую стоимость банковской или страховой компании. В ходе работы, автор получил следующие 7 уравнений регрессий, внешне несвязанных, но имеющихся коррелированные случайные ошибки:

где KEPPEL, OCBC(A), OCBC(B), UOB, OUB, DBS и GEH – Сингапурские местные банки и страховые компании,

RET – доходность акции,

MKT_INDEX – один из трех объясняющих индексов: S&P индекс композитного рынка, Сингапурский индекс рынка MCSI или индексированный фондовый индекс STI.

Результаты рассматривались с двух сторон: в случае, если компания является покупателей другой, то есть поглощает, и в случае, если компания является объектом покупки, то есть поглощают ее. В первом случае, с использованием SUR-метода, автор получил среднеквадратичную ошибку модели равную -0,0895581 со стандартными ошибками 0.047818, T-статистику равную 1,87. Этих оснований недостаточно, чтобы отвергнуть нулевую гипотезу на уровне 5%, однако на уровне 10% можно сделать вывод об отклонении нулевой гипотезы. Во втором случае отклонение нулевой гипотезы подтвердилось уже на 95% уровне доверия. В статье также приводились оценки, полученные при помощи обычного метода наименьших квадратов, и было доказано, что SUR-метод дает более точные и несмещенные оценки [16].

Метод эффективно решает проблему недостаточности данных и дает точные прогнозы. Недостатками метода можно считать наличие предпосылок отсутствия гетероскедастичности и автокорреляции, а также главным условием метода является наличие корреляции между ошибками уравнений, при ее отсутствии метод неприменим.

1.4. Метод аналогов

В основе метода лежит экспертно-статистический подход, то есть для применения метода аналогов необходима информация от экспертов в той конкретной предметной области, для которой строится модель прогнозирования. Полученная экспертами оценка преобразовывается в набор линейных ограничений, и уже после этого сводится к задаче прогнозирования по короткой выборке данных. Обратимся к основным принципам сопоставления двух задач, описанным в работе А.С.Манделя [5]. Имеем последовательность объектов , где коэффициент варьируется в период с 1 до N наблюдений. Задача состоит в поиске оценочного ряда в период с N+1 до N+M. Применение метода начинается с выбора класса моделей, описывающих прогноз, например, модели с линейным параметром:

где – вектор-функция с компонентами заданной функции времени,

- уравнение тренда.

Далее необходимо собрать набор экспертных мнений по заданной предметной области. Они в обязательном порядке должны содержать возможные значения максимума и минимума, высказывания о монотонности значений ряда, предположение о верхних и нижних границах последовательности. В конечном итоге полученные экспертные данные формируются в виде систем линейных уравнений и неравенств.

После двух вышеописанных шагов формируется постановка задачи: найти будущие прогнозные значения, в большей степени согласующиеся с предыдущими результатами и экспертными оценками. Для определения близости к уже имеющимся результатам наблюдения используют формулу:

где Ф – некоторая строго выпуклая функция.

Для данной уравнения близости решаем задачу минимизации, где ограничениями выступают полученные в ходе преобразований экспертных суждений линейные неравенства. Результатом станет вектор параметров .

После этого мы можем перейти непосредственно к методу аналогов. Эксперты, основываясь на своем опыте, формирует список объектов-аналогов, наблюдаемых ранее, схожих с текущим объектом прогнозирования. Пусть Z – это множество заданных объектов-аналогов, для каждого из которых задается еще два параметра: коэффициент похожести и ,- коэффициент масштаба, где k – номер объекта из множества Z. Если коэффициенты не заданы, то они принимаются равными 1. Одной из предпосылок также является то, что для выбранных аналогов число наблюдений N1 гораздо больше чем число текущий наблюдений N. Именно так метод решает проблему коротких временных рядов. Каждое наблюдение объекта множества Z обозначаем как , где n – это номер наблюдения от 1 до N1. Тогда для вычисления прогнозного значения временного ряда объекта прогнозирования в может времени n вычисляется по формуле:

где ,

определяется по формуле при решении задачи минимизации:

До вычисления прогнозных значений часто выполняют корректировку множества объектов аналогов, так как точность метода напрямую зависит от подобия текущего объекта и объектов множества Z. Выполнение такой корректировки вручную трудоемко, поэтому обычно используют различные программы и системы, например, система имитационного моделирования «ЭКСПРИМ», в которой используются компьютерные модели для имитации выбора экспертов [5].

Данный метод также решает проблему коротких временных рядов, и направлен именно на прогнозирование будущих значений. К сожалению, применить метод на практике почти не представляется возможным: оценка экспертов является довольно субъективным показателем, к тому же для метода необходимо множество аналогов, что делает первоначальный сбор данных трудоемким и долгим.

1.5. Сравнение методов

Для сравнения методов в рамках данной работы необходимо выделить критерии для сравнения. Все критерии будут оцениваться по принципу присутствия (+) или отсутствия (-) выделенного критерия. По результатам составленной сравнительной таблицы будет выбран метод для прогнозирования финансовой устойчивости предприятия. Критерии для оценивания обозреваемых методов:

1. Работа с короткими временными рядами.

В рамках данной работы стоит задача найти метод по работе с короткими временными рядами для прогнозирования финансовой устойчивости малых и средних предприятий. Если метод позволяет получить точные и несмещенные оценки используя короткую выборку данных, то для критерия выставляется (+), иначе (-).

2. Наличие объясняющих переменных.

При прогнозировании финансовой устойчивости необходимо выделить не только результат, то есть прогнозную оценку, но и какие показатели влияют на этот результат. Это можно выяснить через объясняющие переменные и насколько сильно они влияют на оценку прогноза. Если модель имеет объясняющие переменные выставляется (+), иначе (-).

3. Визуализация.

Визуализация метода помогает конечному пользователю в анализе полученных результатов. В визуализацию включаются графики, матрицы, диаграммы и т.п. Если метод позволяет визуализировать результаты выставляется (+), иначе (-).

4. Освещенность в литературе.

Под этим критерием подразумевается наличие книг и статей по обзору и применению метода. Чем больше метод освещен и изучен, тем больше вероятность получения наилучшей прогнозной модели. Если метод освещен в литературе книгах на протяжении нескольких лет выставляется (+), иначе (-).

5. Наличие программных продуктов.

Критерий подразумевает возможность автоматического или полуавтоматического расчета метода с помощью программных продуктов – статистических пакетов или других доступных программ. Это значительно сокращает временные затраты на расчеты, а также позволяет избежать ошибок, которые допустимы при ручном расчете. При возможности использования программных продуктов ставится (+), иначе (-).

6. Отсутствие дополнительных расчетов для применения метода.

Если метод предполагает наличие дополнительных расчетов для его применения, то это может привести к отказу от методики в случае невозможности их получения. В качестве дополнительных расчетов подразумеваются эталонные показатели, аналоги, расчет дополнительных коэффициентов и т.п. Если метод не подразумевает дополнительных расчетов выставляется (+), иначе (-).

7. Отсутствие предпосылок.

Предпосылки означают невозможность применения метода в ситуации, когда данные им не соответствуют, а также приведения к ошибкам при применении метода к таким данным. В таком случае, методы без предпосылок имеют преимущества. Если метод не нуждается в предпосылках выставляется (+), иначе (-).

8. Принадлежность к предметной области.

В данной курсовой работе рассматривается прогнозирование финансовой устойчивости предприятия. Модели, применяемые в областях экономики и финансов, имеют преимущество по сравнению с моделями, не касающимися этой области. Если метод применялся в экономической и финансовой сфере выставляется (+), иначе (-).

Сравнение упомянутых и проанализированных методов по вышеизложенным критериям представлено в табл.1.5.

Таблица 1.5. Сравнение методов

Критерии/методы

MDAмодели

Метод взвешенных тангенсов

Метод фазовых трендов

Метод графов и матриц подобия

SUR метод

Метод аналогов

Работа с короткими временными рядами

-

+

+

+

+

+

Наличие объясняющих переменных

+

-

-

+

+

-

Визуализация

-

+

+

+

+

-

Освещенность в литературе

+

-

-

-

+

+

Наличие программных продуктов

+

-

-

-

+

+

Отсутствие дополнительных расчетов

+

+

+

-

+

-

Отсутствие предпосылок

+

-

-

+

-

+

Принадлежность к предметной области

+

-

-

+

-

+

Итого:

6

3

3

5

6

5

По результатам сравнения необходимо применить MDA-модели, но как уже было сказано, они направлены на предупреждение банкротства, что является частным случаем финансовой устойчивости, но не охватывает его полностью. Также MDAмодели не используют временные ряды, что также может привести к менее точным оценкам. Данная работа также направлена на поиск метода по работе именно с короткими временными рядами, что является самым значимым критерием, который как раз и отсутствует у данных моделей. Таким образом, MDA-модели будут включены в приложения для расчета вероятности банкротства как частный случай финансовой устойчивости, но этого недостаточно. Для создания модели прогнозирования по коротким временным рядам, исходя из сравнительной таблицы, стоит выбрать метод внешне несвязанных регрессий или SUR-метод, так как он набрал наибольшее количество баллов по сравнение с другими обозреваемыми методами работы с короткими временными рядами. Расчет прогнозных значений при помощи методов внешне несвязанных регрессий будет основным результатом, получаемым пользователем от приложения.

Выводы по первой главе

В данной главе проведен анализ методов работы с короткими временными рядами. Для обзора было выбрано пять методов, это метод взвешенных тангенсов, метод фазовых трендов, метод графов и матриц подобия, метод внешне несвязанных регрессий и метод аналогов. В ходе анализа были изучены не только сами подходы, но и приведены примеры применения методов для прогнозирования различных значений. Также для каждого метода были выделены их преимущества и недостатки при работе с короткими выборками. Для выбора одного из методов была построена сравнительная таблица. Сравнение методов показало, что в рамках данной работы для прогнозирования финансовой устойчивости компании N на основе данных краткосрочного периода лучше всего подойдет SURметод. Также в сравнительную таблицу были включены MDA-модели, использующиеся для прогнозирования вероятности банкротства предприятия. По итогу сравнения, они также будут включены в конечное приложение как частный случай финансовой устойчивости.

ГЛАВА 2. ПОСТРОЕНИЕ МОДЕЛИ ПРОГНОЗИРОВАНИЯ ФИНАНСОВОЙ УСТОЙЧИВОСТИ ПРЕДПРИЯТИЯ

2.1. Анализ данных и описательная статистика переменных

Для построения SUR-модели были выявлены зависимая и yнезависимая переменные. В качестве зависимой переменной был выбран коэффициент финансовой устойчивости предприятия, отражающий стабильность предприятия в данный момент времени с точки зрения основанного финансирования ее деятельности. Для зависимой переменной введено обозначение в видео латинской буквы Y. Для нахождения реальных значений коэффициента финансовой стабильности использовалась формула:

В качестве объясняющих переменных были выбраны 10 основных пунктов основных документов годовой отчетности предприятия, а именно данные баланса предприятия и отчета о прибылях и убытках. Для обозначения независимых переменных использовалась латинская буква X с соответствующим индексом. В ходе построения модели не все независимые переменные могут быть включены в конечный вариант уравнения, однако на момент анализа мы не знаем, какие именно переменные будут включены или исключены из модели, поэтому описательная статистика была проведена для всех 10 имеющихся временных рядов. Все объясняющие переменные имеют одинаковую единицу измерения, а именно тыс. руб.

1. Внеоборотные активы: условное обозначение – X1.

2. Оборотные активы: условное обозначение – X2.

3. Капитал и резервы: условное обозначение – X3.

4. Долгосрочные обязательства компании: условное обозначение – X4.

5. Краткосрочные обязательства компании: условное обозначение – X5.

6. Выручка: условное обозначение – X6.

7. Себестоимость: условное обозначение – X7.

8. Прибыль(убыток) от продаж: условное обозначение – X8.

9. Прибыль(убыток) до налогообложения: условное обозначение – X9.

10. Чистая прибыль (убыток): условное обозначение – X10.

Для построения модели были взяты данные баланса и отчета прибыли и убытков компании N за все время ее существования – с 2009 по 2016 год. Последний 2017 год исключён из данных для построения модели, так как будет использован для проверки прогноза модели и выявления погрешности. Для составления описательной статистики была использована система Gretl, являющаяся прикладным программным пакетом для статистического моделирования. Данный пакет был выбран, так как позволяет сгенерировать необходимые результаты по имеющимся данным автоматически, а также является бесплатным и русскоязычным решением. Данные описательной статистики приведены в табл. 2.1.

Таблица 2.1.Описательная статистика переменных

Переменная

Среднее

Ст. отклонение

Асимметрия

Эксцесс

Вариация

X1

1,0879*

1,703*

1,285

0,449

0,157

X2

684495

2,925*

1,091

0,147

0,427

X3

1,565*

3,365*

0,588

-1,028

0,215

X4

98124,5

9098,1

0,561

-1,094

0,093

X5

107647

41946

-0,232

-1,621

0,39

X6

2,095*

4,116*

-0,227

-1,348

0,196

X7

-1,159*

94515

-1,238

0,758

0,082

X8

527741

2,521*

-0,177

-0,876

0,478

X9

537664

2,569*

-0,184

-0,84

0,478

X10

450965

2,178*

-0,19

-0,826

0,483

Y

0,936

0,03

-0,241

-1,335

0,032

Зависимая переменная Y имеет достаточно небольшое стандартное отклонение это значит, что ряд скорее всего стационарен. То же самое касается независимых переменных, кроме X5 и X7 – для них стандартное отклонение достаточно велико, это означает, что эти ряды нестационарные, а вот коэффициент вариации для переменной X4 при этом меньше 33%, поэтому однозначных выводов сделать нельзя даже при большом стандартном отклонении. Для более ясной картины необходимо построить график временного ряда, возможно, он имеет неярко выраженный тренд. Исходя из отрицательных значений коэффициента эксцесса, можно сделать вывод, что большинство переменных имеет плосковершинность распределения, а переменные X4. и X7 близки к островершинному распределению. Переменная X2 стала единственной переменной, для которой можно предположить нормальность распределения исходя из значения коэффициента. Для первых четырех переменных во временных рядах чаще встречается значение больше среднего, для остальных переменных – значения меньше среднего. Данные вывод можно сделать исходя из значения коэффициента асимметрии.

Для анализа переменных была построена корреляционная матрица для выявления взаимосвязи между переменными – между зависимой и объясняющими, а также зависимость независимых переменных между собой. Вид корреляционной матрицы представлен в табл. 2.2.

Таблица 2.2. Корреляционная матрица

X1

X2

X3

X4

X5

X6

X7

X8

X9

X10

Y

X1

1

-0,12

0,47

-0,36

-0,48

0,33

0,37

0,31

0,29

0,28

0,47

X2

1

0,81

-0,56

0,05

0,5

-0,09

0,77

0,77

0,77

0,26

X3

1

-0,7

-0,32

0,64

0,17

0,85

0,84

0,84

0,59

X4

1

0,009

-0,97

0,42

-0,9

-0,9

-0,9

-0,25

X5

1

-0,05

-0,54

-0,04

-0,02

-0,01

-0,95

X6

1

-0,53

0,86

0,85

0,85

0,28

X7

1

-0,2

-0,2

-0,21

0,46

X8

1

1

1

0,34

X9

1

1

0,32

X10

1

0,31

Y

1

В корреляционной матрице выделены значения, которые интерпретируются как сильная зависимость между переменными. Это легко можно объяснить тем, что все данные взяты из баланса и изначально взаимосвязаны между собой. Например, прибыль до налогообложения находится как прибыль от продаж, суммированная с дополнительными доходами и расходами компании. Таким образом, взаимосвязь объясняема, однако для модели это может означать наличие мультиколлинеарности. Проверку на ее наличие необходимо провести после построения модели. Данной статистики достаточно, чтобы перейти к построению SUR-модели.

2.2. Построение модели внешне несвязанных регрессий

Для построения модели внешне несвязанных регрессий необходимо использовать панельные данные, то есть данные нескольких предприятий за период времени. Так как в работе решается проблема коротких выборок, найти такие данные достаточно просто, используя документацию компаний, представленную в свободном доступе в сети Интернет. Для построения модели достаточно данных еще двух компаний – обозначим их как организацию Z и организацию T. Период для данных должен совпадать с данными исследуемой компании N, таким образом были собраны данные из баланса и отчета о прибылях и убытках за период с 2009 по 2016. Алгоритм построения SURмодели следующий [7]:

1. Для каждого предприятия строится модель с помощью метода наименьших квадратов (МНК).

2. Строится ковариационная матрица остатков моделей МНК, а также матрица зависимой переменной, независимых переменных и оценок моделей.

3. С использованием ковариационной матрицы остатков находятся новые оценки для модели с использованием обобщенного метода наименьших квадратов.

4. Модель перестраиваться с использованием новых найденных оценок.

После построения моделей МНК выполнены проверки на адекватность модели, которые включают в себя проверку на избыточные и пропущенные переменные, проверку на гетероскедастичность, на автокорреляцию и на ошибку спецификации модели. После нахождения скорректированных оценок для обобщенного метода наименьших квадратов повторно проводить данные проверки не нужно – выводы по данной модели останутся теми же, что и для МНК-модели. Построение моделей и проверка их адекватности выполнена при помощи прикладного программного пакета для эконометрического анализа Gretl.

Построение моделей МНК начато с исходной компании N. В изначальную модель входили 10 описанных переменных, затем методом пошаговой регрессии из модели исключались регрессоры, либо включались заново и оценка модели проводилась вновь. Для оценки модели использовались такие критерии как значимость переменных, то есть какова вероятность получения ложного результата при включении данной переменной, значение величины исправленного коэффициента детерминации – он показывает, какая доля вариации объясняемой переменной Y учтена и объяснена включенными независимыми переменными [6]. Чем он выше, тем вероятнее функциональная зависимость между зависимой и независимыми переменными. В качестве критерия для сравнения построенных моделей выбраны критерии Акаике и Шварца [6]: чем меньше значение данных критериев, тем лучше считается модель. Итоговое количество МНК моделей, построенных при помощи метода пошаговой регрессии, для компании N составило 29 моделей. Из них наиболее подходящей оказалось модель под номером 28. В данную модель входят 4 переменных: константа, число оборотных активов компании, краткосрочные обязательства компании и чистая прибыль (убыток) за период. Все регрессоры значимы на уровне 0,01, что означает, что в 99% случаев они дают истинную оценку для зависимой переменной. В табл. 2.3 представлено сравнение некоторых из наилучших моделей с выбранной по исправленному коэффициенту детерминации, критерию Акаике и Шварца.

Таблица 2.3.Сравнение построенных моделей МНК для компании N

Номер модели

Коэффициент детерминации

Критерий Акаике

Критерий Шварца

12

0,9944

-72,63

-72,31

20

0,9935

-71,84

-71,45

28 (выбранная)

0,9973

-78,66

-78,34

29

0,9964

-76,65

-76,26

Модель была выбрана исходя из наибольшего значения исправленного коэффициента детерминации, а также по наименьшим значениям критерия Акаике и Шварца. Можно заметить, что коэффициенты при независимых переменных очень небольшие, однако решение оставить их в таком виде было принято осознанно – все значения в балансе и отчете о прибылях и убытках предприятия указаны в единицы измерения тыс. рублей. Чтобы избежать ошибки пользователя мы не стали переводить значения переменных в другую единицу измерения, чтобы скорректировать значения коэффициентов. Итоговая формула модели имеет вид:

Для оценки адекватности модели были проведены тесты на избыточные и пропущенные переменные. В ходе тестирования было выявлено, что в модель включены только необходимые переменные. Полная проверка переменных представлена в табл. 2.4. Для анализа была выдвинута гипотеза о том, что параметры регрессии нулевые, то есть переменная должны быть исключена из модели. Для вывода по анализу использовано p-значение: если это значение меньше уровня значимости 0,05, тогда гипотеза отвергается, и переменная должна быть включена в модель. Таким образом, тест показывает, верно ли была составлена выбранная модель.

Таблица 2.4. Результаты теста на избыточные и пропущенные переменные

Переменная

P-значение

Вывод

0,74

Не включать в модель

4,32*

Включать в модель

0,72

Не включать в модель

0,97

Не включать в модель

4,31*

Включать в модель

0,48

Не включать в модель

0,54

Не включать в модель

0,42

Не включать в модель

0,28

Не включать в модель

3,99*

Включать в модель

В ходе описательной статистики было выявлено, что переменные имеют сильную взаимозависимость, поэтому необходимо провести проверку на мультиколлинеарность наличие линейной зависимости между независимыми регрессорами модели [6]. По методу инфляционных факторов значения больше 10 могли указывать на наличие мультиколлинеарности, однако для переменной значение составило 2,509, для переменной – 1,009, а для переменной – 2,503. Таким образом, мльтиколлинеарность отсутствует. Следующая проверка была необходима для выявления гетероскедастичности, то есть неоднородность наблюдений, выраженную в непостоянной дисперсии случайной ошибки модели [6]. Проверка на гетероскедастичность особенно важна, так как к построенным моделям МНК будет применен SUR-метод, основанный на взаимосвязи ошибок моделей. Для проверки на неоднородность наблюдений использовался тест Уайта, где нулевая гипотеза заключается в гомоскедастичности наблюдений, однородности наблюдений. Так как p-значение составило 0,364, что больше уровня значимости 5%, это означает, что нулевая гипотез принимается и гетероскедастичность отсутствует. Проверка на автокорреляцию, статистическую взаимосвязь между значением ряда и его предыдущим значением, указало на ее наличие: статистика Дарбина-Уотсона [6] не дала однозначных результатов, а статистика Люкса-Бокса [6] указала на положительную автокорреляцию, с p-значением равным 0,028. Для избавления от автокорелляции необходимо применить обобщенный метод наименьших квадратов. Так как SUR-метод как раз и сводится к обобщенному МНК [7], наличие автокорреляции не причина отказываться от построенной модели. Последней проверкой стал тест Рамсея на ошибку в спецификацию модели: включение в модель не просто переменных, а их квадратов и кубов. Однако p-значение составило 0,819, соответственно, ошибок в спецификации нет. Полные выводы по проверке модели представлены в табл. 2.5.

Таблица 2.5. Проверка адекватности модели

Проверка

Значение для анализа

Вывод

Мультиколлинеарность

Для всех переменных меньше 10

Мультиколлинеарность отсутствует

Гетероскедастичность

0,364

Гетероскедастичность отсутствует

Автокорреляция

0,028

Положительная автокорреляция

Ошибка спецификации модели

0,819

Ошибка отсутствует

На этом этапы построения модели и оценка ее адекватности закончены. По тому же алгоритму строятся модели для компании Z и компании T. Несмотря на то что входные параметры для компаний одинаковы, МНК модели для компаний включают разные параметры баланса и отчета о прибылях и убытках. В уравнения организации Z вошли такие переменные как капитал и резервы компании и краткосрочные обязательства, в уравнение организации T вошли внеоборотные активы компании, долгосрочные обязательства, себестоимость организации и прибыль(убыток) от продаж:

Для выбора модели компании Z было построено 13 моделей, а для компании T 18 моделей. Выбор моделей также происходил по исправленному коэффициенту детерминации, который оказался выше, чем и других вариантов, и критериям Акаике и Шварца, которые оказались ниже, чем у построенных вариантов. Для компании Z коэффициент детерминации составил 0,98, а для компании T – 0,89. Показатели высоки, поэтому можно говорить о функциональной зависимости между зависимой и независимыми переменными. Для проверки адекватности модели были проведен все те же тесты, что и для модели компании N. Все результаты проверок представлены в табл. 2.6. Обе модели адекватны и не имеют избыточных и пропущенных переменных, мультиколлинеарноси, гетероскедастичности, автокорреляции и ошибки спецификации модели. Таким образом, эти модели будут использованы для применения SUR-метода и обобщенного метода наименьших квадратов.

Таблица 2.6. Проверка адекватности моделей для компаний Z и T

Проверка

Модель компании Z

Модель компании T

Выводы

Избыточные переменные

Значения меньше 2,33* для всех включенных переменных

Значения меньше 0,03 для всех включенных переменных

Избыточных переменных нет

Пропущенные переменные

Значения больше 0,05 для всех исключенных переменных

Значения больше 0,1 для всех исключенных переменных

Пропущенных переменных нет

Мультиколлинеарность

Значения меньше 1,289

Значения меньше 2,62

Мультиколлинеарности нет

Гетероскедастичность

0,2

0,303

Гетероскедастичности нет

Автокорреляция

0,302 по Льюнгу-Боксу

0,07 по Льюнгу-Боксу

Автокорреляции нет

Ошибка спецификации модели

0,393

0,608

Ошибок нет

На этом построение МНК моделей закончено и можно переходить к применению SUR-метода. Запрограммированное применение данного подхода есть в зарубежных статистических пакетах, таких как STATA или Eviews, однако все они являются платными. Применение SUR-метода можно произвести вручную, используя программу Microsoft Office Excel и его возможности для работы с матрицами. Общий вид модели для метода внешне несвязанных регрессий представлен в формуле (21). Для этого необходимо сформировать векторы зависимой переменной, оценок и ошибок МНКмоделей, а также матрицу независимых переменных. Алгоритм построения новых оценок для модели выглядит следующим образом:

1. Строятся необходимые матрицы.

2. Строится ковариационная матрица ошибок.

3. Строится произведение Кронекера из единой матрицы и ковариационной матрицы ошибок.

4. Необходимые матрицы транспонируются или находятся обратные матрицы.

5. Находится вектор скорректированных оценок.

6. Найденные оценки подставляются в модели МНК, таким образом находится новая модель для прогнозирования финансовой устойчивости предприятия.

Исходные данные компаний и построенные матрицы находятся в приложении данного документа (см. приложение А). Ковариационная матрица остатков имеет вид:

В табл. 2.7 представлены коэффициенты при переменных для моделей МНК и полученной вектор оценок после применения SUR-метода. Оценки несколько отличаются: оценка моделей производилась как внешне несвязанные уравнения и оценки были скорректированы на ошибки уравнений. С помощью скорректированных оценок будут получены новые модели для предприятий N, Z и T.

Таблица 2.7. Сравнение полученных оценок

Вектор оценок из моделей МНК

Вектор оценок после применения SUR-метода

0,986

0,987

2,02*

1,97*

-6,71*

-6,78*

1,94*

2*

0,0195

0,0196

2,89*

2,9*

-5,26*

-5,26*

0,38

0,39

1,11*

1,04*

1,42*

1,47*

5,27*

5,19*

5,01*

4,53*

Именно эта модель будет запрограммирована в будущем приложении для прогнозирования финансовой устойчивости предприятия N. Итоговый вид модели со скорректированными оценками следующий:

Проверка качества модели указывала на высокую точность модели, однако следует проверить это на практике, спрогнозировав значения коэффициента финансовой стабильности на 2017 год и сравнить его с реальным значением данного коэффициента. Для расчета реального значения были использованы показатели баланса компании N на конец 2017 года. Реальное значение коэффициента составило 0,91. Для расчета прогнозного значения была применена построенная SUR-модель, прогнозное значение составило 0,89. Таким образом ошибка прогноза составила 0,02 или 2%, что можно считать достаточно точным прогнозом в рамках этой работы. Построенная модель может применяться для прогнозирования финансовой стабильности компании N.

2.3. Построение регрессионной модели

Регрессионную модель часто используют как метод прогнозирования показатель, в том числе и экономических. Регрессионную модель не используют для работы с короткими временными рядами, однако если построенная модель будет иметь хорошие показатели, такие как коэффициент детерминации, а также будет доказано, что модель не имеет мультиколлинеарности, гетероскедастичности и автокорреляции, то такую модель можно будет использовать для прогнозирования финансовой устойчивости предприятия. Прогноз такой модели можно будет сравнить с построенной моделью с применением SUR-метода. Для регрессионной модели выбраны те же зависимая и независимые переменные. Для построения модели была использована прикладная эконометрическая система Gretl. Первоначальная модель была построена как зависимость переменной Y от 10 выбранных независимых переменных X. Для нахождения оптимальной модели также был использован метод пошаговой регрессии.

Первой для анализа была выбрана четырнадцатая из построенных моделей, которая включает в себя 4 переменные: константу, число внеоборотных активов, капиталы и резервы и краткосрочные обязательства организации. Величина исправленного коэффициента детерминации примерно равна 0,99, уровень значимости всех включённых переменных равен 1%. В табл. 2.8. приведены основные результаты построенной модели из системы Gretl.

Таблица 2.8. Построенная модель №14

Переменная

Коэффициент

Статическая ошибка

T-статистика

P-значение

Значимость

const

0,987

8,53*

115,7

0,00000142

***

X1

-2,57*

4,16*

-6,174

0,0086

***

X3

3,06*

2,017*

15,18

0,0006

***

X5

-6,51*

1,83*

-35,64

0,0000486

***

R-квадрат 0,99

Испр. R-квадрат 0,9

Крит. Акаике −65,16

Крит. Шварца −66

С помощью метода инфляционных факторов [6] был проведен тест на мультиколлинеарность между переменными, где значения больше 10 могли указывать на ее наличие. Результаты показали значения 2,28 для переменной X1, 1,42 для переменной X3 и 2,67 для переменной X5. Таким образом, можно утверждать, что в модели отсутствует мультиколлинеарность.

Для анализа также была выбрана модель под номером 26. Она также включает в себя 4 регрессора, а именно константу, внеоборотные активы предприятия, число краткосрочных обязательств и чистую прибыль(убыток) компании. Модель имеет достаточно высокий исправленный коэффициент детерминации равный 0,999, а все переменные значимы на уровне 1%. Данные модели из системы Gretl предcтавлены в таблице 2.9.

Таблица 2.9. Построенная модель №26

Переменная

Коэффициент

Статическая ошибка

T-статистика

P-значение

Значимость

const

1,03

5,07*

203,2

0,0000242

***

X1

4,04*

3,18**

-12,73

0,0061

***

X5

-6,72*

8,66*

-77,57

0,0002

***

X10

4,46*

1,65*

27,12

0,0014

***

R-квадрат 0,999

Испр. R-квадрат 0,999

Крит. Акаике −59,29

Крит. Шварца −59,51

Для проверки зависимости объясняющих переменных между собой также был проведен тест на мультиколлинеарность – по его результатам, значение для переменной X1 составило 2,12, для переменной X5 – 2,35, а для переменной X10 – 1,45. Таким образом, мультиколлинеарность в модели отсутствует.

Для сравнения моделей использовались уже упомянутые критерии Акаике и Шварца. Чем ниже значение показателей, тем лучше можно считать построенную модель. Сравнение моделей по данным критериям представлено в таблице 2.10.

Таблица 2.10. Сравнение моделей по критериям Шварца и Акаике

Критерий

Модель №14

Модель №26

Сравнение моделей

Критерий Акаике

−66

−59,29

Значение критерия лучше для модели №14

Критерий Шварца

−65,16

−59,51

Значение критерия лучше для модели №14

По результатам сравнения была выбрана модель под номером 14. Именно она будет включена в конечное приложение, если пройдет проверку на адекватность. Значения коэффициентов при переменных также очень малы, как и для SUR-модели, однако они оставлены без изменения во избежание ошибок загрузки данных пользователем. Вид выбранной модели представлен в формуле:

Несмотря на то, что модель была выбрана как наилучшая из построенных необходимо провести проверку качества модели. Как и для модели с использованием SUR-метода, будут проведены тесты на гетероскедастичность, автокорреляцию, ошибку спецификации модели и на избыточные и пропущенные переменные. Проверка на мультиколлинеарность была проведена ранее. Для вывода по проеденным тестам используется p-значение: если величина этого критерия больше 0,05, тогда принимается нулевая гипотеза, то есть отсутствие гетероскедастичности, автокорреляции или ошибки спецификации. Для избыточных переменных значение должно быть меньше 0,05, для пропущенных – больше 0,05.

Для проверки на гетероскедастчиность использовались тесты Уайта и БришаПагана [6]. Результаты тестов, выполненных в системе Gretl, приведены в таблице 2.11. По результатам проверки наблюдения однородны и дисперсия построенной модели постоянна, таким образом, применять данную модель можно.

Таблица 2.11. Проверка модели на гетероскедастичность

Тест

Тестовая статистика

P-значение

Выводы

Тест Уайта

7

0,320847

гетероскедастичность отсутствует

Тест Бриша-Пагана

3,70831

0,294733

гетероскедастичность отсутствует

Наличие в модели автокорреляции приводит к искусственному улучшению модели и повышению точности ее оценок, что приведет к получению ложных результатов прогноза. Проверка модели на автокорреляцию проведена с помощью LMтеста [6] и статистике Дарбина-Уотсона. Результаты проверки представлены в таблице 2.12. Оба теста указали на отсутствие автокорреляции, а значит, построенная модель дает верные прогнозы и ее можно применять.

Таблица 2.12. Проверка модели на автокорреляцию

Тест

Тестовая статистика

P-значение

Выводы

LM-тест

6,200025

0,130457

автокорреляция отсутствует

Статистика Дарбина-Уотсона

1,93466

0,291794

автокорреляция отсутствует

Построенная модель не имеет гетероскедастичнсоти и автокорреляции, однако необходимо убедиться, что в модель включены верные переменные. Результаты проверки на избыточные и пропущенные переменные представлены в таблице 2.13. Для включенных регрессоров тест подтвердил гипотезу, что параметры регрессии ненулевые, для не включенных - параметры регрессии нулевые. Таким образом, в модель включены все необходимые переменные и ошибок нет.

Таблица 2.13. Тест на избыточные и пропущенные переменные

Переменная

Тестовая статистика

P-значение

Вывод

X1

38,1191

0,0085544

Регрессор должен быть включен в модель

X3

230,303

0,000621259

Регрессор должен быть включен в модель

X5

1270,34

0,0000485695

Регрессор должен быть включен в модель

X2

5,97666

0,134397

Регрессор не должен быть включен в модель

X4

4,87608

0,157898

Регрессор не должен быть включен в модель

X6

6,62922

0,235841

Регрессор не должен быть включен в модель

X7

15,9015

0,156421

Регрессор не должен быть включен в модель

X8

29,5245

0,115866

Регрессор не должен быть включен в модель

X9

27,3308

0,146958

Регрессор не должен быть включен в модель

X10

29,8163

0,219406

Регрессор не должен быть включен в модель

В качестве последней проверки был проведен тест Рамсея [6] для проверки спецификации модели. По результатам тестирования ошибок допущено не было pзначение составило 0,46, что больше уровня значимости 0,05. Все необходимые проверки качества и адекватности модели были проведены, а значит построенная регрессионная модель может быть использована для прогнозирования финансовой устойчивости предприятия N.

2.4. Выбор MDA-моделей

MDA-модели статические модели, построенные с помощью данных финансовой отчетности предприятия за предыдущий год. Они применяются не для прогнозирования финансовой устойчивости, а для предупреждения банкротства предприятия. Данные модели не могли быть взяты как основная модель, так как не работают с временными рядами, однако было принято решение включить несколько популярных MDA-моделей в конечное приложение. Данное решение основано на двух суждениях: во-первых, банкротство предприятие является частным случаем финансовой устойчивости, а вовторых, MDA-модели были и остаются одним из самых популярных способов прогнозирования банкротства и широко применяются как зарубежными специалистами, так и российскими. Среди разработанных моделей зарубежных и российских авторов известны методики, которые предложили Э. Альтман, Р. Лис, Эдвардс-Белла-Ольсон, Р. Таффлер, Гордон Л. В. Спрингейт, Д. Фулмер, У. Бивер, Р.С. Сайфуллин, Г.Г. Кадыков, О.П. Зайцева и многие другие [8]. Включать в приложение все модели нет необходимости, так как прогнозирование банкротства лишь дополняет основной функционал приложения, достаточно будет взять 2 популярные модели зарубежных авторов и две популярные модели российских авторов, так как именно они адаптированы под предприятия нашей страны. Стоит отметить, что термин «популярные» является субъективным, и выбор моделей базировался на частоте упоминания моделей в статьях, рассмотренных автором данной работы.

1. Модель Лиса [12]

Данную модель принято считать адаптаций пятифакторной модели Альтмана [12] для предприятий Великобритании. Как и для построенных SUR-модели и регрессии, для данной модели достаточно взять данные из баланса и отчёта о прибылях и убытках. Модель Лиса включает в себя 4 переменные, без константы. Общий вид модели представлен в формуле (36). Стоит отметить, что для интерпретации результатов необходимо знать следующее соотношение: если показатель Z > 0,037, то вероятность наступления банкротства мала, в случае если показать Z < 0,037, то предприятие скорее всего обанкротится:

где X1 = оборотный капитал/ активы предприятия,

X2= прибыль от продаж / активы предприятия,

X3= нераспределенная прибыль / активы предприятия,

X4 = собственный капитал / активы предприятия.

Стоит помнить, что данная модель разрабатывалась ля предприятий Великобритания, и не всегда дает точные оценки для российских компаний. Ее оценки бывают достаточно завышены, так как она не учитывает отличающийся налоговой режим России [1].

2. Модель Спрингейта

Выбор пал на данную модель не только по причине ее известности, но потому, что для ее построения Спрингейт выбрал самую маленькую выборку данных – 20 предприятий банкротов и столько же не банкротов [2]. Ниже представлен вид модели:

где = собственные оборотные активы / активы предприятия,

= прибыль до уплаты процентов и налогов / активы предприятия,

= прибыль до налогообложения / текущие обязательства предприятия,

= выручка / активы предприятия.

Тестирование данной модели дало результаты почти в 93% точность [2]. Для интерпретации необходимо проанализировать параметр Z: если его значение меньше 0,862, то такая организация близка к банкротству.

3. Модель Давыдовой-Беликова [13]

Данную модель принято считать адаптацией модели Альтмана [12] для применения к российским компаниям. Данная модель основана на регрессионном уравнении и рассчитывает интегральный показатель R, интерпретация которого впоследствии дает оценку вероятности наступления банкротства в процентах. Вид четырехфакторной модели представлен в формуле:

где = оборотный капитал / активы,

= чистая прибыль / собственный капитал,

= выручка от продаж / средняя стоимость активов,

= чистая прибыль / затраты.

В зависимости от значения показателя R, результаты интерпретируются следующим образом: если R < 0, то вероятность банкротства достигает критического уровня в 90-100%. Если показатель находится в интервале 0 < R < 0,18, то вероятность банкротства составляет около 60-80%. Если показатель находится в другом интервале 0,18 < R < 0,32, то вероятность банкротства ниже среднего и в процентном соотношении составляет 35-50%. Если показать попал в интервале 0,32 < R < 0,42, то вероятность банкротства очень мала – от 10% до 35%. Если же показатель R больше значения 0,42, то вероятность банкротства практические отсутствует и не достигает 10%.

4. Модель Сайфулина-Кадыкова

Авторы данной модели утверждают, что ее можно использовать для компаний совершенно любой отрасли и при этом, точность модели сохранится [16]. Модель имеет следующий вид:

где X1 = собственный капитал / оборотные активы предприятия,

X2 = оборотные активы / текущие обязательства предприятия,

X3 = выручка от продаж / средняя стоимость активов предприятия,

X4 = прибыль от продаж / выручка от продаж,

X5 = чистая прибыль / собственный капитал предприятия.

Если данные показатели соответствует хотя бы минимальному уровню, то расчётный показатель будет равен 1 или выше. В случае если R < 1, результат можно интерпретировать как близость к банкротству. Более точных оценок модель, к сожалению, дать не может.

Четыре описанные модели будут включены в конечное приложение как дополнительная функция. В случае если пользователь захочет помимо финансовой стабильности рассчитать вероятность банкротства своего предприятия, ему будет предложено рассчитать ее по одной или по всем из перечисленных моделей. Данные для расчета моделей будут запрошены у пользователя как дополнительные, при основной загрузке данные для расчета MDA-модели запрошены не будут. Таким образом, если финансовое состояние предприятие стабильно, то пользователь может не использовать MDA-модели и наоборот, если коэффициент финансовой стабильности близок к нулю, пользователь может проверить, близка ли компания к банкротству.

2.5. Прогнозирование финансовой устойчивости предприятия на 2017 год

Используя данные компании N за 2017 год можно рассчитать реальное значение коэффициента финансовой стабильности, а также спрогнозировать данное значение при помощи SUR-модели и регрессии. Это позволит сравнить полученные результаты и проверить созданные модели на практике, а также рассчитать ошибку моделей. Для расчета реального значения коэффициента финансовой стабильности использовались значения баланса предприятия на конец 2017 года:

Для расчета прогнозных значений использовались созданные модели, то есть SUR-модель и регрессионная. Так прогнозное значение по SUR-модели составило 0,8993, а прогнозное значение по регрессионной модели составило 0,9051. В данном случае, ошибка SUR-модели составила 0,0123, или, если выразить значения коэффициента в процентах, 1,23%. Ошибка регрессионной модели составила 0,0065 или 0,65%. Стоит отметить, что в данном случае регрессионная модель дала более точный результат, однако это не говорит о том, что SUR-модель уступает регрессионной. Вполне возможно, что регрессия сработала лучше только в данном конкретном случае. Именно поэтому в приложение будут включены обе модели, чтобы дать пользователю возможность сравнения полученных прогнозов.

Проверим результаты, которые получим с помощью MDA-моделей. Так как коэффициент финансовой стабильности высок, все модели должны указать на отсутствие банкротства. Расчеты по выбранным моделям представлены в табл. 2.14. Все модели указали на отсутствие банкротства.

Таблица 2.14. Расчет показателей MDA-моделей по данным за 2017 год

Модель

Расчетный показатель

Интерпретация

Вывод

Модель Лиса

0,086

Если Z>0,037, то низкая вероятность банкротства.

Предприятие не банкрот

Модель Спрингейта

2,465

Если Z<0,862, то вероятность банкротства высока

Предприятие не банкрот

Модель ДавыдовойБеликовой

3,26

Если R>0,42, то вероятность банкротства минимальна

Предприятие не банкрот

Модель СайфулинаКадыкова

4,626

Если R=1 или выше, то вероятность банкротства минимальна

Предприятие не банкрот

Все выбранные модели показали высокое качество на практике и могут применяться для прогнозирования финансового состояния компании N.

Выводы по второй главе

В данной главе построена модель прогнозирования финансовой устойчивости предприятия N с помощью метода внешне несвязанных регрессий. Также для прогнозирования финансовой устойчивости была построена регрессионная модель. Для обеих моделей были проведены тесты для доказательства их адекватности. На основе данных компании N за 2017 год были рассчитаны прогнозы с помощью двух построенных моделей. При сравнении результатов прогнозирования с реальным значением коэффициента финансовой стабильности компании N на 2017 год ошибка прогноза составила не более 1,5%. Это указывает на точность построенных моделей и возможность их применения для прогнозирования в дальнейшем. Также в главе были выбраны MDA-модели для прогнозирования вероятности банкротства как частный случай финансовой устойчивости. В конечное приложение будут включены модель Лиса, модель Спрингейта, модель Давыдовой-Беликова и модель Сайфулина-Кадыкова.

ГЛАВА 3. РАЗРАБОТКА ВЕБ-ПРИЛОЖЕНИЯ

В данной главе представлены результаты разработки и тестирования создаваемой системы. Разрабатываемое приложение предназначено для автоматизации процесса прогнозирования финансовой устойчивости предприятия. У приложения только один пользователь – сотрудник предприятия, желающий сделать прогноз. От пользователя требуется загрузить данные баланса и отчета о прибылях и убытках в приложение и далее получить конечный результат в виде прогнозного значения по двум моделям. По желанию, пользователь может воспользоваться дополнительными функцией и рассчитать вероятность банкротства предприятия при помощи MDAмоделей. Для них пользователю необходимо внести дополнительные данные. Тестирование приложение выполнено с применением стратегии черного ящика.

3.1. Этапы анализа и проектирования

При работе с приложением пользователь выполняет лишь одну функцию загружает данные в приложение. Он также может сделать это повторно, если ему необходимо спрогнозировать вероятность банкротства. Система выполняет расчет коэффициента финансовой стабильности и расчет вероятности банкротства по запросу пользователя. Так как приложение не является субъектом, то у нас только один актор пользователь приложения, который преследует одну конечную цель - получить прогноз по внесенным данным. Функциональные требования к приложению следующие:

1. Обеспечить возможность ввода в систему пользовательских данных.

2. Обеспечить возможность получения прогнозных значений по заданным данным.

3. Обеспечить возможность выбора дополнительных функций в виде прогноза вероятности банкротства.

4. Обеспечить возможность выбора MDA-моделей для прогноза.

5. Обеспечить возможность ввода дополнительных данных.

6. Обеспечить возможность получения вероятности банкротства по заданным данным.

Для реализации всех функциональных требований, необходимо удовлетворить следующие нефункциональные требования:

1. Создание веб-приложение для доступа пользователя к нему с любого устройства.

2. Создание кода программы при помощи языка C# в среде разработки Visual Studio.

3. Реализация понятного интерфейса для работы пользователя.

В табл. 3.1. представлено таблица прецедентов, выявленных при помощи предъявляемых функциональных требований. Итоговое количество прецедентов ровно 5.

Таблица 3.1. Таблица прецедентов для приложения

Требование

Субъект

Прецедент

1

Приложение должно обеспечить возможность ввода данных пользователем

Пользователь

Ввод данных

2

Приложение должно обеспечить возможность просмотра полученных результатов

Пользователь

Просмотр результатов

3

Приложение должно обеспечить возможность выбора дополнительной функции

Пользователь

Выбор дополнительной функции

4

Приложение должно обеспечить возможность выбора необходимых моделей для прогнозирования банкротства

Пользователь

Выбор модели

5

Приложение должно обеспечить возможность ввода дополнительных данных

Пользователь

Ввод дополнительных данных

6

Приложение должно обеспечить возможность просмотра прогноза вероятности банкротства

Пользователь

Просмотр результатов

Составленная таблица позволяет построить модель вариантов использования, представленную на рис. 3.1. Разрабатываемое приложение автоматизирует только одно действие, поэтому диаграмма получилась достаточно простой.

Рисунок 3.1. Диаграмма вариантов использования

Несмотря на это, для детализации действий необходимо проанализировать каждый прецедент и составить его описание. В табл. 3.2 – 3.6 описаны выделенные прецеденты.

Таблица 3.2. Прецедент «Ввод данных»

Краткое описание

Прецедент дает возможность пользователю ввести необходимые данные для построения прогноза

Актеры

Пользователь

Предусловия

Запуск программы

Основной поток

Пользователь вводит данные в систему

Альтернативные потоки

Пользователь закрыл программу без загрузки данных

Постусловия

При успешной загрузке данные загружаются в приложения и отображаются для пользователя в виде таблицы. В противном случае состояние системы остается неизменным.

Таблица 3.3. Прецедент «Просмотр данных»

Краткое описание

Прецедент дает возможность пользователю просматривать результаты, предоставляемые системой

Актеры

Пользователь

Предусловия

Ввод основных или дополнительных данных

Основной поток

Пользователь получает результаты прогнозирования в основном окне приложения

Альтернативные потоки

Пользователь ввел некорректные данные в систему

Постусловия

При загрузке верных входных данных, пользователь получает результаты в виде прогноза. В противном случае система выводит ошибку о некорректности данных

Таблица 3.4. Прецедент «Выбор доп. функции»

Краткое описание

Прецедент дает возможность пользователю запустить дополнительную функцию приложения

Актеры

Пользователь

Предусловия

Прогноз по основным моделям получен

Основной поток

Пользователь нажимает кнопку для выбора дополнительной функции

Альтернативные потоки

Пользователь не нуждается в запуске дополнительной функции

Постусловия

Пользователю предлагается выбор моделей для расчета вероятности банкротства

Включения

Выбор модели

Таблица 3.5. Прецедент «Выбор модели»

Краткое описание

Прецедент дает возможность пользователю выбрать модели для расчета вероятности банкротства

Актеры

Пользователь

Предусловия

Выбор дополнительной функции приложения

Основной поток

Пользователь выбирает модели для прогнозирования

Альтернативные потоки

Пользователь отказался от ввода

Постусловия

Пользователь переходит к вводу дополнительных данных для расчета.

Расширения

Ввод дополнительных данных

Таблица 3.6. Прецедент «Ввод дополнительных данных»

Краткое описание

Прецедент дает возможность пользователю ввести дополнительные данные для расчета

Актеры

Пользователь

Предусловия

Выбор модели для прогнозирования вероятности, которая требует дополнительных данных.

Основной поток

Пользователь вводит дополнительные данные для расчетов.

Альтернативные потоки

Пользователь отказался от ввода и закрыл приложение.

Постусловия

Пользователь вводит данные и переходит к просмотру результатов. В случае ввода некорректных данных, система выводит ошибку о некорректности данных.

Подробное описание прецедентов позволяет понять структуру будущего приложения и алгоритм работы с ним. Для выделенных прецедентов были построены UML-диаграммы, такие как диаграммы активности и диаграммы последовательности. Эти диаграммы, как и диаграмма классов, отражены в приложении данного документа (см. приложение Б). Учитывая объем данных, которые необходимо загрузить пользователю в приложение, было введено два дополнительных условия для исходных данных: основные данные для прогноза пользователь будет загружать в виде excelфайла по заранее подготовленному шаблону. Дополнительные данные, в силу своего небольшого объема, пользователь будет вводить вручную.

3.2. Этап разработки и тестирования

Разработка приложения заключается в реализации заявленных функциональных требований. Для каждого из требований описаны классы, методы, свойства и элементы, применяемые при разработке. Полный код программы представлен в приложении данного документа (см. приложение В).

1. Обеспечить возможность ввода в систему пользовательских данных.

Исходя из объема данных, который пользователь должен загрузить в приложение, ввод основных данных реализовано через загрузку excel-файла по заранее подготовленному шаблону. Для этого был использован элемент управления FileUpload, его свойство HasFile и метод PostedFile. Для подключения, считывания и записи данных в DataSet использовались классы и элементы библиотеки System.Data.OleDb. Шаблон для заполнения хранится в папке Content реализуемое решения и для его скачивания используется ссылка с атрибутом download. Вывод данных реализован при помощи GridView.

2. Обеспечить возможность получения прогнозных значений по заданным данным.

Для обеспечения данной возможности необходимо реализовать расчет прогнозных значений по пользовательским данным, а затем вывести полученные результаты для пользователя. Для расчета прогнозных значений используется класс Econometric_model. Расчет прогноза по SURмодели реализован в методе Sur_data, на вход которого поступают два набора данных, исходные данные и данные для прогноза, а на выходе прогнозное значение по модели. В методе в свою очередь используются другие методы класс Econometric_model, такие как Matrix, используемый для пошагового расчет вектора оценок b, inverse_matrix для расчет обратной матрицы, Multipl для перемножения матрица, Kroneker для реализации произведения Кронекера для матриц и Transp для транспонирования матриц. Расчет прогноза по регрессионной модели реализован с помощью метода Regres_data. Для вывода результатов используются элементы веб-формы Label, в которые записываются полученные результаты.

3. Обеспечить возможность выбора дополнительных функций в виде прогноза вероятности банкротства.

Для реализации возможности выбора использован элемент веб-формы Button, при нажатии на который для пользователя становятся доступен выбор MDAмоделей для расчета, при повторном нажатии – ввод дополнительных данных для моделей и при заполнении данных расчет вероятности прогноза по выбранным моделям.

4. Обеспечить возможность выбора MDA-моделей для прогноза.

Для реализации возможности выбора моделей использован элемент веб-форм CheckBoxList. В зависимости от выбранного элемента для пользователя станут доступны те или иные поля для заполнения дополнительных данных.

5. Обеспечить возможность ввода дополнительных данных.

Для ввода дополнительных данных используется элементs веб-форм TextBox, с запретом на ввод букв и специальных символов кроме точки. Данные из TextBox конвертируются во временные переменные, которые служат параметрами для методов расчета вероятности банкротства.

6. Обеспечить возможность получения вероятности банкротства по заданным данным.

Для обеспечения данной возможности необходимо реализовать расчет прогнозных значений по пользовательским данным, а затем вывести полученные результаты для пользователя. В зависимости от выбранной модели, используется методы класса Econometric_model: Lis для вычисления вероятности банкротства по модели Лиса, Sprin для вычисления вероятности банкротства по модели Спрингейта, Dav для вычисления вероятности банкротства по модели Двыдовой-Беликова и Say для вычисления вероятности банкротства по модели Сайфулина-Кадыкова. Для представления данных для пользователя используются элементы веб-формы Label.

Этап разработки помимо создания кода программы включает в себя разработку пользовательского интерфейса. Исходя из выводов, сделанных на этапе анализа, основные данные для прогноза пользователь будет загружать в виде excelфайла. Главное окно приложение будет иметь вид web-формы с возможностью загрузки данных по подготовленному шаблону. Таким образом, пользователь должен иметь возможность скачать шаблон и загрузить заполненный шаблон в приложение. Вид главной формы представлен на рис. 3.2.

Рисунок 3.2. Вид основной формы до загрузки данных

При нажатии на кнопку «Загрузить данные» происходит проверка на выбранный файл и в случае загрузки пользователем шаблона происходит временное сохранение данного файла, из которого впоследствии данные будут выгружены и представлены пользователю в виде таблицы.

Загруженные данные должны быть доступны пользователю на главном экране. Для этого можно использовать элемент формы GridView с привязкой к загруженным данным из файла. По итогу ввода данных вид формы измениться и будет выглядеть, как на рис. 3.3.

Рисунок 3.3. Загруженные данные в приложении

Основной целью приложения является получение прогноза по пользовательским данным. Таким образом, пользователь всегда хочет получить прогнозные значения, если он использует данное приложение, поэтому исключаем дополнительные кнопки для начала прогноза и высчитываем прогнозные значения сразу после загрузки данных по обеим построенным моделям. Итоговый вид формы с прогнозными значениями будет выглядеть, как на рис. 3.4.

Рисунок 3.4. Расчет прогноза по двум основным моделям

После выполнения основной части работы приложения, для пользователя становится доступна кнопка дополнительной функции, а именно прогноза вероятности банкротства предприятия. При нажатии на кнопку пользователю предлагается выбрать одну или несколько моделей, как показано на рис. 3.5.

Рисунок 3.5. Выбор моделей для расчета вероятности банкротства

В зависимости от модели, пользователю может быть предложено ввести дополнительные данные. Логика приложения построена таким образом, что при выборе двух и более моделей, пользователь получит финальный результат по каждой из них только в случае полного ввода дополнительных данных. Выбор моделей и ввод данных представлен на рис. 3.6.

Рисунок 3.6. Ввод дополнительных данных

Результаты прогнозирования вероятности банкротства банка представлены на рис. 3.7. В качестве результата по MDA-моделям представлены как расчетные показатели, так и интерпретация данного показателя. В зависимости от расчетного результата, в переменную inter записывается верная интерпретация, которая передается на форму вместе с расчетным показателем. Данные для расчета взяты из объекта DataSet, содержащим загруженную пользователем базу финансовых показатели при помощи excel-файла. В данном случае берутся только данные прогнозного года.

Рисунок 3.7. Результаты прогнозирования вероятности банкротства

Тестирование приложение было выполнено по стратегии черного ящика. Полный набор тестов представлен в приложении данного документа (см. приложение Г).

Выводы по третьей главе

В данной главе были проведены этапы разработки приложения для прогнозирования финансовой устойчивости предприятия. На этапе анализа были выделены функциональные и нефункциональные требования, что позволило выделить прецеденты и описать их. Для понимания структуры приложения и алгоритма работы с ним на этапе проектирования были построены диаграмма вариантов использования, а также диаграммы активности и последовательности для выделенных прецедентов. Результаты этапов анализа и проектирования были использованы на этапе разработки приложения, в котором реализованы все выделенные функциональные требования и алгоритм работы. Для проверки работы приложения были проведены тесты по стратегии черного ящика.

ЗАКЛЮЧЕНИЕ

В ходе данной работы была построена модель для прогнозирования финансовой устойчивости предприятия компании N, была доказана адекватность построенной модели и достаточная точность ее прогнозов. Для построения данной модели был проведен обширный анализ методов по работе с короткими временными рядами, а также построена сравнительная таблица для выбора наиболее подходящего метода по поставленной задаче. В завершении работы была достигнута ее цель, а именно реализовано приложение для прогнозирования финансовой устойчивости компании N на основе построенной SUR-модели, а также регрессионной модели и моделей дискриминантного анализа. При реализации приложение были проведены все необходимые этапы, а именно анализ для выявления функциональных и нефункциональных требований, проектирования для выделения прецедентов и построения UML-диаграмм, разработка для реализации основных функций приложения и тестирования для проверки его работы. Таким образом, выполнены все поставленные задачи:

1. Проведен анализ метод по работе с короткими временными рядами.

2. Созданы модели для прогнозирования финансовой устойчивости компании N.

3. Разработано приложение для прогнозирования финансовой устойчивости компании N.

В ходе оценки адекватности модели был построен прогноз коэффициента финансовой стабильности компании N на 2017 год, который оказался близок к реальному значению компании на конец данного периода. Таким образом, была доказана адекватность прогнозов по модели. С помощью разработанного приложения и плановых показателей компании N был построен прогноз коэффициента финансовой стабильности данного предприятия на 2018 год. Рассчитанное прогнозное значение и веб-приложение будут переданы предприятию N как результаты проделанной работы. На данный момент состоялась встреча с представителем компании, на которой была проведена демонстрация работы приложения. Итогами встречи стал положительный отзыв заказчика о работе системы, а также подтверждение передачи приложения в эксплуатацию не позднее 30 июня 2018 года.

СПИСОК ЛИТЕРАТУРЫ

1. Евстропов М.В. Оценка возможностей прогнозирования банкротства предприятий в России // Вестник Оренбургского государственного университета. – 2008 – № 85 – С. 25–32.

2. Журов В. А. Процесс разработки моделей для прогнозирования банкротства предприятий (на примере японских публичных компаний) // Финансовый менеджмент. – 2007 – № 1 – С. 53–65..

3. Кошкин Ю.Л., Шатров А.В. К вопросу о моделировании трендов временных рядов // Вестник Пермского университета. – 2015 – № 3(26) – С. 32–41.

4. Распоряжение ФСДН РФ от 08.10.1999 № 33-р «Методические рекомендации по проведению экспертизы о наличии (отсутствии) признаков фиктивного или преднамеренного банкротства»

5. Мандель А.С. Метод аналогов в прогнозировании коротких временных рядов: экспертно-статистический подход // Автоматика и телемеханика. – 2004 – № 4

6. Носко В.П. Эконометрика: учеб. для вузов. – Кн. 2 – М.: Издательский дом «Дело» РАНХиГС, 2011 – С. 576.

7. Носко В.П. Эконометрика для начинающих (Дополнительные главы): учеб. для вузов. – М.: ИЭПП, 2005 – С. 379.

8. Салькова М.В. Методика анализа и прогнозирования деятельности организации в целях выявления и предупреждения несостоятельности (банкротства) [Электронный ресурс]. 2012. URL: http://www.scienceforum.ru/2014/576/1184 (дата обращения: 02.02.2018).

9. Семёнычев В.К., Семёнычев Е.В. Параметрическая идентификация рядов динамики: структуры, модели, эволюция: монография. – М.: Сам НЦ РАН, 2011 – 364 с.

10. Тамбиева Д.А, Попова Е.В., Салпагарова Ш.Х. К проблеме недостаточности информации. Малые выборки или "очень короткие" временные ряды // Научный журнал КубГАУ. – 2015 – № 107(03).

11. Тотьмянина К.М. Оценка вероятности дефолта промышленных компаний на основе финансовых показателей // Финансовый менеджмент. – 2011 – С. 5968.

12. Altman E.I., Rijken H. How Rating Agencies Achieve Rating Stability // Journal of Banking and Finance. – 2005 – № 28(11) – P. 2679–2714.

13. Beaver W. H. Financial ratios as predictors of failure // Journal of accounting research. – 1966 – № 4.

14. Jardin P.D. The Influence of Variable Selection Methods on the Accuracy of Bankruptcy Prediction Models // Bankers, Markets & Investors. – 2012 – № 116 – P. 20-39.

15. Nisak S.C. Seemingly Unrelated Regression Approach for GSTARIMA Model to Forecast Rain Fall Data in Malang Southern Region Districts // CAUCHY journal of pure and applied mathematics. – 2016 – № 4(2) – P. 57–64.

16. Tanuwidjaja E. Multi-factor SUR in event study analysis: evidence from M&A in Singapore’s financial industry // Applied Financial Economics Letters. – 2007 – № 3 – P. 55–62.

Приложение А. Исходные данные

Таблица А.1. Исходные данные компании N для построения модели (тыс.руб)

Год

2009

2010

2011

2012

2013

2014

2015

2016

2017

X1

1446960

1216882

1044917

950492

991760

1104982

995649

950947

990521

X2

814056

465041

643135

1284391

853825

426591

445704

543218

804533

X3

2105321

1533192

1467763

2005942

1635197

1270295

1184868

1321292

1531856

X4

92418

92418

89186

89042

97500

103686

107168

113578

104531

X5

63277

56313

130103

132388

112888

157592

149316

59296

158667

X6

2309390

2342607

2629496

2475244

2013565

1891381

1559686

1535110

1744527

X7

1053550

1121022

1361354

1198932

1132643

1188448

1120866

1092577

1216493

X8

711359

616652

571931

914640

597585

447258

185276

177225

250954

X9

705694

630541

575927

935177

628878

457639

197569

169885

264081

X10

589748

529870

484572

788178

529255

385097

164573

136423

210566

Y

0,97201

0,96652

0,922336

0,937403

0,938831

0,89710

0,89640

0,96031

0,91160

Приложение Б. UML-диаграммы

Рисунок Б.1. Диаграмма активности прецедента «Ввод данных»

Рисунок Б.2. Диаграмма активности прецедента «Просмотр данных»

Рисунок Б.3. Диаграмма активности прецедента «Выбор доп.функции»

Рисунок Б.4. Диаграмма активности прецедента «Выбор моделей»

Рисунок Б.5. Диаграмма активности прецедента «Ввод дополнительных данных»

Рисунок Б.6. Диаграмма последовательности прецедента «Ввод данных»

Рисунок Б.7.Диаграмма последовательности прецедента «Просмотр данных»

Рисунок Б.8.Диаграмма последовательности прецедента «Выбор доп.функции2

Рисунок Б.9. Диаграмма последовательности прецедента «Выбор модели»

Рисунок Б.10. Диаграмма последовательности прецедента «Ввод дополнительных данных»

Рисунок Б.11. Схема классов

Приложение В. Исходный код программы

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.IO;

using System.Data.OleDb;

using System.Data;

using MetroFramework.Components;

using MetroFramework.Forms;

using System.Windows;

namespace WebApplication1

{

public partial class Загрузка_данных : System.Web.UI.Page

{

public DataSet objDataset1 = new DataSet();

public DataSet objDataset2 = new DataSet();

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)

{

}

protected void Page_Load(object sender, EventArgs e)

{

}

protected void Button1_Click(object sender, EventArgs e)

{

if (FileUpload1.HasFile)

{

FileUpload1.PostedFile.SaveAs(Server.MapPath("~/App_Data/") + "FinCond_file");

}

// Create connection string variable. Modify the "Data Source"

// parameter as appropriate for your environment.

String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +

"Data Source=" + Server.MapPath("~/App_Data/FinCond_file") + ";" +

"Extended Properties=Excel 8.0;";

// Create connection object by using the preceding connection string.

OleDbConnection objConn = new OleDbConnection(sConnectionString);

// Open connection with the database.

objConn.Open();

// The code to follow uses a SQL SELECT command to display the data from the worksheet.

// Create new OleDbCommand to return data from worksheet.

OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM Данные", objConn);

OleDbCommand objCmdSelect2 = new OleDbCommand("SELECT * FROM Данные2", objConn);

// Create new OleDbDataAdapter that is used to build a DataSet

// based on the preceding SQL SELECT statement.

OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();

OleDbDataAdapter objAdapter2 = new OleDbDataAdapter();

// Pass the Select command to the adapter.

objAdapter1.SelectCommand = objCmdSelect;

objAdapter2.SelectCommand = objCmdSelect2;

// Create new DataSet to hold information from the worksheet.

// Fill the DataSet with the information from the worksheet.

objAdapter1.Fill(objDataset1, "XLData");

objAdapter2.Fill(objDataset2, "XLData2");

// Bind data to DataGrid control.

GridView1.DataSource = objDataset1.Tables[0].DefaultView;

GridView1.DataBind();

// Clean up objects.

objConn.Close();

Label2.Visible = true;

Label3.Visible = true;

Label4.Visible = true;

Label8.Text = "Для данных моделей необходимо ввести дополнительные данные за " + ((double)objDataset2.Tables["XLData2"].Rows[0][0] - 1).ToString();

Econometric_model ec = new Econometric_model();

WebApplication1.Controllers.Class1 cl = new WebApplication1.Controllers.Class1();

cl.Save_data(objDataset2);

double SUR = Math.Round(ec.SUR_data(objDataset1, objDataset2), 4);

double REG = Math.Round(ec.Regres_data(objDataset2), 4);

Label lb = new Label();

lb.Text = "Я ТУТ";

this.Controls.Add(lb);

Label2.Text = "Значение прогноза коэффициента финансовой стабильности:";

Label3.Text = "по SUR-модели: " + SUR.ToString() + " или " + (SUR * 100).ToString() + "%";

Label4.Text = "по регрессионной модели: " + REG.ToString() + " или " + (REG * 100).ToString() + "%";

Button2.Visible = true;

}

protected void LinkButton1_Click(object sender, EventArgs e)

{

}

protected void MultiView1_ActiveViewChanged(object sender, EventArgs e)

{

}

protected void HiddenField1_ValueChanged(object sender, EventArgs e)

{

}

protected void Button2_Click(object sender, EventArgs e)

{

CheckBoxList1.Visible = true;

Label5.Visible = true;

Econometric_model ec = new Econometric_model();

WebApplication1.Controllers.Class1 cl = new WebApplication1.Controllers.Class1();

DataSet my_data = cl.Return_data();

Label6.Visible = false;

Label7.Visible = false;

Label14.Visible = false;

Label15.Visible = false;

TextBox1.Visible = false;

TextBox2.Visible = false;

TextBox3.Visible = false;

TextBox4.Visible = false;

if (CheckBoxList1.Items[0].Selected == true)

{

Label8.Visible = true;

Label6.Visible = true;

Label6.Text = "Нераспределенная прибыль";

TextBox1.Visible = true;

if (TextBox1.Text!="")

{

double pr=Convert.ToDouble(TextBox1.Text);

Label9.Text = "По Лису: " + ec.Lis(my_data, pr);

Label9.Visible = true;

Label13.Visible = true;

}

}

if (CheckBoxList1.Items[1].Selected == true)

{

Label8.Visible = true;

if (CheckBoxList1.Items[0].Selected != true)

{

Label6.Visible = true;

Label6.Text = "Текущие обязательства";

TextBox1.Visible = true;

if (TextBox1.Text != "")

{

double tek = Convert.ToDouble(TextBox1.Text);

Label9.Text = "По Спрингейту: " + ec.Sprin(my_data, tek);

Label9.Visible = true;

Label13.Visible = true;

}

}

else

{

Label7.Visible = true;

Label7.Text = "Текущие обязательства";

TextBox2.Visible = true;

if (TextBox2.Text != "")

{

double tek = Convert.ToDouble(TextBox2.Text);

Label10.Text = "По Спрингейту: " + ec.Sprin(my_data, tek);

Label10.Visible = true;

Label13.Visible = true;

}

}

}

if (CheckBoxList1.Items[2].Selected == true)

{

Label8.Visible = true;

if (CheckBoxList1.Items[1].Selected != true)

{

if (CheckBoxList1.Items[0].Selected != true)

{

Label6.Visible = true;

Label6.Text = "Средняя стоимость активов";

TextBox1.Visible = true;

Label7.Visible = true;

Label7.Text = "Затраты компании";

TextBox2.Visible = true;

if (TextBox1.Text != "" && TextBox2.Text != "")

{

double act = Convert.ToDouble(TextBox1.Text);

double zat = Convert.ToDouble(TextBox2.Text);

Label9.Text="По Сайфулина-Кадыкова:"+ec.Say(my_data,act,zat);

Label9.Visible = true;

Label13.Visible = true;

}

}

else

{

Label7.Visible = true;

Label7.Text = "Средняя стоимость активов";

TextBox2.Visible = true;

Label14.Visible = true;

Label14.Text = "Затраты компании";

TextBox3.Visible = true;

if (TextBox2.Text != "" && TextBox3.Text != "")

{

double act = Convert.ToDouble(TextBox2.Text);

double zat = Convert.ToDouble(TextBox3.Text);

Label10.Text="По Сайфулина-Кадыкова:"+ec.Say(my_data,act,zat);

Label10.Visible = true;

Label13.Visible = true;

}

}

}

else

{

if (CheckBoxList1.Items[0].Selected != true)

{

Label7.Visible = true;

Label7.Text = "Средняя стоимость активов";

TextBox2.Visible = true;

Label14.Visible = true;

Label14.Text = "Затраты компании";

TextBox3.Visible = true;

if (TextBox2.Text != "" && TextBox3.Text != "")

{

double act = Convert.ToDouble(TextBox2.Text);

double zat = Convert.ToDouble(TextBox3.Text);

Label11.Text="По Сайфулина-Кадыкова:"+ec.Say(my_data,act,zat);

Label10.Visible = true;

Label13.Visible = true;

}

}

else

{

Label14.Visible = true;

Label14.Text = "Средняя стоимость активов";

TextBox3.Visible = true;

Label15.Visible = true;

Label15.Text = "Затраты компании";

TextBox4.Visible = true;

if (TextBox3.Text != "" && TextBox4.Text != "")

{

double act = Convert.ToDouble(TextBox3.Text);

double zat = Convert.ToDouble(TextBox4.Text);

Label11.Text="По Сайфулина-Кадыкова:"+ec.Say(my_data,act,zat);

Label11.Visible = true;

Label13.Visible = true;

}

}

}

}

if (CheckBoxList1.Items[3].Selected == true)

{

Label8.Visible = true;

if (CheckBoxList1.Items[2].Selected != true)

{

if (CheckBoxList1.Items[1].Selected != true)

{

if (CheckBoxList1.Items[0].Selected != true)

{

Label6.Visible = true;

Label6.Text = "Средняя стоимость активов";

TextBox1.Visible = true;

Label7.Visible = true;

Label7.Text = "Текущие обязательства";

TextBox2.Visible = true;

if (TextBox1.Text != "" && TextBox2.Text != "")

{

double act = Convert.ToDouble(TextBox1.Text);

double zat = Convert.ToDouble(TextBox2.Text);

Label9.Text="По Сайфулина-Кадыкова:"+ec.Say(my_data,act,zat);

Label9.Visible = true;

Label13.Visible = true;

}

}

else

{

Label7.Visible = true;

Label7.Text = "Средняя стоимость активов";

TextBox2.Visible = true;

Label14.Visible = true;

Label14.Text = "Текущие обязательства";

TextBox3.Visible = true;

if (TextBox2.Text != "" && TextBox3.Text != "")

{

double act = Convert.ToDouble(TextBox2.Text);

double zat = Convert.ToDouble(TextBox3.Text);

Label10.Text="По Сайфулина-Кадыкова:"+ec.Say(my_data,act,zat);

Label10.Visible = true;

Label13.Visible = true;

}

}

}

else

{

if (CheckBoxList1.Items[0].Selected != true)

{

Label7.Visible = true;

Label7.Text = "Средняя стоимость активов";

TextBox2.Visible = true;

if (TextBox2.Text != "" && TextBox1.Text != "")

{

double act = Convert.ToDouble(TextBox2.Text);

double zat = Convert.ToDouble(TextBox1.Text);

Label10.Text="По Сайфулина-Кадыкова:"+ec.Say(my_data,act,zat);

Label10.Visible = true;

Label13.Visible = true;

}

}

else

{

Label14.Visible = true;

Label14.Text = "Средняя стоимость активов";

TextBox3.Visible = true;

if (TextBox3.Text != "" && TextBox2.Text != "")

{

double act = Convert.ToDouble(TextBox3.Text);

double zat = Convert.ToDouble(TextBox2.Text);

Label11.Text="По Сайфулина-Кадыкова:"+ec.Say(my_data,act,zat);

Label11.Visible = true;

Label13.Visible = true;

}

}

}

}

else

{

if (CheckBoxList1.Items[1].Selected != true)

{

if (CheckBoxList1.Items[0].Selected != true)

{

Label14.Visible = true;

Label14.Text = "Текущие обязательства";

TextBox3.Visible = true;

if (TextBox1.Text != "" && TextBox3.Text != "")

{

double act = Convert.ToDouble(TextBox1.Text);

double zat = Convert.ToDouble(TextBox3.Text);

Label10.Text="По Сайфулина-Кадыкова:"+ec.Say(my_data,act,zat);

Label13.Visible = true;

}

}

else

{

Label15.Visible = true;

Label15.Text = "Текущие обязательства";

TextBox4.Visible = true;

if (TextBox2.Text != "" && TextBox4.Text != "")

{

double act = Convert.ToDouble(TextBox2.Text);

double zat = Convert.ToDouble(TextBox4.Text);

Label11.Text="По Сайфулина-Кадыкова:"+ec.Say(my_data,act,zat);

Label11.Visible = true;

Label13.Visible = true;

}

}

}

else

{

if (CheckBoxList1.Items[0].Selected != true)

{

if (TextBox1.Text != "" && TextBox2.Text != "")

{

double act = Convert.ToDouble(TextBox2.Text);

double zat = Convert.ToDouble(TextBox1.Text);

Label11.Text="По Сайфулина-Кадыкова:"+ec.Say(my_data,act,zat);

Label11.Visible = true;

Label13.Visible = true;

}

}

else

{

if (TextBox2.Text != "" && TextBox3.Text != "")

{

double act = Convert.ToDouble(TextBox3.Text);

double zat = Convert.ToDouble(TextBox2.Text);

Label12.Text="По Сайфулина-Кадыкова:"+ec.Say(my_data,act,zat);

Label12.Visible = true;

Label13.Visible = true;

}

}

}

}

}

}

}

}

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Data;

namespace WebApplication1

{

public class Econometric_model

{

double[] Zh_y = new double[8] { 0.03037293, 0.004508092, 0.012287257, 0.014187398, 0.014491574, -0.076430333, -0.069947505, 0.004129624 };

double[] Tr_y = new double[8] { 0.388894539, 0.468095538, 0.439915323, 0.616140321, 0.418361232, 0.359315784, 0.38452303, 0.399975509 };

double [,] Zh_x = new double [8, 3] { { 1, 2989, 95422 }, { 1, 849, 187479 }, { 1, 2913, 241075 }, { 1, 4167, 300523 }, { 1, 3195, 327039 }, { 1, -25463, 356588 }, { 1, -25389, 386235 }, { 1, 1572, 413577 } };

double[,] Tr_x = new double [8, 5] { { 1, 3232, 801, -22617, 1689 }, { 1, 5091, 800, -49382, 5092 }, { 1, 9883, 1000, -39331, 3430 }, { 1, 13305, 6224, -24388, 2439 }, { 1, 11843, 4579, -42729, 1471 }, { 1, 12667, 99, -42514, 1086 }, { 1, 11706, 700, -46679, 2384 }, { 1, 14908, 700, -34238, 36 } };

double[] Zh_uhat_full = new double[8] { 0.007175, -0.007661, -0.003023, -0.001617, 0.002891, -0.003684, 0.004145, 0.001774 };

double[] Tr_uhat_full = new double[8] { -0.00411, 0.02496, -0.02875, 0.006275, - 0.006795, -0.005897, -0.00892, 0.02324 };

double[] Beta = new double[12] { 0.985599, 2.02E-08, -6.71E-07, 1.94E-08, 0.0195856, 2.89E-06, -5.26E-08, 0.380329, 1.11E-05, 1.42E-05, 5.27E-06, 5.01E-05 };

public double SUR_data(DataSet data, DataSet prog)

{

int count = data.Tables["XLData"].Rows.Count;

double[] y = new double[count];

double[] y_raschet = new double[count];

double [,] x = new double [count, 4];

double[] uhat = new double[count];

for (int i = 0; i < count; i++)

x[i, 0] = 1;

for (int i = 0; i < count; i++)

{

y[i] = (double)data.Tables["XLData"].Rows[i][11];

x[i, 1] = (double)data.Tables["XLData"].Rows[i][2];

x[i, 2] = (double)data.Tables["XLData"].Rows[i][5];

x[i, 3] = (double)data.Tables["XLData"].Rows[i][10];

y_raschet[i] = 0.985599 + x[i, 1] * 2.02E-08 - 6.71E-07 * x[i, 2] + 1.94E-08 * x[i, 3];

uhat[i] = y[i] - y_raschet[i];

}

double [] result=Matrix(y, x, count, uhat);

double x2 = (double)prog.Tables["XLData2"].Rows[0][2];

double x5 = (double)prog.Tables["XLData2"].Rows[0][5];

double x10 = (double)prog.Tables["XLData2"].Rows[0][10];

double res = result[0] + x2 * result[1] + result[2] * x5 + result[3] * x10;

return res;

}

public double Regres_data(DataSet data)

{

double x1 = (double)data.Tables["XLData2"].Rows[0][1];

double x3 = (double)data.Tables["XLData2"].Rows[0][3];

double x5 = (double)data.Tables["XLData2"].Rows[0][5];

double res = 0.987 - 2.57E-08 * x1 + 3.06E-08 * x3 - 6.51E-07 * x5;

return res;

}

public double[] Matrix(double[] y, double [,] x, int count, double[] uhat)

{

double[] Sur_y = new double[count * 3];

double [,] Sur_x = new double [count * 3, 12];

double[] Zh_uhat = uhat_correct(Zh_uhat_full, count);

double[] Tr_uhat = uhat_correct(Tr_uhat_full, count);

for (int i = 0; i < Sur_y.Length; i++)

{

if (i < count) Sur_y[i] = y[i];

else if (i < count * 2) Sur_y[i] = Zh_y[i-count];

else Sur_y[i] = Tr_y[i-count*2];

}

for (int i = 0; i < Sur_y.Length; i++)

for (int j = 0; j < 12; j++)

{

if (i < count)

{

if (j < 4) Sur_x[i, j] = x[i, j];

else Sur_x[i, j] = 0;

}

else if (i < count * 2)

{

if (j < 4) Sur_x[i, j] = 0;

else if (j < 7) Sur_x[i, j] = Zh_x[i-count, j-4];

else Sur_x[i, j] = 0;

}

else

{

if (j < 7) Sur_x[i, j] = 0;

else Sur_x[i, j] = Tr_x[i-count*2, j-7];

}

}

double[,] cov = new double[3, 3] { { Cov(uhat, uhat), Cov(uhat, Zh_uhat), Cov(uhat, Tr_uhat) }, { Cov(Zh_uhat, uhat), Cov(Zh_uhat, Zh_uhat), Cov(Zh_uhat, Tr_uhat) }, { Cov(Tr_uhat, uhat), Cov(Tr_uhat, Zh_uhat), Cov(Tr_uhat, Tr_uhat) } };

double[,] inverse_cov = inverse_matrix(cov);

double[,] one_matr = new double[count, count];

for (int i = 0; i < count; i++)

for (int j = 0; j < count; j++)

if (i == j) one_matr[i, j] = 1;

else one_matr[i, j] = 0;

double[,] kroneker = Kroneker(count, inverse_cov, one_matr);

double[,] Sur_x_trans = Transp(Sur_x, count);

double[,] first = Multipl(Sur_x_trans, kroneker);

double[,] second = Multipl(first, Sur_x);

double[,] third = inverse_matrix(second);

double[,] fourth = Multipl(third, Sur_x_trans);

double[,] fifth = Multipl(fourth, kroneker);

double[] resultmatrix = Multipl_1(fifth, Sur_y);

return resultmatrix;

}

public double Cov(double[] arr1, double[] arr2)

{

double x_y = 0;

double x = 0;

double y = 0;

for (int i = 0; i < arr1.Length; i++)

x_y += arr1[i] * arr2[i];

x_y = x_y / arr1.Length;

for (int i = 0; i < arr1.Length; i++)

x += arr1[i];

x = x / arr1.Length;

for (int i = 0; i < arr2.Length; i++)

y += arr2[i];

y = y / arr2.Length;

double cov = x_y - x * y;

return cov;

}

public double[] uhat_correct(double[] arr, int count)

{

double[] temp = new double[count];

for (int i = 0; i < count; i++)

temp[i] = arr[i];

return temp;

}

public double[,] Kroneker(int count, double[,] inverse_cov, double[,] one_matr)

{

double[,] kroneker = new double[count * 3, count * 3];

int str = 0;

int stl = 0;

int kroneker_icount = count;

int kroneker_jcount = count;

foreach (double el in inverse_cov)

{

int k = 0;

for (int i = str; i < kroneker_icount; i++)

{

int m = 0;

for (int j = stl; j < kroneker_jcount; j++)

{

kroneker[i, j] = el * one_matr[k, m];

m++;

}

k++;

}

if (k == count)

{

kroneker_jcount = kroneker_jcount + count;

stl = stl + count;

}

if (stl == count * 3)

{

kroneker_jcount = count;

str = kroneker_icount;

kroneker_icount = kroneker_icount + count;

stl = 0;

}

}

return kroneker;

}

public double[,] Transp(double[,]x, int count)

{

double[,] trans = new double[12,count * 3];

for (int i = 0; i < count*3; i++)

for (int j = 0; j < 12; j++)

trans[j, i] = x[i, j];

return trans;

}

public double[,] Multipl(double[,] a, double[,] b)

{

int a_rows=a.GetLength(0);

int b_rows=b.GetLength(0);

int b_col=b.GetLength(1);

double[,] multi = new double[a_rows, b_col];

for (int i = 0; i < a_rows; i++) // каждая строка A

{

for (int j = 0; j < b_col; j++) // каждый столбец B

for (int k = 0; k < b_rows; k++)

multi[i, j] += a[i, k] * b[k, j];

}

return multi;

}

public double[] Multipl_1(double[,] a, double[] b)

{

double[] result = new double[a.GetLength(0)];

for (int i = 0; i < a.GetLength(0); ++i) // каждая строка A

for (int k = 0; k < a.GetLength(1); ++k)

result[i] += a[i, k] * b[k];

return result;

}

public double[,] inverse_matrix(double[,] hhh)

{ //'единичная матрица

// h = 3; //активаровать для проверки. результат найдите тут: http://matrixcalc.org/

int h = hhh.GetLength(0);

double[,] ggg = new double[h, h];// единичная матрица

// Dim A_edin(k + 1, k + 1) As Double 'затем она перейдёт в обратную

for (int i = 0; i < h; )

{

for (int j = 0; j < h; )

{

if (i == j)

{ ggg[i, j] = 1; }

else

{ ggg[i, j] = 0; }

j++;

}

i++;

}

for (int i = 0; i < h; i++)

{

// normalizing row (making first element =1)

double tmp = hhh[i, i];

for (int j = h - 1; j >= 0; j--)

{

ggg[i, j] /= tmp;

hhh[i, j] /= tmp;

}

// excluding i-th element from each row except i-th one

for (int j = 0; j < h; j++)

if (j != i)

{

tmp = hhh[j, i];

for (int k = h - 1; k >= 0; k--)

{

ggg[j, k] -= ggg[i, k] * tmp;

hhh[j, k] -= hhh[i, k] * tmp;

}

}

}

// now e contains inverted matrix so we need only to copy e to matrix

for (int i = 0; i < h; i++)

for (int j = 0; j < h; j++)

hhh[i, j] = ggg[i, j];

return hhh;

}

public string Lis (DataSet data, double pr)

{

double obor_capital = (double)data.Tables["XLData2"].Rows[0][2] - (double)data.Tables["XLData2"].Rows[0][5];

double x1 = obor_capital / ((double)data.Tables["XLData2"].Rows[0][1] + (double)data.Tables["XLData2"].Rows[0][2]);

double x2 = (double)data.Tables["XLData2"].Rows[0][9] / ((double)data.Tables["XLData2"].Rows[0][1] + (double)data.Tables["XLData2"].Rows[0][2]);

double x3 = pr / ((double)data.Tables["XLData2"].Rows[0][1] + (double)data.Tables["XLData2"].Rows[0][2]);

double x4 = (double)data.Tables["XLData2"].Rows[0][3] / ((double)data.Tables["XLData2"].Rows[0][1] + (double)data.Tables["XLData2"].Rows[0][2]);

double lis = Math.Round(0.063 * x1 + 0.092 * x2 + 0.057 * x3 + 0.001 * x4, 4);

string inter = "";

if (lis > 0.037) inter = " - низкая вероятность";

else inter = "- высокая вероятность";

string result = "расчетный показатель = " + lis.ToString() + inter;

return result;

}

public string Sprin(DataSet data, double tek)

{

double obor_capital = (double)data.Tables["XLData2"].Rows[0][2] - (double)data.Tables["XLData2"].Rows[0][5];

double x1 = obor_capital / ((double)data.Tables["XLData2"].Rows[0][1] + (double)data.Tables["XLData2"].Rows[0][2]);

double x2 = (double)data.Tables["XLData2"].Rows[0][8] / ((double)data.Tables["XLData2"].Rows[0][1] + (double)data.Tables["XLData2"].Rows[0][2]);

double x3 = (double)data.Tables["XLData2"].Rows[0][9] / tek;

double x4 = (double)data.Tables["XLData2"].Rows[0][6] / ((double)data.Tables["XLData2"].Rows[0][1] + (double)data.Tables["XLData2"].Rows[0][2]);

double spr = Math.Round(1.03 * x1 + 3.07 * x2 + 0.66 * x3 + 0.4 * x4, 4);

string inter = "";

if (spr > 0.862) inter = " - низкая вероятность";

else inter = "- высокая вероятность";

string result = "расчетный показатель = " + spr.ToString() + inter;

return result;

}

public string Dav (DataSet data, double sr_act, double zat)

{

double obor_capital = (double)data.Tables["XLData2"].Rows[0][2] - (double)data.Tables["XLData2"].Rows[0][5];

double x1 = obor_capital / ((double)data.Tables["XLData2"].Rows[0][1] + (double)data.Tables["XLData2"].Rows[0][2]);

double x2 = (double)data.Tables["XLData2"].Rows[0][10] / (double)data.Tables["XLData2"].Rows[0][3];

double x3 = (double)data.Tables["XLData2"].Rows[0][6] / sr_act;

double x4 = (double)data.Tables["XLData2"].Rows[0][10] / zat;

double dav = Math.Round(8.38 * x1 + x2 + 0.054 * x3 + 0.063 * x4, 4);

string inter = "";

if (dav > 0.42) inter = " - вероятность банкротства меньше 10%";

else if (dav > 0.32) inter = "- вероятность банкротства от 10% до 35%";

else if (dav > 0.18) inter = "- вероятность банкротства от 35% до 50%";

else if (dav > 0) inter = "- вероятность банкротства от 60% до 80%";

else inter = "- вероятность банкротства от 90% до 100%";

string result = "расчетный показатель = " + dav.ToString() + inter;

return result;

}

public string Say(DataSet data, double sr_act, double tek)

{

double x1 = (double)data.Tables["XLData2"].Rows[0][3] / (double)data.Tables["XLData2"].Rows[0][2];

double x2 = (double)data.Tables["XLData2"].Rows[0][2] / tek;

double x3 = (double)data.Tables["XLData2"].Rows[0][6] / sr_act;

double x4 = (double)data.Tables["XLData2"].Rows[0][8] / (double)data.Tables["XLData2"].Rows[0][6];

double x5 = (double)data.Tables["XLData2"].Rows[0][10] / (double)data.Tables["XLData2"].Rows[0][3];

double say = Math.Round(2 * x1 + 0.1 * x2 + 0.08 * x3 + 0.045 * x4 + x5, 4);

string inter = "";

if (say >= 1) inter = " - низкая вероятность";

else inter = "- высокая вероятность";

string result = "расчетный показатель = " + say.ToString() + inter;

return result;

}

}

}

Приложение Г. Тесты

Таблица Г.1. Тесты по стратегии черного ящика

Входные данные

Ожидаемый результат

Полученный результат

Тест

Excel-файл с числовыми данными не по шаблону.

Год {2009, 2010, 2011}

1 переменная {23,24,25}

….

Ошибка загрузки

Сообщение «Ошибка: неверных формат заголовков. Заполните данные в подготовленном шаблоне»

+

Excel-файл с числовыми данными по шаблону.

Год {2009, 2010, 2011}

X1 {23,24,25}

….

Загрузка данных, расчет результатов

Значение прогноза коэффициента финансовой стабильности:

по SUR-модели: 0,5112 или 51,12%

по регрессионной модели: 0,4852 или 48,52%

Таблица с данными

+

Excel-файл не с числовыми данными не по шаблону.

Год {2009, 2010, 2011}

1 переменная {23,24,25}

….

Ошибка загрузки

Сообщение «Ошибка: неверных формат данных»

+

Excel-файл не с числовыми данными по шаблону.

Год {2009, 2010, 2011}

X1{23,24,25}

….

Ошибка загрузки

Сообщение «Ошибка: неверных формат данных»

+

Не выбрана ни одна модель:

галочка не проставлена

Ошибка

Сообщение: «Необходимо выбрать хотя бы одно значение»

+

Выбор моделей: модель Лиса

Доступ к вводу верных доп. полей

Доп. поле «Нераспределенная прибыль»

+

Выбор моделей: модель Спрингейта

Доступ к вводу верных доп. полей

Доп. поле «Текущие обязательства»

+

Выбор моделей: модель Давыдовой-Беликова

Доступ к вводу верных доп. полей

Доп. поля «Средняя стоимость активов» и «Затраты компании»

+

Выбор моделей: модель Сайфулина-Кадыкова

Доступ к вводу верных доп. полей

Доп. поля «Средняя стоимость активов» и «Текущие обязательства»

+

Выбор моделей: модель Лиса и модель Спрингейта

Доступ к вводу верных доп. полей

Доп. поля «Нераспределенная прибыль» и «Текущие обязательства»

+

Выбор моделей: модель Лиса, модель Спрингейта и модель Давыдовой-Беликова

Доступ к вводу верных доп. полей

Доп. поля «Нераспределенная прибыль», «Текущие обязательства», «Средняя стоимость активов» и «Затраты компании»

+

Выбор моделей: все модели

Доступ к вводу верных доп. полей

Доп. поля «Нераспределенная прибыль», «Текущие обязательства», «Средняя стоимость активов» и «Затраты компании»

+

Выбор моделей: модель Спрингейта и модель ДавыдовойБеликова

Доступ к вводу верных доп. полей

Доп. поля «Текущие обязательства», «Средняя стоимость активов» и «Затраты компании»

+

Таблица Г.1. Тесты по стратегии черного ящика (продолжение)

Входные данные

Ожидаемый результат

Полученный результат

Тест

Выбор моделей: модель Спрингейта, модель ДавыдовойБеликова и модель Сайфулина-Кадыкова

Доступ к вводу верных доп. полей

Доп. поля «Текущие обязательства», «Средняя стоимость активов» и «Затраты компании»

+

Выбор моделей: модель ДавыдовойБеликова и модель Сайфулина-Кадыкова

Доступ к вводу верных доп. полей

Доп. поля «Текущие обязательства», «Средняя стоимость активов» и «Затраты компании»

+

Ввод не числовых дополнительных данных: раыарворлвы

Ошибка ввода

Блокировка ввода

+

Ввод слишком больших числовых значений: 4342354354355345435435435435455

Ошибка ввода

Блокировка ввода по истечению лимита символов

+

Ввод десятичных значений через запятую:

Нераспределенная прибыль: 10,2

Загрузка данных

Вероятность банкроства компании:

По Лису: 0,037 – низкая вероятность

+

Ввод десятичных значений через точку:

Нераспределенная прибыль: 10.2

Ошибка

Сообщение: «Введите верные значения. Десятичные числа указываются через запятую»

+

Ввод пустого поля:

Нераспределенная прибыль: _____

Ошибка

Сообщение: «Введите верные значения. Десятичные числа указываются через запятую»

+

Одно значение буквы, другое число:

Нераспределенная прибыль: 10.2

Текущие обязательства: авроврмов

Ошибка

Сообщение: «Введите верные значения. Десятичные числа указываются через запятую»

+

Одно значение пустое, другое число:

Нераспределенная прибыль: 10.2

Текущие обязательства: ______

Ошибка

Сообщение: «Введите верные значения. Десятичные числа указываются через запятую»

+

Оба значение числа:

Нераспределенная прибыль: 10.2

Текущие обязательства: 11

Расчет вероятности банкротства

Вероятность банкротства компании:

По Лису: расчетный показатель = 0,0371 - низкая вероятность

По Спрингейту: расчетный показатель = 15846,0485 - низкая вероятность

+

42