Мне давно нравятся Байесовские сети доверия (БСД) своей наглядностью, что для учебного процесса, согласитесь, очень важно. Как-то в интернете, довольно неожиданно, наткнулся на очень удачную визуализацию простых финансовых задач, выполненную с использованием БСД. Мелькнула мысль – вот это, пожалуй, можно будет объяснить не только нашим финансистам, но и филологам-психологам вкупе с врачами!
А началась эта история года три назад, когда руководство ВУЗа поставило нас, преподавателей перед выбором: либо мы по команде «Все вдруг!» вступаем в цифровую экономику, либо, пожав друг другу руки, тихо расходимся, кто куда сумеет. Причина – демографическая яма, экономический кризис, успехи конкурентов и т. д.
Ну, что ж, как говорится, цифровая так цифровая! Тем из нас, у кого за плечами помимо финансового было еще и хорошее инженерное образование, всё это не показалось катастрофой, т.к. давно разжевано в учебниках и монографиях по машинному обучению, искусственному интеллекту, экспертным системам. Однако проблема усугублялась тем, что закон не препятствует поступлению филологов, психологов, врачей и еще кого хотите в финансовую магистратуру. В результате в учебной группе частенько оказывается филологов-психологов половина, а то и более. И вот тут, если вы не способны такой аудитории, что называется «между делом», быстро «дочитать» теорию вероятностей хотя бы до теоремы Байеса, то дальше – полный стоп, и никакой цифровизации.
После той находки в интернете какое-то время я целенаправленно перебирал готовые программные продукты, и, в конце концов, остановился на «Нетике» (Netica). Да, есть Hugin, есть MSBN, и еще с десяток им подобных, но, как всегда: один – дорогой, другой – сложный, третий – и то и другое, и т. д. А вот Netica – бесплатная (до 15 узлов переменных), простая, интуитивно понятная, студенты осваивают ее за одно занятие, и – вперёд! Строить свою собственную, пусть простую, даже примитивную, но работающую «с пинка» экспертную систему, которая «жужжит и щелкает» у вас прямо на занятии.
Но показать – лучше, чем рассказать, поэтому далее показываю, что из этого получилось.
Например, строим модель анализа решений инвестора об исполнении европейского опциона колл на акции. Такая БСД может быть для начала совсем небольшой – хватит и двух узлов (см. рис. 1). В нашей узлы будут такими:
узел Рrice (или Р) описывает случайную переменную текущей цены акции;
узел Decision (или D) отображает варианты решения об исполнении опциона.
Узел Р является родительским, поэтому таблицу безусловных вероятностей (ТБВ) его состояния заполняем исходя из того, что инвестору, как лицу, принимающему решения (ЛПР), известно состояние рынка, и он, основываясь на собственном опыте, с вероятностью 60% ожидает, что цена Р акции будет расти и к дате истечения опциона превысит цену его исполнения Х. Он также считает, что вероятность точного совпадения цен Р и Х очень низка (10%), поэтому оставшиеся 30% составляют вероятность того, что цена Р акции окажется ниже цены исполнения опциона Х.
Таблицу условных вероятностей (ТУВ) для узла D начнем заполнять исходя из того, что исполнение опциона выгодно инвестору только в том случае, если цена Р акции превысит цену исполнения опциона Х. Однако не будем забывать о том, что если это превышение будет незначительным, то оно не покроет премию, которую инвестор уже уплатил продавцу опциона. Таким образом, уверенность в исполнении опциона может в этом случае быть равна не 100%, а, допустим, 80% (1-я строка ТУВ).
Если P < X (2-я строка ТУВ), то исполнение невыгодно всегда, поэтому отказу от исполнения присваиваем 100% вероятность. Если Р точно равно Х (3-я строка ТУВ), то инвестору практически безразлично – исполнять, или не исполнять опцион, поскольку и то и другое дает одинаковый экономический результат. В терминах вероятности такое состояние обычно записывают как 50/50.
После заполнения всех таблиц вероятностей в программе Netica инициализируем построенную БСД, и сразу получаем на стержневой диаграмме нижнего узла распределение полных вероятностей в исходном состоянии модели (рис. 1б). При подстановке значений вероятностей из ТБВ и ТУВ для проверки машины действительно получаем:
D yes = 0,8 · 0,6 + 0 · 0,3 + 0,5 · 0,1 = 0,53;
D no = 0,2 · 0,6 + 1 · 0,3 + 0,5 · 0,1 = 0,47.
Это означает, что модель работает, и ее можно использовать для вероятностных выводов. Как известно, байесовские модели такого типа позволяют делать вероятностные выводы как в прямом (диагностика), так и в обратном (прогнозирование) направлениях.
Особая прелесть Netica состоит в том, что выводами можно управлять простым кликом по соответствующему стержню любой диаграммы. При этом имитируется реализация соответствующего события (вводится свидетельство), а вероятности на связанных узлах автоматически пересчитываются, и выводятся на их диаграммах.
На рис.2а в качестве примера прямого вывода показан клик на стержне случайного события P > X. После этого в узле вариантов решений значения полных вероятностей изменились, и соответствуют 80% вероятности исполнения нашего опциона. На рис. 2б показан один из обратных выводов, который показывает, что если опцион исполняется, то значит, с вероятностью 90,6% (но не 100%) цена акции превысила цену исполнения, но при этом всё же остается 9,43% вероятности того, что цена акции будет равна цене исполнения. Самый интересный вывод следует из рис. 2в. Он говорит о том, что отказ от исполнения опциона в построенной модели может произойти с вероятностью 63,8%, при этом отказ вероятен на 25,5% даже если цена акции превысит цену исполнения, и на 10,6% при равенстве цен!
Остается проверить машину – используя те же табличные данные, найдем вручную апостериорные вероятности состояния цены акции при условии, что опцион был исполнен (Рис. 2б). Для этого придется вспомнить формулу теоремы Байеса в ее первозданном виде, и подставить в неё всё, что у нас есть:
Как видим, результаты наших расчетов (с учетом округлений) полностью соответствуют результатам, полученным машиной.
На любые упрёки о допущениях, субъективных вероятностях, всегда отвечаю – а вот, пожалуйста, теперь вы – эксперт! Введите любые поправки, какие считаете нужными, и, не сходя с места, получите скорректированный результат. И поверьте, еще ни один не ушел без полной сатисфакции.
Модель слишком простая? – сейчас же дополните её новыми узлами (переменными). Мало два? – сделайте 22, и. т. д.
msidiagnos
А где здесь про цифровую экономику и зачем финансистам что-то объяснять в терминах машинного обучения?
vicvoronov Автор
Насчет "цифровой" совершенно согласен - это штамп, который мы лепим повсюду уже не задумываясь.
А вот зачем объяснять - дело в том, что учим всё еще по классическим канонам, а молодые хотят что-то новое, те же СППРы, интеллектуальные системы - поэтому пытаемся как-то объяснять :)
Areso
> те же СППРы, интеллектуальные системы
я учился в 2008 году, и уже тогда это всё не было новым. Давали на базе MatLab Fuzzy Logic Toolbox с построением поверхностей решения и нарезкой кубов по любым двум параметрам.
vicvoronov Автор
Да, согласен, но всё очень сильно зависит от того, где учились и по какой специальности. Для математиков это, безусловно, слишком просто. Но мы то учим "обычных" финансистов - у нас ничего этого в помине нет - в лучшем случае в самом общем виде.
Нечеткая логика - интересный подход, тоже согласен, но математическая основа у байесовских сетей будет построже - тут могу спорить и приводить цитаты :)