Библиотеки 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 для бэктестинга торговли акциями:

Пример

from zipline.api import order, record, символ


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:

Пример

import 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  
Другие расширения