Как сделать метод монте карло в excel?

Имитационное моделирование методом Монте-Карло.

Предлагаю вашему вниманию шаблон для анализа инвестиционного проекта методом Монте-Карло.

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

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

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

Итак, мы имеем инвестиционный проект, который будет реализован в течение, предположим, 5 лет.

Нам точно не известна цена за которую мы будем реализовывать нашу продукцию, неизвестно точное количество продукции и неизвестно точное значение переменных затрат на ее производство. Это будут случайные величины.

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

Например, цена будет не ниже 30 руб. и не выше 40 руб., количество не меньше 150 и не больше 300 единиц, переменные затраты в диапазоне 15 до 20 руб. Цифры могут быть совершенно различными. Важно то, что мы имеем представление о диапазоне их вероятных значений.

Именно значения в этих диапазонах мы и будем моделировать для оценки общей привлекательности проекта.

Для генерации случайных величин мы будем использовать функцию СЛУЧМЕЖДУ, с указанием в качестве аргументов нижней и верхней границы диапазона.

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

Генерируется достаточно большое количество вариантов (опытов) и все они обрабатываются методами статистического анализа. В нашем шаблоне мы используем 5 000 опытов, но их может быть и 1 000 000, правда кардинально на результаты это не повлияет.

Это основная философия данного метода. Далее лишь техника реализации.

На листе «Имитация» указываем диапазоны изменения величин, указываем постоянные параметры проекта, а также формируем таблицу в 5 000 строк.

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

Далее переходим к анализу полученных результатов.

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

По большому счету, нас интересует показатель NPV.

Для него мы рассчитываем также количество случаев, когда NPV 0 для всей совокупности в 5000 опытов.

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

Далее, используя стандартное распределение оцениваем вероятность получения того или иного значения NPV. Например, безубыточный проект имеет NPV > 0.

Установив в качестве значения Х (это наше NPV) ноль, мы получим вероятность получения убытка в 3%.

Для определения вероятности используем функцию НОРМ.СТ.РАСП, имеющую следующий синтаксис:

Z Обязательный. Значение, для которого строится распределение.

Интегральная Обязательный. Логическое значение, определяющее форму функции. Если аргумент «интегральная» имеет значение ИСТИНА, функция НОРМ.СТ.РАСП возвращает интегральную функцию распределения; если этот аргумент имеет значение ЛОЖЬ, возвращается весовая функция распределения.

Для определения значения Z используем функцию НОРМАЛИЗАЦИЯ, имеющую следующий синтаксис:

=НОРМАЛИЗАЦИЯ(x, среднее, стандартное_откл)

x Обязательный. Нормализуемое значение. В нашем случае это NPV.

Среднее Обязательный. Среднее арифметическое распределения.

Стандартное_откл Обязательный. Стандартное отклонение распределения.

Среднее значение и стандартное отклонение для NPV мы рассчитали в таблице «Результаты анализа».

Talkin go money

RuleOfThumb — Метод Монте-Карло (Февраль 2020).

Table of Contents:

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

Моделирование Монте-Карло

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

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

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

Игра в кости

Вот как игра в кости играется:

• Игрок бросает три кости, которые имеют 6 сторон 3 раза.

• Если общее количество 3 бросков составляет 7 или 11, игрок выигрывает.

• Если общее количество 3 бросков: 3, 4, 5, 16, 17 или 18, проигрыватель проигрывает.

• Если общий результат — любой другой результат, игрок снова играет и повторно свертывает штамп.

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

Рекомендуется также использовать таблицу данных для генерации результатов. Более того, для подготовки моделирования методом Монте-Карло требуется 5 000 результатов.

Шаг 1: События прокатки в кости

Сначала мы разрабатываем ряд данных с результатами каждого из 3 кубиков для 50 рулонов. Для этого предлагается использовать функцию «RANDBETWEEN (1. 6)». Таким образом, каждый раз, когда мы нажимаем F9, мы генерируем новый набор результатов каротажа. Ячейка «Результат» — это сумма итогов трех рулонов.

Шаг 2: Диапазон результатов

Затем нам нужно разработать ряд данных для определения возможных результатов для первого раунда и последующих раундов. Ниже приведен диапазон данных с тремя столбцами.В первом столбце у нас есть числа от 1 до 18. Эти цифры представляют собой возможные результаты после того, как катятся кости 3 раза: максимум составляет 3 * 6 = 18. Вы заметите, что для ячеек 1 и 2 результаты N / A, так как невозможно получить 1 или 2, используя 3 кости. Минимальное значение равно 3.

