Разработать высокопроизводительную систему симуляции для моделирования поведения финансовых инструментов на рынке. Система должна использовать метод Монте-Карло для проведения стохастической симуляции.
- Система должна поддерживать моделирование различных финансовых инструментов: акций, облигаций, опционов и т.д.
- Система должна предоставлять API для задания параметров модели: начальной цены, волатильности, тренда и других.
- Поддержка различных стохастических моделей для генерации цен: Гейка-Шульца, Блэка-Шульца и т.д.
- Возможность задания корреляций между различными финансовыми инструментами.
- Поддержка многопоточной обработки для ускорения симуляции.
- Возможность сохранения результатов симуляции для дальнейшего анализа.
- Высокая производительность: система должна быть способна обрабатывать большие объемы данных в реальном времени.
- Масштабируемость: возможность добавления дополнительных вычислительных ресурсов для ускорения симуляции.
- Надежность и отказоустойчивость.
- Простота интеграции с существующими системами.
- Язык программирования: C++
- Библиотеки для параллельной обработки: OpenMP, CUDA (если применимо)
- Библиотеки для математических вычислений: Eigen, Boost
- Система управления версиями: Git
- Модуль ввода-вывода: загрузка параметров модели, сохранение результатов
- Модуль симуляции: реализация алгоритмов Монте-Карло
- Модуль анализа: статистический анализ результатов симуляции
- Оптимизация алгоритмов симуляции с использованием профилирования кода.
- Использование многопоточной и векторизованной обработки данных.
- Юнит-тесты для основных компонентов системы.
- Нагрузочное тестирование для проверки производительности и масштабируемости.
- Валидация симуляции на основе реальных финансовых данных.
- Проектирование архитектуры и выбор технологий — 2 недели.
- Реализация базовых алгоритмов симуляции — 4 недели.
- Оптимизация производительности и многопоточная поддержка — 3 недели.
- Тестирование и валидация — 2 недели.
(Зависит от множества факторов, требует дополнительного обсуждения)
Это техническое задание может быть дополнено и уточнено в процессе разработки.