Parallel Monte Carlo Option Pricer
Loading...
Searching...
No Matches
Parallel Monte Carlo Option Pricing

Программная реализация численного метода Монте-Карло для оценки стоимости финансовых деривативов (европейских и азиатских опционов) и расчета греков (Delta, Gamma). Проект выполнен в рамках курса «Программная инженерия и C++ для количественного анализа и и алгоритмической торговли» от Фонда "Институт «Вега»" (осень 2025).

Автор проекта: Долгих Елизавета

Описание задачи

Реализован движок, моделирующий эволюцию цены базового актива как геометрическое броуновское движение (модель Блэка-Шоулза-Мертона).

Функциональность

  • Оценка опционов: Поддержка Европейских (Call/Put) и Азиатских (Arithmetic Average) опционов.
  • Расчет рисков (Greeks): Вычисление Дельты и Гаммы методом конечных разностей.
  • Параллелизм: Использование std::async для эффективной утилизации всех ядер процессора.
  • Точность: Применение метода антитетических переменных для понижения дисперсии.
  • Экспорт данных: Автоматическое сохранение результатов расчетов в CSV файл.

Технологический стек

  • Язык: C++17
  • Сборка: CMake 3.14+
  • Тестирование: GoogleTest
  • CI/CD: GitHub Actions (Ubuntu, Windows, macOS)
  • Документация: Doxygen + GitHub Pages
  • Статический анализ: Clang-Tidy

Инструкция по сборке и запуску

Проект собирается стандартными средствами CMake. Рекомендуется сборка в конфигурации Release.

1. Конфигурация и Сборка

Эти команды универсальны для Windows, Linux и macOS:

# конфигурация проекта (создание файлов сборки)
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
# сборка всех целей (Приложение, Бенчмарк, Тесты)
cmake --build build --config Release

2. Запуск компонентов

После успешной сборки в папке build появятся три исполняемых файла.

1. Основное приложение (Pricing App)

Запускает симуляцию для демонстрационных параметров, выводит цену и греки в консоль, а также сохраняет детальные результаты в файл out/pricing_results.csv.

Linux / macOS:

./build/MonteCarloApp

Windows:

.\build\MonteCarloApp.exe

Также возможен запуск с ручным вводом параметра/параметров. Пример: Windows:

.\build\MonteCarloApp.exe --spot 120 --strike 100 --r 0.01 --sigma 0.2 --time 1.0 --paths 5000000 --steps 252

Для инструкции:

.\build\MonteCarloApp.exe --help

2. Бенчмарк производительности (Benchmark)

Запускает серию тестов на разном количестве потоков (от 1 до максимума аппаратуры) для измерения масштабируемости (Scalability) и ускорения (Speedup).

Linux / macOS:

./build/Benchmark

Windows:

.\build\Benchmark.exe

3. Модульные тесты (Unit Tests)

Запускает набор тестов GoogleTest для проверки корректности математических вычислений (сравнение с формулой Блэка-Шоулза, проверка паритета опционов и валидации входных данных).

Linux / macOS:

./build/UnitTests

Windows:

.\build\UnitTests.exe

Структура проекта

  • src/ — Исходный код движка (Payoff, Analytical, MCEngine)
  • tests/ — Unit-тесты на базе GoogleTest
  • docs/ — Конфигурация документации
  • .github/workflows/ — Настройки CI/CD пайплайнов
  • main.cpp — Пример использования и замер производительности.

Документация

Основной файл с отчетом лежит в корневой папке, файл report.pdf.

Помимо него, можно посмотреть полную документацию API, сгенерированную Doxygen (включая диаграммы классов и математические формулы). Она доступна по ссылке: https://lisadolgikh.github.io/ParallelMCOptionPricing/index.html