Во втором столбце включены возможные выводы после первого раунда. Как указано в первоначальном заявлении, либо игрок выигрывает (выигрывает), либо проигрывает (проигрывает), либо повторяет его (Re-roll), в зависимости от результата (всего 3 кубика).

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

Читать еще:  Как сделать стартовую страницу в excel?

Шаг 3: Выводы

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

Можно получить результаты других рулонов кости, используя функцию «Or» и функцию индекса, вложенную в функцию «If». Эта функция сообщает Excel: «Если предыдущий результат -« Выиграть или проиграть », перестаньте бросать кости, потому что как только мы выиграли или проиграли, мы закончили. В противном случае мы переходим к столбцу следующих возможных выводов, и мы определяем вывод результата.

Шаг 4: Количество рулонов кости

Теперь мы определяем количество бросков кубиков, необходимых до проигрыша или выигрыша. Для этого мы можем использовать функцию «Countif», которая требует, чтобы Excel подсчитывал результаты «Re-Roll» и добавлял номер 1 к ней. Он добавляет один, потому что у нас есть один дополнительный раунд, и мы получаем окончательный результат (выигрываем или проигрываем).

Шаг 5: Моделирование

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

Затем мы создадим таблицу анализа чувствительности с использованием данных характеристик или таблицы данных таблицы (эта чувствительность будет вставлена ​​во вторую таблицу и в третьи столбцы). В этом анализе чувствительности номера событий 1 — 5, 000 должны быть вставлены в ячейку A1 файла. Фактически, можно было выбрать любую пустую ячейку. Идея состоит в том, чтобы просто произвести перерасчет каждый раз и таким образом получить новые броски кубиков (результаты новых симуляций), не повредив формулы на месте.

Шаг 6: Вероятность

Мы можем, наконец, вычислить вероятности выигрыша и проигрыша. Мы делаем это с помощью функции «Countif».Формула подсчитывает количество «выигрышей» и «проиграет», а затем делит на общее количество событий, 5, 000, чтобы получить соответствующую долю одного и другого. Наконец, мы видим, что вероятность получить выигрыш составляет 73. 2%, а результат Lose — 26,8%.

Использование метода Монте-Карло для расчета риска

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

Приведу простой пример моделирования методом Монте-Карло для тех, кто никогда не работал с ним ранее, но имеет определенное представление об использовании электронных таблиц Excel.

Предположим, что вы хотите арендовать новый станок. Стоимость годовой аренды станка 400 000 дол., и договор нужно подписать на несколько лет. Поэтому, даже не достигнув точки безубыточности, вы всё равно не сможете сразу вернуть станок. Вы собираетесь подписать договор, думая, что современное оборудование позволит сэкономить на трудозатратах и стоимости сырья и материалов, а также считаете, что материально-техническое обслуживание нового станка обойдется дешевле.

Скачать заметку в формате Word, примеры в формате Excel

Ваши калиброванные специалисты [1] по оценке дали следующие интервалы значений ожидаемой экономии и годового объема производства:

Годовая экономия составит: (MS + LS + RMS) х PL

Конечно, этот пример слишком прост, чтобы быть реалистичным. Объем производства каждый год меняется, какие-то затраты снизятся, когда рабочие окончательно освоят новый станок, и т.д. Но мы в этом примере намеренно пожертвовали реализмом ради простоты.

Если мы возьмем медиану (среднее) каждого из интервалов значений, то получим годовую экономию: (15 + 3 + 6) х 25 000 = 600 000 (дол.)

Похоже, что мы не только добились безубыточности, но и получили кое-какую прибыль, но не забывайте – существуют неопределенности. Как же оценить рискованность этих инвестиций? Давайте, прежде всего, определим, что такое риск в данном контексте. Чтобы получить риск, мы должны наметить будущие результаты с присущими им неопределенностями, причем какие-то из них – с вероятностью понести ущерб, поддающийся количественному определению. Один из способов взглянуть на риск – представить вероятность того, что мы не добьемся безубыточности, то есть что наша экономия окажется меньше годовой стоимости аренды станка. Чем больше нам не хватит на покрытие расходов на аренду, тем больше мы потеряем. Сумма 600 000 дол. – это медиана интервала. Как определить реальный интервал значений и рассчитать по нему вероятность того, что мы не достигнем точки безубыточности?

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

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

