Библиотеки Python для количественных финансов
Изучите некоторые часто используемые библиотеки Python в области количественных финансов, такие как:
zipline: библиотека для бэктестинга и реализации торговых алгоритмов, команда установки:pip install zipline。
Quantlib: библиотека для ценообразования финансовых инструментов и выполнения финансовых расчетов, команда установки:pip install Quantlib。
TA-Lib: библиотека для технического анализа, команда установки:pip install TA-Lib。
pyfolio: это библиотека для оценки эффективности портфеля; она может интегрироваться с инструментами бэктестинга, такими как zipline, предоставляя инструменты для анализа доходности портфеля, риска и т. д., команда установки:pip install pyfolio。
statsmodels: это библиотека для оценки статистических моделей, включая линейную регрессию, анализ временных рядов и т. д. В количественных финансах она может использоваться для построения и тестирования торговых стратегий, команда установки:pip install statsmodels。
zipline
Zipline — это фреймворк с открытым исходным кодом для исследований в области количественных финансов и алгоритмической торговли.
Он был разработан компанией Quantopian, чтобы предоставить исследователям и разработчикам удобный инструмент для создания, тестирования и выполнения стратегий количественной торговли.
Перед использованием Zipline убедитесь, что библиотека установлена. Вы можете установить ее с помощью следующей команды:
conda install -c conda-forge zipline
Здесь мы используемAnacondaдля установки Zipline, чтобы избежать странных проблем в дальнейшем.
Далее мы входим наquandlофициальный сайт, регистрируемся и получаем API-ключ:https://data.nasdaq.com/account/profile。
Затем установите API-ключ и скачайте пакет данных. Конкретные команды следующие:
set QUANDL_API_KEY=your_key
Для систем macOS используйте следующую команду:
export QUANDL_API_KEY=your_key-zZQN
Скачать пакет данных:
zipline ingest -b quandl
Запросить пакет данных:
# zipline bundles csvdir <no ingestions> quandl 2023-12-09 06:02:03.178299 quandl 2023-12-09 05:59:04.273082 quandl 2023-12-09 05:54:57.277732 quandl 2023-12-09 05:52:15.532504 quandl 2023-12-09 03:32:03.853032 quantopian-quandl <no ingestions>
Теперь давайте используем Zipline для простого теста.
Ниже приведён простой скрипт стратегии Zipline для бэктестинга торговли акциями:
Пример
def initialize(context):
pass
def handle_data(context, data):
order(symbol('AAPL'), 10)
record(AAPL=data.current(symbol('AAPL'), 'price'))
Выше приведена простая стратегия, которая покупает 10 акций Apple по текущей цене в каждый торговый день и записывает текущую цену AAPL для каждого торгового дня.
order(symbol('AAPL'), 10): Эта строка означает покупку 10 акций Apple Inc. (AAPL) по текущей цене в каждый торговый день.symbol('AAPL')Используется для получения биржевого символа для AAPL.record(AAPL=data.current(symbol('AAPL'), 'price')): Эта строка записывает текущую цену AAPL в каждый торговый день.data.current(symbol('AAPL'), 'price')Используется для получения текущей цены акции AAPL.
Затем выполните следующую команду:
# zipline run -f my_strategy.py --start 2016-1-1 --end 2018-1-1 -o buyapple_out.pickle --no-benchmark Simulated 503 trading days first open: 2016-01-04 14:30:00+00:00 last close: 2017-12-29 21:00:00+00:00
После успешного выполнения будет созданbuyapple_out.pickleфайл, мы можем использоватьpickleмодуль для его чтения.
Описание команды:
zipline run:Запустите Zipline для запуска бэктеста.-f my_strategy.py:Укажите файл стратегии. В этом примере,my_strategy.py— это файл Python, содержащий написанную вами стратегию.--start 2016-1-1и--end 2018-1-1:Укажите начальную и конечную даты бэктеста. В этом примере временной диапазон бэктеста — с 1 января 2016 г. по 1 января 2018 г.-o buyapple_out.pickle:Укажите имя выходного файла. В этом примере результаты бэктеста будут сохранены какbuyapple_out.pickleфайл. Этот файл содержит различную выходную информацию бэктеста, например записи о сделках, метрики производительности и т. д.--no-benchmark:Отключить бенчмарк. При бэктестировании иногда используется бенчмарк для сравнения эффективности стратегии. Использование--no-benchmarkопции означает, что бенчмарк не используется.
Модуль pickle используется для сериализации и десериализации объектов, что позволяет удобно сохранять объекты в файл или загружать объекты из файла.
Ниже показано, как прочитать содержимое файла buyapple_out.pickle:
Пример
# Укажите путь к pickle-файлу
pickle_file_path = 'buyapple_out.pickle'
# Прочитать pickle-файл
with open(pickle_file_path, 'rb') as файл:
buyapple_out_data = pickle.load(file)
# Вывести прочитанные данные
print(buyapple_out_data)
Вывод следующий:
period_open period_close short_value pnl long_exposure ... max_leverage excess_return treasury_period_return trading_days period_label
2016-01-04 21:00:00+00:00 2016-01-04 14:31:00+00:00 2016-01-04 21:00:00+00:00 0.0 0.00000 0.0 ... 0.000000 0.0 0.0 1 2016-01
2016-01-05 21:00:00+00:00 2016-01-05 14:31:00+00:00 2016-01-05 21:00:00+00:00
Другие расширения