Этот проект вычисляет волатильность ценных бумаг на основе данных торгов на бирже. Волатильность оценивается по процентному отклонению между максимальной и минимальной ценами сделок за торговую сессию. Проект поддерживает многопоточный и многопроцессный стили обработки данных.
Проект состоит из следующих основных компонентов:
volatility_calculator.py
- Основной модуль, выполняющий вычисления волатильности.data_loader.py
- Модуль для загрузки и чтения данных из файлов.multi_threaded.py
- Реализация многопоточной обработки данных.multi_processed.py
- Реализация многопроцессной обработки данных.utils.py
- Вспомогательные функции.tests
- Папка с тестами для проверки корректности работы модулей.
Данные для анализа представлены в виде CSV-файлов, где каждая строка содержит информацию о сделке:
SECID
- тикер ценной бумагиTRADETIME
- время сделкиPRICE
- цена сделкиQUANTITY
- количество бумаг в этой сделке
-
Скачайте и распакуйте архив с данными:
- Скачать данные
- Разархивируйте содержимое в папку
trades
-
Запустите вычисление волатильности в многопоточном стиле:
python multi_threaded.py
-
Запустите вычисление волатильности в многопроцессном стиле:
python multi_processed.py
python multi_threaded.py
# Вывод:
# Максимальная волатильность:
# ТИКЕР1 - ХХХ.ХХ %
# ТИКЕР2 - ХХХ.ХХ %
# ТИКЕР3 - ХХХ.ХХ %
# Минимальная волатильность:
# ТИКЕР4 - ХХХ.ХХ %
# ТИКЕР5 - ХХХ.ХХ %
# ТИКЕР6 - ХХХ.ХХ %
# Нулевая волатильность:
# ТИКЕР7, ТИКЕР8, ТИКЕР9, ТИКЕР10, ТИКЕР11, ТИКЕР12
python multi_processed.py
# Вывод аналогичен многопоточной обработке
Волатильность рассчитывается по формуле:
- Полусумма = (максимальная цена + минимальная цена) / 2
- Волатильность = ((максимальная цена - минимальная цена) / полусумма) * 100%
Для тикера с ценами сделок 20, 15, 23, 56, 100, 50, 3, 10:
- Максимальная цена = 100
- Минимальная цена = 3
- Полусумма = (100 + 3) / 2 = 51.5
- Волатильность = ((100 - 3) / 51.5) * 100 = 188.34%