Вы легко сможете осуществить моделирование методом Монте-Карло на персональном компьютере с помощью программы Excel, но для этого понадобится чуть больше информации, чем 90%-ный доверительный интервал. Необходимо знать форму кривой распределения. Для разных величин больше подходят кривые одной формы, чем другой. В случае 90%-ного доверительного интервала обычно используется кривая нормального (гауссова) распределения. Это хорошо знакомая всем колоколообразная кривая, на которой большинство возможных значений результатов группируются в центральной части графика и лишь немногие, менее вероятные, распределяются, сходя на нет к его краям (рис. 1).

Вот как выглядит нормальное распределение:

Рис.1. Нормальное распределение. По оси абсцисс число сигм.

  • значения, располагающиеся в центральной части графика, более вероятны, чем значения по его краям;
  • распределение симметрично; медиана находится точно посредине между верхней и нижней границами 90%-ного доверительного интервала (CI);
  • «хвосты» графика бесконечны; значения за пределами 90%-ного доверительного интервала маловероятны, но все же возможны.

Для построения нормального распределения в Excel можно воспользоваться функцией [2] =НОРМРАСП(Х; Среднее; Стандартное_откл; Интегральная), где
Х – значение, для которого строится нормальное распределение;
Среднее – среднее арифметическое распределения; в нашем случае = 0;
Стандартное_откл – стандартное отклонение распределения; в нашем случае = 1;
Интегральная – логическое значение, определяющее форму функции; если аргумент «интегральная» имеет значение ИСТИНА, функция НОРМРАСП возвращает интегральную функцию распределения; если этот аргумент имеет значение ЛОЖЬ, возвращается функция плотности распределения; в нашем случае = ЛОЖЬ.

Говоря о нормальном распределении, необходимо упомянуть о таком связанном с ним понятии, как стандартное отклонение. Очевидно, не все обладают интуитивным пониманием, что это такое, но поскольку стандартное отклонение можно заменить числом, рассчитанным по 90%-ному доверительному интервалу (смысл которого интуитивно понимают многие), я не буду здесь подробно на нем останавливаться. Рисунок 1 показывает, что в одном 90%-ном доверительном интервале насчитывается 3,29 стандартного отклонения, поэтому нам просто нужно будет сделать преобразование.

Читать еще:  Как сделать график изменения температуры в excel?

В нашем случае следует создать в электронной таблице генератор случайных чисел для каждого интервала значений. Начнем, например, с MS – экономии на материально-техническом обслуживании. Воспользуемся формулой Excel: =НОРМОБР(вероятность;среднее;стандартное_откл), где
Вероятность – вероятность, соответствующая нормальному распределению;
Среднее – среднее арифметическое распределения;
Стандартное_откл – стандартное отклонение распределения.

В нашем случае:
Среднее (медиана) = (Верхняя граница 90%-ного CI + Нижняя граница 90%-ного СI)/2;
Стандартное отклонение = (Верхняя граница 90%-ного CI – Нижняя граница 90%-ного СI)/3,29.

Для параметра MS формула имеет вид: =НОРМОБР(СЛЧИС();15;(20-10)/3,29), где
СЛЧИС – функция, генерирующая случайные числа в диапазоне от 0 до 1;
15 – среднее арифметическое диапазона MS;
(20-10)/3,29 = 3,04 – стандартное отклонение; напомню, что смысл стандартного отклонения в следующем: в интервал 3,29*Стандарт_откл, расположенный симметрично относительного среднего, попадает 90% всех значений случайной величины (в нашем случае MS)

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

Рис. 2. Вероятность распределения MS по диапазонам значений; о том, как построить такое распределение с помощью сводной таблицы см. Вычисления в сводной таблице (в области значений) в Excel 2013

Поскольку мы использовали «лишь» 100 случайных значений, распределение получилось не таким уж и симметричным. Тем не менее, около 90% значений попали в диапазон экономии на MS от 10 до 20 долл. (если быть точным, то 91%).

Построим таблицу на основе доверительных интервалов параметров MS, LS, RMS и PL (рис. 3). Два последних столбца показывают результаты расчетов на основе данных других столбцов. В столбце «Общая экономия» показана годовая экономия, рассчитанная для каждой строки. Например, в случае реализации сценария 1 общая экономия составит (14,3 + 5,8 + 4,3) х 23 471 = 570 834 долл. Столбец «Достигается ли безубыточность?» вам на самом деле не нужен. Я включил его просто для информативности. Создадим в Excel 10 000 строк-сценариев.

Рис. 3. Расчет сценариев методом Монте-Карло в Excel

Чтобы оценить полученные результаты, можно использовать, например, сводную таблицу, которая позволяет подсчитать число сценариев в каждом 100-тысячном диапазоне. Затем вы строите график, отображающий результаты расчета (рис. 4). Этот график показывает, какая доля из 10 000 сценариев будут иметь годовую экономию в том или ином интервале значений. Например, около 3% сценариев дадут годовую экономию более 1М дол.

Рис. 4. Распределение общей экономии по диапазонам значений. По оси абсцисс отложены 100-тысячные диапазоны размера экономии, а по оси ординат доля сценариев, приходящихся на указанный диапазон

Из всех полученных значений годовой экономии примерно 15% будут меньше 400К дол. Это означает, что вероятность ущерба составляет 15%. Данное число и представляет содержательную оценку риска. Но риск не всегда сводится к возможности отрицательной доходности инвестиций. Оценивая размеры вещи, мы определяем ее высоту, массу, обхват и т.д. Точно так же существуют и несколько полезных показателей риска. Дальнейший анализ показывает: есть 4%-ная вероятность того, что завод вместо экономии будет терять ежегодно по 100К дол. Однако полное отсутствие доходов практически исключено. Вот что подразумевается под анализом риска – мы должны уметь рассчитывать вероятности ущерба разного масштаба. Если вы действительно измеряете риск, то должны делать именно это.

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

1) вычтите среднее значение каждого интервала значений из его верхней границы; для экономии на материально-техническом обслуживании 20 – 15 = 5 (дол.), для экономии на трудозатратах – 5 дол. и для экономии на сырье и материалах – 3 дол.;

2) возведите в квадрат результаты первого шага 5 2 = 25 (дол.) и т.д.;

3) суммируйте результаты второго шага 25 + 25 + 9 = 59 (дол.);

4) извлеките квадратный корень из полученной суммы: получится 7,7 дол.;

5) сложите все средние значения: 15 + 3 + 6 = 24 (дол.);

6) прибавьте к сумме средних значений результат шага 4 и получите верхнюю границу диапазона: 24 + 7,7 = 31,7 дол.; вычтите из суммы средних значений результат шага 4 и получите нижнюю границу диапазона 24 – 7,7 = 16,3 дол.

Таким образом, 90%-ный доверительный интервал для суммы трех 90%-ных доверительных интервалов по каждому виду экономии составляет 16,3–31,7 дол.

Мы использовали следующее свойство: размах суммарного интервала равен квадратному корню из суммы квадратов размахов отдельных интервалов [3].

Иногда нечто похожее делают, суммируя все «оптимистические» значения верхней границы и «пессимистические» значения нижней границы интервала. В данном случае мы получили бы на основе наших трех 90%-ных доверительных интервалов суммарный интервал 11–37 дол. Этот интервал несколько шире, чем 16,3–31,7 дол. Когда такие расчеты выполняются при обосновании проекта с десятками переменных, расширение интервала становится чрезмерным, чтобы его игнорировать. Брать самые «оптимистические» значения для верхней границы и «пессимистические» для нижней – все равно что думать: бросив несколько игральных костей, мы во всех случаях получим только «1» или только «6». На самом же деле выпадет некое сочетание низких и высоких значений. Чрезмерное расширение интервала – распространенная ошибка, которая, несомненно, часто приводит к принятию необоснованных решений. В то же время описанный мной простой метод прекрасно работает, когда у нас есть несколько 90%-ных доверительных интервалов, которые необходимо суммировать.

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

Моделирование методом Монте-Карло требуется и тогда, когда не все распределения являются нормальными. Хотя другие типы распределений не входят в предмет данной книги, упомянем о двух из них — равномерном и бинарном (рис. 5, 6).

Рис. 5. Равномерное распределение (не идеальное, а построенное с помощью функции СЛЧИС в Excel)

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

Для построения данного распределения в Excel была использована формула: СЛЧИС()*(UB – LB) + LB, где UB – верхняя граница; LB – нижняя граница; с последующим разбиением всех значений на диапазоны с помощью сводной таблицы.

Рис. 6. Бинарное распределение (распределение Бернулли)

  • возможны только два значения;
  • существует единственная вероятность одного значения (в данном случае 60%); вероятность другого значения равна единице минус вероятность первого значения

Для построения случайного распределения данного вида в Excel использовалась функция: =ЕСЛИ(СЛЧИС()

[3] Здесь Дуглас Хаббард под размахом понимает разность между верхней границей 90%-ного доверительного интервала и средним значением этого интервала (или между средним значением и нижней границей, так как распределение симметрично). Обычно под размахом понимают разность между верхней и нижней границами.

Как сделать метод монте карло в excel?

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

  • “эталонные данные” (моделирование логнормального распределения”),
  • случайный ряд, характеризующийся распределением с “толстыми хвостами”,
  • и, наконец, цены нескольких биржевых активов — валютных пар и криптовалют.
Читать еще:  Как сделать фирменный бланк в excel?

В каждом случае я рассчитал премию опциона по формуле Б-Ш и методом Монте-Карло. Сравнил результаты и сделал(?) выводы:

Ранее я построил в MS Excel два гипотетических ценовых ряда: ABS/USD — ценовой ряд, описываемый логнормальным законом распределения. И серию WRD/USD — ценовой ряд, распределение которого характеризуется большей вероятностью меньших изменений при существенной вероятности больших (> 3σ) изменений.

Альтернативный способ оценить размер премии — моделировать выплаты по опциону методом Монте-Карло. Провести ряд итераций, на каждой итерации моделируя цену на N дней вперед. В конце итерации посчитать прибыль покупателя опциона.

“Справедливая” премия по опционному контракту будет нами получена, как сумма выплат, деленная на количество итераций. Вопрос: совпадет ли премия, рассчитанная таким способом (программно) с премией, рассчитанной по формуле Б-Ш?

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

В следующей таблице я рассчитал цену WRD/USD (распределение цены имеет “толстые хвосты”) несколько раз подряд на 30 дней вперед. Как и прежде, цена WRD/USD изменялась каждый день в e ∆ «> e Δ e∆ раз.

В 2-х случаях из 5 цена актива WRD/USD выросла, в 3-х случаях — упала:

Соответственно, в 2-х случаях покупатель CALL-опциона смог реализовать прибыль, равную
(1027.70 — 1000) + (1046.92 — 1000) = $74.62.

Делим $74.62 на количество возможных исходов (5) и получаем премию, что составит $14.92. Несколько больше, чем дал нам предыдущий расчет методом Б-Ш. Но так и метод наш не очень точен: всего 5 итераций.

Программное моделирование покупки опциона

На этом этапе Excel нам уже недостаточно. Я провел 5 имитационных экспериментов: заполнил 5 столбцов сгенерированной для нашего гипотетического актива WRD/USD ценой. Но для нашей цели — хорошей сходимости оценки премии по опциону — не хватит и 500 экспериментов.

Логика программы на высоком уровне:

  • 1) прочитать из источника (файла) исходный ценовой ряд
  • 2) провести предварительную обработку ценовых данных
  • 3) построить таблицу кумулятивной функции распределения исходного ценового ряда
  • 4) используя таблицу, полученную на шаге выше, и генератор равномерно распределенной СВ, провести N экспериментов:
  • 4.1) в каждом эксперименте рассчитать M последовательных (автокоррелированных) цен
  • 4.2) вычислить прибыль покупателя опциона — разность последней цены и страйк цены. Для Put-опциона разность берется с обратным знаком
  • 5) сложить прибыль покупателя, полученную на каждом из N шагов и поделить результат на N

Устранение тренда

В простом алгоритме, приведенном выше, один пункт требует объяснений: “предварительная обработка ценовых данных”. Поясню на примере графика цены актива ABS/USD (распределение цены — логнормальное), полученного нами ранее:

конечная цена актива ABS/USD ниже исходной цены. Нисходящий тренд нашего актива — не закономерность, но влияние недетерминированного фактора — напомню, мы использовали генератор случайных чисел.

В то же время, про актив ABS/USD априори известно, что его цена, в общем случае, дрейфует равновероятно вверх либо вниз. То есть, в модели математическое ожидание отклонения цены ABS/USD равно 0.

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

Корректно ли использовать для расчетов данные, в которые уже заложено априорное “знание” об отрицательной доходности актива? Слово “знание” неспроста забрано в кавычки: мы знаем, что актив ABS/USD имеет равную вероятность как вырасти в цене, так и подешеветь. Такова модель данных, использованная нами в расчете.

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

ABS/USD — актив гипотетический. Совершенно определенно можно сказать, что, для построения таблицы — функции распределения, что впоследствии будет использована для генерации ценовых прогнозов, имеющийся тренд — статистическая ошибка, которую необходимо устранить.

Но что если мы анализируем реальный рыночный актив? Не ABS/USD, а, например, EUR/USD? Как быть с трендом, имевшим место в действительности?

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

Там, где достаточно аргументированных высказываний как в пользу восходящего, так и в пользу нисходящего тренда, исторические цены должны быть “выровнены”:

На рисунке исходная синяя кривая была скорректирована: из каждого i-го значения цены вычтена величина, равная i*d, где d равна разнице первой и последних цен, деленной на количество временных отрезков (количество цен минус 1).

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

Определенно, там, где у нас нет полной уверенности в динамике цен на прогнозируемый период, тренд следует устранить. А если уверенность есть — стоит ли тратить время на изучение деривативов, когда можно просто выйти на рынок со всеми доступными средствами, и, с ощутимой выгодой, монетизировать свои прогнозы?

Еще замечание: тренд необязательно устранять непосредственно из цен. К примеру, биткойн с его ростом более чем на сто процентов за один только год после удаления из цен трендовой составляющей вообще зайдет в отрицательную полуплоскость по оси цены. Отрицательная цена, определенно, не годится для дальнейших расчетов. Альтернатива, которой я и воспользуюсь — удалить тренд из ряда ценовых изменений — l n ( x i x i − 1 ) «> l n ( x i x i − 1 ) ln(xixi−1) , где x i и x i − 1 x i «> x i и x i − 1 x i xiиxi−1xi — текущее и предыдущее значение цен.

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

В программе, что я приведу в депозитарии кода github по ссылке , пожалуй, самая “интеллектуальная” часть — это построение обратной кумулятивной (интегральной) функции распределения и использования ее для генерации случайного ценового приращения. Весь процесс разбит на несколько шагов.

На первом шаге я получаю из цен x 1 , x 2 , … , x N «> x 1 , x 2 , … , x N x1,x2,…,xN приращения d 1 , d 2 , … , d N − 1 : d i = l n ( x i x i − 1 ) «> d 1 , d 2 , … , d N − 1 : d i = l n ( x i x i − 1 ) d1,d2,…,dN−1:di=ln(xixi−1)

Далее, если выбрана опция устранения тренда, я получаю новый ряд приращений цен, вычитая из каждого значения d i «> d i di величину, равную d N − 1 − d 1 N − 2 «> d N − 1 − d 1 N − 2 dN−1−d1N−2 .
Значения приращений цены я сортирую по возрастанию.

Процесс построения обратной функции распределения реализован в одном цикле. Представим, что цена изменяется ( x i + 1 = x i ∗ e d i «> x i + 1 = x i ∗ e d i xi+1=xi∗edi ) на дискретные значения d i «> d i di . Какова вероятность, что цена изменится в e d 1 «> e d 1 ed1 или меньше раз, где d 1 «> d 1 d1 — наименьшее из значений приращения цены в нашей выборке? Очевидно, вероятность эта составит 1 N − 1 «> 1 N − 1 1N−1 . Какова вероятность того, что цена изменится в e d 2 «> e d 2 ed2 или менее раз? Очевидно, эта вероятность равна сумме вероятностей двух несвязанных исходов: изменения цены в e d 1 «> e d 1 ed1 раз либо в e d 2 «> e d 2 ed2 раза, или же 1 + 1 N − 1 «> 1 + 1 N − 1 1+1N−1 .

Т.е., имея отсортированный ряд d 1 , d 2 , … , d N − 1 «> d 1 , d 2 , … , d N − 1 d1,d2,…,dN−1 , нам достаточно построить из него ряд кортежей

Итак, обратная функция построена. Как нам получить “случайное” значение изменения цены, используя таблицу и генератор равномерно распределенных случайных чисел?
Примерно так же, как мы это делали в Excel.

К примеру, моя таблица содержит 500 записей вида:

Ссылка на основную публикацию
×
×
Adblock
detector